Skip to content

Commit 7292dd4

Browse files
bloveclaude
andcommitted
docs(website): review fixes on the runtime support matrix
- Credit AWS Strands alongside Microsoft Agent Framework for reading the protocol-standard top-level resume array (verified against strands-resume.request.json and to-agent.ts, which serves both from one branch). - Note that the Mastra row was measured against a real server with live model calls and committed transcripts, but is not yet running in the hosted demo deployment. - Compact the cause column to scannable labels; the legend below the table carries the definitions. - State the adapter-cause history once, in current-state framing. - Two blog-register lines moved to reference register. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 5f7eea2 commit 7292dd4

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

  • apps/website/content/docs/choosing-an-adapter

apps/website/content/docs/choosing-an-adapter/index.mdx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,17 @@ On 2026-08-31 we tested it against three runtimes that have nothing to do with L
9292
| Runtime | Messages | Tool calls | State | Interrupts | Subagents | Cause of any gap |
9393
|---|---|---|---|---|---|---|
9494
| **LangGraph** (via the AG-UI bridge) | Yes | Yes | Yes | Yes | Yes ||
95-
| **AWS Strands** (Python) | Yes | Yes | Partial | Yes | No | State: upstream integration. Subagents: upstream integration. |
96-
| **Microsoft Agent Framework** (Python) | Yes | Yes | Yes | Yes | No | Subagents: upstream integration. |
97-
| **Mastra** (TypeScript) | Yes | Yes | Yes | Yes | No | Subagents: upstream integration. |
95+
| **AWS Strands** (Python) | Yes | Yes | Partial | Yes | No | State + subagents: upstream |
96+
| **Microsoft Agent Framework** (Python) | Yes | Yes | Yes | Yes | No | Subagents: upstream |
97+
| **Mastra** (TypeScript) | Yes | Yes | Yes | Yes | No | Subagents: upstream |
9898

9999
Every gap in that table falls into one of three causes, and the distinction is the point of the column:
100100

101101
- **Protocol** — the AG-UI event vocabulary has no way to express the capability. Nothing an adapter or a backend author can do about it today.
102102
- **Upstream integration** — the protocol can express it, but the runtime's AG-UI bridge does not emit the events. Fixable upstream.
103103
- **Our adapter**`@threadplane/ag-ui` failed to consume something the wire already carried. Our bug, and our responsibility.
104104

105-
No cell in the current matrix is caused by the protocol, and no cell is caused by our adapter.
106-
Two cells were caused by our adapter when the measurement started, and both are fixed.
105+
No cell in the current matrix is caused by the protocol, and no cell is caused by a bug in our adapter — the two that were are fixed.
107106

108107
### Reading the individual cells
109108

@@ -120,10 +119,14 @@ The adapter detects either convention, and within a single run the first signal
120119

121120
**Resume payloads are not portable, so the adapter shapes them per runtime.**
122121
Mastra reads `forwardedProps.command.interruptEvent`, carrying a tool-call id and a run id.
123-
Microsoft Agent Framework reads the protocol-standard top-level `resume` array first.
122+
AWS Strands and Microsoft Agent Framework both read the protocol-standard top-level `resume` array, one `{ interruptId, status, payload }` entry per interrupt; Microsoft additionally expects an entry for every pending interrupt.
124123
The LangGraph bridge reads `forwardedProps.command.resume`.
125124
You pass one neutral `submit({ resume })`, and the adapter derives the wire shape from how the interrupt arrived.
126125

126+
**The Mastra row was measured, but not in the hosted demo.**
127+
Its cells come from a real Mastra server driven with live model calls, and its transcripts are committed and replayed like the others.
128+
Unlike the Strands and Microsoft Agent Framework rows, it is not yet running in the hosted demo deployment.
129+
127130
**Subagents are red for every third-party runtime, and none of those reds are a bug.**
128131
The three runtimes do not fail to implement one thing; they model delegation three different ways.
129132
Strands routes handoffs through a `CUSTOM` event plus step events, with no `ACTIVITY` events at all.
@@ -138,8 +141,8 @@ Treat server-declared subagents as a capability of LangGraph and of backends you
138141
Each runtime got a real server, started against the upstream AG-UI integration and driven with live model calls.
139142
The raw Server-Sent Events were captured off the wire, then replayed event-for-event through the pinned `@ag-ui/client` — schema parse plus `verifyEvents` — and through the adapter reducer itself.
140143

141-
The captures are committed at [`libs/ag-ui/fixtures/runtime-transcripts/`](https://github.com/cacheplane/angular-agent-framework/tree/main/libs/ag-ui/fixtures/runtime-transcripts), verbatim from the wire, and the adapter test suite replays them.
142-
A regression in interrupt detection or resume shaping now fails a test rather than a user.
144+
The captures are committed at [`libs/ag-ui/fixtures/runtime-transcripts/`](https://github.com/cacheplane/angular-agent-framework/tree/main/libs/ag-ui/fixtures/runtime-transcripts), verbatim from the wire.
145+
The adapter test suite replays them on every run.
143146

144147
### Runnable examples
145148

@@ -150,7 +153,6 @@ Each runtime has a standalone Angular example bound through `@threadplane/ag-ui`
150153
- [`cockpit/runtimes/mastra`](https://github.com/cacheplane/angular-agent-framework/tree/main/cockpit/runtimes/mastra) — TypeScript, hosted by a Node AG-UI service, because the upstream Mastra integration ships an in-process bridge rather than an HTTP endpoint.
151154

152155
In all three, the Angular component is ordinary `<chat [agent]="agent" />` over `injectAgent()`.
153-
The runtime is a provider-level fact.
154156

155157
## Why two adapters?
156158

0 commit comments

Comments
 (0)