@ggui-ai/project-config 0.19.0 → 0.21.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/schema.d.ts +6 -6
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +19 -8
- package/package.json +3 -3
package/dist/schema.d.ts
CHANGED
|
@@ -153,10 +153,10 @@ export type StorageConfig = z.infer<typeof StorageSchema>;
|
|
|
153
153
|
declare const GenerationSchema: z.ZodObject<{
|
|
154
154
|
model: z.ZodPipe<z.ZodString, z.ZodTransform<{
|
|
155
155
|
provider: "anthropic";
|
|
156
|
-
model: "claude-fable-5-1" | "claude-fable-5" | "claude-opus-5" | "claude-sonnet-5" | "claude-haiku-4-5-20251001" | "claude-opus-4-8" | "claude-sonnet-4-6" | "claude-opus-4-7" | "claude-opus-4-6";
|
|
156
|
+
model: "claude-fable-5-1" | "claude-opus-5-5" | "claude-fable-5" | "claude-opus-5" | "claude-sonnet-5" | "claude-haiku-4-5-20251001" | "claude-opus-4-8" | "claude-sonnet-4-6" | "claude-opus-4-7" | "claude-opus-4-6";
|
|
157
157
|
} | {
|
|
158
158
|
provider: "openai";
|
|
159
|
-
model: "gpt-6-astra" | "gpt-5.6" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.5" | "gpt-5.5-2026-04-23" | "gpt-5.5-pro" | "gpt-5.5-pro-2026-04-23" | "gpt-5.4" | "gpt-5.4-2026-03-05" | "gpt-5.4-mini" | "gpt-5.4-mini-2026-03-17" | "gpt-5.4-nano" | "gpt-5.4-nano-2026-03-17" | "gpt-5.3-codex";
|
|
159
|
+
model: "gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-5.6" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.5" | "gpt-5.5-2026-04-23" | "gpt-5.5-pro" | "gpt-5.5-pro-2026-04-23" | "gpt-5.4" | "gpt-5.4-2026-03-05" | "gpt-5.4-mini" | "gpt-5.4-mini-2026-03-17" | "gpt-5.4-nano" | "gpt-5.4-nano-2026-03-17" | "gpt-5.3-codex";
|
|
160
160
|
} | {
|
|
161
161
|
provider: "google";
|
|
162
162
|
model: "gemini-3.7-flash" | "gemini-3.6-flash" | "gemini-3.5-flash" | "gemini-3.5-flash-lite" | "gemini-flash-latest" | "gemini-3.1-flash-lite" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite-preview" | "gemini-3-flash-preview";
|
|
@@ -165,7 +165,7 @@ declare const GenerationSchema: z.ZodObject<{
|
|
|
165
165
|
model: (string & {}) | "anthropic.claude-fable-5-1" | "anthropic.claude-fable-5" | "anthropic.claude-opus-5" | "anthropic.claude-sonnet-5" | "anthropic.claude-opus-4-8" | "us.anthropic.claude-haiku-4-5-20251001-v1:0" | "eu.anthropic.claude-haiku-4-5-20251001-v1:0" | "apac.anthropic.claude-haiku-4-5-20251001-v1:0" | "global.anthropic.claude-haiku-4-5-20251001-v1:0" | "us.anthropic.claude-sonnet-4-6" | "eu.anthropic.claude-sonnet-4-6" | "apac.anthropic.claude-sonnet-4-6" | "us.anthropic.claude-opus-4-7" | "eu.anthropic.claude-opus-4-7" | "apac.anthropic.claude-opus-4-7" | "global.anthropic.claude-opus-4-7" | "us.anthropic.claude-opus-4-6-v1";
|
|
166
166
|
} | {
|
|
167
167
|
provider: "openrouter";
|
|
168
|
-
model: (string & {}) | "anthropic/claude-fable-5" | "anthropic/claude-opus-5" | "anthropic/claude-sonnet-5" | "anthropic/claude-haiku-4.5" | "anthropic/claude-sonnet-4.6" | "anthropic/claude-opus-4.7" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna" | "openai/gpt-5.5" | "openai/gpt-5.5-pro" | "openai/gpt-5.4-mini" | "openai/gpt-5.4-nano" | "google/gemini-3.6-flash" | "google/gemini-3.5-flash" | "google/gemini-3.5-flash-lite" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite" | "x-ai/grok-4.3" | "meta-llama/llama-4-maverick" | "meta-llama/llama-3.3-70b-instruct" | "deepseek/deepseek-v4-pro" | "deepseek/deepseek-r1-0528" | "qwen/qwen3.7-max" | "qwen/qwen3-coder" | "
|
|
168
|
+
model: (string & {}) | "anthropic/claude-fable-5" | "anthropic/claude-opus-5" | "anthropic/claude-sonnet-5" | "anthropic/claude-haiku-4.5" | "anthropic/claude-sonnet-4.6" | "anthropic/claude-opus-4.7" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna" | "openai/gpt-5.5" | "openai/gpt-5.5-pro" | "openai/gpt-5.4-mini" | "openai/gpt-5.4-nano" | "google/gemini-3.6-flash" | "google/gemini-3.5-flash" | "google/gemini-3.5-flash-lite" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite" | "x-ai/grok-4.3" | "meta-llama/llama-4-maverick" | "meta-llama/llama-3.3-70b-instruct" | "deepseek/deepseek-v4-pro" | "deepseek/deepseek-r1-0528" | "qwen/qwen3.7-max" | "qwen/qwen3-coder" | "openai/gpt-oss-120b";
|
|
169
169
|
}, string>>;
|
|
170
170
|
keySource: z.ZodOptional<z.ZodEnum<{
|
|
171
171
|
own: "own";
|
|
@@ -330,10 +330,10 @@ export declare const GguiJsonV1: z.ZodObject<{
|
|
|
330
330
|
generation: z.ZodOptional<z.ZodObject<{
|
|
331
331
|
model: z.ZodPipe<z.ZodString, z.ZodTransform<{
|
|
332
332
|
provider: "anthropic";
|
|
333
|
-
model: "claude-fable-5-1" | "claude-fable-5" | "claude-opus-5" | "claude-sonnet-5" | "claude-haiku-4-5-20251001" | "claude-opus-4-8" | "claude-sonnet-4-6" | "claude-opus-4-7" | "claude-opus-4-6";
|
|
333
|
+
model: "claude-fable-5-1" | "claude-opus-5-5" | "claude-fable-5" | "claude-opus-5" | "claude-sonnet-5" | "claude-haiku-4-5-20251001" | "claude-opus-4-8" | "claude-sonnet-4-6" | "claude-opus-4-7" | "claude-opus-4-6";
|
|
334
334
|
} | {
|
|
335
335
|
provider: "openai";
|
|
336
|
-
model: "gpt-6-astra" | "gpt-5.6" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.5" | "gpt-5.5-2026-04-23" | "gpt-5.5-pro" | "gpt-5.5-pro-2026-04-23" | "gpt-5.4" | "gpt-5.4-2026-03-05" | "gpt-5.4-mini" | "gpt-5.4-mini-2026-03-17" | "gpt-5.4-nano" | "gpt-5.4-nano-2026-03-17" | "gpt-5.3-codex";
|
|
336
|
+
model: "gpt-6-astra" | "gpt-6-sol" | "gpt-6-luna" | "gpt-5.6" | "gpt-5.6-sol" | "gpt-5.6-terra" | "gpt-5.6-luna" | "gpt-5.5" | "gpt-5.5-2026-04-23" | "gpt-5.5-pro" | "gpt-5.5-pro-2026-04-23" | "gpt-5.4" | "gpt-5.4-2026-03-05" | "gpt-5.4-mini" | "gpt-5.4-mini-2026-03-17" | "gpt-5.4-nano" | "gpt-5.4-nano-2026-03-17" | "gpt-5.3-codex";
|
|
337
337
|
} | {
|
|
338
338
|
provider: "google";
|
|
339
339
|
model: "gemini-3.7-flash" | "gemini-3.6-flash" | "gemini-3.5-flash" | "gemini-3.5-flash-lite" | "gemini-flash-latest" | "gemini-3.1-flash-lite" | "gemini-3.1-pro-preview" | "gemini-3.1-flash-lite-preview" | "gemini-3-flash-preview";
|
|
@@ -342,7 +342,7 @@ export declare const GguiJsonV1: z.ZodObject<{
|
|
|
342
342
|
model: (string & {}) | "anthropic.claude-fable-5-1" | "anthropic.claude-fable-5" | "anthropic.claude-opus-5" | "anthropic.claude-sonnet-5" | "anthropic.claude-opus-4-8" | "us.anthropic.claude-haiku-4-5-20251001-v1:0" | "eu.anthropic.claude-haiku-4-5-20251001-v1:0" | "apac.anthropic.claude-haiku-4-5-20251001-v1:0" | "global.anthropic.claude-haiku-4-5-20251001-v1:0" | "us.anthropic.claude-sonnet-4-6" | "eu.anthropic.claude-sonnet-4-6" | "apac.anthropic.claude-sonnet-4-6" | "us.anthropic.claude-opus-4-7" | "eu.anthropic.claude-opus-4-7" | "apac.anthropic.claude-opus-4-7" | "global.anthropic.claude-opus-4-7" | "us.anthropic.claude-opus-4-6-v1";
|
|
343
343
|
} | {
|
|
344
344
|
provider: "openrouter";
|
|
345
|
-
model: (string & {}) | "anthropic/claude-fable-5" | "anthropic/claude-opus-5" | "anthropic/claude-sonnet-5" | "anthropic/claude-haiku-4.5" | "anthropic/claude-sonnet-4.6" | "anthropic/claude-opus-4.7" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna" | "openai/gpt-5.5" | "openai/gpt-5.5-pro" | "openai/gpt-5.4-mini" | "openai/gpt-5.4-nano" | "google/gemini-3.6-flash" | "google/gemini-3.5-flash" | "google/gemini-3.5-flash-lite" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite" | "x-ai/grok-4.3" | "meta-llama/llama-4-maverick" | "meta-llama/llama-3.3-70b-instruct" | "deepseek/deepseek-v4-pro" | "deepseek/deepseek-r1-0528" | "qwen/qwen3.7-max" | "qwen/qwen3-coder" | "
|
|
345
|
+
model: (string & {}) | "anthropic/claude-fable-5" | "anthropic/claude-opus-5" | "anthropic/claude-sonnet-5" | "anthropic/claude-haiku-4.5" | "anthropic/claude-sonnet-4.6" | "anthropic/claude-opus-4.7" | "openai/gpt-5.6-sol" | "openai/gpt-5.6-terra" | "openai/gpt-5.6-luna" | "openai/gpt-5.5" | "openai/gpt-5.5-pro" | "openai/gpt-5.4-mini" | "openai/gpt-5.4-nano" | "google/gemini-3.6-flash" | "google/gemini-3.5-flash" | "google/gemini-3.5-flash-lite" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite" | "x-ai/grok-4.3" | "meta-llama/llama-4-maverick" | "meta-llama/llama-3.3-70b-instruct" | "deepseek/deepseek-v4-pro" | "deepseek/deepseek-r1-0528" | "qwen/qwen3.7-max" | "qwen/qwen3-coder" | "openai/gpt-oss-120b";
|
|
346
346
|
}, string>>;
|
|
347
347
|
keySource: z.ZodOptional<z.ZodEnum<{
|
|
348
348
|
own: "own";
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,wBAAwB,CAAC;AAwYnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8D1B,CAAC;AAEH,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,iDAAiD;AACjD,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,GACX,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAE9C;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CAuDpE"}
|
package/dist/theme.js
CHANGED
|
@@ -246,14 +246,17 @@ const TypeScaleRole = z.strictObject({
|
|
|
246
246
|
* member changes a pixel. A member may be contracted before its consumer
|
|
247
247
|
* exists; a VARIABLE may not enter the consumed-token manifest before its
|
|
248
248
|
* consumer exists (a name nothing reads is coverage debt, not a feature).
|
|
249
|
-
* Today that makes
|
|
250
|
-
* VISIBLE: the role-named type families
|
|
251
|
-
*
|
|
252
|
-
* **ggui#
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
249
|
+
* Today that makes ONE of these members STATED, STORED and NOT YET
|
|
250
|
+
* VISIBLE: the role-named type families arrive with their consumer
|
|
251
|
+
* (ggui#1075 Track C (b)). `scrim` reaches the card's own pages since
|
|
252
|
+
* **ggui#1083** (`--ggui-scrim-tint` / `--ggui-scrim-opacity` — the ground
|
|
253
|
+
* the visual judge's shell sits the card on; `blur` stays the embedding
|
|
254
|
+
* shell's knob, carried and stored, never projected). `motion.duration` /
|
|
255
|
+
* `motion.easing` DO reach the card since **ggui#1106** (the primitives
|
|
256
|
+
* read `--ggui-motion-*` variables the projection emits); `motion.reduce`
|
|
257
|
+
* is still carried without a composer that reads it. A writer may declare
|
|
258
|
+
* all of them now, which is the point of contracting first; nobody should
|
|
259
|
+
* read the contract as shipping a behaviour this list says is not consumed.
|
|
257
260
|
*/
|
|
258
261
|
/** The five type roles; `display` is the poster-scale role a host page leads with. */
|
|
259
262
|
const TypeScaleGroup = z.strictObject({
|
|
@@ -474,6 +477,10 @@ export function safeParseThemeDocument(raw) {
|
|
|
474
477
|
function stringToken(token, value) {
|
|
475
478
|
return { $type: token.$type, $value: value, ...(token.$description !== undefined ? { $description: token.$description } : {}) };
|
|
476
479
|
}
|
|
480
|
+
/** The stated steps of an optional-keyed token group, each carried as a string token; unstated keys stay absent (ggui#1106). */
|
|
481
|
+
function mapStatedTokens(group) {
|
|
482
|
+
return Object.fromEntries(Object.entries(group).flatMap(([k, t]) => (t === undefined ? [] : [[k, stringToken(t, t.$value)]])));
|
|
483
|
+
}
|
|
477
484
|
function mapRecord(record, f) {
|
|
478
485
|
return Object.fromEntries(Object.entries(record).map(([k, v]) => [k, f(v)]));
|
|
479
486
|
}
|
|
@@ -525,6 +532,10 @@ export function normalizeThemeDocument(doc) {
|
|
|
525
532
|
? t.$value
|
|
526
533
|
: `${t.$value.property ?? 'all'} ${t.$value.duration} ${t.$value.timingFunction}`)),
|
|
527
534
|
keyframes: doc.motion.keyframes ?? lightTheme.motion.keyframes,
|
|
535
|
+
// ggui#1106 — the tempo override reaches the projection: each stated step verbatim.
|
|
536
|
+
...(doc.motion.duration !== undefined ? { duration: mapStatedTokens(doc.motion.duration) } : {}),
|
|
537
|
+
...(doc.motion.easing !== undefined ? { easing: mapStatedTokens(doc.motion.easing) } : {}),
|
|
538
|
+
...(doc.motion.reduce !== undefined ? { reduce: doc.motion.reduce } : {}),
|
|
528
539
|
},
|
|
529
540
|
accessibility: {
|
|
530
541
|
focusRing: accessibility?.focusRing ?? lightTheme.accessibility.focusRing,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/project-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Schema and loader for `ggui.json` — the portable app/agent manifest for the ggui protocol. Vendor-neutral. Consumed by the `ggui` CLI and any host that reconstitutes an agent from the manifest.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ggui",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"tinyglobby": "^0.2.16",
|
|
35
35
|
"zod": "^4.3.6",
|
|
36
|
-
"@ggui-ai/design": "0.
|
|
37
|
-
"@ggui-ai/protocol": "0.
|
|
36
|
+
"@ggui-ai/design": "0.21.0",
|
|
37
|
+
"@ggui-ai/protocol": "0.21.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^24.0.0",
|