@ggui-ai/protocol 0.14.0 → 0.16.0

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 (112) hide show
  1. package/dist/envelopes/render-refusal.d.ts +49 -0
  2. package/dist/envelopes/render-refusal.d.ts.map +1 -0
  3. package/dist/envelopes/render-refusal.js +12 -0
  4. package/dist/errors/domain-error.d.ts +70 -0
  5. package/dist/errors/domain-error.d.ts.map +1 -0
  6. package/dist/errors/domain-error.js +118 -0
  7. package/dist/gadgets/resolve-app-gadgets.d.ts +1 -1
  8. package/dist/gadgets/stdlib-gadgets.d.ts +2 -2
  9. package/dist/gadgets/stdlib-gadgets.js +1 -1
  10. package/dist/index.d.ts +69 -63
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +8 -2
  13. package/dist/integrations/mcp-apps.d.ts +35 -9
  14. package/dist/integrations/mcp-apps.d.ts.map +1 -1
  15. package/dist/integrations/mcp-apps.js +13 -13
  16. package/dist/integrations/overlay-hash.d.ts +19 -0
  17. package/dist/integrations/overlay-hash.d.ts.map +1 -0
  18. package/dist/integrations/overlay-hash.js +29 -0
  19. package/dist/integrations/theme-binding.d.ts +14 -12
  20. package/dist/integrations/theme-binding.d.ts.map +1 -1
  21. package/dist/integrations/theme-binding.js +10 -6
  22. package/dist/registry/blueprint-key.d.ts.map +1 -1
  23. package/dist/registry/blueprint-key.js +4 -3
  24. package/dist/schemas/app-theme.d.ts +46 -10
  25. package/dist/schemas/app-theme.d.ts.map +1 -1
  26. package/dist/schemas/app-theme.js +108 -40
  27. package/dist/schemas/blueprint.d.ts +4 -3
  28. package/dist/schemas/blueprint.d.ts.map +1 -1
  29. package/dist/schemas/blueprint.js +15 -3
  30. package/dist/schemas/data-contract.d.ts +11 -31
  31. package/dist/schemas/data-contract.d.ts.map +1 -1
  32. package/dist/schemas/data-contract.js +5 -28
  33. package/dist/schemas/handshake-suggestion.d.ts.map +1 -1
  34. package/dist/schemas/handshake-suggestion.js +8 -1
  35. package/dist/schemas/interface-context.d.ts +44 -0
  36. package/dist/schemas/interface-context.d.ts.map +1 -0
  37. package/dist/schemas/interface-context.js +22 -0
  38. package/dist/schemas/invoke.d.ts +3 -3
  39. package/dist/schemas/invoke.js +1 -1
  40. package/dist/schemas/mcp.d.ts +246 -111
  41. package/dist/schemas/mcp.d.ts.map +1 -1
  42. package/dist/schemas/mcp.js +149 -42
  43. package/dist/schemas/ops-blueprint.d.ts +4 -4
  44. package/dist/schemas/ops-blueprint.d.ts.map +1 -1
  45. package/dist/schemas/ops-blueprint.js +13 -8
  46. package/dist/schemas/public-env-key.d.ts +26 -0
  47. package/dist/schemas/public-env-key.d.ts.map +1 -0
  48. package/dist/schemas/public-env-key.js +25 -0
  49. package/dist/schemas/render-input-envelope.d.ts +2 -2
  50. package/dist/schemas/render-input-envelope.js +1 -1
  51. package/dist/schemas/runtime-telemetry-limits.d.ts +11 -0
  52. package/dist/schemas/runtime-telemetry-limits.d.ts.map +1 -0
  53. package/dist/schemas/runtime-telemetry-limits.js +10 -0
  54. package/dist/transport/websocket.d.ts +5 -5
  55. package/dist/types/auth.d.ts +1 -1
  56. package/dist/types/blueprint-source.d.ts +27 -7
  57. package/dist/types/blueprint-source.d.ts.map +1 -1
  58. package/dist/types/blueprint-source.js +19 -3
  59. package/dist/types/blueprint.d.ts +2 -2
  60. package/dist/types/blueprint.d.ts.map +1 -1
  61. package/dist/types/contract-inference.d.ts +1 -1
  62. package/dist/types/data-contract.d.ts +3 -3
  63. package/dist/types/domain-error-codes.d.ts +167 -0
  64. package/dist/types/domain-error-codes.d.ts.map +1 -0
  65. package/dist/types/domain-error-codes.js +170 -0
  66. package/dist/types/events.d.ts +1 -1
  67. package/dist/types/ggui-session-event.d.ts +2 -2
  68. package/dist/types/handshake-suggestion.d.ts +2 -2
  69. package/dist/types/host-context.d.ts +3 -3
  70. package/dist/types/interface-context.d.ts +1 -1
  71. package/dist/types/invoke.d.ts +1 -1
  72. package/dist/types/lifecycle.d.ts +1 -1
  73. package/dist/types/live-channel.d.ts +3 -3
  74. package/dist/types/llm-route.d.ts +59 -2
  75. package/dist/types/llm-route.d.ts.map +1 -1
  76. package/dist/types/llm-route.js +62 -16
  77. package/dist/types/llm.d.ts +22 -2
  78. package/dist/types/llm.d.ts.map +1 -1
  79. package/dist/types/llm.js +29 -2
  80. package/dist/types/mcp.d.ts +49 -100
  81. package/dist/types/mcp.d.ts.map +1 -1
  82. package/dist/types/mcp.js +28 -9
  83. package/dist/types/refusal-codes.d.ts +54 -95
  84. package/dist/types/refusal-codes.d.ts.map +1 -1
  85. package/dist/types/refusal-codes.js +67 -105
  86. package/dist/types/render.d.ts +12 -11
  87. package/dist/types/render.d.ts.map +1 -1
  88. package/dist/types/ui-generator.d.ts +1 -1
  89. package/dist/validation/ajv-runtime.d.ts +2 -2
  90. package/dist/validation/contract-validator.d.ts +14 -8
  91. package/dist/validation/contract-validator.d.ts.map +1 -1
  92. package/dist/validation/contract-validator.js +12 -4
  93. package/dist/validation/cross-references.d.ts +2 -2
  94. package/dist/validation/hygiene-rules.d.ts +1 -1
  95. package/dist/validation/lint-contract.d.ts +2 -2
  96. package/dist/validation/lint-contract.d.ts.map +1 -1
  97. package/dist/validation/lint-contract.js +6 -4
  98. package/dist/validation/name-invariants.d.ts +2 -2
  99. package/dist/validation/reserved-channels.d.ts +1 -1
  100. package/dist/validation/schema-compat-invariants.d.ts +2 -2
  101. package/dist/validation/schema-meta-validation.d.ts +1 -1
  102. package/dist/validation/schema-subset.d.ts +3 -3
  103. package/dist/version.d.ts +485 -12
  104. package/dist/version.d.ts.map +1 -1
  105. package/dist/version.js +484 -11
  106. package/dist/wire.d.ts +45 -0
  107. package/dist/wire.d.ts.map +1 -0
  108. package/dist/wire.js +44 -0
  109. package/package.json +7 -1
  110. package/dist/envelope-adapters.d.ts +0 -25
  111. package/dist/envelope-adapters.d.ts.map +0 -1
  112. package/dist/envelope-adapters.js +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/schemas/data-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/schemas/data-contract.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * Output-side seams that type-narrow contract on the wire —
