Skip to content

πŸ¦‹ New version release - #469

Merged
brentrager merged 1 commit into
mainfrom
changeset-release/main
Aug 18, 2026
Merged

πŸ¦‹ New version release#469
brentrager merged 1 commit into
mainfrom
changeset-release/main

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@smooai/smooth-operator@1.52.2

Patch Changes

  • a992a84: feat(dotnet): client-initiated turn cancellation β€” SmoothAgentClient.Cancel() + MessageTurn.Cancel()

    The wire protocol and all five servers already honor the cancel frame / cancelled event,
    but the .NET client had no way to send it β€” the only stop was MessageTurn.Abort(), a local
    force-close that faults the turn and never hits the wire.

    Add the missing client surface, mirroring the TypeScript SDK (sdk: client-initiated turn cancellation β€” SmoothAgentClient.cancel() + MessageTurn.cancel()Β #459):

    • SmoothAgentClient.Cancel(requestId, sessionId?) sends the cancel frame (fire-and-forget).
    • MessageTurn.Cancel() is the ergonomic "stop THIS turn" convenience, carrying the turn's own
      requestId + originating sessionId.
    • A terminal cancelled event settles the matching turn as a user-stop: it resolves (never
      faults) β€” the async iterator ends cleanly after yielding the terminal CancelledEvent,
      MessageTurn.Completion yields null, and MessageTurn.Cancelled is true (with
      CancelledEvent carrying status 499). Errors still throw, so a UI can tell a stop from a failure.
    • CancelAction / CancelledEvent are now first-class in the ClientAction / ServerEvent
      unions and the ProtocolValidator schema maps.
    • Idempotent: a Cancel with no active turn, or a cancelled with no matching turn, is a
      harmless no-op that does not throw.

    MessageTurn.Completion is now Task<EventualResponseEvent?> (null on a user-stop). The
    IChatClient facade contract is unchanged β€” its GetResponseAsync surfaces a mid-flight native
    cancel as OperationCanceledException, the idiomatic MEAI "generation stopped" signal.

@smooai/smooth-operator-web-chat-example@0.0.90

Patch Changes

  • Updated dependencies [a992a84]
    • @smooai/smooth-operator@1.52.2

@brentrager
brentrager merged commit 54c5704 into main Aug 18, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant