Repository navigation
Describe the live channels in AsyncAPI, with lint and a breaking-change check - #1616
Merged
Merged
Conversation
davidmckayv
requested review from
MikeRyanDev,
dustywusty,
guidovizoso,
mxmzb,
samjulien and
tylerslaton
as code owners
November 14, 2026 14:49
…ge check api/asyncapi.yaml (AsyncAPI 3.1.0) describes every WebSocket a client opens today: a conversation's runs on Intelligence's realtime gateway, and OpenBot's own sockets for conversation events, a Bot's screen and its terminal. Redocly lints it with the REST spec. On a pull request, the AsyncAPI CLI's diff (pinned in api/asyncapi-tools) lists what changed against the base branch, and api/asyncapi-diff.ts fails on anything that could break a client unless api/accepted-live-breaking-changes.md lists it.
davidmckayv
force-pushed
the
api/asyncapi-channels
branch
from
November 14, 2026 15:03
11df094 to
14dd7a4
Compare
…dresses can take the plain names
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
api/asyncapi.yaml(AsyncAPI 3.1.0) describes every WebSocket a client opens today, beside the REST spec:thread:{threadId}(join, connected,ag_ui_event, replay complete, stream idle, replay failed, expired, stop a run, leave, close), with how replay and the event id work./api/channels/events): what changed in a person's conversations./api/computers/{botId}/stream): frames out, mouse and keyboard in./api/computers/{botId}/terminal): bytes out, input, resize and acknowledgements in.It describes the sockets as they are served now. The three OpenBot serves are named as the legacy channels (
legacyConversationEvents,legacyBotScreen,legacyBotTerminal), so that their addresses under/api/v2, which follow with voice and the Recorder's topic, can take the plain names without a breaking change to this file.Checks
bun run api:lintnow lints both files. Redocly validates the file against the AsyncAPI 3.1 schema, WebSocket bindings included.api/accepted-live-breaking-changes.md.What the breaking-change check relies on
The differences come from the AsyncAPI CLI's
diff, pinned at@asyncapi/cli6.3.0 inapi/asyncapi-toolswith its own lockfile, so only the API job installs it. The CLI wraps@asyncapi/diff, which is still 0.x (0.6.1). We rely on it for one thing: the list of what changed and where. It classifies changes to the document's own structure (a channel's address, a removed channel or message) but calls every change inside a payload schema "unclassified", soapi/asyncapi-diff.tsdecides those itself, strictly: new things, a new optional member and wording pass, and anything else fails.api/asyncapi-diff.test.tsholds that to real edits of the real file, and runs in the API job.Tested