8
8
  * `renderOutputSchema.contract` and the various `decision` echoes — use
9
9
  * `z.custom<DataContract>()` because they trust the shape (it
10
- * originates from internal pod state).
10
+ * originates from internal server state).
11
11
  *
12
12
  * The input seam is different: agents author contract on
13
13
  * `story.contract` and the handler MUST plumb them to the generator.
@@ -51,6 +51,7 @@
51
51
  * just to accept the contract and pass it to the generator.
52
52
  */
53
53
  import { z } from 'zod';
54
+ import { PUBLIC_ENV_APP_KEY_RE } from './public-env-key.js';
54
55
  import { KNOWN_PERMISSION_NAMES } from '../validation/hygiene-rules.js';
55
56
  import { STDLIB_GADGETS_PACKAGE } from '../gadgets/stdlib-gadgets.js';
56
57
  import { COMPONENT_NAME_RE, HOOK_NAME_RE } from './gadget-name-grammar.js';
@@ -220,26 +221,6 @@ export const agentCapabilitiesSpecSchema = z
220
221
  tools: z.record(z.string(), agentToolEntrySchema),
221
222
  })
222
223
  .passthrough();
223
- /**
224
- * `App.publicEnv` key regex.
225
- *
226
- * Each key in `App.publicEnv` MUST match this pattern. The prefix is
227
- * the **security boundary** — operators can't accidentally stash
228
- * sensitive credentials under arbitrary names, and downstream consumers
229
- * (render gate, bootstrap projection, iframe shim) can rely on the
230
- * naming convention to mean "public-by-design".
231
- *
232
- * Rule: `GGUI_PUBLIC_APP_` prefix, then uppercase letters / digits /
233
- * underscores, at least one char after the prefix.
234
- *
235
- * `GGUI_PUBLIC_USER_*` keys are RESERVED for a future per-user
236
- * channel. The current regex rejects them so App-side config can't
237
- * pre-emptively use the namespace.
238
- *
239
- * Hoisted above `gadgetDescriptorSchema` so the wrapper's `requires`
240
- * array can reference it at schema-construction time (TDZ-safe).
241
- */
242
- export const PUBLIC_ENV_APP_KEY_RE = /^GGUI_PUBLIC_APP_[A-Z0-9_]+$/;
243
224
  /**
244
225
  * Single source of truth for the `requires[]` field shape on gadget
245
226
  * descriptors. The wire-permissive `gadgetDescriptorSchema`, the
@@ -253,9 +234,7 @@ export const PUBLIC_ENV_APP_KEY_RE = /^GGUI_PUBLIC_APP_[A-Z0-9_]+$/;
253
234
  * that declare a `requires` key must have a corresponding App-side
254
235
  * publicEnv value at render time (gate: `assertPublicEnvSatisfied`).
255
236
  */
