Repository navigation
test: swap the stream sample for Brook's Stream service WIT - #308
Merged
Merged
Conversation
This was referenced Oct 27, 2026
moetemp
marked this pull request as draft
October 27, 2026 16:33
moetemp
force-pushed
the
moe/up/brook-wits
branch
from
October 27, 2026 17:40
b6010b5 to
f3c132e
Compare
This was referenced Oct 27, 2026
moetemp
force-pushed
the
moe/up/brook-wits
branch
from
October 27, 2026 18:35
f3c132e to
69a470a
Compare
This was referenced Oct 27, 2026
moetemp
force-pushed
the
moe/up/brook-wits
branch
2 times, most recently
from
October 28, 2026 16:37
ed43cd1 to
d212587
Compare
This was referenced Oct 28, 2026
This was referenced Oct 28, 2026
moetemp
marked this pull request as ready for review
October 28, 2026 23:02
1 of 3 tasks
moetemp
force-pushed
the
moe/up/brook-wits
branch
from
October 28, 2026 23:59
d212587 to
3d85326
Compare
moetemp
force-pushed
the
moe/up/brook-wits
branch
4 times, most recently
from
October 29, 2026 07:35
98c9e47 to
ef11a26
Compare
The sample takes the part of Brook's WIT that nexgen generates, on the Stream protos of temporalio/api#895 at 44519d8a. No SDK has those protos, so the sample projects hold their bindings. The sample is a System Nexus service, so its .NET output builds in its own project. Only .NET generates the service, since Python and TypeScript panic on the read item's oneof.
moetemp
force-pushed
the
moe/up/brook-wits
branch
from
October 29, 2026 09:29
ef11a26 to
dd2a166
Compare
tconley1428
approved these changes
Oct 29, 2026
moetemp
added a commit
that referenced
this pull request
Oct 29, 2026
…#310) ### What changed? This PR plans a protobuf `oneof` case that names a proto-bound WIT record as that record, as nexgen already does for a record field. - Only oneof-bound variants get the new plan, and an `option` around the payload stays. - A .NET case record names its payload's model in full. Else a case named like its record hides the model, and `record Superseded(Superseded Value)` doesn't compile. Brook's next WIT names a case like that. - The first commit is the fix, and the stream sample's TypeScript output appears with it. The second commit generates the stream service for Python, with basedpyright off for it until #311. `tsc` skips the service until #296. In the stream sample's .NET output, the read item now holds the records, not the proto classes. It's based on #308. ### Why? Brook's read item, `variant stream-item`, binds a `oneof` of three proto-bound records. Before the fix, Python and TypeScript generation panicked on it, and .NET typed each case as the proto class. ### How did you test it? Link to a test plan if any - - [x] Unit Tests - [ ] Staging - [ ] End to End Tests New TypeScript and .NET tests round-trip the read item's cases, and the .NET test leaves out the data case. A unit test covers the full name of a case payload. Co-authored-by: Tim Conley <timothy.conley@temporal.io>
chrsmith
added a commit
that referenced
this pull request
Nov 3, 2026
The stream service sample project (added on main in #308) targeted net8.0, so the sample tests, which now also target net7.0, could not restore its project reference (NU1201). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tconley1428
pushed a commit
that referenced
this pull request
Nov 3, 2026
* Lower .NET platform requirement to .NET 7, document backwards compatibility * Target net7.0 in the .NET stream service sample project The stream service sample project (added on main in #308) targeted net8.0, so the sample tests, which now also target net7.0, could not restore its project reference (NU1201). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed?
This PR replaces the stream sample with Brook's Stream service WIT, in the largest form that nexgen generates today.
temporalio/api#895at44519d8a. No SDK has those protos, so the sample projects hold their bindings, inpython/streamprotos/,dotnet/proto/streams/andtypescript/proto/streams.d.ts.@nexus.sourcewith a target, field flattening and a resource type parameter. Each one takes its nearest form that generates, and the moetemp/nexgen PR that adds the feature brings back Brook's form. nexgen ignores the directives that it doesn't know yet.Temporalio.Workflowsnamespace, whichworkflow-servicealready has, so it builds in its ownNexgen.DotNetStreamService.csproj. The .NET tests refer to it through an extern alias.longto 5.3.2, thelongthat the@temporalio/*packages resolve.typescript/tests/stream-service.test.tsgoes away here, and fix: plan a oneof case that names a proto-bound record as that record #310 brings it back.Why?
The stream sample should be Brook's input, so each later PR shows its change on Brook's file.
How did you test it?
Link to a test plan if any -
cargo build-examplesregenerates the samples with a clean tree, and the .NET tests round-trip aStream. The README's rebuild steps give the checked-instreams.binand bindings.