@ggui-ai/protocol 0.1.0-rc.3 → 0.2.0-alpha.1

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.
Files changed (90) hide show
  1. package/README.md +3 -3
  2. package/dist/bridge/invoke-agent.d.ts +8 -8
  3. package/dist/bridge/invoke-agent.d.ts.map +1 -1
  4. package/dist/bridge/invoke-agent.js +12 -12
  5. package/dist/envelopes/builders.d.ts +2 -4
  6. package/dist/envelopes/builders.d.ts.map +1 -1
  7. package/dist/envelopes/builders.js +2 -6
  8. package/dist/index.d.ts +2 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +4 -3
  11. package/dist/integrations/mcp-apps.d.ts +354 -711
  12. package/dist/integrations/mcp-apps.d.ts.map +1 -1
  13. package/dist/integrations/mcp-apps.js +266 -208
  14. package/dist/recommended-prompts.d.ts +1 -1
  15. package/dist/recommended-prompts.js +1 -1
  16. package/dist/schemas/data-contract.d.ts +4 -3
  17. package/dist/schemas/data-contract.d.ts.map +1 -1
  18. package/dist/schemas/data-contract.js +4 -3
  19. package/dist/schemas/invoke.d.ts +2 -2
  20. package/dist/schemas/invoke.js +2 -2
  21. package/dist/schemas/mcp.d.ts +60 -79
  22. package/dist/schemas/mcp.d.ts.map +1 -1
  23. package/dist/schemas/mcp.js +93 -116
  24. package/dist/schemas/sync-check.js +1 -1
  25. package/dist/stream/stream-parser.d.ts +4 -4
  26. package/dist/stream/stream-parser.d.ts.map +1 -1
  27. package/dist/stream/stream-parser.js +9 -9
  28. package/dist/transport/websocket.d.ts +14 -49
  29. package/dist/transport/websocket.d.ts.map +1 -1
  30. package/dist/types/app-config.d.ts +17 -32
  31. package/dist/types/app-config.d.ts.map +1 -1
  32. package/dist/types/canvas-lifecycle.d.ts +13 -13
  33. package/dist/types/canvas-lifecycle.d.ts.map +1 -1
  34. package/dist/types/canvas-lifecycle.js +3 -3
  35. package/dist/types/contract-inference.d.ts +4 -7
  36. package/dist/types/contract-inference.d.ts.map +1 -1
  37. package/dist/types/data-bindings.d.ts +1 -1
  38. package/dist/types/data-bindings.d.ts.map +1 -1
  39. package/dist/types/data-contract.d.ts +10 -10
  40. package/dist/types/data-contract.d.ts.map +1 -1
  41. package/dist/types/events.d.ts +14 -56
  42. package/dist/types/events.d.ts.map +1 -1
  43. package/dist/types/events.js +1 -8
  44. package/dist/types/feedback.d.ts +2 -4
  45. package/dist/types/feedback.d.ts.map +1 -1
  46. package/dist/types/handshake-suggestion.d.ts +1 -1
  47. package/dist/types/host-context.d.ts +5 -15
  48. package/dist/types/host-context.d.ts.map +1 -1
  49. package/dist/types/host-context.js +1 -1
  50. package/dist/types/live-channel.d.ts +128 -191
  51. package/dist/types/live-channel.d.ts.map +1 -1
  52. package/dist/types/llm-route.d.ts +233 -0
  53. package/dist/types/llm-route.d.ts.map +1 -0
  54. package/dist/types/llm-route.js +433 -0
  55. package/dist/types/llm.d.ts +34 -16
  56. package/dist/types/llm.d.ts.map +1 -1
  57. package/dist/types/llm.js +34 -38
  58. package/dist/types/mcp.d.ts +47 -137
  59. package/dist/types/mcp.d.ts.map +1 -1
  60. package/dist/types/mcp.js +2 -2
  61. package/dist/types/openrouter-models.d.ts +3 -2
  62. package/dist/types/openrouter-models.d.ts.map +1 -1
  63. package/dist/types/render-event.d.ts +119 -0
  64. package/dist/types/render-event.d.ts.map +1 -0
  65. package/dist/types/render-event.js +38 -0
  66. package/dist/types/session.d.ts +216 -342
  67. package/dist/types/session.d.ts.map +1 -1
  68. package/dist/types/ui-generator.d.ts +8 -9
  69. package/dist/types/ui-generator.d.ts.map +1 -1
  70. package/dist/validation/contract-validator.d.ts +60 -4
  71. package/dist/validation/contract-validator.d.ts.map +1 -1
  72. package/dist/validation/contract-validator.js +101 -5
  73. package/dist/validation/reserved-channels.d.ts +1 -1
  74. package/dist/validation/reserved-channels.js +5 -5
  75. package/dist/validation/sanitize-error.js +1 -1
  76. package/dist/validation/schema-compat-invariants.d.ts +2 -2
  77. package/dist/validation/schema-compat-invariants.js +2 -2
  78. package/dist/validation/schema-meta-validation.d.ts +1 -1
  79. package/dist/validation/schema-meta-validation.js +2 -2
  80. package/dist/validation/schema-subset.d.ts +1 -1
  81. package/dist/version.d.ts +253 -46
  82. package/dist/version.d.ts.map +1 -1
  83. package/dist/version.js +253 -46
  84. package/package.json +3 -2
  85. package/dist/navigation/index.d.ts +0 -3
  86. package/dist/navigation/index.d.ts.map +0 -1
  87. package/dist/navigation/index.js +0 -1
  88. package/dist/navigation/stack-navigation.d.ts +0 -55
  89. package/dist/navigation/stack-navigation.d.ts.map +0 -1
  90. package/dist/navigation/stack-navigation.js +0 -80