256
- export const gadgetRequiresSchema = z
257
- .array(z.string().regex(PUBLIC_ENV_APP_KEY_RE))
258
- .readonly();
237
+ export const gadgetRequiresSchema = z.array(z.string().regex(PUBLIC_ENV_APP_KEY_RE));
259
238
  /**
260
239
  * SRI hash format for gadget bundles. Registry install writes
261
240
  * `bundleSri` in this shape; iframe-runtime emits it verbatim into
@@ -434,7 +413,7 @@ const basePackageFieldsShape = {
434
413
  bundleSri: z.string().regex(BUNDLE_SRI_RE).optional(),
435
414
  styleUrl: z.url().optional(),
436
415
  // CSP `connect-src` feed — full URL shape on every entry.
437
- connect: z.array(z.url()).readonly().optional(),
416
+ connect: z.array(z.url()).optional(),
438
417
  // Shared `gadgetRequiresSchema`.
439
418
  requires: gadgetRequiresSchema.optional(),
440
419
  // HTTPS URL of the package's `.d.ts`. The handler fetches it at
@@ -640,9 +619,7 @@ export const clientCapabilitiesSpecSchema = z
640
619
  * - Defensive re-validation in the iframe-runtime slice-meta
641
620
  * extractors (`parseMetaFromGlobal`, `parseMetaFromToolResult`).
642
621
  */
