@ggui-ai/protocol 0.8.0 → 0.10.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.
- package/dist/gadgets/stdlib-gadgets.d.ts +1 -1
- package/dist/gadgets/stdlib-gadgets.d.ts.map +1 -1
- package/dist/gadgets/stdlib-gadgets.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/integrations/epoch-uri.d.ts +42 -0
- package/dist/integrations/epoch-uri.d.ts.map +1 -0
- package/dist/integrations/epoch-uri.js +48 -0
- package/dist/integrations/mcp-apps.d.ts +139 -6
- package/dist/integrations/mcp-apps.d.ts.map +1 -1
- package/dist/integrations/mcp-apps.js +117 -2
- package/dist/registry/props-schema-hash.d.ts +3 -0
- package/dist/registry/props-schema-hash.d.ts.map +1 -0
- package/dist/registry/props-schema-hash.js +23 -0
- package/dist/schemas/blueprint.d.ts +2 -0
- package/dist/schemas/blueprint.d.ts.map +1 -1
- package/dist/schemas/blueprint.js +9 -0
- package/dist/schemas/data-contract.d.ts +61 -7
- package/dist/schemas/data-contract.d.ts.map +1 -1
- package/dist/schemas/data-contract.js +73 -14
- package/dist/schemas/handshake-suggestion.d.ts +3 -6
- package/dist/schemas/handshake-suggestion.d.ts.map +1 -1
- package/dist/schemas/handshake-suggestion.js +11 -9
- package/dist/schemas/invoke.d.ts +1 -1
- package/dist/schemas/invoke.js +1 -1
- package/dist/schemas/mcp.d.ts +238 -6
- package/dist/schemas/mcp.d.ts.map +1 -1
- package/dist/schemas/mcp.js +286 -14
- package/dist/schemas/ops-blueprint.d.ts +19 -10
- package/dist/schemas/ops-blueprint.d.ts.map +1 -1
- package/dist/schemas/ops-blueprint.js +39 -10
- package/dist/types/blueprint.d.ts +12 -0
- package/dist/types/blueprint.d.ts.map +1 -1
- package/dist/types/contract-inference.d.ts +5 -1
- package/dist/types/contract-inference.d.ts.map +1 -1
- package/dist/types/data-contract.d.ts +14 -4
- package/dist/types/data-contract.d.ts.map +1 -1
- package/dist/types/ggui-session-event.d.ts +42 -1
- package/dist/types/ggui-session-event.d.ts.map +1 -1
- package/dist/types/ggui-session-event.js +16 -1
- package/dist/types/live-channel.d.ts +8 -0
- package/dist/types/live-channel.d.ts.map +1 -1
- package/dist/types/llm-route.d.ts +3 -3
- package/dist/types/llm-route.d.ts.map +1 -1
- package/dist/types/llm-route.js +27 -8
- package/dist/types/llm.d.ts +1 -1
- package/dist/types/llm.d.ts.map +1 -1
- package/dist/types/llm.js +22 -5
- package/dist/types/mcp.d.ts +53 -3
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/render.d.ts +45 -0
- package/dist/types/render.d.ts.map +1 -1
- package/dist/types/render.js +26 -1
- package/dist/types/ui-generator.d.ts +20 -3
- package/dist/types/ui-generator.d.ts.map +1 -1
- package/dist/validation/ajv-runtime.d.ts +26 -6
- package/dist/validation/ajv-runtime.d.ts.map +1 -1
- package/dist/validation/ajv-runtime.js +87 -9
- package/dist/validation/contract-validator.d.ts +106 -35
- package/dist/validation/contract-validator.d.ts.map +1 -1
- package/dist/validation/contract-validator.js +152 -42
- package/dist/validation/enforced-props-schema.d.ts +56 -0
- package/dist/validation/enforced-props-schema.d.ts.map +1 -0
- package/dist/validation/enforced-props-schema.js +232 -0
- package/dist/validation/resolve-stream-channel.d.ts +2 -2
- package/dist/validation/resolve-stream-channel.js +2 -2
- package/dist/validation/schema-subset.d.ts.map +1 -1
- package/dist/validation/schema-subset.js +27 -10
- package/dist/validation/ui-security.d.ts +2 -2
- package/dist/validation/ui-security.js +2 -2
- package/dist/version.d.ts +319 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +318 -1
- package/package.json +7 -1
|
@@ -12,7 +12,7 @@ export declare const STDLIB_GADGETS_PACKAGE = "@ggui-ai/gadgets";
|
|
|
12
12
|
* in `@ggui-ai/gadgets` asserts the two stay in sync, so a release-time
|
|
13
13
|
* bump to the runtime package without updating this constant fails CI.
|
|
14
14
|
*/
|
|
15
|
-
export declare const STDLIB_GADGETS_VERSION = "0.
|
|
15
|
+
export declare const STDLIB_GADGETS_VERSION = "0.10.0";
|
|
16
16
|
/**
|
|
17
17
|
* v1 catalog of stdlib gadget descriptors. Every entry's
|
|
18
18
|
* `package` defaults to {@link STDLIB_GADGETS_PACKAGE}; the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdlib-gadgets.d.ts","sourceRoot":"","sources":["../../src/gadgets/stdlib-gadgets.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"stdlib-gadgets.d.ts","sourceRoot":"","sources":["../../src/gadgets/stdlib-gadgets.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,CAAC,gBAAgB,CAAC,EAkH/D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAUnD,CAAC"}
|
|
@@ -39,7 +39,7 @@ export const STDLIB_GADGETS_PACKAGE = '@ggui-ai/gadgets';
|
|
|
39
39
|
* in `@ggui-ai/gadgets` asserts the two stay in sync, so a release-time
|
|
40
40
|
* bump to the runtime package without updating this constant fails CI.
|
|
41
41
|
*/
|
|
42
|
-
export const STDLIB_GADGETS_VERSION = '0.
|
|
42
|
+
export const STDLIB_GADGETS_VERSION = '0.10.0';
|
|
43
43
|
/**
|
|
44
44
|
* v1 catalog of stdlib gadget descriptors. Every entry's
|
|
45
45
|
* `package` defaults to {@link STDLIB_GADGETS_PACKAGE}; the
|
package/dist/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from "./schemas/data-contract";
|
|
|
13
13
|
export * from "./schemas/app-theme";
|
|
14
14
|
export { canonicalizeContracts, canonicalizeValue } from "./registry/canonicalize-contract";
|
|
15
15
|
export { summarizeContract } from "./registry/summarize-contract";
|
|
16
|
+
export { buildEnforcedPropsSchema, canonicalPropsSchemaBytes, classifyPropsSchemaProfile, GRAMMAR_SAFE_FORMATS, GRAMMAR_SAFE_KEYWORDS, type PropsSchemaProfile, } from "./validation/enforced-props-schema";
|
|
16
17
|
export type { TextBlock, ToolUseBlock, ToolResultBlock, ContentBlock, InvokeEvent, InvokeErrorCode, InvokeTurn, } from "./types/invoke";
|
|
17
18
|
export * from "./types/llm";
|
|
18
19
|
export * from "./types/llm-route";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAI/B,cAAc,sBAAsB,CAAC;AAOrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAIxC,cAAc,qBAAqB,CAAC;AAIpC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAK5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAI/B,cAAc,sBAAsB,CAAC;AAOrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAIxC,cAAc,qBAAqB,CAAC;AAIpC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAK5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAOlE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,oCAAoC,CAAC;AAM5C,YAAY,EAEV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EAEZ,WAAW,EACX,eAAe,EAEf,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAI/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAKnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,13 @@ export { canonicalizeContracts, canonicalizeValue } from "./registry/canonicaliz
|
|
|
32
32
|
// as `./content-hash`. Server consumers import from the subpath:
|
|
33
33
|
// import { blueprintKey } from '@ggui-ai/protocol/blueprint-key';
|
|
34
34
|
export { summarizeContract } from "./registry/summarize-contract.js";
|
|
35
|
+
// Enforced props schema — the schema-precise render wire artifact
|
|
36
|
+
// (P1): the exact schema ggui_render enforces for a handshake, in
|
|
37
|
+
// emission form, plus the grammar-safe profile classifier and the
|
|
38
|
+
// RFC 8785 canonical serializer. Browser-safe (pure). The sha256
|
|
39
|
+
// hash helper is server-only at `@ggui-ai/protocol/props-schema-hash`
|
|
40
|
+
// (node:crypto — same convention as `./blueprint-key`).
|
|
41
|
+
export { buildEnforcedPropsSchema, canonicalPropsSchemaBytes, classifyPropsSchemaProfile, GRAMMAR_SAFE_FORMATS, GRAMMAR_SAFE_KEYWORDS, } from "./validation/enforced-props-schema.js";
|
|
35
42
|
export * from "./types/llm.js";
|
|
36
43
|
export * from "./types/llm-route.js";
|
|
37
44
|
export * from "./types/interface-context.js";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Epoch-pinned resource URIs (#483).
|
|
3
|
+
*
|
|
4
|
+
* A session's history is a linear chain of epoch-numbered render
|
|
5
|
+
* records: `ggui_render` mints epoch 0; every `ggui_update` advances
|
|
6
|
+
* the head by one (`ggui_amend` never does). The epoch rides the
|
|
7
|
+
* resource URI:
|
|
8
|
+
*
|
|
9
|
+
* - **Bare URI** (`ui://ggui/render/<sessionId>[/<contractKey>]`) —
|
|
10
|
+
* the LIVE HEAD. Reads track the session's current state.
|
|
11
|
+
* - **Pinned URI** (`…#N`) — the immutable epoch-N record. Reads
|
|
12
|
+
* MUST serve identical content forever (conformance-pinned).
|
|
13
|
+
*
|
|
14
|
+
* This module is the ONE encoding seam: every producer (result-meta
|
|
15
|
+
* stamping, resource templates) and consumer (iframe-runtime latch,
|
|
16
|
+
* pinned reads) routes through these two functions, so the encoding
|
|
17
|
+
* (URI fragment today) can flip to a path segment after the
|
|
18
|
+
* host-transport probe without touching call sites. Do not hand-roll
|
|
19
|
+
* `#${n}` anywhere else.
|
|
20
|
+
*/
|
|
21
|
+
export declare const EPOCH_URI_SEPARATOR = "#";
|
|
22
|
+
/**
|
|
23
|
+
* Compose the pinned URI for an epoch. Throws on non-integer or
|
|
24
|
+
* negative epochs — a producer stamping a bogus epoch is a bug that
|
|
25
|
+
* must be loud, not a tolerable wire variant.
|
|
26
|
+
*/
|
|
27
|
+
export declare function composeEpochUri(baseUri: string, epoch: number): string;
|
|
28
|
+
export interface ParsedEpochUri {
|
|
29
|
+
/** The URI with any epoch pin removed — the live-head address. */
|
|
30
|
+
readonly baseUri: string;
|
|
31
|
+
/** Present iff the URI carried a well-formed epoch pin. */
|
|
32
|
+
readonly epoch?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Tolerant read — never throws. A malformed suffix (non-canonical
|
|
36
|
+
* number, leading zeros, empty) is NOT an epoch: the whole input
|
|
37
|
+
* passes through as `baseUri` so an exotic-but-legal URI is never
|
|
38
|
+
* mangled by mis-parsing. Canonical epochs only: `0` or a digit
|
|
39
|
+
* string with no leading zero.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseEpochUri(uri: string): ParsedEpochUri;
|
|
42
|
+
//# sourceMappingURL=epoch-uri.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epoch-uri.d.ts","sourceRoot":"","sources":["../../src/integrations/epoch-uri.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAMzD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Epoch-pinned resource URIs (#483).
|
|
3
|
+
*
|
|
4
|
+
* A session's history is a linear chain of epoch-numbered render
|
|
5
|
+
* records: `ggui_render` mints epoch 0; every `ggui_update` advances
|
|
6
|
+
* the head by one (`ggui_amend` never does). The epoch rides the
|
|
7
|
+
* resource URI:
|
|
8
|
+
*
|
|
9
|
+
* - **Bare URI** (`ui://ggui/render/<sessionId>[/<contractKey>]`) —
|
|
10
|
+
* the LIVE HEAD. Reads track the session's current state.
|
|
11
|
+
* - **Pinned URI** (`…#N`) — the immutable epoch-N record. Reads
|
|
12
|
+
* MUST serve identical content forever (conformance-pinned).
|
|
13
|
+
*
|
|
14
|
+
* This module is the ONE encoding seam: every producer (result-meta
|
|
15
|
+
* stamping, resource templates) and consumer (iframe-runtime latch,
|
|
16
|
+
* pinned reads) routes through these two functions, so the encoding
|
|
17
|
+
* (URI fragment today) can flip to a path segment after the
|
|
18
|
+
* host-transport probe without touching call sites. Do not hand-roll
|
|
19
|
+
* `#${n}` anywhere else.
|
|
20
|
+
*/
|
|
21
|
+
export const EPOCH_URI_SEPARATOR = '#';
|
|
22
|
+
/**
|
|
23
|
+
* Compose the pinned URI for an epoch. Throws on non-integer or
|
|
24
|
+
* negative epochs — a producer stamping a bogus epoch is a bug that
|
|
25
|
+
* must be loud, not a tolerable wire variant.
|
|
26
|
+
*/
|
|
27
|
+
export function composeEpochUri(baseUri, epoch) {
|
|
28
|
+
if (!Number.isInteger(epoch) || epoch < 0) {
|
|
29
|
+
throw new Error(`epoch must be a non-negative integer, got ${epoch}`);
|
|
30
|
+
}
|
|
31
|
+
return `${baseUri}${EPOCH_URI_SEPARATOR}${epoch}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tolerant read — never throws. A malformed suffix (non-canonical
|
|
35
|
+
* number, leading zeros, empty) is NOT an epoch: the whole input
|
|
36
|
+
* passes through as `baseUri` so an exotic-but-legal URI is never
|
|
37
|
+
* mangled by mis-parsing. Canonical epochs only: `0` or a digit
|
|
38
|
+
* string with no leading zero.
|
|
39
|
+
*/
|
|
40
|
+
export function parseEpochUri(uri) {
|
|
41
|
+
const idx = uri.lastIndexOf(EPOCH_URI_SEPARATOR);
|
|
42
|
+
if (idx < 0)
|
|
43
|
+
return { baseUri: uri };
|
|
44
|
+
const suffix = uri.slice(idx + 1);
|
|
45
|
+
if (!/^(0|[1-9][0-9]*)$/.test(suffix))
|
|
46
|
+
return { baseUri: uri };
|
|
47
|
+
return { baseUri: uri.slice(0, idx), epoch: Number(suffix) };
|
|
48
|
+
}
|
|
@@ -49,6 +49,7 @@ export declare const GGUI_RENDER_RESOURCE_URI: "ui://ggui/render";
|
|
|
49
49
|
* render them as plain HTML.
|
|
50
50
|
*/
|
|
51
51
|
export declare const GGUI_RENDER_RESOURCE_MIME: "text/html;profile=mcp-app";
|
|
52
|
+
export { composeEpochUri, parseEpochUri, EPOCH_URI_SEPARATOR, type ParsedEpochUri, } from './epoch-uri.js';
|
|
52
53
|
/**
|
|
53
54
|
* The single `_meta.ui.resourceUri` value ggui uses across every MCP Apps
|
|
54
55
|
* host surface. Exposed as a named constant so tool-declaration code,
|
|
@@ -192,11 +193,44 @@ export interface McpAppContextSlot {
|
|
|
192
193
|
* WS auth credential the iframe threads on the WebSocket upgrade as
|
|
193
194
|
* `?wsToken=<encoded>` and inside `SubscribePayload.wsToken`.
|
|
194
195
|
*
|
|
195
|
-
* **
|
|
196
|
-
* the
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
196
|
+
* **Failover ladder (WS → SSE → polling).** `sseUrl` and `pollingUrl`
|
|
197
|
+
* are the two HTTP fallback rungs the iframe-runtime descends when the
|
|
198
|
+
* WS rung fails (host CSP block, proxy, network policy). Both are
|
|
199
|
+
* stamped by the SERVER via {@link composeSessionApiUrls} — one
|
|
200
|
+
* composer for every stamping surface — and consumed by the
|
|
201
|
+
* IFRAME-RUNTIME. Auth for both is the embedded `wsToken` query
|
|
202
|
+
* credential (`EventSource` cannot set request headers, so the query
|
|
203
|
+
* string is the only channel — same posture on both rungs), which is
|
|
204
|
+
* why each URL is stamped ONLY when the live trio was minted.
|
|
205
|
+
* Absence semantics: `sseUrl` absent ⇒ no SSE rung (ladder is
|
|
206
|
+
* WS → polling); `pollingUrl` absent ⇒ no polling rung.
|
|
207
|
+
*
|
|
208
|
+
* `pollingUrl` (server-stamped
|
|
209
|
+
* `/api/sessions/<sessionId>/events?wsToken=<token>`): the
|
|
210
|
+
* iframe-runtime composes per-tick `&sinceSequence=<cursor>&limit=<N>`
|
|
211
|
+
* against this base; companion to `lastSequence` which seeds the
|
|
212
|
+
* initial cursor.
|
|
213
|
+
*
|
|
214
|
+
* `sseUrl` (server-stamped
|
|
215
|
+
* `/api/sessions/<sessionId>/stream?wsToken=<token>`): consumed via
|
|
216
|
+
* `EventSource`. Server obligations — the endpoint serves
|
|
217
|
+
* `text/event-stream` where each SSE message's `data:` is EXACTLY one
|
|
218
|
+
* ChannelFrame JSON (`{type, payload}` — byte-same shape as the WS
|
|
219
|
+
* push); a message's `id:` is the decimal event-ledger `seq` (the SAME
|
|
220
|
+
* cursor space as `lastSequence`/`sinceSequence`), stamped ONLY on
|
|
221
|
+
* ledger-backed `render_event` replay frames — live frames are id-less
|
|
222
|
+
* (same ephemeral posture as WS) — so the browser's automatic
|
|
223
|
+
* `Last-Event-ID` reconnect header IS the existing cursor replay; the
|
|
224
|
+
* server emits a comment heartbeat (`: hb`, no `id:`) at least every
|
|
225
|
+
* ~25s (proxy/ALB idle-timeout floor) and `retry: 3000` as the first
|
|
226
|
+
* write after headers. Client obligations — append
|
|
227
|
+
* `&sinceSequence=<lastSequence>` on FIRST connect (before any
|
|
228
|
+
* `Last-Event-ID` exists); on reconnect the header WINS over the
|
|
229
|
+
* query. Failure modes mirror `/events`: 401 invalid token; 404
|
|
230
|
+
* evicted → stop; 410 expired / `REPLAY_HORIZON_PASSED` →
|
|
231
|
+
* re-bootstrap (the horizon violation is an in-band error frame
|
|
232
|
+
* carrying `resumeId: String(lastSequence)`, so the browser cursor
|
|
233
|
+
* advances and the ack snapshot re-mounts state).
|
|
200
234
|
*
|
|
201
235
|
* **Mode discriminator.** At least one of `{ codeUrl, codeB64, kind,
|
|
202
236
|
* wsUrl-with-token }` MUST be present for the iframe to mount. `kind` is
|
|
@@ -214,6 +248,7 @@ export interface McpAppAiGguiRenderMeta {
|
|
|
214
248
|
readonly wsToken?: string;
|
|
215
249
|
readonly expiresAt?: string;
|
|
216
250
|
readonly pollingUrl?: string;
|
|
251
|
+
readonly sseUrl?: string;
|
|
217
252
|
readonly themeId?: string;
|
|
218
253
|
readonly themeMode?: 'light' | 'dark';
|
|
219
254
|
/**
|
|
@@ -239,12 +274,34 @@ export interface McpAppAiGguiRenderMeta {
|
|
|
239
274
|
* from a cursor.
|
|
240
275
|
*/
|
|
241
276
|
readonly lastSequence?: number;
|
|
277
|
+
/**
|
|
278
|
+
* History head epoch this mount belongs to (#483, SPEC §7.1.2.2).
|
|
279
|
+
* `ggui_render` mints epoch 0; each `ggui_update` result carries its
|
|
280
|
+
* new epoch; a pinned `#N` read carries N. The iframe reads it at
|
|
281
|
+
* boot as its OWN epoch: when a later `props_update` frame carries a
|
|
282
|
+
* HIGHER epoch, this mount has been superseded and freezes (the
|
|
283
|
+
* freeze latch). Absent ⇒ 0.
|
|
284
|
+
*/
|
|
285
|
+
readonly epoch?: number;
|
|
242
286
|
readonly propsJson?: string;
|
|
243
287
|
readonly contextSlots?: ReadonlyArray<McpAppContextSlot>;
|
|
244
288
|
readonly contractHash?: string;
|
|
245
289
|
readonly validatorsUrl?: string;
|
|
246
290
|
readonly codeUrl?: string;
|
|
247
291
|
readonly codeHash?: string;
|
|
292
|
+
/**
|
|
293
|
+
* Strict-CSP module variant of {@link codeUrl} (ggui#522 slice 2):
|
|
294
|
+
* the SAME component bytes, server-side import-rewritten so every
|
|
295
|
+
* bare specifier resolves to a static shim asset on the code origin
|
|
296
|
+
* — directly `import()`able under a `script-src` that allows only
|
|
297
|
+
* that origin (no `blob:`, no `data:`, no `'unsafe-eval'`). The
|
|
298
|
+
* renderer tries this FIRST when present and falls back to the
|
|
299
|
+
* codeB64/codeUrl blob ladder on any failure. Never a mode
|
|
300
|
+
* discriminator on its own — always accompanies `codeUrl`/`codeB64`
|
|
301
|
+
* (the raw bytes remain the fallback), so its presence adds a load
|
|
302
|
+
* path without changing mountability.
|
|
303
|
+
*/
|
|
304
|
+
readonly codeModuleUrl?: string;
|
|
248
305
|
/**
|
|
249
306
|
* Base64-encoded compiled ES-module source of the component — the
|
|
250
307
|
* fetch-free twin of {@link codeUrl}. Produced by servers whose
|
|
@@ -296,6 +353,39 @@ export declare function parseMcpAppAiGguiRenderMeta(meta: unknown): ParseMcpAppA
|
|
|
296
353
|
* @public
|
|
297
354
|
*/
|
|
298
355
|
export declare function toMcpAppEnvelope(render: McpAppAiGguiRenderMeta): Record<string, unknown>;
|
|
356
|
+
/**
|
|
357
|
+
* Token-bearing session-API URL pair — the return shape of
|
|
358
|
+
* {@link composeSessionApiUrls}. Field names deliberately match the
|
|
359
|
+
* {@link McpAppAiGguiRenderMeta} slice fields they stamp, so callers
|
|
360
|
+
* spread the pair straight into a slice literal.
|
|
361
|
+
*
|
|
362
|
+
* @public
|
|
363
|
+
*/
|
|
364
|
+
export interface SessionApiUrls {
|
|
365
|
+
/** `${base}/api/sessions/<sessionId>/events?wsToken=<token>` */
|
|
366
|
+
readonly pollingUrl: string;
|
|
367
|
+
/** `${base}/api/sessions/<sessionId>/stream?wsToken=<token>` */
|
|
368
|
+
readonly sseUrl: string;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Compose the token-bearing session-API URL pair — ONE composer for
|
|
372
|
+
* every stamping surface (render resultMeta, update resultMeta, the
|
|
373
|
+
* self-contained shell, the `/api/sessions/:id/state` bootstrap). Same
|
|
374
|
+
* move as `deriveRenderMeta`: because every surface routes through this
|
|
375
|
+
* function, cross-transport drift in the URL shapes is structurally
|
|
376
|
+
* impossible.
|
|
377
|
+
*
|
|
378
|
+
* Pure string composition, no I/O. `base` is the absolute public
|
|
379
|
+
* origin the session API is served on (a trailing `/` is tolerated and
|
|
380
|
+
* stripped); `sessionId` and `wsToken` are URL-encoded into path and
|
|
381
|
+
* query. Callers MUST invoke this only when the live trio was minted —
|
|
382
|
+
* both URLs embed the token, and a token-less URL can only 401 through
|
|
383
|
+
* the fallback composers; omission of both fields is the honest
|
|
384
|
+
* no-HTTP-fallback signal the slice contract defines.
|
|
385
|
+
*
|
|
386
|
+
* @public
|
|
387
|
+
*/
|
|
388
|
+
export declare function composeSessionApiUrls(base: string, sessionId: string, wsToken: string): SessionApiUrls;
|
|
299
389
|
/**
|
|
300
390
|
* `_meta` key carrying host-supplied conversation-grouping metadata on
|
|
301
391
|
* every inbound `tools/call` request. Captured ONCE on the first call
|
|
@@ -465,6 +555,13 @@ export interface McpAppsGguiSession {
|
|
|
465
555
|
readonly type: 'mcpApps';
|
|
466
556
|
readonly id: string;
|
|
467
557
|
readonly createdAt: string;
|
|
558
|
+
/**
|
|
559
|
+
* History head epoch (#483) — same semantics as
|
|
560
|
+
* `GguiSessionBase.epoch` (absent ⇒ 0; advanced only by
|
|
561
|
+
* `ggui_update`). Declared here too because this variant does not
|
|
562
|
+
* extend the base.
|
|
563
|
+
*/
|
|
564
|
+
readonly epoch?: number;
|
|
468
565
|
readonly prompt?: string;
|
|
469
566
|
readonly description?: string;
|
|
470
567
|
readonly message?: string;
|
|
@@ -973,9 +1070,20 @@ export declare function toolResultGguiRender(result: unknown): GguiRenderBootstr
|
|
|
973
1070
|
* theme variables at boot; the static dark fallback covers the
|
|
974
1071
|
* pre-resolve first paint.
|
|
975
1072
|
*
|
|
1073
|
+
* The chain opens with `--ggui-shell-background` — unset in the
|
|
1074
|
+
* served bytes — as the runtime's override point. The shell stamps
|
|
1075
|
+
* its backdrop as an INLINE style, which no stylesheet `background`
|
|
1076
|
+
* rule can out-cascade; but because the inline value is a `var()`,
|
|
1077
|
+
* a stylesheet that sets the custom property re-resolves it in
|
|
1078
|
+
* place. The layer that knows whether the embedding host composites
|
|
1079
|
+
* its own chrome behind the document (the design system's
|
|
1080
|
+
* `ThemeProvider` in its transparent posture) sets
|
|
1081
|
+
* `--ggui-shell-background: transparent`; every other context keeps
|
|
1082
|
+
* the surface paint and its per-browser consistency.
|
|
1083
|
+
*
|
|
976
1084
|
* @public
|
|
977
1085
|
*/
|
|
978
|
-
export declare const GGUI_RENDER_SHELL_SURFACE = "var(--ggui-color-surface, #1e293b)";
|
|
1086
|
+
export declare const GGUI_RENDER_SHELL_SURFACE = "var(--ggui-shell-background, var(--ggui-color-surface, #1e293b))";
|
|
979
1087
|
/**
|
|
980
1088
|
* Options for {@link gguiShellHtml}.
|
|
981
1089
|
*
|
|
@@ -1062,4 +1170,29 @@ export declare function escapeInlineScript(source: string): string;
|
|
|
1062
1170
|
* @public
|
|
1063
1171
|
*/
|
|
1064
1172
|
export declare function gguiShellHtml(bootstrap: GguiRenderBootstrap, options?: GguiShellHtmlOptions): string;
|
|
1173
|
+
/**
|
|
1174
|
+
* The exact prefix {@link gguiShellHtml} writes before the envelope
|
|
1175
|
+
* JSON — shared with {@link readGguiShellEnvelope} so the writer and the
|
|
1176
|
+
* reader cannot drift. ONE line, one marker; the JSON that follows is
|
|
1177
|
+
* angle-bracket-escaped, so the closing script tag can only be the
|
|
1178
|
+
* terminator.
|
|
1179
|
+
*/
|
|
1180
|
+
export declare const GGUI_SHELL_META_MARKER = "globalThis.__GGUI_META__ = ";
|
|
1181
|
+
/**
|
|
1182
|
+
* Inverse of {@link gguiShellHtml}: recover the slice envelope
|
|
1183
|
+
* (`{ "ai.ggui/render": {…} }`) a shell document inlines. This is the
|
|
1184
|
+
* host-side half of the read-plane door (ggui#537): a tool result that
|
|
1185
|
+
* carries only the view's identity (`structuredContent.resourceUri` /
|
|
1186
|
+
* `_meta.ui.resourceUri`, no bootstrap material) names a per-render
|
|
1187
|
+
* resource whose document IS a self-contained shell — read it through
|
|
1188
|
+
* `resources/read`, hand the text here, then validate the returned
|
|
1189
|
+
* envelope with {@link parseMcpAppAiGguiRenderMeta}. Returns
|
|
1190
|
+
* `undefined` when the text carries no marker or the JSON does not
|
|
1191
|
+
* parse (a static thin shell, a failure page, a truncated body) —
|
|
1192
|
+
* never throws, so a caller can fall through to its next tier.
|
|
1193
|
+
*
|
|
1194
|
+
* Reads the FIRST marker only. `gguiShellHtml` writes exactly one; a
|
|
1195
|
+
* document with two is not one it produced.
|
|
1196
|
+
*/
|
|
1197
|
+
export declare function readGguiShellEnvelope(html: string): unknown;
|
|
1065
1198
|
//# sourceMappingURL=mcp-apps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-apps.d.ts","sourceRoot":"","sources":["../../src/integrations/mcp-apps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-apps.d.ts","sourceRoot":"","sources":["../../src/integrations/mcp-apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,11 @@ export const GGUI_RENDER_RESOURCE_URI = 'ui://ggui/render';
|
|
|
49
49
|
* render them as plain HTML.
|
|
50
50
|
*/
|
|
51
51
|
export const GGUI_RENDER_RESOURCE_MIME = 'text/html;profile=mcp-app';
|
|
52
|
+
// Epoch-pinned resource URIs (#483) — bare URI = live head, `#N` =
|
|
53
|
+
// immutable history record. Re-exported here because this module is
|
|
54
|
+
// the package's MCP-Apps export surface; the seam itself lives in
|
|
55
|
+
// epoch-uri.ts (ONE place to flip the encoding).
|
|
56
|
+
export { composeEpochUri, parseEpochUri, EPOCH_URI_SEPARATOR, } from './epoch-uri.js';
|
|
52
57
|
/**
|
|
53
58
|
* The single `_meta.ui.resourceUri` value ggui uses across every MCP Apps
|
|
54
59
|
* host surface. Exposed as a named constant so tool-declaration code,
|
|
@@ -96,7 +101,7 @@ export function deriveContextName(slotKey) {
|
|
|
96
101
|
// "ai.ggui/render": {
|
|
97
102
|
// sessionId, appId, runtimeUrl,
|
|
98
103
|
// wsUrl?, wsToken?, expiresAt?,
|
|
99
|
-
// pollingUrl?,
|
|
104
|
+
// pollingUrl?, sseUrl?,
|
|
100
105
|
// themeId?, themeMode?, theme?,
|
|
101
106
|
// gadgets?, publicEnv?, streamWebSocketLocalTools?,
|
|
102
107
|
// permissionsPolicy?,
|
|
@@ -177,6 +182,17 @@ export function parseMcpAppAiGguiRenderMeta(meta) {
|
|
|
177
182
|
(typeof ls !== 'number' || !Number.isInteger(ls) || ls < 0)) {
|
|
178
183
|
return { ok: false, reason: 'MALFORMED_RENDER' };
|
|
179
184
|
}
|
|
185
|
+
// `epoch` (#483) mirrors lastSequence's invariant: the freeze-latch
|
|
186
|
+
// self-epoch is a non-negative integer when present. This parser
|
|
187
|
+
// REBUILDS the slice field-by-field, so a field missing from the
|
|
188
|
+
// constructor below is silently deleted from every downstream
|
|
189
|
+
// consumer — epoch was exactly such a drop (probe 18 round 3: the
|
|
190
|
+
// head card booted believing epoch 0 and froze on its own amend).
|
|
191
|
+
const ep = s.epoch;
|
|
192
|
+
if (ep !== undefined &&
|
|
193
|
+
(typeof ep !== 'number' || !Number.isInteger(ep) || ep < 0)) {
|
|
194
|
+
return { ok: false, reason: 'MALFORMED_RENDER' };
|
|
195
|
+
}
|
|
180
196
|
// Component-mode discriminator: kind mutually exclusive with
|
|
181
197
|
// codeUrl/codeB64 (the two static-component carriers may coexist —
|
|
182
198
|
// consumers prefer the inline bytes).
|
|
@@ -184,9 +200,19 @@ export function parseMcpAppAiGguiRenderMeta(meta) {
|
|
|
184
200
|
const ck = s.kind;
|
|
185
201
|
const ch = s.codeHash;
|
|
186
202
|
const cb = s.codeB64;
|
|
203
|
+
const cm = s.codeModuleUrl;
|
|
187
204
|
if (cu !== undefined && (typeof cu !== 'string' || cu.length === 0)) {
|
|
188
205
|
return { ok: false, reason: 'MALFORMED_RENDER' };
|
|
189
206
|
}
|
|
207
|
+
// `codeModuleUrl` rides ALONGSIDE a static-component carrier, never
|
|
208
|
+
// alone — it is a load-path optimization, not a mode. A slice
|
|
209
|
+
// carrying only the variant would leave fallback-less consumers
|
|
210
|
+
// stranded; parse it out unless a raw carrier is present (tolerant
|
|
211
|
+
// drop, matching the optional-field posture — the raw carrier gate
|
|
212
|
+
// below still decides mountability).
|
|
213
|
+
if (cm !== undefined && (typeof cm !== 'string' || cm.length === 0)) {
|
|
214
|
+
return { ok: false, reason: 'MALFORMED_RENDER' };
|
|
215
|
+
}
|
|
190
216
|
if (ck !== undefined && (typeof ck !== 'string' || ck.length === 0)) {
|
|
191
217
|
return { ok: false, reason: 'MALFORMED_RENDER' };
|
|
192
218
|
}
|
|
@@ -222,6 +248,11 @@ export function parseMcpAppAiGguiRenderMeta(meta) {
|
|
|
222
248
|
...(hasW && hasT ? { wsUrl: aw, wsToken: at } : {}),
|
|
223
249
|
...(ae !== undefined ? { expiresAt: ae } : {}),
|
|
224
250
|
...(s.pollingUrl !== undefined ? { pollingUrl: s.pollingUrl } : {}),
|
|
251
|
+
// Same tolerant scalar posture as pollingUrl; deliberately NO
|
|
252
|
+
// wsToken-pairing invariant — the URL is self-authorizing via its
|
|
253
|
+
// embedded token; field-level defense lives downstream in the
|
|
254
|
+
// iframe-runtime's `validateMeta`.
|
|
255
|
+
...(s.sseUrl !== undefined ? { sseUrl: s.sseUrl } : {}),
|
|
225
256
|
...(s.themeId !== undefined ? { themeId: s.themeId } : {}),
|
|
226
257
|
...(s.themeMode !== undefined
|
|
227
258
|
? { themeMode: s.themeMode }
|
|
@@ -247,6 +278,7 @@ export function parseMcpAppAiGguiRenderMeta(meta) {
|
|
|
247
278
|
? { permissionsPolicy: s.permissionsPolicy }
|
|
248
279
|
: {}),
|
|
249
280
|
...(ls !== undefined ? { lastSequence: ls } : {}),
|
|
281
|
+
...(ep !== undefined ? { epoch: ep } : {}),
|
|
250
282
|
...(s.propsJson !== undefined ? { propsJson: s.propsJson } : {}),
|
|
251
283
|
...(s.contextSlots !== undefined
|
|
252
284
|
? {
|
|
@@ -262,6 +294,10 @@ export function parseMcpAppAiGguiRenderMeta(meta) {
|
|
|
262
294
|
...(typeof cu === 'string' && cu.length > 0 ? { codeUrl: cu } : {}),
|
|
263
295
|
...(typeof ch === 'string' && ch.length > 0 ? { codeHash: ch } : {}),
|
|
264
296
|
...(typeof cb === 'string' && cb.length > 0 ? { codeB64: cb } : {}),
|
|
297
|
+
// Variant only WITH a raw static carrier — see the parse gate above.
|
|
298
|
+
...(typeof cm === 'string' && cm.length > 0 && hasStaticComponent
|
|
299
|
+
? { codeModuleUrl: cm }
|
|
300
|
+
: {}),
|
|
265
301
|
...(typeof ck === 'string' && ck.length > 0 ? { kind: ck } : {}),
|
|
266
302
|
};
|
|
267
303
|
return { ok: true, meta: slice };
|
|
@@ -277,6 +313,33 @@ export function toMcpAppEnvelope(render) {
|
|
|
277
313
|
[MCP_APP_AI_GGUI_RENDER_META_KEY]: render,
|
|
278
314
|
};
|
|
279
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Compose the token-bearing session-API URL pair — ONE composer for
|
|
318
|
+
* every stamping surface (render resultMeta, update resultMeta, the
|
|
319
|
+
* self-contained shell, the `/api/sessions/:id/state` bootstrap). Same
|
|
320
|
+
* move as `deriveRenderMeta`: because every surface routes through this
|
|
321
|
+
* function, cross-transport drift in the URL shapes is structurally
|
|
322
|
+
* impossible.
|
|
323
|
+
*
|
|
324
|
+
* Pure string composition, no I/O. `base` is the absolute public
|
|
325
|
+
* origin the session API is served on (a trailing `/` is tolerated and
|
|
326
|
+
* stripped); `sessionId` and `wsToken` are URL-encoded into path and
|
|
327
|
+
* query. Callers MUST invoke this only when the live trio was minted —
|
|
328
|
+
* both URLs embed the token, and a token-less URL can only 401 through
|
|
329
|
+
* the fallback composers; omission of both fields is the honest
|
|
330
|
+
* no-HTTP-fallback signal the slice contract defines.
|
|
331
|
+
*
|
|
332
|
+
* @public
|
|
333
|
+
*/
|
|
334
|
+
export function composeSessionApiUrls(base, sessionId, wsToken) {
|
|
335
|
+
const b = base.replace(/\/$/, '');
|
|
336
|
+
const sid = encodeURIComponent(sessionId);
|
|
337
|
+
const tok = encodeURIComponent(wsToken);
|
|
338
|
+
return {
|
|
339
|
+
pollingUrl: `${b}/api/sessions/${sid}/events?wsToken=${tok}`,
|
|
340
|
+
sseUrl: `${b}/api/sessions/${sid}/stream?wsToken=${tok}`,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
280
343
|
// =============================================================================
|
|
281
344
|
// Request-side `_meta` — host-supplied metadata on inbound `tools/call`.
|
|
282
345
|
//
|
|
@@ -610,9 +673,20 @@ export function toolResultGguiRender(result) {
|
|
|
610
673
|
* theme variables at boot; the static dark fallback covers the
|
|
611
674
|
* pre-resolve first paint.
|
|
612
675
|
*
|
|
676
|
+
* The chain opens with `--ggui-shell-background` — unset in the
|
|
677
|
+
* served bytes — as the runtime's override point. The shell stamps
|
|
678
|
+
* its backdrop as an INLINE style, which no stylesheet `background`
|
|
679
|
+
* rule can out-cascade; but because the inline value is a `var()`,
|
|
680
|
+
* a stylesheet that sets the custom property re-resolves it in
|
|
681
|
+
* place. The layer that knows whether the embedding host composites
|
|
682
|
+
* its own chrome behind the document (the design system's
|
|
683
|
+
* `ThemeProvider` in its transparent posture) sets
|
|
684
|
+
* `--ggui-shell-background: transparent`; every other context keeps
|
|
685
|
+
* the surface paint and its per-browser consistency.
|
|
686
|
+
*
|
|
613
687
|
* @public
|
|
614
688
|
*/
|
|
615
|
-
export const GGUI_RENDER_SHELL_SURFACE = 'var(--ggui-color-surface, #1e293b)';
|
|
689
|
+
export const GGUI_RENDER_SHELL_SURFACE = 'var(--ggui-shell-background, var(--ggui-color-surface, #1e293b))';
|
|
616
690
|
/**
|
|
617
691
|
* Make raw JS source safe to embed as the text content of an HTML
|
|
618
692
|
* `<script>` element.
|
|
@@ -704,3 +778,44 @@ export function gguiShellHtml(bootstrap, options) {
|
|
|
704
778
|
${runtimeTag}
|
|
705
779
|
</body></html>`;
|
|
706
780
|
}
|
|
781
|
+
/**
|
|
782
|
+
* The exact prefix {@link gguiShellHtml} writes before the envelope
|
|
783
|
+
* JSON — shared with {@link readGguiShellEnvelope} so the writer and the
|
|
784
|
+
* reader cannot drift. ONE line, one marker; the JSON that follows is
|
|
785
|
+
* angle-bracket-escaped, so the closing script tag can only be the
|
|
786
|
+
* terminator.
|
|
787
|
+
*/
|
|
788
|
+
export const GGUI_SHELL_META_MARKER = 'globalThis.__GGUI_META__ = ';
|
|
789
|
+
/**
|
|
790
|
+
* Inverse of {@link gguiShellHtml}: recover the slice envelope
|
|
791
|
+
* (`{ "ai.ggui/render": {…} }`) a shell document inlines. This is the
|
|
792
|
+
* host-side half of the read-plane door (ggui#537): a tool result that
|
|
793
|
+
* carries only the view's identity (`structuredContent.resourceUri` /
|
|
794
|
+
* `_meta.ui.resourceUri`, no bootstrap material) names a per-render
|
|
795
|
+
* resource whose document IS a self-contained shell — read it through
|
|
796
|
+
* `resources/read`, hand the text here, then validate the returned
|
|
797
|
+
* envelope with {@link parseMcpAppAiGguiRenderMeta}. Returns
|
|
798
|
+
* `undefined` when the text carries no marker or the JSON does not
|
|
799
|
+
* parse (a static thin shell, a failure page, a truncated body) —
|
|
800
|
+
* never throws, so a caller can fall through to its next tier.
|
|
801
|
+
*
|
|
802
|
+
* Reads the FIRST marker only. `gguiShellHtml` writes exactly one; a
|
|
803
|
+
* document with two is not one it produced.
|
|
804
|
+
*/
|
|
805
|
+
export function readGguiShellEnvelope(html) {
|
|
806
|
+
const start = html.indexOf(GGUI_SHELL_META_MARKER);
|
|
807
|
+
if (start < 0)
|
|
808
|
+
return undefined;
|
|
809
|
+
const jsonStart = start + GGUI_SHELL_META_MARKER.length;
|
|
810
|
+
// The assembler escapes `<`/`>` inside the JSON, so this sequence
|
|
811
|
+
// cannot occur before the real terminator.
|
|
812
|
+
const end = html.indexOf(';</' + 'script>', jsonStart);
|
|
813
|
+
if (end < 0)
|
|
814
|
+
return undefined;
|
|
815
|
+
try {
|
|
816
|
+
return JSON.parse(html.slice(jsonStart, end));
|
|
817
|
+
}
|
|
818
|
+
catch {
|
|
819
|
+
return undefined;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props-schema-hash.d.ts","sourceRoot":"","sources":["../../src/registry/props-schema-hash.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIjE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `computePropsSchemaHash` — sha256 over the RFC 8785 (JCS) canonical
|
|
3
|
+
* bytes of an enforced props schema (P3 pin 3, frozen 2026-08-19,
|
|
4
|
+
* guuey#271). Lowercase hex, full 64 characters, no prefix.
|
|
5
|
+
*
|
|
6
|
+
* Server-only — depends on `node:crypto`, so it lives behind its own
|
|
7
|
+
* subpath (`@ggui-ai/protocol/props-schema-hash`) per the
|
|
8
|
+
* `blueprint-key` convention; browsers never bundle it. The pure
|
|
9
|
+
* canonicalization half (`canonicalPropsSchemaBytes`) is browser-safe
|
|
10
|
+
* in `validation/enforced-props-schema.ts`.
|
|
11
|
+
*
|
|
12
|
+
* Consumer verification rule (frozen): re-canonicalize the received
|
|
13
|
+
* `propsSchema` value per RFC 8785 (any JCS library), hash, compare —
|
|
14
|
+
* raw received bytes are equivalent whenever the transport preserves
|
|
15
|
+
* key order.
|
|
16
|
+
*/
|
|
17
|
+
import { createHash } from 'node:crypto';
|
|
18
|
+
import { canonicalPropsSchemaBytes } from '../validation/enforced-props-schema.js';
|
|
19
|
+
export function computePropsSchemaHash(schema) {
|
|
20
|
+
return createHash('sha256')
|
|
21
|
+
.update(canonicalPropsSchemaBytes(schema))
|
|
22
|
+
.digest('hex');
|
|
23
|
+
}
|
|
@@ -35,6 +35,8 @@ export declare const blueprintSourceSchema: z.ZodType<BlueprintSource>;
|
|
|
35
35
|
* metadata via `tools/list`, so they stay mechanism-only and
|
|
36
36
|
* vendor-neutral.
|
|
37
37
|
*/
|
|
38
|
+
/** The four — and only — variance keys; the strict object names them on rejection. */
|
|
39
|
+
export declare const BLUEPRINT_VARIANCE_KEYS: readonly ["persona", "aesthetic", "context", "seedPrompt"];
|
|
38
40
|
export declare const blueprintVarianceSchema: z.ZodType<BlueprintVariance>;
|
|
39
41
|
/**
|
|
40
42
|
* Zod mirror of {@link Blueprint}. Required fields are listed first;
|