@@ -27,13 +27,10 @@ export const interfaceContextSchema = z.object({
27
27
  // Input schemas: pre-launch posture is `.strict()` — unknown keys reject.
28
28
  // Pre-fix all of these had `.passthrough()` as forward-compat shims. Pre-
29
29
  // launch No Backward Compatibility (CLAUDE.md) supersedes — typos in agent
30
- // args (`stackItemid`, `sesssionId`, etc.) surface immediately at the wire
30
+ // args (`renderid`, `redner_id`, etc.) surface immediately at the wire
31
31
  // boundary instead of silently no-op-ing because the server stripped them.
32
- export const popInputSchema = z.object({
33
- sessionId: z.string().describe('Session opaque id from ggui_new_session.'),
34
- }).strict();
35
32
  export const consumeInputSchema = z.object({
36
- stackItemId: z.string().describe('Stack item opaque id (UUID) — returned by ggui_push.'),
33
+ renderId: z.string().describe('Render opaque id (UUID) — returned by ggui_render.'),
37
34
  timeout: z.number().min(0).max(25).optional()
38
35
  .describe('Long-poll timeout in seconds (default short; max 25).'),
39
36
  }).strict();
@@ -42,23 +39,15 @@ export const consumeInputSchema = z.object({
42
39
  * `streamSpec[channel]`.
43
40
  */
44
41
  export const emitInputSchema = z.object({
45
- sessionId: z.string().describe('Session opaque id from ggui_new_session.'),
42
+ renderId: z.string().describe('Render opaque id (UUID) — returned by ggui_render.'),
46
43
  channel: z.string()
47
- .describe('Channel name declared on the active stack item streamSpec.'),
44
+ .describe('Channel name declared on the active render streamSpec.'),
48
45
  payload: z.unknown().describe('Payload — must match streamSpec[channel].schema.'),
49
46
  complete: z.boolean().optional()
50
47
  .describe('True marks the stream complete; subsequent emits on this channel reject.'),
51
- stackItemId: z.string().optional()
52
- .describe('Stack item to scope this emit to; defaults to session top.'),
53
- }).strict();
54
- export const getSessionInputSchema = z.object({
55
- sessionId: z.string().describe('Session opaque id from ggui_new_session.'),
56
- }).strict();
57
- export const getStackInputSchema = z.object({
58
- sessionId: z.string().describe('Session opaque id from ggui_new_session.'),
59
48
  }).strict();
60
- export const closeInputSchema = z.object({
61
- sessionId: z.string().describe('Session opaque id from ggui_new_session.'),
49
+ export const getRenderInputSchema = z.object({
50
+ renderId: z.string().describe('Render opaque id (UUID) — returned by ggui_render.'),
62
51
  }).strict();
63
52
  export const listFeaturedBlueprintsInputSchema = z.object({
64
53
  level: z.enum(['primitive', 'component', 'composite', 'template']).optional(),
@@ -78,47 +67,17 @@ export const discoverInputSchema = z.object({}).strict();
78
67
  export const requestCredentialInputSchema = z.object({
79
68
  serviceId: z.string().describe('OAuth service ID (e.g., "bashdoor", "ubot")'),
80
69
  reason: z.string().optional().describe('Why the agent needs this credential (shown to user)'),
81
- sessionId: z.string().optional().describe('Existing session ID to push consent UI into'),
70
+ renderId: z.string().optional().describe('Existing render id to push consent UI into.'),
82
71
  }).strict();
83
- // ── Protocol v1.1 — canonical tool quartet ──
72
+ // ── Post-Phase-B — canonical tool triad ──
84
73
  //
85
- // `ggui_new_session` + `ggui_handshake` + `ggui_push` + `ggui_update`.
86
- // The session lifecycle is decoupled from the push lifecycle: agents
87
- // mint a sessionId via `ggui_new_session` ONCE per chat, then thread
88
- // it across every subsequent `ggui_handshake`. `ggui_update` mutates
89
- // stack-item props addressed by the globally-unique `stackItemId` — no
90
- // sessionId required (server resolves via the SessionStore's stackItemId
91
- // secondary index, with appId tenancy enforced from `ctx.appId`).
92
- //
93
- /**
94
- * `ggui_new_session` — mint or resolve a chat-scoped session handle.
95
- *
96
- * Server-mints, agent-threads. SEP-2567 aligned ("Sessionless MCP",
97
- * Final 2026-03-11): the MCP spec deliberately removes Mcp-Session-Id
98
- * because hosts can't agree on what a session means; the recommended
99
- * pattern is exactly this — server returns explicit handles, agent
100
- * threads them through subsequent calls.
101
- *
102
- * No inputs — every call mints a fresh random sessionId. (A prior
103
- * optional `seed` for deterministic derivation was retired because
104
- * LLMs were passing the same seed across user turns and getting back
105
- * the same sessionId, defeating the "new" in the tool name.)
106
- */
107
- export const newSessionInputSchema = z.object({}).strict();
108
- export const newSessionOutputSchema = z.object({
109
- sessionId: z.string()
110
- .describe('Thread this through every subsequent ggui_handshake / ggui_update call in this chat.'),
111
- appId: z.string(),
112
- createdAt: z.string()
113
- .describe('ISO 8601 — creation timestamp of the freshly-minted session.'),
114
- nextStep: z.object({
115
- tool: z.literal('ggui_handshake'),
116
- description: z.string(),
117
- example: z.string(),
118
- }).describe('Wire-shape recovery hint — a worked literal example of the next call.'),
119
- });
120
- //
121
- // `ggui_handshake` + `ggui_push` + `ggui_update` follow.
74
+ // `ggui_handshake` → `ggui_render` → `ggui_update` / `ggui_consume`.
75
+ // The retired `ggui_new_session` step is gone — handshake mints the
76
+ // render server-side. Conversation grouping (sibling renders within one
77
+ // host chat) lives on the unchanged `_meta["ai.ggui/host-session"]`
78
+ // channel, captured ONCE at render creation, never threaded by the
79
+ // agent. The collapse of Session→Render means `renderId` is the single
80
+ // identity the wire references everywhere.
122
81
  //
123
82
  /**
124
83
  * `ggui_handshake` — three-step suggestion protocol.
@@ -130,7 +89,7 @@ export const newSessionOutputSchema = z.object({
130
89
  * `BlueprintSearch` and contract-validation in parallel and returns a
131
90
  * `HandshakeSuggestion` routed by `origin: cache | agent | synth`.
132
91
  *
133
- * Step 3 (paired `ggui_push`): the agent accepts (reuses the
92
+ * Step 3 (paired `ggui_render`): the agent accepts (reuses the
134
93
  * provisional `blueprintId` minted in step-2) OR overrides (mints a
135
94
  * fresh `blueprintId` against a NEW draft).
136
95
  *
@@ -140,17 +99,13 @@ export const newSessionOutputSchema = z.object({
140
99
  * variance + generator hint.
141
100
  * - The agent is the contract authority; synth amends only when
142
101
  * validation fails.
102
+ * - Post-Phase-B the handshake input carries NO `sessionId`. The
103
+ * server mints `renderId` on the paired `ggui_render`; host
104
+ * conversation grouping flows via the host-supplied
105
+ * `_meta["ai.ggui/host-session"]` envelope captured at render
106
+ * creation (see {@link RenderBase.hostSession}).
143
107
  */
144
108
  export const handshakeInputSchema = z.object({
145
- /**
146
- * Required. Mint via `ggui_new_session` once per chat, then thread
147
- * through every subsequent handshake. Server validates existence +
148
- * tenant ownership; unknown / cross-tenant ids surface as
149
- * session_not_found.
150
- */
151
- sessionId: z.string()
152
- .min(1)
153
- .describe('Session handle minted by ggui_new_session. Required — call ggui_new_session({seed?}) first to obtain one. Reuse the same sessionId across multiple handshake/push pairs in the same chat to grow the session stack.'),
154
109
  /**
155
110
  * Concise semantic identity of the UI. Same intent across calls =
156
111
  * same component reused. Required — drives blueprint-search keying
@@ -171,7 +126,7 @@ export const handshakeInputSchema = z.object({
171
126
  * Skip blueprint-search on step-2 and route straight to validation
172
127
  * + (if validation passes) agent-mode suggestion against the draft.
173
128
  * Used after a prior handshake returned an unwanted cache suggestion
174
- * and the agent wants to force a fresh-gen path on the paired push.
129
+ * and the agent wants to force a fresh-gen path on the paired render.
175
130
  */
176
131
  forceCreate: z.boolean().optional(),
177
132
  }).strict();
@@ -181,13 +136,13 @@ export const handshakeInputSchema = z.object({
181
136
  * and optional `amendments` (synth-only) / `validationFindings`
182
137
  * (soft on cache).
183
138
  *
184
- * The agent reads `suggestion.origin` to branch the paired push:
139
+ * The agent reads `suggestion.origin` to branch the paired render call:
185
140
  *
186
- * - `cache` → push `{decision: {kind: 'accept'}}` for cache delivery.
187
- * - `agent` → push `{decision: {kind: 'accept'}}` to gen against the draft.
188
- * - `synth` → push `{decision: {kind: 'accept'}}` to gen against the amended contract.
141
+ * - `cache` → render `{decision: {kind: 'accept'}}` for cache delivery.
142
+ * - `agent` → render `{decision: {kind: 'accept'}}` to gen against the draft.
143
+ * - `synth` → render `{decision: {kind: 'accept'}}` to gen against the amended contract.
189
144
  *
190
- * Any origin → push `{decision: {kind: 'override', blueprintDraft: {...}}}` to
145
+ * Any origin → render `{decision: {kind: 'override', blueprintDraft: {...}}}` to
191
146
  * discard the suggestion and gen against a fresh draft (mints a new
192
147
  * `blueprintId` server-side).
193
148
  *
@@ -196,12 +151,16 @@ export const handshakeInputSchema = z.object({
196
151
  * its internal `HandshakeOutput` TS shape for telemetry / post-classify
197
152
  * tracing — zod strips them before structuredContent serialization.
198
153
  *
199
- * `serverCapabilities` reaches the iframe via `_meta.ggui.bootstrap`
200
- * (see `bootstrap-meta-derivation.ts`), not via this response.
154
+ * `serverCapabilities` reaches the iframe via the `ai.ggui/render`
155
+ * slice meta (see `slice-meta-derivation.ts`), not via this response.
156
+ *
157
+ * Post-Phase-B the `'compose'` action enum value is gone — there is no
158
+ * stack of N renders to compose against. Three create/update branches +
159
+ * `'declined'` cover every legal outcome.
201
160
  */
202
161
  export const handshakeOutputSchema = z.object({
203
- handshakeId: z.string().describe('Stable id — pass to ggui_push / ggui_update'),
204
- action: z.enum(['create', 'reuse', 'update', 'replace', 'compose', 'declined']),
162
+ handshakeId: z.string().describe('Stable id — pass to ggui_render / ggui_update'),
163
+ action: z.enum(['create', 'reuse', 'update', 'replace', 'declined']),
205
164
  /**
206
165
  * The handshake suggestion — see `handshakeSuggestionSchema`. The
207
166
  * routing discriminator is `suggestion.origin`; `blueprintMeta` is
@@ -209,7 +168,7 @@ export const handshakeOutputSchema = z.object({
209
168
  * conditional on the routing outcome.
210
169
  */
211
170
  suggestion: handshakeSuggestionSchema
212
- .describe('Server\'s suggestion — origin-routed (cache | agent | synth). Always carries a provisional `blueprintMeta` the agent reuses by sending `decision: \'accept\'` on push.'),
171
+ .describe('Server\'s suggestion — origin-routed (cache | agent | synth). Always carries a provisional `blueprintMeta` the agent reuses by sending `decision: \'accept\'` on render.'),
213
172
  /**
214
173
  * Truncated human-readable rationale for the `action` value. Helps
215
174
  * the agent and the operator narrate why the server chose to reuse a cached
@@ -223,13 +182,13 @@ export const handshakeOutputSchema = z.object({
223
182
  .optional()
224
183
  .describe('Short rationale (≤280 chars) for the `action` value. Surfaced for agent + operator visibility; truncated to keep the structuredContent payload predictable.'),
225
184
  nextStep: z.object({
226
- tool: z.literal('ggui_push'),
185
+ tool: z.literal('ggui_render'),
227
186
  description: z.string(),
228
187
  example: z.string(),
229
- }).optional().describe('Wire-shape recovery hint. A worked literal example of the next ggui_push call the agent should emit — the example string can be copied verbatim and tweaked (e.g. fill in `props` placeholders). Top-level field so a skimming agent finds it immediately.'),
188
+ }).optional().describe('Wire-shape recovery hint. A worked literal example of the next ggui_render call the agent should emit — the example string can be copied verbatim and tweaked (e.g. fill in `props` placeholders). Top-level field so a skimming agent finds it immediately.'),
230
189
  });
231
190
  /**
232
- * `ggui_push` — materialises a UI emission. Step 3 of the three-step
191
+ * `ggui_render` — materialises a UI emission. Step 3 of the three-step
233
192
  * handshake protocol.
234
193
  *
235
194
  * The agent commits its decision relative to the prior handshake's
@@ -244,18 +203,22 @@ export const handshakeOutputSchema = z.object({
244
203
  * - `accept` reuses `handshake.suggestion.blueprintMeta.blueprintId`
245
204
  * exactly; `override` discards the provisional id and mints fresh.
246
205
  *
247
- * There is no separate `ggui_commit` — push absorbs that responsibility.
206
+ * There is no separate `ggui_commit` — render absorbs that responsibility.
207
+ *
208
+ * Post-Phase-B rename from `ggui_push` — the tool materialises a single
209
+ * render (no stack of N to push onto); the new name reflects what the
210
+ * tool does at the protocol surface.
248
211
  */
249
- export const pushInputSchema = z.object({
212
+ export const renderInputSchema = z.object({
250
213
  handshakeId: z
251
214
  .string({
252
- message: 'ggui_push: handshakeId is REQUIRED. Call ggui_handshake({sessionId, intent, blueprintDraft}) first to negotiate — handshake returns a handshakeId + suggestion. Then push with {handshakeId, decision: {kind: \'accept\'}} (accept the suggestion) or {handshakeId, decision: {kind: \'override\', blueprintDraft: {...}}} (override with a fresh draft). Direct-push without a handshakeId is not supported.',
215
+ message: 'ggui_render: handshakeId is REQUIRED. Call ggui_handshake({intent, blueprintDraft}) first to negotiate — handshake returns a handshakeId + suggestion. Then render with {handshakeId, decision: {kind: \'accept\'}} (accept the suggestion) or {handshakeId, decision: {kind: \'override\', blueprintDraft: {...}}} (override with a fresh draft). Direct-render without a handshakeId is not supported.',
253
216
  })
254
- .min(1, 'ggui_push: handshakeId must be a non-empty string from a prior ggui_handshake call.'),
217
+ .min(1, 'ggui_render: handshakeId must be a non-empty string from a prior ggui_handshake call.'),
255
218
  /**
256
219
  * Runtime prop values for THIS render. Validated against the
257
220
  * effective contract's `propsSpec` — required-field checks + type
258
- * checks per spec entry. Validation failures fail the push with a
221
+ * checks per spec entry. Validation failures fail the render with a
259
222
  * recoverable `ContractViolationError`.
260
223
  */
261
224
  props: z.record(z.string(), z.unknown()).optional(),
@@ -275,30 +238,45 @@ export const pushInputSchema = z.object({
275
238
  .describe('Accept the handshake suggestion (use provisional blueprintId verbatim) or override with a fresh draft (mint new blueprintId).'),
276
239
  }).strict();
277
240
  /**
278
- * Wire-output shape — intentionally lean: `{stackItemId, nextStep?,
279
- * url, action}`. The handler carries `sessionId`, `shortCode`,
280
- * `codeReady`, `handshakeId`, `decision`, `contract`, `contractHash`,
281
- * `cache`, `codeUrl`, `codeHash` on its internal `PushOutput` TS shape
282
- * for telemetry / post-classify tracing — zod strips them before
283
- * structuredContent serialization.
241
+ * Wire-output shape — intentionally lean: `{renderId, nextStep?, action}`.
242
+ * The handler carries `shortCode`, `codeReady`, `handshakeId`,
243
+ * `decision`, `contract`, `contractHash`, `cache`, `codeUrl`, `codeHash`
244
+ * on its internal `RenderOutput` TS shape for telemetry / post-classify
245
+ * tracing — zod strips them before structuredContent serialization.
246
+ *
247
+ * The iframe receives bootstrap credentials (`wsUrl`, `wsToken`,
248
+ * `expiresAt`) via the single `ai.ggui/render` slice meta, not via this
249
+ * response. There is no clickable `url` field — post-R5 the `/r/`
250
+ * shortCode route was deleted (every host either resolves the
251
+ * `_meta.ui.resourceUri` iframe or reads `{renderId}` via
252
+ * `render-resource/...`). Leaving a dead URL on the wire had the model
253
+ * hallucinating links that resolve nowhere.
284
254
  *
285
- * The iframe receives bootstrap credentials (`wsUrl`, `token`,
286
- * `expiresAt`) via `_meta.ggui.bootstrap`, not via this response.
255
+ * Post-Phase-B the `'compose'` action enum value is gone — there is no
256
+ * stack of N renders to compose against.
287
257
  */
288
- export const pushOutputSchema = z.object({
289
- stackItemId: z.string(),
290
- url: z.string().url(),
291
- action: z.enum(['create', 'reuse', 'update', 'replace', 'compose', 'declined']),
258
+ export const renderOutputSchema = z.object({
259
+ renderId: z.string(),
260
+ /**
261
+ * Spec-canonical MCP-Apps entry-point — same `ui://ggui/render/{id}`
262
+ * URI surfaced on `_meta.ui.resourceUri`. Surfacing it on the LLM-
263
+ * visible structuredContent too lets SDKs that strip `_meta` from
264
+ * tool_results (OpenAI Agents SDK, Google ADK) reach the mount URI;
265
+ * SDKs that preserve `_meta` see the same value on both fields.
266
+ * Mirrors the `resourceUri` field on `ggui_update`'s output.
267
+ */
268
+ resourceUri: z.string(),
269
+ action: z.enum(['create', 'reuse', 'update', 'replace', 'declined']),
292
270
  /**
293
271
  * Wire-shape recovery hint for the next call. Emitted ONLY when the
294
- * pushed contract has a non-empty `actionSpec` — i.e. the agent will
295
- * receive user-action events on this stack item. Pure-display pushes
272
+ * rendered contract has a non-empty `actionSpec` — i.e. the agent will
273
+ * receive user-action events on this render. Pure-display renders
296
274
  * (props only) get no `nextStep` because there is nothing to consume.
297
275
  *
298
- * Mirrors the chain at `new_session.nextStep` (→ handshake) and
299
- * `handshake.nextStep` (→ push). Closes the loop with consume.
276
+ * Mirrors the chain at `handshake.nextStep` (→ render). Closes the loop
277
+ * with consume.
300
278
  *
301
- * `args.stackItemId` is the literal value the agent passes to
279
+ * `args.renderId` is the literal value the agent passes to
302
280
  * `ggui_consume` — copy-paste shape.
303
281
  */
304
282
  nextStep: z.object({
@@ -306,9 +284,9 @@ export const pushOutputSchema = z.object({
306
284
  description: z.string(),
307
285
  example: z.string(),
308
286
  args: z.object({
309
- stackItemId: z.string(),
287
+ renderId: z.string(),
310
288
  }),
311
- }).optional().describe('Recovery hint — when the pushed contract has actions, points the agent at ggui_consume({stackItemId}) for the inbound action loop. Absent for pure-display pushes.'),
289
+ }).optional().describe('Recovery hint — when the rendered contract has actions, points the agent at ggui_consume({renderId}) for the inbound action loop. Absent for pure-display renders.'),
312
290
  });
313
291
  /**
314
292
  * `ggui_update` — refresh the rendered UI with new state.
@@ -334,23 +312,22 @@ export const pushOutputSchema = z.object({
334
312
  * - Do NOT send `patch` on `kind: 'replace'` — use `props`.
335
313
  *
336
314
  * Both modes validate the FINAL props state (post-merge for `merge`)
337
- * against the stack item's `propsSpec` and reject on violation —
315
+ * against the render's `propsSpec` and reject on violation —
338
316
  * partial patches that would break required fields, type-mismatch
339
317
  * values, etc. all reject pre-persist.
340
318
  *
341
- * `stackItemId` is globally unique; the server resolves the owning
342
- * session via its secondary index and tenancy-checks via `ctx.appId`.
343
- * NO `sessionId` on the wire.
319
+ * `renderId` is globally unique; the server tenancy-checks via
320
+ * `ctx.appId`.
344
321
  */
345
322
  export const updateInputSchema = z.discriminatedUnion('kind', [
346
323
  z.object({
347
- stackItemId: z.string().describe('Stack item opaque id (UUID) — returned by ggui_push.'),
324
+ renderId: z.string().describe('Render opaque id (UUID) — returned by ggui_render.'),
348
325
  kind: z.literal('replace'),
349
326
  props: z.record(z.string(), z.unknown())
350
327
  .describe('Full replacement props map. New map IS the new state.'),
351
328
  }).strict(),
352
329
  z.object({
353
- stackItemId: z.string().describe('Stack item opaque id (UUID) — returned by ggui_push.'),
330
+ renderId: z.string().describe('Render opaque id (UUID) — returned by ggui_render.'),
354
331
  kind: z.literal('merge'),
355
332
  patch: z.record(z.string(), z.unknown())
356
333
  .describe('RFC 7396 JSON Merge Patch — null deletes a key; arrays fully replace.'),
@@ -358,16 +335,16 @@ export const updateInputSchema = z.discriminatedUnion('kind', [
358
335
  ]);
359
336
  /**
360
337
  * Wire-output shape — minimal acknowledgement. The handler carries
361
- * `sessionId`, `decision`, `contract`, `contractHash` on its internal
362
- * `UpdateOutput` TS shape — zod strips them before structuredContent
363
- * serialization.
338
+ * `decision`, `contract`, `contractHash` on its internal `UpdateOutput`
339
+ * TS shape — zod strips them before structuredContent serialization.
364
340
  *
365
341
  * Post-update the iframe receives the new props via the live-channel
366
342
  * `props_update` WS frame; the cross-host fallback path receives them
367
- * via `_meta.ggui.bootstrap.propsJson` (see `update.resultMeta`). The
368
- * wire response itself is just acknowledgement.
343
+ * via the `ai.ggui/render.propsJson` slice field (see
344
+ * `update.resultMeta`). The wire response itself is just
345
+ * acknowledgement.
369
346
  */
370
347
  export const updateOutputSchema = z.object({
371
- stackItemId: z.string(),
348
+ renderId: z.string(),
372
349
  updated: z.boolean(),
373
350
  });
@@ -45,7 +45,7 @@ function check(name, schema, tsKeys) {
45
45
  failed = true;
46
46
  }
47
47
  }
48
- // handshakeInputSchema / pushInputSchema are flat top-level shapes — z.infer
48
+ // handshakeInputSchema / renderInputSchema are flat top-level shapes — z.infer
49
49
  // derives the TS type directly so they stay in sync structurally without a
50
50
  // keylist double-bookkeeping. Sub-schemas (blueprintDraft) are checked here.
51
51
  console.log('\nSchema Sync Check\n');
@@ -34,10 +34,10 @@ export declare function deepFindText(obj: unknown, depth?: number): string;
34
34
  */
35
35
  export declare function isStreamDone(data: Record<string, unknown>): boolean;
36
36
  /**
37
- * Extract sessionId from a streaming event.
38
- * Checks for a top-level `sessionId` string — no envelope format required.
37
+ * Extract hostSessionId (conversation envelope id) from a streaming event.
38
+ * Checks for a top-level `hostSessionId` string — no envelope format required.
39
39
  */
40
- export declare function extractSessionId(data: Record<string, unknown>): string | undefined;
40
+ export declare function extractHostSessionId(data: Record<string, unknown>): string | undefined;
41
41
  /**
42
42
  * Callbacks for stream consumers. Transport-agnostic — works with WebSocket,
43
43
  * HTTP response streaming, file output, or anything else.
@@ -45,7 +45,7 @@ export declare function extractSessionId(data: Record<string, unknown>): string
45
45
  export interface StreamCallbacks {
46
46
  onChunk: (text: string) => Promise<void>;
47
47
  onDone: () => Promise<void>;
48
- onSessionId?: (sessionId: string) => Promise<void>;
48
+ onHostSessionId?: (hostSessionId: string) => Promise<void>;
49
49
  }
50
50
  /**
51
51
  * Read a streaming HTTP response and invoke callbacks for each text chunk.
@@ -1 +1 @@
1
- {"version":3,"file":"stream-parser.d.ts","sourceRoot":"","sources":["../../src/stream/stream-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAKT;AAUD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CA0B5D;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUnE;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAKlF;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAkFf"}
1
+ {"version":3,"file":"stream-parser.d.ts","sourceRoot":"","sources":["../../src/stream/stream-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAKT;AAUD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CA0B5D;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAUnE;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAKtF;AAID;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC,CAkFf"}
@@ -87,14 +87,14 @@ export function isStreamDone(data) {
87
87
  }
88
88
  return false;
89
89
  }
90
- // ── SessionId extraction ──
90
+ // ── HostSessionId extraction ──
91
91
  /**
92
- * Extract sessionId from a streaming event.
93
- * Checks for a top-level `sessionId` string — no envelope format required.
92
+ * Extract hostSessionId (conversation envelope id) from a streaming event.
93
+ * Checks for a top-level `hostSessionId` string — no envelope format required.
94
94
  */
95
- export function extractSessionId(data) {
96
- if (typeof data.sessionId === 'string' && data.sessionId) {
97
- return data.sessionId;
95
+ export function extractHostSessionId(data) {
96
+ if (typeof data.hostSessionId === 'string' && data.hostSessionId) {
97
+ return data.hostSessionId;
98
98
  }
99
99
  return undefined;
100
100
  }
@@ -123,9 +123,9 @@ export async function readStream(body, contentType, callbacks) {
123
123
  await callbacks.onDone();
124
124
  };
125
125
  const processJsonEvent = async (data) => {
126
- const sid = extractSessionId(data);
127
- if (sid)
128
- await callbacks.onSessionId?.(sid);
126
+ const hsid = extractHostSessionId(data);
127
+ if (hsid)
128
+ await callbacks.onHostSessionId?.(hsid);
129
129
  if (isStreamDone(data)) {
130
130
  await emitDone();
131
131
  return;
@@ -1,12 +1,11 @@
1
1
  /**
2
2
  * WebSocket transport envelope — the wire-framing layer for the live channel.
3
3
  *
4
- * The live channel is the live session plane between core-mcp and the
5
- * user. This file defines HOW that plane is framed on a WebSocket:
6
- * the dispatch discriminator
7
- * (`WebSocketMessageType`), the discriminated union envelope
8
- * (`WebSocketMessage`), and the client-side connection-lifecycle enum
9
- * (`ConnectionStatus`).
4
+ * The live channel is the live plane between core-mcp and the user.
5
+ * This file defines HOW that plane is framed on a WebSocket: the
6
+ * dispatch discriminator (`WebSocketMessageType`), the discriminated
7
+ * union envelope (`WebSocketMessage`), and the client-side connection-
8
+ * lifecycle enum (`ConnectionStatus`).
10
9
  *
11
10
  * The CONTRACT payload shapes (what each variant carries —
12
11
  * `SubscribePayload`, `AckPayload`, `StreamEnvelope`, etc.) live in
@@ -23,13 +22,14 @@
23
22
  */
24
23
  import type { ActionEnvelope } from '../types/events';
25
24
  import type { JsonObject } from '../types/data-contract';
26
- import type { SubscribePayload, GeneratePayload, PopPayload, ClosePayload, GetStackPayload, AckPayload, ErrorPayload, PushPayload, StreamEnvelope, StreamPayload, SessionPayload, ProgressPayload, AgentMsgPayload, PropsUpdatePayload, UrlPayload, SystemPayload, InternalProgressPayload, ChannelSubscribePayload, ChannelUnsubscribePayload, ChannelPayloadFrame, ChannelErrorPayload, DrainAckPayload } from '../types/live-channel';
25
+ import type { SubscribePayload, ClosePayload, AckPayload, ErrorPayload, RenderPayload, StreamEnvelope, StreamPayload, ProgressPayload, AgentMsgPayload, PropsUpdatePayload, UrlPayload, SystemPayload, InternalProgressPayload, ChannelSubscribePayload, ChannelUnsubscribePayload, ChannelPayloadFrame, ChannelErrorPayload, DrainAckPayload } from '../types/live-channel';
27
26
  import type { HostContextObservedPayload } from '../types/host-context';
27
+ import type { RenderEvent } from '../types/render-event';
28
28
  /**
29
29
  * WebSocket message types for client-server communication.
30
30
  * Each type maps to a specific payload shape in the {@link WebSocketMessage} discriminated union.
31
31
  */
32
- export type WebSocketMessageType = 'action' | 'subscribe' | 'generate' | 'pop' | 'close' | 'get_stack' | 'feedback' | 'ping' | 'pong' | 'ack' | 'error' | 'push' | 'data' | 'stream' | 'session' | 'progress' | 'agent-msg' | 'props_update' | 'url' | 'system' | 'internal:progress' | 'channel_subscribe' | 'channel_unsubscribe' | 'channel_payload' | 'channel_error' | 'drain_ack' | 'host_context_observed' | 'canvas_navigated';
32
+ export type WebSocketMessageType = 'action' | 'subscribe' | 'close' | 'feedback' | 'ping' | 'pong' | 'ack' | 'error' | 'render' | 'data' | 'stream' | 'progress' | 'agent-msg' | 'props_update' | 'url' | 'system' | 'internal:progress' | 'channel_subscribe' | 'channel_unsubscribe' | 'channel_payload' | 'channel_error' | 'drain_ack' | 'host_context_observed' | 'render_event';
33
33
  /** Fields shared by all WebSocket message variants. */
34
34
  interface WsMessageBase {
35
35
  requestId?: string;
@@ -51,8 +51,8 @@ interface WsMessageBase {
51
51
  * msg.payload.message; // ErrorPayload — auto-narrowed
52
52
  * msg.payload.details; // JsonValue | undefined
53
53
  * break;
54
- * case 'push':
55
- * msg.payload.stackItem; // PushPayload — auto-narrowed
54
+ * case 'render':
55
+ * msg.payload.render; // RenderPayload — auto-narrowed
56
56
  * break;
57
57
  * case 'data':
58
58
  * msg.payload.payload; // StreamEnvelope.payload
@@ -67,18 +67,9 @@ export type WebSocketMessage = (WsMessageBase & {
67
67
  }) | (WsMessageBase & {
68
68
  type: 'subscribe';
69
69
  payload: SubscribePayload;
70
- }) | (WsMessageBase & {
71
- type: 'generate';
72
- payload: GeneratePayload;
73
- }) | (WsMessageBase & {
74
- type: 'pop';
75
- payload: PopPayload;
76
70
  }) | (WsMessageBase & {
77
71
  type: 'close';
78
72
  payload: ClosePayload;
79
- }) | (WsMessageBase & {
80
- type: 'get_stack';
81
- payload: GetStackPayload;
82
73
  }) | (WsMessageBase & {
83
74
  type: 'feedback';
84
75
  payload: JsonObject;
@@ -95,17 +86,14 @@ export type WebSocketMessage = (WsMessageBase & {
95
86
  type: 'error';
96
87
  payload: ErrorPayload;
97
88
  }) | (WsMessageBase & {
98
- type: 'push';
99
- payload: PushPayload;
89
+ type: 'render';
90
+ payload: RenderPayload;
100
91
  }) | (WsMessageBase & {
101
92
  type: 'data';
102
93
  payload: StreamEnvelope;
103
94
  }) | (WsMessageBase & {
104
95
  type: 'stream';
105
96
  payload: StreamPayload;
106
- }) | (WsMessageBase & {
107
- type: 'session';
108
- payload: SessionPayload;
109
97
  }) | (WsMessageBase & {
110
98
  type: 'progress';
111
99
  payload: ProgressPayload;
@@ -143,32 +131,9 @@ export type WebSocketMessage = (WsMessageBase & {
143
131
  type: 'host_context_observed';
144
132
  payload: HostContextObservedPayload;
145
133
  }) | (WsMessageBase & {
146
- type: 'canvas_navigated';
147
- payload: CanvasNavigatedPayload;
134
+ type: 'render_event';
135
+ payload: RenderEvent;
148
136
  });
149
- /**
150
- * Payload for the canvas-mode `canvas_navigated` message. Emitted by
151
- * the iframe-runtime's CanvasShell when the user back-navigates — the
152
- * server uses `activeItemId` to update `session.activeStackItemId`
153
- * (for `ggui_consume`'s active-pipe resolution) and
154
- * `previousActiveItemId` to optionally abort the cold-gen
155
- * `AbortSignal` keyed on that stack item.
156
- */
157
- export interface CanvasNavigatedPayload {
158
- /** Tenancy guard — server compares against subscriber binding. */
159
- readonly sessionId: string;
160
- /**
161
- * Stack-item id the canvas had as active immediately BEFORE the
162
- * navigation. Null when navigating from the empty state (no prior
163
- * active item).
164
- */
165
- readonly previousActiveItemId: string | null;
166
- /**
167
- * Stack-item id the canvas has as active immediately AFTER the
168
- * navigation. Null when the user popped to an empty navStack.
169
- */
170
- readonly activeItemId: string | null;
171
- }
172
137
  /**
173
138
  * WebSocket connection status. Client-side transport enum describing
174
139
  * the browser/Node ws.readyState lifecycle.
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,eAAe,EACf,UAAU,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,WAAW,GACX,UAAU,GACV,KAAK,GACL,OAAO,GACP,WAAW,GACX,UAAU,GACV,MAAM,GACN,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,GACT,UAAU,GACV,WAAW,GACX,cAAc,GACd,KAAK,GACL,QAAQ,GACR,mBAAmB,GAEnB,mBAAmB,GACnB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GAEf,WAAW,GAEX,uBAAuB,GAEvB,kBAAkB,CAAC;AAEvB,uDAAuD;AACvD,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,gBAAgB,GACxB,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,GAC7D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAClE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,GAChE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GACtD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,GAC1D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,GACjE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GAC3D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GACvD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GACvD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GACtD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,GAC1D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,GACxD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,GAC3D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,GAC5D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC,GAC9D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,GAChE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,GACjE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC,GACvE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,GACtD,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,GAC5D,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAC,GAEjF,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAC,GACjF,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC,GACrF,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC,GAC3E,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC,GAEzE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,GAKjE,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAA;CAAE,CAAC,GAMxF,CAAC,aAAa,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}