@ggui-ai/protocol 0.17.0 → 0.18.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.js +1 -1
- package/dist/integrations/mcp-apps.d.ts +69 -0
- package/dist/integrations/mcp-apps.d.ts.map +1 -1
- package/dist/integrations/mcp-apps.js +44 -0
- package/dist/schemas/app-generation-profile.d.ts +61 -0
- package/dist/schemas/app-generation-profile.d.ts.map +1 -1
- package/dist/schemas/app-generation-profile.js +47 -0
- package/dist/schemas/app-theme.d.ts +84 -0
- package/dist/schemas/app-theme.d.ts.map +1 -1
- package/dist/schemas/app-theme.js +109 -0
- package/dist/schemas/data-contract.d.ts +46 -0
- package/dist/schemas/data-contract.d.ts.map +1 -1
- package/dist/schemas/data-contract.js +162 -0
- package/dist/types/data-contract.d.ts +15 -1
- package/dist/types/data-contract.d.ts.map +1 -1
- package/dist/version.d.ts +13 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +13 -1
- package/package.json +1 -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.18.0";
|
|
16
16
|
/**
|
|
17
17
|
* v1 catalog of stdlib gadget descriptors. Every entry's
|
|
18
18
|
* `package` defaults to {@link STDLIB_GADGETS_PACKAGE}; the
|
|
@@ -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.18.0';
|
|
43
43
|
/**
|
|
44
44
|
* v1 catalog of stdlib gadget descriptors. Every entry's
|
|
45
45
|
* `package` defaults to {@link STDLIB_GADGETS_PACKAGE}; the
|
|
@@ -799,6 +799,8 @@ export declare const MCP_APP_RENDERER_READY_TYPE = "ggui:renderer-ready";
|
|
|
799
799
|
export declare const MCP_APP_BOOTSTRAP_FAILED_TYPE = "ggui:bootstrap-failed";
|
|
800
800
|
/** Envelope tag: renderer-internal observability event (telemetry). */
|
|
801
801
|
export declare const MCP_APP_OBSERVE_TYPE = "ggui:observe";
|
|
802
|
+
/** Envelope tag: a user dismiss GESTURE, forwarded to the host as an intent (ggui#1109). */
|
|
803
|
+
export declare const MCP_APP_DISMISS_TYPE = "ggui:dismiss";
|
|
802
804
|
/**
|
|
803
805
|
* Envelope tag: mount-lifecycle transition. Constant twin of the
|
|
804
806
|
* literal on {@link McpAppLifecycleMessage} — the annotation ties the
|
|
@@ -1287,4 +1289,71 @@ export declare const GGUI_SHELL_META_MARKER = "globalThis.__GGUI_META__ = ";
|
|
|
1287
1289
|
* document with two is not one it produced.
|
|
1288
1290
|
*/
|
|
1289
1291
|
export declare function readGguiShellEnvelope(html: string): unknown;
|
|
1292
|
+
/**
|
|
1293
|
+
* The dismiss reasons this release names. **Extensibly-closed** (SPEC §11.4):
|
|
1294
|
+
* members are added in MINOR releases, and a host that meets a reason it does
|
|
1295
|
+
* not recognize MUST treat the message as a dismiss request of unknown cause —
|
|
1296
|
+
* never as nothing. The tuple exists so hosts and conformance tests can
|
|
1297
|
+
* iterate the known set; it is deliberately NOT a validation whitelist (see
|
|
1298
|
+
* {@link isMcpAppDismissMessage}).
|
|
1299
|
+
*
|
|
1300
|
+
* @public
|
|
1301
|
+
*/
|
|
1302
|
+
export declare const MCP_APP_DISMISS_REASONS: readonly McpAppDismissReason[];
|
|
1303
|
+
/** A named dismiss cause. Open by design — see {@link MCP_APP_DISMISS_REASONS}. */
|
|
1304
|
+
export type McpAppDismissReason = 'escape' | (string & {});
|
|
1305
|
+
/**
|
|
1306
|
+
* `ggui:dismiss` — the user asked to dismiss the card, and the card is
|
|
1307
|
+
* telling the surface it is embedded in (ggui#1109).
|
|
1308
|
+
*
|
|
1309
|
+
* **It is an INTENT, not a command, and that word is the whole design.** The
|
|
1310
|
+
* card reports the gesture; the HOST decides what dismiss means — close the
|
|
1311
|
+
* panel, return focus, collapse to a chip, or nothing. A card that dismissed
|
|
1312
|
+
* itself would be answering a question that belongs to the surface around it,
|
|
1313
|
+
* and it would be wrong in the first host that wanted focus returned instead.
|
|
1314
|
+
*
|
|
1315
|
+
* Parties and obligations (ggui#1109, the contract bar):
|
|
1316
|
+
* - The RENDERER (emitter) MUST emit this on a dismiss gesture made with
|
|
1317
|
+
* focus inside the card document, MUST emit **at most one intent per
|
|
1318
|
+
* gesture** — a held key auto-repeating is ONE gesture, so an emitter
|
|
1319
|
+
* skips events where the platform marks the keypress as a repeat — and
|
|
1320
|
+
* MUST NOT act on it: no unmount, no visual dismissal, no state change.
|
|
1321
|
+
* The card does not learn whether the host honoured it, and MUST NOT
|
|
1322
|
+
* wait to find out.
|
|
1323
|
+
* - The HOST (receiver) decides. **Ignoring is CONFORMANT**: the host owns
|
|
1324
|
+
* its surface, and a host that does nothing behaves exactly as hosts did
|
|
1325
|
+
* before this message existed — which is also why adopting it breaks no
|
|
1326
|
+
* one. This is stated so the first host to drop it is not reported as a
|
|
1327
|
+
* bug by the second.
|
|
1328
|
+
*
|
|
1329
|
+
* Failure mode: a gesture the user made that no surface can see — today an
|
|
1330
|
+
* `Escape` pressed with focus inside the card dies there, because the card
|
|
1331
|
+
* has no keydown handler and the MCP-Apps surface has no dismiss
|
|
1332
|
+
* notification. Observable violation: a card that unmounts or visually
|
|
1333
|
+
* dismisses itself on the gesture, or a renderer that emits nothing when the
|
|
1334
|
+
* gesture is made with focus inside the card.
|
|
1335
|
+
*
|
|
1336
|
+
* @public
|
|
1337
|
+
*/
|
|
1338
|
+
export interface McpAppDismissMessage {
|
|
1339
|
+
readonly type: typeof MCP_APP_DISMISS_TYPE;
|
|
1340
|
+
readonly reason: McpAppDismissReason;
|
|
1341
|
+
}
|
|
1342
|
+
/**
|
|
1343
|
+
* Type guard for {@link McpAppDismissMessage}. Trust-boundary helper for a
|
|
1344
|
+
* host reading raw postMessage data.
|
|
1345
|
+
*
|
|
1346
|
+
* **It accepts any non-empty `reason` string, and that is not an oversight.**
|
|
1347
|
+
* {@link isMcpAppLifecycleMessage} checks its `state` against a closed set
|
|
1348
|
+
* because lifecycle states are a closed union; dismiss reasons are
|
|
1349
|
+
* EXTENSIBLY-closed, so validating against today's tuple would make a host on
|
|
1350
|
+
* release N silently drop an intent sent by a card on release N+1 — the exact
|
|
1351
|
+
* N−1 failure the reason's openness exists to prevent
|
|
1352
|
+
* (`docs/protocol/VERSION-POLICY.md` §3.6). The guard proves the envelope's
|
|
1353
|
+
* SHAPE; the host classifies the cause, defaulting an unknown one to "dismiss
|
|
1354
|
+
* requested, cause unknown".
|
|
1355
|
+
*
|
|
1356
|
+
* @public
|
|
1357
|
+
*/
|
|
1358
|
+
export declare function isMcpAppDismissMessage(message: unknown): message is McpAppDismissMessage;
|
|
1290
1359
|
//# 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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"}
|
|
@@ -516,6 +516,13 @@ export function isMcpAppLifecycleMessage(message) {
|
|
|
516
516
|
// it carries is renderer-internal telemetry vocabulary
|
|
517
517
|
// (`ObservabilityEvent` in the renderer package); hosts treat it
|
|
518
518
|
// as extensibly-closed.
|
|
519
|
+
// - `ggui:dismiss` — protocol-owned end to end (ggui#1109): a user
|
|
520
|
+
// GESTURE forwarded to the host as an intent, with an obligation
|
|
521
|
+
// on the CARD (never act on it) and a stated freedom for the host
|
|
522
|
+
// (ignoring is conformant). It is deliberately NOT on
|
|
523
|
+
// `ggui:observe`: that tag's contract lets a host ignore its
|
|
524
|
+
// payload as telemetry, and an intent a host may ignore *by
|
|
525
|
+
// contract* cannot carry the card's obligation not to act.
|
|
519
526
|
// =============================================================================
|
|
520
527
|
/** Envelope tag: renderer alive + bundle evaluated (pre-`ui/initialize`). */
|
|
521
528
|
export const MCP_APP_RENDERER_READY_TYPE = 'ggui:renderer-ready';
|
|
@@ -523,6 +530,8 @@ export const MCP_APP_RENDERER_READY_TYPE = 'ggui:renderer-ready';
|
|
|
523
530
|
export const MCP_APP_BOOTSTRAP_FAILED_TYPE = 'ggui:bootstrap-failed';
|
|
524
531
|
/** Envelope tag: renderer-internal observability event (telemetry). */
|
|
525
532
|
export const MCP_APP_OBSERVE_TYPE = 'ggui:observe';
|
|
533
|
+
/** Envelope tag: a user dismiss GESTURE, forwarded to the host as an intent (ggui#1109). */
|
|
534
|
+
export const MCP_APP_DISMISS_TYPE = 'ggui:dismiss';
|
|
526
535
|
/**
|
|
527
536
|
* Envelope tag: mount-lifecycle transition. Constant twin of the
|
|
528
537
|
* literal on {@link McpAppLifecycleMessage} — the annotation ties the
|
|
@@ -895,3 +904,38 @@ export function readGguiShellEnvelope(html) {
|
|
|
895
904
|
return undefined;
|
|
896
905
|
}
|
|
897
906
|
}
|
|
907
|
+
/**
|
|
908
|
+
* The dismiss reasons this release names. **Extensibly-closed** (SPEC §11.4):
|
|
909
|
+
* members are added in MINOR releases, and a host that meets a reason it does
|
|
910
|
+
* not recognize MUST treat the message as a dismiss request of unknown cause —
|
|
911
|
+
* never as nothing. The tuple exists so hosts and conformance tests can
|
|
912
|
+
* iterate the known set; it is deliberately NOT a validation whitelist (see
|
|
913
|
+
* {@link isMcpAppDismissMessage}).
|
|
914
|
+
*
|
|
915
|
+
* @public
|
|
916
|
+
*/
|
|
917
|
+
export const MCP_APP_DISMISS_REASONS = ['escape'];
|
|
918
|
+
/**
|
|
919
|
+
* Type guard for {@link McpAppDismissMessage}. Trust-boundary helper for a
|
|
920
|
+
* host reading raw postMessage data.
|
|
921
|
+
*
|
|
922
|
+
* **It accepts any non-empty `reason` string, and that is not an oversight.**
|
|
923
|
+
* {@link isMcpAppLifecycleMessage} checks its `state` against a closed set
|
|
924
|
+
* because lifecycle states are a closed union; dismiss reasons are
|
|
925
|
+
* EXTENSIBLY-closed, so validating against today's tuple would make a host on
|
|
926
|
+
* release N silently drop an intent sent by a card on release N+1 — the exact
|
|
927
|
+
* N−1 failure the reason's openness exists to prevent
|
|
928
|
+
* (`docs/protocol/VERSION-POLICY.md` §3.6). The guard proves the envelope's
|
|
929
|
+
* SHAPE; the host classifies the cause, defaulting an unknown one to "dismiss
|
|
930
|
+
* requested, cause unknown".
|
|
931
|
+
*
|
|
932
|
+
* @public
|
|
933
|
+
*/
|
|
934
|
+
export function isMcpAppDismissMessage(message) {
|
|
935
|
+
if (message === null || typeof message !== 'object')
|
|
936
|
+
return false;
|
|
937
|
+
const m = message;
|
|
938
|
+
if (m.type !== MCP_APP_DISMISS_TYPE)
|
|
939
|
+
return false;
|
|
940
|
+
return typeof m.reason === 'string' && m.reason.length > 0;
|
|
941
|
+
}
|
|
@@ -87,6 +87,67 @@ export declare const appGenerationProfileSchema: z.ZodObject<{
|
|
|
87
87
|
}, z.core.$strict>>;
|
|
88
88
|
}, z.core.$strict>;
|
|
89
89
|
export type AppGenerationProfile = z.infer<typeof appGenerationProfileSchema>;
|
|
90
|
+
/**
|
|
91
|
+
* The READ-door variant of {@link appGenerationProfileSchema} (ggui#1105).
|
|
92
|
+
*
|
|
93
|
+
* The write door is strict and MUST stay so — it is what bounds each member
|
|
94
|
+
* and refuses control characters before a profile is stored. A READ door has
|
|
95
|
+
* the opposite job: a stored profile written by a LATER release carries a
|
|
96
|
+
* member this one cannot name, and refusing it there does not protect
|
|
97
|
+
* anything — it destroys a mint. Today the same stored profile is read two
|
|
98
|
+
* ways: the mint parses it strictly and THROWS (the mint dies), while the
|
|
99
|
+
* judge hand-rolls a `.strip()`. One document, two postures, diverging on
|
|
100
|
+
* exactly the member a later release adds.
|
|
101
|
+
*
|
|
102
|
+
* Third instance of one posture — see `schemas/app-theme.ts`
|
|
103
|
+
* (`parseAppThemeAtReadDoor`) and `schemas/data-contract.ts`
|
|
104
|
+
* (`parseDataContractAtReadDoor`). The rule they share:
|
|
105
|
+
*
|
|
106
|
+
* **a read whose purpose is to INTERPRET state strips unknown members and
|
|
107
|
+
* names what it stripped; a read whose purpose is to REPRODUCE state must
|
|
108
|
+
* not strip at all.**
|
|
109
|
+
*
|
|
110
|
+
* This is an INTERPRET door. Only members this release does not NAME are
|
|
111
|
+
* stripped — never members it finds INVALID: a bound, a control character or
|
|
112
|
+
* a level outside the vocabulary is refused exactly as the write door refuses
|
|
113
|
+
* it.
|
|
114
|
+
*/
|
|
115
|
+
export declare const appGenerationProfileReadSchema: z.ZodObject<{
|
|
116
|
+
styling: z.ZodOptional<z.ZodString>;
|
|
117
|
+
density: z.ZodOptional<z.ZodString>;
|
|
118
|
+
layout: z.ZodOptional<z.ZodString>;
|
|
119
|
+
direction: z.ZodOptional<z.ZodString>;
|
|
120
|
+
effort: z.ZodOptional<z.ZodEnum<{
|
|
121
|
+
low: "low";
|
|
122
|
+
medium: "medium";
|
|
123
|
+
high: "high";
|
|
124
|
+
xhigh: "xhigh";
|
|
125
|
+
ultra: "ultra";
|
|
126
|
+
}>>;
|
|
127
|
+
aesthetic: z.ZodOptional<z.ZodObject<{
|
|
128
|
+
id: z.ZodString;
|
|
129
|
+
version: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, z.core.$strict>>;
|
|
131
|
+
}, z.core.$strip>;
|
|
132
|
+
export type AppGenerationProfileReadDoorResult = {
|
|
133
|
+
readonly ok: true;
|
|
134
|
+
readonly profile: AppGenerationProfile;
|
|
135
|
+
readonly stripped: readonly string[];
|
|
136
|
+
} | {
|
|
137
|
+
readonly ok: false;
|
|
138
|
+
readonly issues: readonly string[];
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Parse a stored generation profile at a READ door: `ok` with the profile and
|
|
142
|
+
* the top-level members that were stripped (payload order, `[]` when none), or
|
|
143
|
+
* the issues in `path: message` form when the profile is refused for a reason
|
|
144
|
+
* the write door would also refuse.
|
|
145
|
+
*
|
|
146
|
+
* Every reader of a STORED profile should use this — the mint and the judge
|
|
147
|
+
* reading one document two ways is the defect ggui#1105 exists for, and one
|
|
148
|
+
* exported door is how that stops being possible rather than being noticed.
|
|
149
|
+
*/
|
|
150
|
+
export declare function parseAppGenerationProfileAtReadDoor(input: unknown): AppGenerationProfileReadDoorResult;
|
|
90
151
|
/** Why the door refused one member — one reason per member, at least one member named. */
|
|
91
152
|
export declare const appGenerationProfileRefusalReasonSchema: z.ZodEnum<{
|
|
92
153
|
"too-long": "too-long";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-generation-profile.d.ts","sourceRoot":"","sources":["../../src/schemas/app-generation-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,6BAA6B;;;;;CAKhC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,6BAA6B,CAAC;AA0BpF;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,sDAAuD,CAAC;AACnG,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,QAA8B,CAAC;AAC1E,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,QAA2B,CAAC;AAE5E;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B;;;kBAKjC,CAAC;AACZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;kBAS5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,0FAA0F;AAC1F,eAAO,MAAM,uCAAuC;;;;;EAAmE,CAAC;AACxH,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAExG,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAcvC,CAAC;AAEZ,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"app-generation-profile.d.ts","sourceRoot":"","sources":["../../src/schemas/app-generation-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,6BAA6B;;;;;CAKhC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,6BAA6B,CAAC;AA0BpF;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,sDAAuD,CAAC;AACnG,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,QAA8B,CAAC;AAC1E,2DAA2D;AAC3D,eAAO,MAAM,mCAAmC,QAA2B,CAAC;AAE5E;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B;;;kBAKjC,CAAC;AACZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;kBAS5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;iBAA6C,CAAC;AAEzF,MAAM,MAAM,kCAAkC,GAC1C;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACnG;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,OAAO,GACb,kCAAkC,CAWpC;AAED,0FAA0F;AAC1F,eAAO,MAAM,uCAAuC;;;;;EAAmE,CAAC;AACxH,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;AAExG,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAcvC,CAAC;AAEZ,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC"}
|
|
@@ -102,6 +102,53 @@ export const appGenerationProfileSchema = z
|
|
|
102
102
|
aesthetic: appGenerationAestheticRefSchema.optional(),
|
|
103
103
|
})
|
|
104
104
|
.strict();
|
|
105
|
+
/**
|
|
106
|
+
* The READ-door variant of {@link appGenerationProfileSchema} (ggui#1105).
|
|
107
|
+
*
|
|
108
|
+
* The write door is strict and MUST stay so — it is what bounds each member
|
|
109
|
+
* and refuses control characters before a profile is stored. A READ door has
|
|
110
|
+
* the opposite job: a stored profile written by a LATER release carries a
|
|
111
|
+
* member this one cannot name, and refusing it there does not protect
|
|
112
|
+
* anything — it destroys a mint. Today the same stored profile is read two
|
|
113
|
+
* ways: the mint parses it strictly and THROWS (the mint dies), while the
|
|
114
|
+
* judge hand-rolls a `.strip()`. One document, two postures, diverging on
|
|
115
|
+
* exactly the member a later release adds.
|
|
116
|
+
*
|
|
117
|
+
* Third instance of one posture — see `schemas/app-theme.ts`
|
|
118
|
+
* (`parseAppThemeAtReadDoor`) and `schemas/data-contract.ts`
|
|
119
|
+
* (`parseDataContractAtReadDoor`). The rule they share:
|
|
120
|
+
*
|
|
121
|
+
* **a read whose purpose is to INTERPRET state strips unknown members and
|
|
122
|
+
* names what it stripped; a read whose purpose is to REPRODUCE state must
|
|
123
|
+
* not strip at all.**
|
|
124
|
+
*
|
|
125
|
+
* This is an INTERPRET door. Only members this release does not NAME are
|
|
126
|
+
* stripped — never members it finds INVALID: a bound, a control character or
|
|
127
|
+
* a level outside the vocabulary is refused exactly as the write door refuses
|
|
128
|
+
* it.
|
|
129
|
+
*/
|
|
130
|
+
export const appGenerationProfileReadSchema = z.object(appGenerationProfileSchema.shape);
|
|
131
|
+
/**
|
|
132
|
+
* Parse a stored generation profile at a READ door: `ok` with the profile and
|
|
133
|
+
* the top-level members that were stripped (payload order, `[]` when none), or
|
|
134
|
+
* the issues in `path: message` form when the profile is refused for a reason
|
|
135
|
+
* the write door would also refuse.
|
|
136
|
+
*
|
|
137
|
+
* Every reader of a STORED profile should use this — the mint and the judge
|
|
138
|
+
* reading one document two ways is the defect ggui#1105 exists for, and one
|
|
139
|
+
* exported door is how that stops being possible rather than being noticed.
|
|
140
|
+
*/
|
|
141
|
+
export function parseAppGenerationProfileAtReadDoor(input) {
|
|
142
|
+
const parsed = appGenerationProfileReadSchema.safeParse(input);
|
|
143
|
+
if (!parsed.success) {
|
|
144
|
+
return { ok: false, issues: parsed.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`) };
|
|
145
|
+
}
|
|
146
|
+
const known = new Set(Object.keys(appGenerationProfileSchema.shape));
|
|
147
|
+
const stripped = typeof input === 'object' && input !== null && !Array.isArray(input)
|
|
148
|
+
? Object.keys(input).filter((k) => !known.has(k))
|
|
149
|
+
: [];
|
|
150
|
+
return { ok: true, profile: parsed.data, stripped };
|
|
151
|
+
}
|
|
105
152
|
/** Why the door refused one member — one reason per member, at least one member named. */
|
|
106
153
|
export const appGenerationProfileRefusalReasonSchema = z.enum(['too-long', 'not-text', 'control-chars', 'unavailable']);
|
|
107
154
|
export const appGenerationProfileRefusalBodySchema = z
|
|
@@ -247,6 +247,22 @@ export type AppThemeReadDoorResult = {
|
|
|
247
247
|
* the top-level members that were stripped (payload order, `[]` when none),
|
|
248
248
|
* or the issues in `path: message` form when the theme is refused for a
|
|
249
249
|
* reason the write door would also refuse.
|
|
250
|
+
*
|
|
251
|
+
* TWO READ PATHS, OPPOSITE OBLIGATIONS — they sit next to each other and
|
|
252
|
+
* they are NOT the same door (ggui#1124; do not "tidy" them into one):
|
|
253
|
+
*
|
|
254
|
+
* **a read whose purpose is to INTERPRET state strips unknown members
|
|
255
|
+
* and names what it stripped; a read whose purpose is to REPRODUCE
|
|
256
|
+
* state must not strip at all.**
|
|
257
|
+
*
|
|
258
|
+
* This function is the INTERPRET side — a server painting a theme, an
|
|
259
|
+
* operator surface rendering one — and a reader must not be handed data it
|
|
260
|
+
* cannot validate.
|
|
261
|
+
* The REPRODUCE side is a writer's CARRY path, which receives the stored
|
|
262
|
+
* document VERBATIM, including members this release does not name: its job
|
|
263
|
+
* is fidelity, not interpretation. Applying THIS strip to a carry path is
|
|
264
|
+
* the ggui#1124 defect exactly — the writer carries a stripped document,
|
|
265
|
+
* writes it back, and destroys the members the belt exists to protect.
|
|
250
266
|
*/
|
|
251
267
|
export declare function parseAppThemeAtReadDoor(input: unknown): AppThemeReadDoorResult;
|
|
252
268
|
/**
|
|
@@ -255,6 +271,72 @@ export declare function parseAppThemeAtReadDoor(input: unknown): AppThemeReadDoo
|
|
|
255
271
|
* `errorInfo`, the MCP ops door's `{ ok: false }` structured content. A
|
|
256
272
|
* discriminated union by key — exactly one of the four.
|
|
257
273
|
*/
|
|
274
|
+
/**
|
|
275
|
+
* The top-level members the STORED theme holds that an incoming write does
|
|
276
|
+
* not carry — i.e. exactly what the write would destroy (ggui#1124).
|
|
277
|
+
*
|
|
278
|
+
* `putAppTheme` REPLACES the whole `theme` attribute (the shared writer's
|
|
279
|
+
* `SET theme = :theme`), so a writer that composes fewer members than the
|
|
280
|
+
* stored document silently deletes the rest. On 2026-09-10, 26 rows lost
|
|
281
|
+
* their theme outright and ~20 more lost members nobody can now name,
|
|
282
|
+
* because a writer believed the door merged. **The rule lives here because
|
|
283
|
+
* what makes a write destructive is a fact about the wire shape, not about
|
|
284
|
+
* a storage engine** — the shared writer enforces it at the choke point, so
|
|
285
|
+
* safety does not depend on each door remembering.
|
|
286
|
+
*
|
|
287
|
+
* Deliberately total and deliberately dumb: it compares TOP-LEVEL keys and
|
|
288
|
+
* nothing else. A changed VALUE is not a drop. An explicit `undefined` IS a
|
|
289
|
+
* drop, because absent and undefined are the same wire fact. A member this
|
|
290
|
+
* release does not name still counts — that is the whole point, since a
|
|
291
|
+
* strict schema cannot see the member a later release wrote, and a
|
|
292
|
+
* whole-column write is exactly what destroys it. Given anything that is not
|
|
293
|
+
* a plain object on either side it reports nothing rather than inventing a
|
|
294
|
+
* drop: a guard that guesses is worse than one that abstains.
|
|
295
|
+
*
|
|
296
|
+
* Parties: the SHARED WRITER calls this before writing and refuses a
|
|
297
|
+
* non-empty result with {@link appThemeRefusalBodySchema}'s `wouldDrop` arm,
|
|
298
|
+
* naming the members; the WRITER retries carrying them (read the stored
|
|
299
|
+
* document, carry what it does not own by REST OMISSION — never by
|
|
300
|
+
* enumerating what it knows — and hash after the carry). Observable
|
|
301
|
+
* violation: a stored member absent after a write that did not name it.
|
|
302
|
+
*/
|
|
303
|
+
export declare function appThemeDroppedMembers(stored: unknown, incoming: unknown): readonly string[];
|
|
304
|
+
/**
|
|
305
|
+
* The ONE wording for a `wouldDrop` refusal (ggui#1124, founder's ruling
|
|
306
|
+
* 2026-09-16: *"the refusal names the clear-then-set path"*). Exported so
|
|
307
|
+
* every door that refuses a destructive theme write carries the SAME words
|
|
308
|
+
* rather than paraphrasing them — a writer meeting two different
|
|
309
|
+
* explanations of one rule learns neither.
|
|
310
|
+
*
|
|
311
|
+
* Why the wording is part of the contract and not decoration: **a refusal
|
|
312
|
+
* with no compliance path converts "we protected your data" into "we broke
|
|
313
|
+
* your write", and the writer cannot tell which happened to them.** Naming
|
|
314
|
+
* the path collapses that ambiguity — it turns the refusal from a VERDICT
|
|
315
|
+
* into an INSTRUCTION. So the text MUST do three things, and the tests pin
|
|
316
|
+
* each: name the members that would have been dropped (so a writer can see
|
|
317
|
+
* whether they meant it), give the carry path for a writer who did not, and
|
|
318
|
+
* give the clear-then-set path for a writer who did — stating plainly that
|
|
319
|
+
* the app has no theme between those two writes, because that is the kind
|
|
320
|
+
* of fact a caller must not discover in production.
|
|
321
|
+
*
|
|
322
|
+
* The CLEAR half names an OUTCOME, not a mechanism, and that is deliberate
|
|
323
|
+
* (ggui#1124, from cloud's per-door measurement): `theme: null` clears on
|
|
324
|
+
* exactly ONE of the four doors that write a theme — the provisioning theme
|
|
325
|
+
* door. On the other three a writer following a universal `theme: null`
|
|
326
|
+
* instruction gets a SECOND refusal, which is the verdict-without-a-path
|
|
327
|
+
* this ruling exists to prevent, reintroduced by the text meant to prevent
|
|
328
|
+
* it. The CARRY half needs no such hedge: it is implementable on every
|
|
329
|
+
* door, which is why it is stated first and unconditionally.
|
|
330
|
+
*
|
|
331
|
+
* The better end state is uniform — `theme: null` clearing at the shared
|
|
332
|
+
* writer so all four doors honour one mechanism — but that is a change to
|
|
333
|
+
* three doors' semantics and belongs to its own decision with cloud, not to
|
|
334
|
+
* a wording fix.
|
|
335
|
+
*
|
|
336
|
+
* Throws on an empty list: a refusal that names nothing is not an
|
|
337
|
+
* instruction.
|
|
338
|
+
*/
|
|
339
|
+
export declare function appThemeWouldDropRefusalText(wouldDrop: readonly string[]): string;
|
|
258
340
|
export declare const appThemeRefusalBodySchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
259
341
|
uncovered: z.ZodObject<{
|
|
260
342
|
light: z.ZodArray<z.ZodString>;
|
|
@@ -269,6 +351,8 @@ export declare const appThemeRefusalBodySchema: z.ZodUnion<readonly [z.ZodObject
|
|
|
269
351
|
overlayHash: z.ZodLiteral<"mismatch">;
|
|
270
352
|
}, z.core.$strict>, z.ZodObject<{
|
|
271
353
|
refused: z.ZodLiteral<"v1 shape">;
|
|
354
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
355
|
+
wouldDrop: z.ZodArray<z.ZodString>;
|
|
272
356
|
}, z.core.$strict>]>;
|
|
273
357
|
export type AppThemeRefusalBody = z.infer<typeof appThemeRefusalBodySchema>;
|
|
274
358
|
//# sourceMappingURL=app-theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-theme.d.ts","sourceRoot":"","sources":["../../src/schemas/app-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,QAA2B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,QAAiB,CAAC;AAahD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAA+B,CAAC;AAE9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoCrD;AAwBD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;;;kBAMpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,mGAAmG;AACnG,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,uGAAuG;AACvG,eAAO,MAAM,uBAAuB,sCAAuC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;kBAInC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;kBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoDhB,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAC;AAEjE,MAAM,MAAM,sBAAsB,GAC9B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"app-theme.d.ts","sourceRoot":"","sources":["../../src/schemas/app-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,QAA2B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,QAAiB,CAAC;AAahD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,QAA+B,CAAC;AAE9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoCrD;AAwBD;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;;;kBAMpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,mGAAmG;AACnG,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,uGAAuG;AACvG,eAAO,MAAM,uBAAuB,sCAAuC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;kBAInC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;kBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoDhB,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiC,CAAC;AAEjE,MAAM,MAAM,sBAAsB,GAC9B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAW9E;AAED;;;;;GAKG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,GAChB,SAAS,MAAM,EAAE,CAGnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAcjF;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;oBAapC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -240,6 +240,22 @@ export const appThemeReadSchema = z.object(appThemeSchema.shape);
|
|
|
240
240
|
* the top-level members that were stripped (payload order, `[]` when none),
|
|
241
241
|
* or the issues in `path: message` form when the theme is refused for a
|
|
242
242
|
* reason the write door would also refuse.
|
|
243
|
+
*
|
|
244
|
+
* TWO READ PATHS, OPPOSITE OBLIGATIONS — they sit next to each other and
|
|
245
|
+
* they are NOT the same door (ggui#1124; do not "tidy" them into one):
|
|
246
|
+
*
|
|
247
|
+
* **a read whose purpose is to INTERPRET state strips unknown members
|
|
248
|
+
* and names what it stripped; a read whose purpose is to REPRODUCE
|
|
249
|
+
* state must not strip at all.**
|
|
250
|
+
*
|
|
251
|
+
* This function is the INTERPRET side — a server painting a theme, an
|
|
252
|
+
* operator surface rendering one — and a reader must not be handed data it
|
|
253
|
+
* cannot validate.
|
|
254
|
+
* The REPRODUCE side is a writer's CARRY path, which receives the stored
|
|
255
|
+
* document VERBATIM, including members this release does not name: its job
|
|
256
|
+
* is fidelity, not interpretation. Applying THIS strip to a carry path is
|
|
257
|
+
* the ggui#1124 defect exactly — the writer carries a stripped document,
|
|
258
|
+
* writes it back, and destroys the members the belt exists to protect.
|
|
243
259
|
*/
|
|
244
260
|
export function parseAppThemeAtReadDoor(input) {
|
|
245
261
|
const r = appThemeReadSchema.safeParse(input);
|
|
@@ -258,9 +274,102 @@ export function parseAppThemeAtReadDoor(input) {
|
|
|
258
274
|
* `errorInfo`, the MCP ops door's `{ ok: false }` structured content. A
|
|
259
275
|
* discriminated union by key — exactly one of the four.
|
|
260
276
|
*/
|
|
277
|
+
/**
|
|
278
|
+
* The top-level members the STORED theme holds that an incoming write does
|
|
279
|
+
* not carry — i.e. exactly what the write would destroy (ggui#1124).
|
|
280
|
+
*
|
|
281
|
+
* `putAppTheme` REPLACES the whole `theme` attribute (the shared writer's
|
|
282
|
+
* `SET theme = :theme`), so a writer that composes fewer members than the
|
|
283
|
+
* stored document silently deletes the rest. On 2026-09-10, 26 rows lost
|
|
284
|
+
* their theme outright and ~20 more lost members nobody can now name,
|
|
285
|
+
* because a writer believed the door merged. **The rule lives here because
|
|
286
|
+
* what makes a write destructive is a fact about the wire shape, not about
|
|
287
|
+
* a storage engine** — the shared writer enforces it at the choke point, so
|
|
288
|
+
* safety does not depend on each door remembering.
|
|
289
|
+
*
|
|
290
|
+
* Deliberately total and deliberately dumb: it compares TOP-LEVEL keys and
|
|
291
|
+
* nothing else. A changed VALUE is not a drop. An explicit `undefined` IS a
|
|
292
|
+
* drop, because absent and undefined are the same wire fact. A member this
|
|
293
|
+
* release does not name still counts — that is the whole point, since a
|
|
294
|
+
* strict schema cannot see the member a later release wrote, and a
|
|
295
|
+
* whole-column write is exactly what destroys it. Given anything that is not
|
|
296
|
+
* a plain object on either side it reports nothing rather than inventing a
|
|
297
|
+
* drop: a guard that guesses is worse than one that abstains.
|
|
298
|
+
*
|
|
299
|
+
* Parties: the SHARED WRITER calls this before writing and refuses a
|
|
300
|
+
* non-empty result with {@link appThemeRefusalBodySchema}'s `wouldDrop` arm,
|
|
301
|
+
* naming the members; the WRITER retries carrying them (read the stored
|
|
302
|
+
* document, carry what it does not own by REST OMISSION — never by
|
|
303
|
+
* enumerating what it knows — and hash after the carry). Observable
|
|
304
|
+
* violation: a stored member absent after a write that did not name it.
|
|
305
|
+
*/
|
|
306
|
+
export function appThemeDroppedMembers(stored, incoming) {
|
|
307
|
+
if (!isPlainObject(stored) || !isPlainObject(incoming))
|
|
308
|
+
return [];
|
|
309
|
+
return Object.keys(stored).filter((key) => incoming[key] === undefined);
|
|
310
|
+
}
|
|
311
|
+
function isPlainObject(value) {
|
|
312
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* The ONE wording for a `wouldDrop` refusal (ggui#1124, founder's ruling
|
|
316
|
+
* 2026-09-16: *"the refusal names the clear-then-set path"*). Exported so
|
|
317
|
+
* every door that refuses a destructive theme write carries the SAME words
|
|
318
|
+
* rather than paraphrasing them — a writer meeting two different
|
|
319
|
+
* explanations of one rule learns neither.
|
|
320
|
+
*
|
|
321
|
+
* Why the wording is part of the contract and not decoration: **a refusal
|
|
322
|
+
* with no compliance path converts "we protected your data" into "we broke
|
|
323
|
+
* your write", and the writer cannot tell which happened to them.** Naming
|
|
324
|
+
* the path collapses that ambiguity — it turns the refusal from a VERDICT
|
|
325
|
+
* into an INSTRUCTION. So the text MUST do three things, and the tests pin
|
|
326
|
+
* each: name the members that would have been dropped (so a writer can see
|
|
327
|
+
* whether they meant it), give the carry path for a writer who did not, and
|
|
328
|
+
* give the clear-then-set path for a writer who did — stating plainly that
|
|
329
|
+
* the app has no theme between those two writes, because that is the kind
|
|
330
|
+
* of fact a caller must not discover in production.
|
|
331
|
+
*
|
|
332
|
+
* The CLEAR half names an OUTCOME, not a mechanism, and that is deliberate
|
|
333
|
+
* (ggui#1124, from cloud's per-door measurement): `theme: null` clears on
|
|
334
|
+
* exactly ONE of the four doors that write a theme — the provisioning theme
|
|
335
|
+
* door. On the other three a writer following a universal `theme: null`
|
|
336
|
+
* instruction gets a SECOND refusal, which is the verdict-without-a-path
|
|
337
|
+
* this ruling exists to prevent, reintroduced by the text meant to prevent
|
|
338
|
+
* it. The CARRY half needs no such hedge: it is implementable on every
|
|
339
|
+
* door, which is why it is stated first and unconditionally.
|
|
340
|
+
*
|
|
341
|
+
* The better end state is uniform — `theme: null` clearing at the shared
|
|
342
|
+
* writer so all four doors honour one mechanism — but that is a change to
|
|
343
|
+
* three doors' semantics and belongs to its own decision with cloud, not to
|
|
344
|
+
* a wording fix.
|
|
345
|
+
*
|
|
346
|
+
* Throws on an empty list: a refusal that names nothing is not an
|
|
347
|
+
* instruction.
|
|
348
|
+
*/
|
|
349
|
+
export function appThemeWouldDropRefusalText(wouldDrop) {
|
|
350
|
+
if (wouldDrop.length === 0) {
|
|
351
|
+
throw new Error('appThemeWouldDropRefusalText: a refusal must name at least one dropped member');
|
|
352
|
+
}
|
|
353
|
+
const members = wouldDrop.join(', ');
|
|
354
|
+
return (`this write would drop stored theme members it does not carry — [${members}]. ` +
|
|
355
|
+
`If you did not mean to drop them: read the stored theme and carry every member this write does not own, ` +
|
|
356
|
+
`then recompute the attestation over the result. ` +
|
|
357
|
+
`If you DID mean to drop them: CLEAR the stored theme first, then write the theme you want — ` +
|
|
358
|
+
`the app has NO theme between those two writes. How you clear DEPENDS ON THE DOOR: the provisioning ` +
|
|
359
|
+
`theme door clears on \`theme: null\`; other doors differ, so use the clear operation of the door you ` +
|
|
360
|
+
`are calling rather than assuming this one.`);
|
|
361
|
+
}
|
|
261
362
|
export const appThemeRefusalBodySchema = z.union([
|
|
262
363
|
z.object({ uncovered: z.object({ light: z.array(z.string()), dark: z.array(z.string()) }).strict() }).strict(),
|
|
263
364
|
z.object({ unknown: z.object({ light: z.array(z.string()), dark: z.array(z.string()) }).strict() }).strict(),
|
|
264
365
|
z.object({ overlayHash: z.literal('mismatch') }).strict(),
|
|
265
366
|
z.object({ refused: z.literal('v1 shape') }).strict(),
|
|
367
|
+
/**
|
|
368
|
+
* The write would have DESTROYED stored members it did not carry
|
|
369
|
+
* (ggui#1124) — the refusal names them so the writer can carry them on
|
|
370
|
+
* the retry. A refusal that named nothing would be an error message
|
|
371
|
+
* instead of a teaching one, which is why the list may not be empty:
|
|
372
|
+
* naming the members is how the console got fixed.
|
|
373
|
+
*/
|
|
374
|
+
z.object({ wouldDrop: z.array(z.string().min(1)).min(1) }).strict(),
|
|
266
375
|
]);
|
|
@@ -107,6 +107,7 @@ export declare const actionEntrySchema: z.ZodObject<{
|
|
|
107
107
|
example: z.ZodOptional<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
108
108
|
icon: z.ZodOptional<z.ZodString>;
|
|
109
109
|
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
oneShot: z.ZodOptional<z.ZodBoolean>;
|
|
110
111
|
nextStep: z.ZodOptional<z.ZodString>;
|
|
111
112
|
}, z.core.$strict>;
|
|
112
113
|
/** {@link ActionSpec} — flat `Record<name, ActionEntry>`. */
|
|
@@ -117,6 +118,7 @@ export declare const actionSpecSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
|
117
118
|
example: z.ZodOptional<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
118
119
|
icon: z.ZodOptional<z.ZodString>;
|
|
119
120
|
confirm: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
oneShot: z.ZodOptional<z.ZodBoolean>;
|
|
120
122
|
nextStep: z.ZodOptional<z.ZodString>;
|
|
121
123
|
}, z.core.$strict>>;
|
|
122
124
|
/** {@link StreamChannelEntry} — per-channel metadata in a {@link StreamSpec}. */
|
|
@@ -789,5 +791,49 @@ export declare const DATA_CONTRACT_MINIMAL_EXAMPLE: {
|
|
|
789
791
|
};
|
|
790
792
|
};
|
|
791
793
|
};
|
|
794
|
+
/**
|
|
795
|
+
* The contract READ-door result (ggui#1115): the contract as this release
|
|
796
|
+
* can read it, plus the entry members it had to strip to get there.
|
|
797
|
+
*/
|
|
798
|
+
export type DataContractReadDoorResult = {
|
|
799
|
+
readonly ok: true;
|
|
800
|
+
readonly contract: DataContract;
|
|
801
|
+
readonly stripped: readonly string[];
|
|
802
|
+
} | {
|
|
803
|
+
readonly ok: false;
|
|
804
|
+
readonly issues: readonly string[];
|
|
805
|
+
};
|
|
806
|
+
/**
|
|
807
|
+
* Parse a STORED contract at a READ door (ggui#1115).
|
|
808
|
+
*
|
|
809
|
+
* `dataContractSchema`'s outer object is `.passthrough()`, so a whole new
|
|
810
|
+
* top-level spec was never the hazard — but its ENTRY schemas are
|
|
811
|
+
* `.strict()`, and contracts are STORED (blueprint rows, artifact
|
|
812
|
+
* manifests). So a release that adds a member to an action / prop / stream /
|
|
813
|
+
* context / tool ENTRY makes every older reader fail the parse, and a reader
|
|
814
|
+
* that turns a failed parse into "no candidate" drops the row from the match
|
|
815
|
+
* set: the generator runs again, a different card is produced, and nothing
|
|
816
|
+
* anywhere says a stored blueprint was skipped. A silent cache miss, not a
|
|
817
|
+
* failure — which is why this door exists and why it NAMES what it stripped.
|
|
818
|
+
*
|
|
819
|
+
* WRITE doors keep entry strictness and MUST: it is what catches a typo in a
|
|
820
|
+
* generated contract before it is stored, and relaxing it globally would
|
|
821
|
+
* trade a silent cache miss for silently stored garbage. The asymmetry is by
|
|
822
|
+
* DOOR, exactly as for `AppTheme` (`schemas/app-theme.ts`, VERSION-POLICY
|
|
823
|
+
* §3.6): this is the INTERPRET side, so it strips and reports; a read whose
|
|
824
|
+
* purpose is to REPRODUCE state (a writer's carry path) must not strip at
|
|
825
|
+
* all.
|
|
826
|
+
*
|
|
827
|
+
* Everything the write door refuses is still refused — a missing required
|
|
828
|
+
* field, a wrong type, a malformed spec. Only members this release does not
|
|
829
|
+
* NAME are stripped, never members it finds INVALID.
|
|
830
|
+
*
|
|
831
|
+
* NOT COVERED, deliberately and named rather than discovered: the gadget
|
|
832
|
+
* family under `clientCapabilities`. Its descriptors are validated per row
|
|
833
|
+
* with their own salvage posture (`strictGadgetDescriptorSchema`), evolve on
|
|
834
|
+
* their own surface, and folding them in here would put two different
|
|
835
|
+
* evolution stories behind one door.
|
|
836
|
+
*/
|
|
837
|
+
export declare function parseDataContractAtReadDoor(input: unknown): DataContractReadDoorResult;
|
|
792
838
|
export declare const dataContractSchema: z.ZodType<DataContract>;
|
|
793
839
|
//# sourceMappingURL=data-contract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/schemas/data-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACX,MAAM,wBAAwB,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAYhD,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAyC,CAAC;AAmB7F,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CA2BlD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;kBASjB,CAAC;AAEZ,sFAAsF;AACtF,eAAO,MAAM,eAAe;;;;;;;;;;kBAKjB,CAAC;AAEZ;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/schemas/data-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,7 +158,69 @@ export const actionEntrySchema = z
|
|
|
158
158
|
schema: jsonSchemaSchema.optional(),
|
|
159
159
|
example: jsonValueSchema.optional(),
|
|
160
160
|
icon: z.string().optional(),
|
|
161
|
+
/**
|
|
162
|
+
* The author marks this action GRAVE (ggui#1112).
|
|
163
|
+
*
|
|
164
|
+
* ADVISORY, and honoured by exactly one party: `@ggui-ai/ui-gen`'s
|
|
165
|
+
* contract context renders it to the composing model as INFORMATION —
|
|
166
|
+
* *"the author marked this action grave enough to confirm before it
|
|
167
|
+
* fires"* — alongside `label`, `description`, `example` and `nextStep`.
|
|
168
|
+
* The model decides what to do with it. That is the same standing
|
|
169
|
+
* `nextStep` has: a declared field with a named consumer and no
|
|
170
|
+
* mechanical enforcer, which is legitimate as long as it says so.
|
|
171
|
+
*
|
|
172
|
+
* DO NOT promote it to a rule without re-measuring. Citing `confirm` in
|
|
173
|
+
* the generator's terminal-actions section MEASURED ZERO — two wordings,
|
|
174
|
+
* n = 4 each, a `save` action carrying `confirm: true` came back armed
|
|
175
|
+
* 0/4 and 0/4 (rnd, ggui#1108 narrowing). The finding that explains it:
|
|
176
|
+
* the field says GRAVITY, not at-most-once, and the model reads it that
|
|
177
|
+
* way. `confirm` asks BEFORE firing; {@link ActionEntry.oneShot} bounds
|
|
178
|
+
* HOW OFTEN it may fire. Siblings in intent, different questions, and an
|
|
179
|
+
* action may declare either, both or neither.
|
|
180
|
+
*
|
|
181
|
+
* Emitted today by the shipped system blueprints on destructive ops
|
|
182
|
+
* (`ggui_ops_revoke_connector_key`), so it is a live author signal and
|
|
183
|
+
* not a vestigial field.
|
|
184
|
+
*
|
|
185
|
+
* Observable violation: a contract declaring `confirm: true` whose
|
|
186
|
+
* rendered contract context omits the flag — pinned in ui-gen's
|
|
187
|
+
* `design-mode.pin.test.ts`.
|
|
188
|
+
*/
|
|
161
189
|
confirm: z.boolean().optional(),
|
|
190
|
+
/**
|
|
191
|
+
* This action may fire AT MOST ONCE per render (ggui#1108).
|
|
192
|
+
*
|
|
193
|
+
* DECLARED, never inferred — that is the whole design. The runtime
|
|
194
|
+
* cannot infer terminality; the server cannot tell a double-fire from a
|
|
195
|
+
* legitimate second "add item"; and the component cannot GUARANTEE it,
|
|
196
|
+
* because whether a generated control disables itself is decided afresh
|
|
197
|
+
* by a model on every generation. Only the contract's author knows, so
|
|
198
|
+
* the contract is where it is said.
|
|
199
|
+
*
|
|
200
|
+
* Obligations: the RUNTIME suppresses a second dispatch of a declared
|
|
201
|
+
* one-shot action for the render's lifetime; the RELAY never collapses
|
|
202
|
+
* distinct `actionId`s — two gestures are two facts and the relay stays
|
|
203
|
+
* honest about them; the AGENT treats `actionId` as an idempotency key
|
|
204
|
+
* for EVERY action, which buys at-most-once per DISPATCH (a replay, a
|
|
205
|
+
* re-delivered buffer) and explicitly NOT per intent, since a second
|
|
206
|
+
* gesture mints a new `actionId`.
|
|
207
|
+
*
|
|
208
|
+
* THE WINDOW, stated because "the render's lifetime" is ambiguous
|
|
209
|
+
* otherwise: a fresh `ggui_render` RE-ARMS the action; a `ggui_update`
|
|
210
|
+
* or props amend of the SAME render does NOT. So an agent re-sending
|
|
211
|
+
* props after a submit ("confirmed, here is your receipt") cannot
|
|
212
|
+
* silently re-arm a terminal action. A flow that legitimately
|
|
213
|
+
* re-submits either does not declare the action one-shot, or renders a
|
|
214
|
+
* new card — the declarer's choice, which is the point of declaring.
|
|
215
|
+
*
|
|
216
|
+
* Sibling, not a pair: `confirm` asks BEFORE firing; `oneShot` bounds
|
|
217
|
+
* how often it may fire. An action may be either, both or neither.
|
|
218
|
+
*
|
|
219
|
+
* Failure mode: a duplicated side effect — a confirm card that writes
|
|
220
|
+
* twice. Observable violation: two consume entries with distinct
|
|
221
|
+
* `actionId`s for the same declared one-shot action inside one render.
|
|
222
|
+
*/
|
|
223
|
+
oneShot: z.boolean().optional(),
|
|
162
224
|
nextStep: z.string().min(1).optional(),
|
|
163
225
|
})
|
|
164
226
|
.strict();
|
|
@@ -687,6 +749,106 @@ export const DATA_CONTRACT_MINIMAL_EXAMPLE = {
|
|
|
687
749
|
filter: { schema: { type: 'string' }, default: 'all' },
|
|
688
750
|
},
|
|
689
751
|
};
|
|
752
|
+
function isEntryObject(value) {
|
|
753
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
754
|
+
}
|
|
755
|
+
/**
|
|
756
|
+
* Strip the keys of one ENTRY that this release does not name, recording the
|
|
757
|
+
* path of each. Returns the entry unchanged when there is nothing to strip,
|
|
758
|
+
* so an untouched contract keeps object identity where it can.
|
|
759
|
+
*/
|
|
760
|
+
function stripEntry(entry, known, path, stripped) {
|
|
761
|
+
if (!isEntryObject(entry))
|
|
762
|
+
return entry;
|
|
763
|
+
const extra = Object.keys(entry).filter((k) => !known.has(k));
|
|
764
|
+
if (extra.length === 0)
|
|
765
|
+
return entry;
|
|
766
|
+
const out = {};
|
|
767
|
+
for (const [k, v] of Object.entries(entry)) {
|
|
768
|
+
if (known.has(k))
|
|
769
|
+
out[k] = v;
|
|
770
|
+
else
|
|
771
|
+
stripped.push(`${path}.${k}`);
|
|
772
|
+
}
|
|
773
|
+
return out;
|
|
774
|
+
}
|
|
775
|
+
/** Strip every entry of a `Record<name, Entry>` map. */
|
|
776
|
+
function stripEntryMap(map, known, path, stripped) {
|
|
777
|
+
if (!isEntryObject(map))
|
|
778
|
+
return map;
|
|
779
|
+
const out = {};
|
|
780
|
+
for (const [name, entry] of Object.entries(map)) {
|
|
781
|
+
out[name] = stripEntry(entry, known, `${path}.${name}`, stripped);
|
|
782
|
+
}
|
|
783
|
+
return out;
|
|
784
|
+
}
|
|
785
|
+
/**
|
|
786
|
+
* Parse a STORED contract at a READ door (ggui#1115).
|
|
787
|
+
*
|
|
788
|
+
* `dataContractSchema`'s outer object is `.passthrough()`, so a whole new
|
|
789
|
+
* top-level spec was never the hazard — but its ENTRY schemas are
|
|
790
|
+
* `.strict()`, and contracts are STORED (blueprint rows, artifact
|
|
791
|
+
* manifests). So a release that adds a member to an action / prop / stream /
|
|
792
|
+
* context / tool ENTRY makes every older reader fail the parse, and a reader
|
|
793
|
+
* that turns a failed parse into "no candidate" drops the row from the match
|
|
794
|
+
* set: the generator runs again, a different card is produced, and nothing
|
|
795
|
+
* anywhere says a stored blueprint was skipped. A silent cache miss, not a
|
|
796
|
+
* failure — which is why this door exists and why it NAMES what it stripped.
|
|
797
|
+
*
|
|
798
|
+
* WRITE doors keep entry strictness and MUST: it is what catches a typo in a
|
|
799
|
+
* generated contract before it is stored, and relaxing it globally would
|
|
800
|
+
* trade a silent cache miss for silently stored garbage. The asymmetry is by
|
|
801
|
+
* DOOR, exactly as for `AppTheme` (`schemas/app-theme.ts`, VERSION-POLICY
|
|
802
|
+
* §3.6): this is the INTERPRET side, so it strips and reports; a read whose
|
|
803
|
+
* purpose is to REPRODUCE state (a writer's carry path) must not strip at
|
|
804
|
+
* all.
|
|
805
|
+
*
|
|
806
|
+
* Everything the write door refuses is still refused — a missing required
|
|
807
|
+
* field, a wrong type, a malformed spec. Only members this release does not
|
|
808
|
+
* NAME are stripped, never members it finds INVALID.
|
|
809
|
+
*
|
|
810
|
+
* NOT COVERED, deliberately and named rather than discovered: the gadget
|
|
811
|
+
* family under `clientCapabilities`. Its descriptors are validated per row
|
|
812
|
+
* with their own salvage posture (`strictGadgetDescriptorSchema`), evolve on
|
|
813
|
+
* their own surface, and folding them in here would put two different
|
|
814
|
+
* evolution stories behind one door.
|
|
815
|
+
*/
|
|
816
|
+
export function parseDataContractAtReadDoor(input) {
|
|
817
|
+
const issuesOf = (error) => error.issues.map((i) => `${i.path.join('.')}: ${i.message}`);
|
|
818
|
+
if (!isEntryObject(input)) {
|
|
819
|
+
const direct = dataContractSchema.safeParse(input);
|
|
820
|
+
return direct.success
|
|
821
|
+
? { ok: true, contract: direct.data, stripped: [] }
|
|
822
|
+
: { ok: false, issues: issuesOf(direct.error) };
|
|
823
|
+
}
|
|
824
|
+
const stripped = [];
|
|
825
|
+
const cleaned = { ...input };
|
|
826
|
+
const propsSpec = cleaned['propsSpec'];
|
|
827
|
+
if (isEntryObject(propsSpec)) {
|
|
828
|
+
cleaned['propsSpec'] = {
|
|
829
|
+
...propsSpec,
|
|
830
|
+
properties: stripEntryMap(propsSpec['properties'], new Set(Object.keys(propEntrySchema.shape)), 'propsSpec.properties', stripped),
|
|
831
|
+
};
|
|
832
|
+
}
|
|
833
|
+
cleaned['actionSpec'] = stripEntryMap(cleaned['actionSpec'], new Set(Object.keys(actionEntrySchema.shape)), 'actionSpec', stripped);
|
|
834
|
+
cleaned['streamSpec'] = stripEntryMap(cleaned['streamSpec'], new Set(Object.keys(streamChannelEntrySchema.shape)), 'streamSpec', stripped);
|
|
835
|
+
cleaned['contextSpec'] = stripEntryMap(cleaned['contextSpec'], new Set(Object.keys(contextEntrySchema.shape)), 'contextSpec', stripped);
|
|
836
|
+
const agentCapabilities = cleaned['agentCapabilities'];
|
|
837
|
+
if (isEntryObject(agentCapabilities)) {
|
|
838
|
+
cleaned['agentCapabilities'] = {
|
|
839
|
+
...agentCapabilities,
|
|
840
|
+
tools: stripEntryMap(agentCapabilities['tools'], new Set(Object.keys(agentToolEntrySchema.shape)), 'agentCapabilities.tools', stripped),
|
|
841
|
+
};
|
|
842
|
+
}
|
|
843
|
+
for (const key of ['actionSpec', 'streamSpec', 'contextSpec']) {
|
|
844
|
+
if (cleaned[key] === undefined)
|
|
845
|
+
delete cleaned[key];
|
|
846
|
+
}
|
|
847
|
+
const parsed = dataContractSchema.safeParse(cleaned);
|
|
848
|
+
return parsed.success
|
|
849
|
+
? { ok: true, contract: parsed.data, stripped }
|
|
850
|
+
: { ok: false, issues: issuesOf(parsed.error) };
|
|
851
|
+
}
|
|
690
852
|
export const dataContractSchema = z
|
|
691
853
|
.object({
|
|
692
854
|
propsSpec: propsSpecSchema
|
|
@@ -266,6 +266,14 @@ export interface ActionEntry {
|
|
|
266
266
|
description?: string;
|
|
267
267
|
/** Label shown on the UI element */
|
|
268
268
|
label: string;
|
|
269
|
+
/**
|
|
270
|
+
* This action may fire AT MOST ONCE per render (ggui#1108) — declared by
|
|
271
|
+
* the contract's author, never inferred, because only the author knows.
|
|
272
|
+
* The runtime suppresses a second dispatch for the render's lifetime: a
|
|
273
|
+
* fresh `ggui_render` re-arms it, a `ggui_update` of the same render does
|
|
274
|
+
* not. Sibling of `confirm` (which asks before firing), not a pair.
|
|
275
|
+
*/
|
|
276
|
+
oneShot?: boolean;
|
|
269
277
|
/**
|
|
270
278
|
* JSON Schema for the callback payload. Optional — actions without a
|
|
271
279
|
* `schema` have void payload (fire-and-forget).
|
|
@@ -298,7 +306,13 @@ export interface ActionEntry {
|
|
|
298
306
|
example?: JsonValue;
|
|
299
307
|
/** Icon hint (emoji or icon name) */
|
|
300
308
|
icon?: string;
|
|
301
|
-
/**
|
|
309
|
+
/**
|
|
310
|
+
* The author marks this action GRAVE (ggui#1112) — ADVISORY, not a rule.
|
|
311
|
+
* `@ggui-ai/ui-gen`'s contract context renders it to the composing model
|
|
312
|
+
* as information and the model decides; nothing enforces it mechanically,
|
|
313
|
+
* which is the same standing `nextStep` has. It asks BEFORE firing, where
|
|
314
|
+
* {@link ActionEntry.oneShot} bounds how OFTEN it may fire.
|
|
315
|
+
*/
|
|
302
316
|
confirm?: boolean;
|
|
303
317
|
/**
|
|
304
318
|
* OPTIONAL. Author-declared hint for the agent's next turn — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/types/data-contract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"data-contract.d.ts","sourceRoot":"","sources":["../../src/types/data-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -6,6 +6,18 @@
|
|
|
6
6
|
* schema change; the most recent change anchors {@link PROTOCOL_VERSION}.
|
|
7
7
|
*
|
|
8
8
|
* --------------------------------------------------------------------
|
|
9
|
+
* `ggui:dismiss` (2026-09-16, additive, ggui#1109 — MINOR, same draft
|
|
10
|
+
* stamp): a user dismiss GESTURE forwarded from the card to its host as
|
|
11
|
+
* an INTENT, on a new protocol-owned tag in the `ggui:` postMessage
|
|
12
|
+
* family beside `ggui:lifecycle`. The card MUST NOT act on it (the host
|
|
13
|
+
* owns what dismissal means) and emits at most one intent per gesture;
|
|
14
|
+
* the host decides, and ignoring is CONFORMANT — so adoption breaks no
|
|
15
|
+
* host. `reason` is extensibly-closed ('escape' today), and the type
|
|
16
|
+
* guard validates SHAPE only: checking today's reason set would make a
|
|
17
|
+
* release-N host silently drop a release-N+1 intent (§3.6). Not on
|
|
18
|
+
* `ggui:observe` (a host may ignore telemetry by contract) and not a
|
|
19
|
+
* `ui/notifications/*` name (a frozen external namespace).
|
|
20
|
+
* --------------------------------------------------------------------
|
|
9
21
|
* Motion tempo override (2026-09-16, additive, ggui#1093 P1c — MINOR,
|
|
10
22
|
* same draft stamp; no WIRE change). The theming spec's §2.3 retirement
|
|
11
23
|
* of per-app motion is AMENDED (protocol + rnd): layer-1 keeps the motion
|
|
@@ -3725,7 +3737,7 @@ export declare const PROTOCOL_VERSION = "draft-2026-09-10";
|
|
|
3725
3737
|
* PATCH under §1.3); it cannot be cut from main, whose delta since
|
|
3726
3738
|
* 0.14.0 is minor-class.
|
|
3727
3739
|
*/
|
|
3728
|
-
export declare const GGUI_WAVE_VERSION = "0.
|
|
3740
|
+
export declare const GGUI_WAVE_VERSION = "0.18.0";
|
|
3729
3741
|
/**
|
|
3730
3742
|
* Schema version stamped onto wire envelopes that opt into the
|
|
3731
3743
|
* `schemaVersion` forward-compat field (see {@link ActionEnvelope},
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAinHG;AACH,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,qBAAmB,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAErD,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -6,6 +6,18 @@
|
|
|
6
6
|
* schema change; the most recent change anchors {@link PROTOCOL_VERSION}.
|
|
7
7
|
*
|
|
8
8
|
* --------------------------------------------------------------------
|
|
9
|
+
* `ggui:dismiss` (2026-09-16, additive, ggui#1109 — MINOR, same draft
|
|
10
|
+
* stamp): a user dismiss GESTURE forwarded from the card to its host as
|
|
11
|
+
* an INTENT, on a new protocol-owned tag in the `ggui:` postMessage
|
|
12
|
+
* family beside `ggui:lifecycle`. The card MUST NOT act on it (the host
|
|
13
|
+
* owns what dismissal means) and emits at most one intent per gesture;
|
|
14
|
+
* the host decides, and ignoring is CONFORMANT — so adoption breaks no
|
|
15
|
+
* host. `reason` is extensibly-closed ('escape' today), and the type
|
|
16
|
+
* guard validates SHAPE only: checking today's reason set would make a
|
|
17
|
+
* release-N host silently drop a release-N+1 intent (§3.6). Not on
|
|
18
|
+
* `ggui:observe` (a host may ignore telemetry by contract) and not a
|
|
19
|
+
* `ui/notifications/*` name (a frozen external namespace).
|
|
20
|
+
* --------------------------------------------------------------------
|
|
9
21
|
* Motion tempo override (2026-09-16, additive, ggui#1093 P1c — MINOR,
|
|
10
22
|
* same draft stamp; no WIRE change). The theming spec's §2.3 retirement
|
|
11
23
|
* of per-app motion is AMENDED (protocol + rnd): layer-1 keeps the motion
|
|
@@ -3725,7 +3737,7 @@ export const PROTOCOL_VERSION = "draft-2026-09-10";
|
|
|
3725
3737
|
* PATCH under §1.3); it cannot be cut from main, whose delta since
|
|
3726
3738
|
* 0.14.0 is minor-class.
|
|
3727
3739
|
*/
|
|
3728
|
-
export const GGUI_WAVE_VERSION = "0.
|
|
3740
|
+
export const GGUI_WAVE_VERSION = "0.18.0";
|
|
3729
3741
|
/**
|
|
3730
3742
|
* Schema version stamped onto wire envelopes that opt into the
|
|
3731
3743
|
* `schemaVersion` forward-compat field (see {@link ActionEnvelope},
|