643
- export const appPublicEnvSchema = z
644
- .record(z.string().regex(PUBLIC_ENV_APP_KEY_RE), z.string())
645
- .readonly();
622
+ export const appPublicEnvSchema = z.record(z.string().regex(PUBLIC_ENV_APP_KEY_RE), z.string());
646
623
  /**
647
624
  * {@link DataContract} — the unified four-spec contract surface
648
625
  * agents author on `story.contract` and that the generator
@@ -1 +1 @@
1
- {"version":3,"file":"handshake-suggestion.d.ts","sourceRoot":"","sources":["../../src/schemas/handshake-suggestion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAI1C,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAI7D,CAAC;AAEH,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAezB,CAAC;AAE7B,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAsD,CAAC;AAExG;;;;;GAKG;AACH,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,gDAAiD,CAAC;AAEnF,eAAO,MAAM,0BAA0B;;;;kBAkB5B,CAAC;AAEZ,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAA2D,CAAC;AAEvH,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CASlB,CAAC;AAExC,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAOtB,CAAC;AAE5C,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAKzB,CAAC;AAE/C,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CASxB,CAAC"}
1
+ {"version":3,"file":"handshake-suggestion.d.ts","sourceRoot":"","sources":["../../src/schemas/handshake-suggestion.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAI1C,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAI7D,CAAC;AAEH,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAezB,CAAC;AAE7B,8DAA8D;AAC9D,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAsD,CAAC;AAExG;;;;;GAKG;AACH,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,gDAAiD,CAAC;AAEnF,eAAO,MAAM,0BAA0B;;;;kBA0B5B,CAAC;AAEZ,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAA2D,CAAC;AAEvH,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CASlB,CAAC;AAExC,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAOtB,CAAC;AAE5C,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAKzB,CAAC;AAE/C,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CASxB,CAAC"}
@@ -8,6 +8,7 @@
8
8
  * `z.ZodType<T>` so any drift fails compile.
9
9
  */
10
10
  import { z } from 'zod';
11
+ import { GENERATOR_ID_PATTERN } from '../types/blueprint-source.js';
11
12
  import { dataContractSchema, jsonValueSchema } from './data-contract.js';
12
13
  import { blueprintSourceSchema, blueprintVarianceSchema } from './blueprint.js';
13
14
  /** Three-mode routing enum on {@link HandshakeSuggestion.origin}. */
@@ -51,7 +52,13 @@ export const blueprintDraftObjectSchema = z
51
52
  // rejection message) that `blueprintMeta.variance` projects on the
52
53
  // way back out (ggui#523 item 1 — the mirror-of-a-mirror is gone).
53
54
  variance: blueprintVarianceSchema.optional(),
