Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
44519d8
Added the Stream service messages as experimental.
moetemp Oct 25, 2026
0a4e667
Dropped the close status, and let a zero sequence take the next one.
moetemp Oct 30, 2026
9f6f1a5
Added the Stream service WIT, generated with a pinned nexgen fork.
moetemp Oct 30, 2026
2c8322f
Renamed Supersession to Superseded, and the StreamRef fields to ref.
moetemp Oct 31, 2026
a1160cf
Renamed StreamRef to StreamHandle, and its fields to handle.
moetemp Oct 31, 2026
cd0fa67
Renamed the handle of a create request to stream_handle.
moetemp Oct 31, 2026
5784c82
Renamed Superseded to StreamSuperseded.
moetemp Oct 31, 2026
0b6d5ad
Renamed the target key of the WIT directives to targets.
moetemp Oct 31, 2026
643d4ec
Moved the nexgen pin, and added the owner source and enum fallbacks.
moetemp Oct 31, 2026
2df4455
Moved the nexgen pin to the fork chain on the current upstream.
moetemp Nov 3, 2026
87dc735
Made create strict and Workflow Streams standalone, with no definitions.
moetemp Nov 5, 2026
beaa64c
Took the review of the Stream protos from temporalio/sdk-rust#1733.
moetemp Nov 5, 2026
7b38c09
Made the epoch a oneof whose case is the Producer's kind.
moetemp Nov 5, 2026
d00cb7c
Made the docs of the payload type and the enums plain comments.
moetemp Nov 5, 2026
cabddc7
Stopped using name as a verb in the Stream comments.
moetemp Nov 5, 2026
fffc801
Reworded the comment on the create's handle field.
moetemp Nov 5, 2026
e8eefe8
Split the storage reason, and made a close write no Record.
moetemp Nov 5, 2026
e4e2c47
Renamed StreamHandle to StreamRef, and its fields to ref.
moetemp Nov 5, 2026
1f72662
Moved the Producer and withdrawal fields of a write into StreamWriter.
moetemp Nov 5, 2026
e6ed622
Dropped the resource's type parameter, which nexgen now infers.
moetemp Nov 5, 2026
9e2fc93
Took the final nexgen directives, and dropped the WIT's error types.
moetemp Nov 6, 2026
6bdefac
Renamed the Stream resource's publish method to append.
moetemp Nov 6, 2026
75031b3
Added the Stream close read item and its status enum.
moetemp Nov 8, 2026
20b14a6
Removed the owner field and the withdrawal machinery from Streams.
moetemp Nov 8, 2026
d6671e3
Synced the Stream service WIT with the owner and withdrawal removal.
moetemp Nov 9, 2026
d54483e
Made the Stream offset an opaque bytes value.
moetemp Nov 10, 2026
cda8be9
Pinned a nexgen that accepts the `stream-offset` alias.
moetemp Nov 10, 2026
c66e440
Made `floor_from` bytes and fixed the offset and Retention comments.
moetemp Nov 10, 2026
a267cdd
Applied the review of the Stream messages.
moetemp Nov 10, 2026
edb933d
Said why the three read positions are fields and not a oneof.
moetemp Nov 10, 2026
6de7df0
Put the read position in a oneof and removed `last`.
moetemp Nov 10, 2026
7133a27
Renamed the `next_offset` of a read to `last_offset`.
moetemp Nov 10, 2026
f0a6b34
Dropped the reserved fields from the Stream protos.
moetemp Nov 11, 2026
b0b2657
Fixed the stale comments of the Stream protos.
moetemp Nov 11, 2026
0ac6b71
Removed create_wait from the Stream read.
moetemp Nov 11, 2026
3e90293
Made the notification WIT's interface and alias docs plain comments.
moetemp Nov 11, 2026
717709c
Pinned temporalio/nexgen#374 and took its Stream WIT.
moetemp Nov 11, 2026
23fac08
Reshaped the Stream writes and items, and marked required fields.
moetemp Nov 11, 2026
4e9db3f
Reworded the close offset and the request namespace comments.
moetemp Nov 11, 2026
5e7931b
Moved the nexgen pin to the head of temporalio/nexgen#374.
moetemp Nov 11, 2026
6693d0d
Stated one fence and supersede rule for every Producer kind.
moetemp Nov 11, 2026
6da3cbc
Dropped the unknown writer reason and marked more required fields.
moetemp Nov 11, 2026
08b955e
Said when a Workflow Producer writes and when it only closes.
moetemp Nov 11, 2026
0764a66
Dropped the fields with no design yet and the close item of a read.
moetemp Nov 12, 2026
c86a5e0
Made done a plain bool in the read response of the Stream WIT.
moetemp Nov 12, 2026
cc12c5e
Moved the nexgen pin to the head of temporalio/nexgen#407.
moetemp Nov 12, 2026
88d7294
Gave the Stream's append and close an optional Producer in the WIT.
moetemp Nov 13, 2026
cdbb81d
Renamed the backend of a Stream ref to store.
moetemp Nov 13, 2026
6a6d45d
Let a caller number an append in the Stream WIT.
moetemp Nov 13, 2026
849243a
Said how offsets compare, and what a Workflow writes with on a Store.
moetemp Nov 13, 2026
a82faf8
Left append, close and read out of the Workflow Stream in the WIT.
moetemp Nov 13, 2026
21c53fe
Put append and close back on the Workflow Stream in the WIT.
moetemp Nov 14, 2026
59e7ea7
Pinned the nexgen fork commit that has `@nexus.helper`.
moetemp Nov 14, 2026
7db9c13
Added take, filter and reduce to the Stream in the WIT.
moetemp Nov 14, 2026
1246a4a
Pinned the nexgen fork commit that has `@nexus.guard`.
moetemp Nov 14, 2026
57dd407
Added the method guard to the Stream in the WIT.
moetemp Nov 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,12 @@ PROTO_PATHS = paths=source_relative:$(PROTO_OUT)
OAPI_OUT := openapi
OAPI3_PATH := .components.schemas.Payload

