@ggui-ai/protocol 0.1.0-rc.3 → 0.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/bridge/invoke-agent.d.ts +8 -8
- package/dist/bridge/invoke-agent.d.ts.map +1 -1
- package/dist/bridge/invoke-agent.js +12 -12
- package/dist/envelopes/builders.d.ts +2 -4
- package/dist/envelopes/builders.d.ts.map +1 -1
- package/dist/envelopes/builders.js +2 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/integrations/mcp-apps.d.ts +354 -711
- package/dist/integrations/mcp-apps.d.ts.map +1 -1
- package/dist/integrations/mcp-apps.js +266 -208
- package/dist/recommended-prompts.d.ts +1 -1
- package/dist/recommended-prompts.js +1 -1
- package/dist/schemas/data-contract.d.ts +4 -3
- package/dist/schemas/data-contract.d.ts.map +1 -1
- package/dist/schemas/data-contract.js +4 -3
- package/dist/schemas/invoke.d.ts +2 -2
- package/dist/schemas/invoke.js +2 -2
- package/dist/schemas/mcp.d.ts +60 -79
- package/dist/schemas/mcp.d.ts.map +1 -1
- package/dist/schemas/mcp.js +93 -116
- package/dist/schemas/sync-check.js +1 -1
- package/dist/stream/stream-parser.d.ts +4 -4
- package/dist/stream/stream-parser.d.ts.map +1 -1
- package/dist/stream/stream-parser.js +9 -9
- package/dist/transport/websocket.d.ts +14 -49
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/types/app-config.d.ts +17 -32
- package/dist/types/app-config.d.ts.map +1 -1
- package/dist/types/canvas-lifecycle.d.ts +13 -13
- package/dist/types/canvas-lifecycle.d.ts.map +1 -1
- package/dist/types/canvas-lifecycle.js +3 -3
- package/dist/types/contract-inference.d.ts +4 -7
- package/dist/types/contract-inference.d.ts.map +1 -1
- package/dist/types/data-bindings.d.ts +1 -1
- package/dist/types/data-bindings.d.ts.map +1 -1
- package/dist/types/data-contract.d.ts +10 -10
- package/dist/types/data-contract.d.ts.map +1 -1
- package/dist/types/events.d.ts +14 -56
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/events.js +1 -8
- package/dist/types/feedback.d.ts +2 -4
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/handshake-suggestion.d.ts +1 -1
- package/dist/types/host-context.d.ts +5 -15
- package/dist/types/host-context.d.ts.map +1 -1
- package/dist/types/host-context.js +1 -1
- package/dist/types/live-channel.d.ts +128 -191
- package/dist/types/live-channel.d.ts.map +1 -1
- package/dist/types/llm-route.d.ts +233 -0
- package/dist/types/llm-route.d.ts.map +1 -0
- package/dist/types/llm-route.js +433 -0
- package/dist/types/llm.d.ts +34 -16
- package/dist/types/llm.d.ts.map +1 -1
- package/dist/types/llm.js +34 -38
- package/dist/types/mcp.d.ts +47 -137
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/mcp.js +2 -2
- package/dist/types/openrouter-models.d.ts +3 -2
- package/dist/types/openrouter-models.d.ts.map +1 -1
- package/dist/types/render-event.d.ts +119 -0
- package/dist/types/render-event.d.ts.map +1 -0
- package/dist/types/render-event.js +38 -0
- package/dist/types/session.d.ts +216 -342
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/ui-generator.d.ts +8 -9
- package/dist/types/ui-generator.d.ts.map +1 -1
- package/dist/validation/contract-validator.d.ts +60 -4
- package/dist/validation/contract-validator.d.ts.map +1 -1
- package/dist/validation/contract-validator.js +101 -5
- package/dist/validation/reserved-channels.d.ts +1 -1
- package/dist/validation/reserved-channels.js +5 -5
- package/dist/validation/sanitize-error.js +1 -1
- package/dist/validation/schema-compat-invariants.d.ts +2 -2
- package/dist/validation/schema-compat-invariants.js +2 -2
- package/dist/validation/schema-meta-validation.d.ts +1 -1
- package/dist/validation/schema-meta-validation.js +2 -2
- package/dist/validation/schema-subset.d.ts +1 -1
- package/dist/version.d.ts +253 -46
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +253 -46
- package/package.json +3 -2
- package/dist/navigation/index.d.ts +0 -3
- package/dist/navigation/index.d.ts.map +0 -1
- package/dist/navigation/index.js +0 -1
- package/dist/navigation/stack-navigation.d.ts +0 -55
- package/dist/navigation/stack-navigation.d.ts.map +0 -1
- package/dist/navigation/stack-navigation.js +0 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-context.d.ts","sourceRoot":"","sources":["../../src/types/host-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"host-context.d.ts","sourceRoot":"","sources":["../../src/types/host-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkBjD,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAMlF;;;;GAIG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7D,8EAA8E;IAC9E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC;IAC/C,+EAA+E;IAC/E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,8BAA8B,CAAC;IAC9D,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IAC5D,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;CAC7C;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAsDlF;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,qBAAqB,GAAG,SAAS,EACpC,CAAC,EAAE,qBAAqB,GAAG,SAAS,GACnC,OAAO,CAIT;AAGD,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* the agent can reason about device/host capabilities on subsequent turns.
|
|
5
5
|
*
|
|
6
6
|
* The MCP Apps spec (`@modelcontextprotocol/ext-apps`) defines a rich
|
|
7
|
-
*
|
|
7
|
+
* {@link McpUiHostContext} (theme, styles, displayMode, availableDisplayModes,
|
|
8
8
|
* containerDimensions, locale, timeZone, userAgent, platform,
|
|
9
9
|
* deviceCapabilities). ggui captures it iframe-side at `ui/initialize` and
|
|
10
10
|
* echoes a TRIMMED projection back over the live channel (via the
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Live-channel contract payload types.
|
|
3
3
|
*
|
|
4
|
-
* The live channel is the live
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The live channel is the live plane between core-mcp and the user.
|
|
5
|
+
* The types in this file describe WHAT that plane talks about — the
|
|
6
|
+
* payload shapes for each exchange, independent of how they're framed
|
|
7
|
+
* on the wire.
|
|
8
8
|
*
|
|
9
9
|
* The transport envelope (discriminated union + discriminator enum +
|
|
10
10
|
* connection-status enum) lives behind the
|
|
@@ -15,21 +15,20 @@
|
|
|
15
15
|
* The corresponding inbound user-action envelope ({@link ActionEnvelope})
|
|
16
16
|
* lives in `types/events.ts` alongside the event-type enum.
|
|
17
17
|
*/
|
|
18
|
-
import type {
|
|
19
|
-
import type {
|
|
20
|
-
import type { DataContract, JsonObject, JsonSchema, JsonValue, StreamChannelMode } from './data-contract';
|
|
18
|
+
import type { Render } from './session';
|
|
19
|
+
import type { JsonObject, JsonValue, StreamChannelMode } from './data-contract';
|
|
21
20
|
/**
|
|
22
21
|
* Payload for subscribe message
|
|
23
22
|
*/
|
|
24
23
|
export interface SubscribePayload {
|
|
25
|
-
|
|
24
|
+
renderId: string;
|
|
26
25
|
appId: string;
|
|
27
26
|
/** Role of the subscriber: 'user' (Portal) or 'agent' (MCP bridge) */
|
|
28
27
|
role?: 'user' | 'agent';
|
|
29
28
|
/**
|
|
30
29
|
* Resume cursor for live-channel outbound stream replay. When present,
|
|
31
30
|
* the server replays buffered envelopes with `seq > fromSeq` per the
|
|
32
|
-
*
|
|
31
|
+
* render's per-channel replay policy
|
|
33
32
|
* (`streamSpec[name].replay`) BEFORE transitioning to the
|
|
34
33
|
* live tail.
|
|
35
34
|
*
|
|
@@ -43,34 +42,72 @@ export interface SubscribePayload {
|
|
|
43
42
|
* the last envelope the client observed.
|
|
44
43
|
*
|
|
45
44
|
* Honored only by implementations that expose
|
|
46
|
-
* `
|
|
45
|
+
* `RenderStreamBuffer`-backed replay. Hosted cloud does NOT
|
|
47
46
|
* yet honor `fromSeq` — the field is silently ignored there. OSS
|
|
48
47
|
* `@ggui-ai/mcp-server` honors it fully.
|
|
49
48
|
*/
|
|
50
49
|
fromSeq?: number;
|
|
51
50
|
/**
|
|
52
|
-
* Opaque
|
|
51
|
+
* Opaque WS auth credential for initial subscribe — the live-channel
|
|
52
|
+
* counterpart to a bearer token. Symmetric with {@link
|
|
53
|
+
* SubscribePayload.renderId}/`appId`/`wsUrl` — names what it auths.
|
|
53
54
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* **Auth-credential string only.** Identity/render fields ride on
|
|
56
|
+
* the `ai.ggui/render` slice meta delivered through the MCP Apps
|
|
57
|
+
* `_meta` path; this field is purely the WS subscribe credential.
|
|
58
|
+
*
|
|
59
|
+
* General transport-credential slot — the type system does NOT
|
|
60
|
+
* couple this field to any integration. Today the only consumer
|
|
61
|
+
* minting these is the MCP Apps outbound delivery path
|
|
62
|
+
* (`ui://ggui/render`), but any future credential-mint mechanism
|
|
63
|
+
* (signed-URL share, short-code auto-login, etc.) reuses the same
|
|
64
|
+
* field with the same semantics:
|
|
59
65
|
*
|
|
60
66
|
* - Opaque to the client — validated server-side against the
|
|
61
|
-
* subscribe's `
|
|
62
|
-
* - Short TTL (seconds-to-minutes); stale tokens are rejected
|
|
63
|
-
*
|
|
67
|
+
* subscribe's `renderId` + `appId`.
|
|
68
|
+
* - Short TTL (seconds-to-minutes); stale tokens are rejected
|
|
69
|
+
* (refresh via `ggui_runtime_refresh_ws_token` within the
|
|
70
|
+
* refresh window, otherwise re-handshake).
|
|
71
|
+
* - Reusable within TTL (G14, 2026-05-23) so a transient WS drop
|
|
72
|
+
* can reconnect without a fresh handshake.
|
|
64
73
|
*
|
|
65
|
-
* On a successful
|
|
66
|
-
* a longer-lived reconnect credential via {@link AckPayload.
|
|
74
|
+
* On a successful ws-token-authed subscribe, the server SHOULD issue
|
|
75
|
+
* a longer-lived reconnect credential via {@link AckPayload.renderToken}.
|
|
67
76
|
*
|
|
68
77
|
* Mutually compatible with upstream bearer-auth (`Authorization`
|
|
69
78
|
* header / `?token=` query). When both are present, server behavior
|
|
70
|
-
* is implementation-defined; the canonical path is
|
|
71
|
-
* not bearer-AND-
|
|
79
|
+
* is implementation-defined; the canonical path is
|
|
80
|
+
* bearer-OR-wsToken, not bearer-AND-wsToken.
|
|
72
81
|
*/
|
|
73
|
-
|
|
82
|
+
wsToken?: string;
|
|
83
|
+
/**
|
|
84
|
+
* Event-ledger cursor for R7 wire-frame replay (render,
|
|
85
|
+
* props_update, update, …). When present, the server replays events
|
|
86
|
+
* with `sequence > sinceSequence` to the subscriber as ordinary
|
|
87
|
+
* outbound frames BEFORE the subscription enters live-stream mode.
|
|
88
|
+
*
|
|
89
|
+
* Semantics:
|
|
90
|
+
* - Omitted → fresh subscribe; no replay. The subscriber sees only
|
|
91
|
+
* live frames emitted after the subscription opens.
|
|
92
|
+
* - `0` → replay every event the server still retains (subject to
|
|
93
|
+
* the bounded ring buffer's horizon).
|
|
94
|
+
* - `N` → replay events with `sequence > N`. Use the `lastSequence`
|
|
95
|
+
* the client tracked from prior events / `/state` reads.
|
|
96
|
+
* - `N` below the server's replay horizon → server emits an
|
|
97
|
+
* `error` frame with `code: 'REPLAY_HORIZON_PASSED'` carrying
|
|
98
|
+
* `details: {currentSequence: <server's high-water mark>}`. Client
|
|
99
|
+
* recovery: re-mount from a fresh snapshot (`/state`) and reset
|
|
100
|
+
* cursor to `currentSequence`.
|
|
101
|
+
*
|
|
102
|
+
* **Distinct from `fromSeq`.** `fromSeq` is for per-stream-channel
|
|
103
|
+
* `StreamEnvelope` replay (declared `streamSpec[name].replay`
|
|
104
|
+
* policy); `sinceSequence` is for the render-level event ledger
|
|
105
|
+
* (render/update/props_update/etc.). Both cursors travel on the
|
|
106
|
+
* same subscribe frame and the server honors them independently —
|
|
107
|
+
* `sinceSequence` events replay first, then per-channel `fromSeq`
|
|
108
|
+
* envelopes, then the live tail.
|
|
109
|
+
*/
|
|
110
|
+
sinceSequence?: number;
|
|
74
111
|
/**
|
|
75
112
|
* Protocol schema versions this client accepts on the wire. Opt-in
|
|
76
113
|
* — absent is legacy-pass-through (server treats the subscribe as
|
|
@@ -95,25 +132,34 @@ export interface SubscribePayload {
|
|
|
95
132
|
* windows.
|
|
96
133
|
*/
|
|
97
134
|
supportedVersions?: string[];
|
|
135
|
+
/**
|
|
136
|
+
* Optional bootstrap credential for transports that mint a one-time
|
|
137
|
+
* opaque token at handshake (e.g. an MCP Apps `_meta`-delivered short-
|
|
138
|
+
* lived bootstrap). Generic string slot, not coupled to any specific
|
|
139
|
+
* integration — host adapters interpret the value per their own
|
|
140
|
+
* bootstrap contract.
|
|
141
|
+
*/
|
|
142
|
+
bootstrap?: string;
|
|
98
143
|
}
|
|
99
144
|
/**
|
|
100
|
-
* Payload for ack message (subscribe response includes current
|
|
145
|
+
* Payload for ack message (subscribe response includes current render)
|
|
101
146
|
*/
|
|
102
147
|
export interface AckPayload {
|
|
103
148
|
sequence: number;
|
|
104
149
|
timestamp: number;
|
|
105
|
-
/** Current
|
|
106
|
-
|
|
150
|
+
/** Current render snapshot (returned on subscribe). Single item,
|
|
151
|
+
* not an array — Phase B collapsed the vessel. */
|
|
152
|
+
render?: Render;
|
|
107
153
|
/**
|
|
108
154
|
* Current outbound-stream cursor snapshot at the moment the ack is
|
|
109
|
-
* sent. Distinct from `sequence` (which counts INBOUND
|
|
110
|
-
*
|
|
155
|
+
* sent. Distinct from `sequence` (which counts INBOUND events like
|
|
156
|
+
* `user.submitted`). Clients use `streamSeq` to:
|
|
111
157
|
* - know the point beyond which the live tail begins;
|
|
112
158
|
* - seed their `lastSeenSeq` if they didn't pass `fromSeq` on
|
|
113
159
|
* subscribe.
|
|
114
160
|
*
|
|
115
|
-
* Absent on implementations without a `
|
|
116
|
-
* 0 means the
|
|
161
|
+
* Absent on implementations without a `RenderStreamBuffer`.
|
|
162
|
+
* 0 means the render has recorded no outbound envelopes yet.
|
|
117
163
|
*/
|
|
118
164
|
streamSeq?: number;
|
|
119
165
|
/**
|
|
@@ -128,27 +174,27 @@ export interface AckPayload {
|
|
|
128
174
|
*/
|
|
129
175
|
replayTruncated?: boolean;
|
|
130
176
|
/**
|
|
131
|
-
* Reconnect credential issued on successful
|
|
177
|
+
* Reconnect credential issued on successful ws-token-authed subscribe.
|
|
132
178
|
*
|
|
133
|
-
* General transport-
|
|
134
|
-
* this field to any integration (same positioning as
|
|
135
|
-
* {@link SubscribePayload.
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
179
|
+
* General transport-credential slot — the type system does NOT
|
|
180
|
+
* couple this field to any integration (same positioning as
|
|
181
|
+
* {@link SubscribePayload.wsToken}). Servers that accepted a WS
|
|
182
|
+
* token on `subscribe` SHOULD mint a longer-lived render-scoped
|
|
183
|
+
* token and return it here so the client can reconnect without
|
|
184
|
+
* re-minting from the original credential source.
|
|
139
185
|
*
|
|
140
186
|
* Semantics:
|
|
141
|
-
* - Longer TTL than the
|
|
142
|
-
* - Bound to the same `
|
|
187
|
+
* - Longer TTL than the ws token (minutes-to-hours).
|
|
188
|
+
* - Bound to the same `renderId` + `appId`.
|
|
143
189
|
* - Passed on reconnect via the standard bearer path
|
|
144
|
-
* (`Authorization: Bearer <
|
|
145
|
-
* `SubscribePayload.
|
|
190
|
+
* (`Authorization: Bearer <renderToken>` or `?token=`), NOT in
|
|
191
|
+
* `SubscribePayload.wsToken` (which is short-TTL and credential-scoped).
|
|
146
192
|
*
|
|
147
|
-
* Absent when the subscribe was bearer-authed (no
|
|
193
|
+
* Absent when the subscribe was bearer-authed (no ws-token-bound
|
|
148
194
|
* reconnect credential needed) and on servers that don't implement
|
|
149
|
-
*
|
|
195
|
+
* ws-token auth.
|
|
150
196
|
*/
|
|
151
|
-
|
|
197
|
+
renderToken?: string;
|
|
152
198
|
/**
|
|
153
199
|
* Protocol schema version this server emits on. Advertised on every
|
|
154
200
|
* successful ack. First-party servers populate this with
|
|
@@ -158,7 +204,7 @@ export interface AckPayload {
|
|
|
158
204
|
* AND not in the client's `CLIENT_SUPPORTED_VERSIONS`, the client
|
|
159
205
|
* surfaces `UPGRADE_REQUIRED` (see {@link UPGRADE_REQUIRED}) via
|
|
160
206
|
* its error channel. Absent `serverVersion` is legacy-pass-through
|
|
161
|
-
* — the client treats the
|
|
207
|
+
* — the client treats the render as version-agnostic, preserving
|
|
162
208
|
* pre-handshake behavior for servers that haven't wired the field.
|
|
163
209
|
*
|
|
164
210
|
* Symmetric with {@link SubscribePayload.supportedVersions}.
|
|
@@ -166,12 +212,12 @@ export interface AckPayload {
|
|
|
166
212
|
serverVersion?: string;
|
|
167
213
|
}
|
|
168
214
|
/**
|
|
169
|
-
* Payload for
|
|
170
|
-
* Carries a {@link
|
|
171
|
-
*
|
|
215
|
+
* Payload for render message (Server → Client: agent push event with
|
|
216
|
+
* generated/cached UI). Carries a {@link Render} — either a
|
|
217
|
+
* component variant or an embedded MCP Apps iframe variant.
|
|
172
218
|
*/
|
|
173
|
-
export interface
|
|
174
|
-
|
|
219
|
+
export interface RenderPayload {
|
|
220
|
+
render: Render;
|
|
175
221
|
matchType?: string;
|
|
176
222
|
}
|
|
177
223
|
/**
|
|
@@ -196,8 +242,8 @@ export interface PushPayload {
|
|
|
196
242
|
* addition driven by a concrete client-UX need.
|
|
197
243
|
*/
|
|
198
244
|
export interface StreamEnvelope {
|
|
199
|
-
/**
|
|
200
|
-
|
|
245
|
+
/** Render this delivery belongs to. */
|
|
246
|
+
renderId: string;
|
|
201
247
|
/** Channel name (keys into `spec.channels`). */
|
|
202
248
|
channel: string;
|
|
203
249
|
/**
|
|
@@ -220,15 +266,15 @@ export interface StreamEnvelope {
|
|
|
220
266
|
*/
|
|
221
267
|
complete?: boolean;
|
|
222
268
|
/**
|
|
223
|
-
*
|
|
269
|
+
* Render-scoped monotonic outbound sequence. Server-assigned;
|
|
224
270
|
* clients MUST NOT populate it on producer-side inputs. Gap-free
|
|
225
|
-
* within a single
|
|
271
|
+
* within a single render, starting at 1. Used by the client to:
|
|
226
272
|
* - track `lastSeenSeq` for reconnect (pass it back as
|
|
227
273
|
* `SubscribePayload.fromSeq`);
|
|
228
274
|
* - dedupe deliveries (at-least-once semantics).
|
|
229
275
|
*
|
|
230
276
|
* OPTIONAL because hosted cloud does not yet stamp `seq`;
|
|
231
|
-
* implementations backed by `
|
|
277
|
+
* implementations backed by `RenderStreamBuffer`
|
|
232
278
|
* (OSS `@ggui-ai/mcp-server`) always populate it. When absent,
|
|
233
279
|
* clients treat deliveries as single-shot with no replay possible.
|
|
234
280
|
* This becomes required once the hosted runtime supports replay.
|
|
@@ -249,7 +295,7 @@ export interface StreamEnvelope {
|
|
|
249
295
|
* Delivers streaming text chunks from the agent in real-time.
|
|
250
296
|
*/
|
|
251
297
|
export interface StreamPayload {
|
|
252
|
-
|
|
298
|
+
renderId: string;
|
|
253
299
|
/** Text chunk from agent. Empty string on final (done=true) message. */
|
|
254
300
|
chunk: string;
|
|
255
301
|
/** Whether this is the final chunk in the stream. */
|
|
@@ -282,19 +328,17 @@ export interface ErrorPayload {
|
|
|
282
328
|
* to begin polling the channel's `streamSpec[ch].source.tool` on the
|
|
283
329
|
* iframe's behalf and fan results out as `channel_payload` frames.
|
|
284
330
|
*
|
|
285
|
-
* Idempotent on reconnect: replaying the same `{
|
|
331
|
+
* Idempotent on reconnect: replaying the same `{renderId, channelName,
|
|
286
332
|
* pollIntervalMs?, args?}` triple after a WS disconnect re-binds the
|
|
287
333
|
* existing subscription rather than minting a duplicate. The server is
|
|
288
334
|
* authoritative on `pollIntervalMs` — clients propose, server caps to
|
|
289
335
|
* its policy floor.
|
|
290
336
|
*/
|
|
291
337
|
export interface ChannelSubscribePayload {
|
|
292
|
-
/** Active
|
|
293
|
-
|
|
338
|
+
/** Active render id from the iframe's bootstrap. */
|
|
339
|
+
renderId: string;
|
|
294
340
|
/** Active app id from the iframe's bootstrap. */
|
|
295
341
|
appId: string;
|
|
296
|
-
/** Stack item the channel belongs to (so the server can resolve `streamSpec[channelName]`). */
|
|
297
|
-
stackItemId: string;
|
|
298
342
|
/** Channel name as keyed in `streamSpec`. The source.tool comes from the contract. */
|
|
299
343
|
channelName: string;
|
|
300
344
|
/**
|
|
@@ -312,15 +356,14 @@ export interface ChannelSubscribePayload {
|
|
|
312
356
|
}
|
|
313
357
|
/**
|
|
314
358
|
* Payload for `channel_unsubscribe` (Client → Server). Idempotent: the
|
|
315
|
-
* server tolerates an unsubscribe for an unknown `{
|
|
359
|
+
* server tolerates an unsubscribe for an unknown `{renderId,
|
|
316
360
|
* channelName}` pair (treats as a no-op + ack). Closing the WebSocket
|
|
317
361
|
* implicitly unsubscribes all channels on that subscriber — this
|
|
318
|
-
* message is for fine-grained mid-
|
|
362
|
+
* message is for fine-grained mid-render cancellation.
|
|
319
363
|
*/
|
|
320
364
|
export interface ChannelUnsubscribePayload {
|
|
321
|
-
|
|
365
|
+
renderId: string;
|
|
322
366
|
appId: string;
|
|
323
|
-
stackItemId: string;
|
|
324
367
|
channelName: string;
|
|
325
368
|
}
|
|
326
369
|
/**
|
|
@@ -334,9 +377,8 @@ export interface ChannelUnsubscribePayload {
|
|
|
334
377
|
* semantics as iframe-polled payloads.
|
|
335
378
|
*/
|
|
336
379
|
export interface ChannelPayloadFrame {
|
|
337
|
-
|
|
380
|
+
renderId: string;
|
|
338
381
|
appId: string;
|
|
339
|
-
stackItemId: string;
|
|
340
382
|
channelName: string;
|
|
341
383
|
/** Server-monotonic sequence for this channel — gap-detection on the client. */
|
|
342
384
|
seq: number;
|
|
@@ -364,34 +406,22 @@ export interface ChannelPayloadFrame {
|
|
|
364
406
|
*
|
|
365
407
|
* - `CHANNEL_UNKNOWN` — channelName not present in streamSpec.
|
|
366
408
|
* - `CHANNEL_NOT_LOCAL` — `source.tool` not in `streamWebSocketLocalTools`; iframe must poll directly.
|
|
367
|
-
* - `
|
|
368
|
-
* - `SUBSCRIBE_UNAUTHORIZED` —
|
|
409
|
+
* - `RENDER_NOT_FOUND` — `renderId` not on the server.
|
|
410
|
+
* - `SUBSCRIBE_UNAUTHORIZED` — WS auth token expired or render-mismatch.
|
|
369
411
|
* - `POLL_FAILED` — source.tool invocation threw. `details` carries the error.
|
|
370
412
|
*/
|
|
371
413
|
export interface ChannelErrorPayload {
|
|
372
|
-
|
|
414
|
+
renderId: string;
|
|
373
415
|
channelName: string;
|
|
374
|
-
code: 'CHANNEL_UNKNOWN' | 'CHANNEL_NOT_LOCAL' | '
|
|
416
|
+
code: 'CHANNEL_UNKNOWN' | 'CHANNEL_NOT_LOCAL' | 'RENDER_NOT_FOUND' | 'SUBSCRIBE_UNAUTHORIZED' | 'POLL_FAILED' | (string & {});
|
|
375
417
|
message: string;
|
|
376
418
|
details?: JsonValue;
|
|
377
419
|
}
|
|
378
420
|
/**
|
|
379
|
-
* Payload for
|
|
380
|
-
*/
|
|
381
|
-
export interface PopPayload {
|
|
382
|
-
sessionId: string;
|
|
383
|
-
}
|
|
384
|
-
/**
|
|
385
|
-
* Payload for close message (Client → Server: close session)
|
|
421
|
+
* Payload for close message (Client → Server: close render)
|
|
386
422
|
*/
|
|
387
423
|
export interface ClosePayload {
|
|
388
|
-
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Payload for get_stack message (Client → Server: get stack info)
|
|
392
|
-
*/
|
|
393
|
-
export interface GetStackPayload {
|
|
394
|
-
sessionId: string;
|
|
424
|
+
renderId: string;
|
|
395
425
|
}
|
|
396
426
|
/**
|
|
397
427
|
* Generation strategy controls how ggui resolves UI generation requests.
|
|
@@ -401,68 +431,6 @@ export interface GetStackPayload {
|
|
|
401
431
|
* - `creative` — Always generate fresh UI via LLM (no blueprint matching).
|
|
402
432
|
*/
|
|
403
433
|
export type GenerationStrategy = 'strict' | 'balanced' | 'creative';
|
|
404
|
-
/**
|
|
405
|
-
* Payload for the legacy `generate` WS message — the pre-handshake-first
|
|
406
|
-
* direct-generation entry point. The canonical mint path is the
|
|
407
|
-
* `ggui_new_session` → `ggui_handshake` → `ggui_push` tool chain; this
|
|
408
|
-
* payload survives only because `@ggui-ai/ggui-react` /
|
|
409
|
-
* `@ggui-ai/ggui-react-native` SDKs still expose a `useGenerate()` hook
|
|
410
|
-
* that POSTs through the WS surface for one-shot UI generation.
|
|
411
|
-
*
|
|
412
|
-
* Several flat fields here (`adapters`, `actions`) are legacy shapes
|
|
413
|
-
* superseded by `DataContract.agentCapabilities` + `DataContract.actionSpec`;
|
|
414
|
-
* they remain on the type for SDK back-compat but new code MUST author
|
|
415
|
-
* via the handshake-first chain.
|
|
416
|
-
*
|
|
417
|
-
* Generic `TProps` defaults to {@link JsonObject} for the data payload.
|
|
418
|
-
* Generic `TContext` defaults to {@link JsonObject} for generator context hints.
|
|
419
|
-
*
|
|
420
|
-
* @deprecated Use `ggui_handshake` + `ggui_push` (the canonical mint
|
|
421
|
-
* path). This payload is retained only for the legacy `useGenerate()`
|
|
422
|
-
* SDK hook surface.
|
|
423
|
-
*/
|
|
424
|
-
export interface GeneratePayload<TProps = JsonObject, TContext = JsonObject> {
|
|
425
|
-
sessionId: string;
|
|
426
|
-
prompt: string;
|
|
427
|
-
/** Human-readable description (for non-LLM producers) */
|
|
428
|
-
description?: string;
|
|
429
|
-
/** Context hints for the generator */
|
|
430
|
-
context?: TContext;
|
|
431
|
-
/** JSON Schema for form validation */
|
|
432
|
-
schema?: JsonSchema;
|
|
433
|
-
/**
|
|
434
|
-
* @deprecated Legacy flat shape. Declare via
|
|
435
|
-
* `DataContract.actionSpec` instead.
|
|
436
|
-
*/
|
|
437
|
-
actions?: Array<{
|
|
438
|
-
id: string;
|
|
439
|
-
label: string;
|
|
440
|
-
description?: string;
|
|
441
|
-
icon?: string;
|
|
442
|
-
variant?: string;
|
|
443
|
-
confirm?: boolean | string;
|
|
444
|
-
disabled?: boolean;
|
|
445
|
-
}>;
|
|
446
|
-
/** Device/viewport context for responsive UI generation */
|
|
447
|
-
interfaceContext?: InterfaceContext;
|
|
448
|
-
/** Generation strategy (default: 'balanced') */
|
|
449
|
-
strategy?: GenerationStrategy;
|
|
450
|
-
/** Predefined blueprint name to use (for strict/balanced strategy) */
|
|
451
|
-
blueprintName?: string;
|
|
452
|
-
/** Props data to pass to the blueprint */
|
|
453
|
-
data?: TProps;
|
|
454
|
-
/** Data contract from negotiation (agreed props/actions shape) */
|
|
455
|
-
contract?: DataContract;
|
|
456
|
-
/** UX/presentation instructions for the generator */
|
|
457
|
-
instructions?: string;
|
|
458
|
-
/** Specific model override for generation */
|
|
459
|
-
model?: string;
|
|
460
|
-
/**
|
|
461
|
-
* Existing stack-item id for repair — reuses the broken component's
|
|
462
|
-
* slot instead of creating a new one.
|
|
463
|
-
*/
|
|
464
|
-
stackItemId?: string;
|
|
465
|
-
}
|
|
466
434
|
/**
|
|
467
435
|
* Progress step during UI generation
|
|
468
436
|
*/
|
|
@@ -471,8 +439,7 @@ export type ProgressStep = 'queued' | 'primitives' | 'writing' | 'compiling';
|
|
|
471
439
|
* Payload for progress message (Server → Client)
|
|
472
440
|
*/
|
|
473
441
|
export interface ProgressPayload {
|
|
474
|
-
|
|
475
|
-
stackItemId: string;
|
|
442
|
+
renderId: string;
|
|
476
443
|
step: ProgressStep;
|
|
477
444
|
message: string;
|
|
478
445
|
}
|
|
@@ -487,16 +454,16 @@ export interface AgentMsgPayload {
|
|
|
487
454
|
type: AgentMsgType;
|
|
488
455
|
/** Message text from the agent */
|
|
489
456
|
message: string;
|
|
490
|
-
/**
|
|
491
|
-
|
|
457
|
+
/** Render ID */
|
|
458
|
+
renderId: string;
|
|
492
459
|
}
|
|
493
460
|
/**
|
|
494
461
|
* Payload for props_update message (Server → Client).
|
|
495
462
|
* Replaces props on an existing rendered component without re-generation.
|
|
496
463
|
*/
|
|
497
464
|
export interface PropsUpdatePayload {
|
|
498
|
-
/**
|
|
499
|
-
|
|
465
|
+
/** Render id of the rendered component being updated. */
|
|
466
|
+
renderId: string;
|
|
500
467
|
/** New props — full replacement */
|
|
501
468
|
props: JsonObject;
|
|
502
469
|
}
|
|
@@ -505,8 +472,7 @@ export interface PropsUpdatePayload {
|
|
|
505
472
|
* Note: shortCode is returned; client constructs full URL using renderUrl from amplify_outputs
|
|
506
473
|
*/
|
|
507
474
|
export interface UrlPayload {
|
|
508
|
-
|
|
509
|
-
stackItemId: string;
|
|
475
|
+
renderId: string;
|
|
510
476
|
shortCode: string;
|
|
511
477
|
}
|
|
512
478
|
/**
|
|
@@ -535,46 +501,19 @@ export interface SystemPayload {
|
|
|
535
501
|
status?: string;
|
|
536
502
|
/** App ID requesting access (used with auth_required for app-scoped grants) */
|
|
537
503
|
appId?: string;
|
|
538
|
-
/**
|
|
539
|
-
|
|
504
|
+
/** Render ID for WebSocket context (used with auth_required) */
|
|
505
|
+
renderId?: string;
|
|
540
506
|
}
|
|
541
507
|
/**
|
|
542
508
|
* Payload for internal:progress message (generator → handler)
|
|
543
509
|
*/
|
|
544
510
|
export interface InternalProgressPayload {
|
|
545
|
-
|
|
546
|
-
stackItemId: string;
|
|
511
|
+
renderId: string;
|
|
547
512
|
step: ProgressStep;
|
|
548
513
|
}
|
|
549
|
-
/**
|
|
550
|
-
* Extended AckPayload for legacy `generate` requests. The handshake-first
|
|
551
|
-
* mint path (`ggui_new_session` → `ggui_handshake` → `ggui_push`) does
|
|
552
|
-
* NOT use this ack — it returns its own structured-content envelope.
|
|
553
|
-
*
|
|
554
|
-
* Note: shortCode is returned; client constructs full URL using renderUrl
|
|
555
|
-
* from amplify_outputs.
|
|
556
|
-
*
|
|
557
|
-
* @deprecated Same lifecycle as {@link GeneratePayload}.
|
|
558
|
-
*/
|
|
559
|
-
export interface GenerateAckPayload extends AckPayload {
|
|
560
|
-
shortCode: string;
|
|
561
|
-
stackItemId: string;
|
|
562
|
-
/**
|
|
563
|
-
* @deprecated No live producer or consumer. Retained on the type for
|
|
564
|
-
* one minor before structural removal.
|
|
565
|
-
*/
|
|
566
|
-
sentViaWebsocket: boolean;
|
|
567
|
-
}
|
|
568
|
-
/**
|
|
569
|
-
* Payload for session message (Server → Client)
|
|
570
|
-
* Sent when an agent creates a session in response to a start invoke.
|
|
571
|
-
*/
|
|
572
|
-
export interface SessionPayload {
|
|
573
|
-
sessionId: string;
|
|
574
|
-
}
|
|
575
514
|
/**
|
|
576
515
|
* Payload for `drain_ack` (Server → Client). Sent by `ggui_consume` after
|
|
577
|
-
* it pops an `ActionEnvelope` off a
|
|
516
|
+
* it pops an `ActionEnvelope` off a render's pending-events pipe, so
|
|
578
517
|
* the iframe-runtime knows the agent received the gesture and can
|
|
579
518
|
* dismiss the per-action toast.
|
|
580
519
|
*
|
|
@@ -591,12 +530,10 @@ export interface SessionPayload {
|
|
|
591
530
|
* @public
|
|
592
531
|
*/
|
|
593
532
|
export interface DrainAckPayload {
|
|
594
|
-
/** Active session id from the bootstrap that emitted the action. */
|
|
595
|
-
sessionId: string;
|
|
596
533
|
/** Active app id from the bootstrap that emitted the action. */
|
|
597
534
|
appId: string;
|
|
598
|
-
/**
|
|
599
|
-
|
|
535
|
+
/** Render the drained event was queued on. */
|
|
536
|
+
renderId: string;
|
|
600
537
|
/**
|
|
601
538
|
* Server-assigned `ActionEnvelope.id` of the specific event that
|
|
602
539
|
* was drained. The iframe-runtime keys its toast resolution on this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-channel.d.ts","sourceRoot":"","sources":["../../src/types/live-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"live-channel.d.ts","sourceRoot":"","sources":["../../src/types/live-channel.ts"],"names":[],"mappings":"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"}
|