54
- generator: z.string().optional(),
55
+ generator: z
56
+ .string()
57
+ .regex(GENERATOR_ID_PATTERN, {
58
+ error: 'generator is an identity `ui-gen-<tier>` — one tier token, no model segment (ggui#924)',
59
+ })
60
+ .optional()
61
+ .describe('Generator identity hint — `ui-gen-default` or `ui-gen-advanced` (one tier token, no model segment). The deployment picks the model and reports it on `source.model`.'),
55
62
  }, {
56
63
  error: (issue) => issue.code === 'unrecognized_keys'
57
64
  ? `blueprintDraft: unknown key(s) ${issue.keys.map((k) => JSON.stringify(k)).join(', ')} — a draft is EXACTLY {${BLUEPRINT_DRAFT_KEYS.join(', ')}}; \`intent\` is a top-level ggui_handshake field, not a draft field, and the four specs live INSIDE \`contract\``
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Interface-context schema — the client's viewport/platform snapshot every
3
+ * handshake and every `InvokeEvent` carries. Its own module (ggui#819) so
4
+ * the browser entry (`@ggui-ai/protocol/wire`) reaches it without the
5
+ * tool schemas that used to share its file.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const viewportSchema: z.ZodObject<{
9
+ width: z.ZodNumber;
10
+ height: z.ZodNumber;
11
+ }, z.core.$strip>;
12
+ export declare const interfaceContextSchema: z.ZodObject<{
13
+ viewport: z.ZodObject<{
14
+ width: z.ZodNumber;
15
+ height: z.ZodNumber;
16
+ }, z.core.$strip>;
17
+ platform: z.ZodEnum<{
18
+ web: "web";
19
+ desktop: "desktop";
20
+ mobile: "mobile";
21
+ }>;
22
+ deviceType: z.ZodEnum<{
23
+ desktop: "desktop";
24
+ tablet: "tablet";
25
+ phone: "phone";
26
+ }>;
27
+ orientation: z.ZodEnum<{
28
+ portrait: "portrait";
29
+ landscape: "landscape";
30
+ }>;
31
+ devicePixelRatio: z.ZodOptional<z.ZodNumber>;
32
+ touchPrimary: z.ZodOptional<z.ZodBoolean>;
33
+ shellType: z.ZodOptional<z.ZodEnum<{
34
+ fullscreen: "fullscreen";
35
+ chat: "chat";
36
+ spatial: "spatial";
37
+ }>>;
38
+ colorScheme: z.ZodOptional<z.ZodEnum<{
39
+ light: "light";
40
+ dark: "dark";
41
+ }>>;
42
+ reducedMotion: z.ZodOptional<z.ZodBoolean>;
43
+ }, z.core.$loose>;
44
+ //# sourceMappingURL=interface-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-context.d.ts","sourceRoot":"","sources":["../../src/schemas/interface-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;iBAGzB,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Interface-context schema — the client's viewport/platform snapshot every
3
+ * handshake and every `InvokeEvent` carries. Its own module (ggui#819) so
4
+ * the browser entry (`@ggui-ai/protocol/wire`) reaches it without the
5
+ * tool schemas that used to share its file.
6
+ */
7
+ import { z } from 'zod';
8
+ export const viewportSchema = z.object({
9
+ width: z.number(),
10
+ height: z.number(),
11
+ });
12
+ export const interfaceContextSchema = z.object({
13
+ viewport: viewportSchema,
14
+ platform: z.enum(['web', 'mobile', 'desktop']),
15
+ deviceType: z.enum(['phone', 'tablet', 'desktop']),
16
+ orientation: z.enum(['portrait', 'landscape']),
17
+ devicePixelRatio: z.number().optional(),
18
+ touchPrimary: z.boolean().optional(),
19
+ shellType: z.enum(['chat', 'fullscreen', 'spatial']).optional(),
20
+ colorScheme: z.enum(['light', 'dark']).optional(),
21
+ reducedMotion: z.boolean().optional(),
22
+ }).passthrough();
@@ -307,13 +307,13 @@ export declare const invokeRequestSchema: z.ZodObject<{
307
307
  }, z.core.$strip>;
308
308
  platform: z.ZodEnum<{
309
309
  web: "web";
310
- mobile: "mobile";
311
310
  desktop: "desktop";
311
+ mobile: "mobile";
312
312
  }>;
313
313
  deviceType: z.ZodEnum<{
314
314
  desktop: "desktop";
315
- phone: "phone";
316
315
  tablet: "tablet";
316
+ phone: "phone";
317
317
  }>;
318
318
  orientation: z.ZodEnum<{
319
319
  portrait: "portrait";
@@ -322,8 +322,8 @@ export declare const invokeRequestSchema: z.ZodObject<{
322
322
  devicePixelRatio: z.ZodOptional<z.ZodNumber>;
323
323
  touchPrimary: z.ZodOptional<z.ZodBoolean>;
324
324
  shellType: z.ZodOptional<z.ZodEnum<{
325
- chat: "chat";
326
325
  fullscreen: "fullscreen";
326
+ chat: "chat";
327
327
  spatial: "spatial";
328
328
  }>>;
329
329
  colorScheme: z.ZodOptional<z.ZodEnum<{
@@ -12,7 +12,7 @@
12
12
  * and types for authoring.
13
13
  */
14
14
  import { z } from 'zod';
15
- import { interfaceContextSchema } from './mcp.js';
15
+ import { interfaceContextSchema } from './interface-context.js';
16
16
  // ── Content blocks ────────────────────────────────────────────────────
17
17
  /** Plain text content — streamed via `text_delta` events. */
18
18
  export const textBlockSchema = z.object({