NEX_GEN ?= nexgen
# The Stream WIT uses nexgen directives that no release has yet. Pin a nexgen commit that has them
# until a release does. `@nexus.helper` is not in nexgen's `main` yet, so the commit is on a fork.
NEX_GEN_REPO := https://github.com/moetemp/nexgen
NEX_GEN_REV := 9055618618e580b68d61c7d7e52d8f25aea3824c
NEX_GEN_ROOT := $(CURDIR)/$(STAMPDIR)/nexgen-$(NEX_GEN_REV)
NEX_GEN ?= $(NEX_GEN_ROOT)/bin/nexgen

$(PROTO_OUT):
mkdir $(PROTO_OUT)
Expand Down Expand Up @@ -142,6 +147,7 @@ nexus-rpc-yaml-install:
@cd cmd/protoc-gen-nexus-rpc-yaml && go install .

##### Compile system Nexus WIT files #####
# No Stream operation returns StreamErrorDetails, so add-message selects it by name.
system-nexus-wit: system-nexus-wit-install nex-gen-install
printf $(COLOR) "Generate system Nexus WIT..."
tmp=$$(mktemp -d); trap 'rm -rf "$$tmp"' EXIT; \
Expand All @@ -152,21 +158,32 @@ system-nexus-wit: system-nexus-wit-install nex-gen-install
--system-nexus-wit_opt=linked_input=nexus/deps \
--system-nexus-wit_out=. \
temporal/api/workflowservice/v1/service.proto \
temporal/api/notificationservice/v1/request_response.proto && \
temporal/api/notificationservice/v1/request_response.proto \
temporal/api/streamservice/v1/request_response.proto && \
$(NEX_GEN) add-message \
--descriptors "$$tmp/system.bin" \
--file temporal/api/notificationservice/v1/request_response.proto \
--input nexus/notification-service.wit \
--input nexus/deps \
--output nexus/notification-service.wit
--output nexus/notification-service.wit && \
$(NEX_GEN) add-message \
--descriptors "$$tmp/system.bin" \
--file temporal/api/streamservice/v1/request_response.proto \
--message temporal.api.stream.v1.StreamErrorDetails \
--input nexus/stream-service.wit \
--input nexus/deps \
--output nexus/stream-service.wit

system-nexus-wit-install:
printf $(COLOR) "Build and install protoc-gen-system-nexus-wit..."
@cd cmd/protoc-gen-system-nexus-wit && go install .

# The git CLI follows a local URL rewrite to SSH, which cargo's own git client can't authenticate.
nex-gen-install:
printf $(COLOR) "Install nexgen if missing..."
command -v $(NEX_GEN) >/dev/null || cargo install nexgen --version ^0.2 --features advanced
command -v $(NEX_GEN) >/dev/null || CARGO_NET_GIT_FETCH_WITH_CLI=true cargo install \
--git $(NEX_GEN_REPO) --rev $(NEX_GEN_REV) --locked --features advanced \
--root $(NEX_GEN_ROOT) nexgen

##### Clean #####
clean:
Expand Down
6 changes: 3 additions & 3 deletions nexus/notification-service.wit
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ world system {
export notification-service;
}

/// @nexus.doc "Notification models for Nexus Handler Callbacks."
/// Notification models for Nexus Handler Callbacks.
/// @nexus.experimental
interface notification-service {
use nexus:temporal-types/model@1.0.0.{
failure,
placeholder,
};

/// @nexus.doc "Type of the user-supplied data associated with the source invocation."
/// Type of the user-supplied data associated with the source invocation.
/// @nexus.type-parameter
type source-context-t = placeholder;

/// @nexus.doc "Type of the successful output of the source operation."
/// Type of the successful output of the source operation.
/// @nexus.type-parameter
type output-t = placeholder;

Expand Down
Loading
Loading