Repository navigation
feat: cursor lists by inclusion, page sequences, and the beta-19425 pin - #72
Merged
Merged
Conversation
A query that carries the admitted limit, order, and cursor parameters now derives from ListRequest whatever else it declares, so a filter beside the spine no longer pushes a list out of cursor pagination: the session list gains EnumerateSessionsAsync, and a continuation is the first request again with order dropped and the returned cursor in place, carrying every filter unchanged. A spine-carrying query that declares a required parameter refuses pagination, because a continuation must be constructible from no request at all. Enumerate*Async returns CursorSequence<TPage, TItem>: still an IAsyncEnumerable<TItem>, and its Pages property replays the same traversal as the generated page envelopes, so page metadata no longer requires paging by hand. Both doors drive the one traversal core; each enumeration issues its own requests. Increment benchmark on the pagination ladder: 394,048 to 394,544 allocated bytes over a three-page, thirty-item walk; the manual-paging control is unchanged.
Microsoft.Build.Tasks.Git 10.0.301, transitive through Microsoft.SourceLink.GitHub, carries GHSA-23fw-v26w-5fgq (published 2026-09-08). A cold restore reports NU1902 for it and the analyzer wall turns that into an error, so the next fresh CI restore would fail before compiling anything. 10.0.303 is the patched build; the package is build-only and never ships.
The pin moves 94 commits to upstream's beta branch head, the commit that shipped as @opencode/cli@0.0.0-beta-19425, so a consumer can install the exact server this SDK is generated from. The README, the snapshot page, the roadmap, and ADR-0005 now name that scope and build, and the snapshot page says why the @opencode-ai/cli scope no longer reaches a server this SDK can drive: its next and latest tags froze at an August build. Upstream removed the message content mutation API (#48043), so v2.session.messageUpdate leaves the profile and the generated surface together with the assistant-content union only its body used, and session.message.content.updated leaves the live event union. The message list gains its type filter, which rides continuations unchanged now that cursor lists bind by inclusion. Provider and model records gain the websocket flag; compaction records carry their cost and token usage. Receipt: 139 operations, 355 components, restore patch 001 still applied, 21 watched anchors intact, only packages/server/src/process.ts moved by hash. Full gate: 5,177 tests green on the Windows matrix including the live lane.
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
Three commits, each green on the Windows matrix (
net472,net8.0,net9.0,net10.0, live lane included):Enumerate*AsyncreturnsCursorSequence<TPage, TItem>. A query that carrieslimit,order, andcursorderives fromListRequestwhatever filters it declares beside them; a continuation is the first request again withorderdropped and the returned cursor in place, so every filter rides every page.SessionsClient.EnumerateSessionsAsyncappears. The sequence still enumerates asIAsyncEnumerable<TItem>and exposes the generated page envelopes throughPages. ADR-0017, the protocol and runtime canon, andCONTEXT.mdare revised; the pagination guide is rewritten. Increment benchmark on the pagination ladder: 394,048 → 394,544 allocated bytes over a three-page, thirty-item walk (+496 B); the manual-paging control is unchanged.Microsoft.Build.Tasks.Git 10.0.301carries GHSA-23fw-v26w-5fgq (CVE-2026-62900, published 2026-09-08); a cold restore reports NU1902 and the analyzer wall turns it into an error.20aff6d9f643afe9abf8a048e68f019d049f5329, upstream'sbetabranch head, shipped as@opencode/cli@0.0.0-beta-19425.v2.session.messageUpdateleaves the surface (upstream removed the message content mutation API in refactor(session): remove message content mutation API anomalyco/opencode#48043) together with theISessionMessageAssistantunion only its body used;session.message.content.updatedleaves the live event union; the message list gains itstypefilter; provider/model records gainwebsocket, compaction recordscost/tokens. README,spec/SNAPSHOT.md, the roadmap, and ADR-0005 now name the@opencode/cliscope and the exact build, and say why the frozen@opencode-ai/cli@nextline no longer reaches a server this SDK can drive.Breaking changes
Listed in
CHANGELOG.mdunder[Unreleased]. No published consumer is owed compatibility yet; the release line stays0.8.0-preview.N.Verification
generate --verify,refresh-spec --verify, Release build 0 warnings, both format passes, 5,177 tests, 0 failed, 0 skipped across nine assemblies.@opencode/cli@0.0.0-beta-19425installed from npm into an isolated prefix and started with isolated XDG roots; the wholeOpenCode.Sdk.Testsassembly onnet10.0attached to it passed 1,102 of 1,103 (the one failure is the RPC event proof's own refusal of an external endpoint); the sandbox breadth walkthrough,--paginate, and--standalone(launcher over the npm executable with an explicitCommand) all ran against that build.Not in this PR
The Windows launcher default (
["opencode2", "serve"]never resolves the npm.cmdshim), the terminalSubmitdoor, the durable-envelope hoisting rule, and the consumer-documentation corrections follow in their own pull requests.