@ggui-ai/project-config 0.24.0 → 0.26.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/README.md +2 -2
- package/dist/schema.d.ts +2 -2
- package/dist/theme.d.ts +7 -3
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +19 -11
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# @ggui-ai/project-config
|
|
2
2
|
|
|
3
|
-
> Schema and loader for `ggui.json` — the portable app/agent manifest for the [
|
|
3
|
+
> Schema and loader for `ggui.json` — the portable app/agent manifest for the [GGUI](https://github.com/ggui-ai/ggui) protocol.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@ggui-ai/project-config)
|
|
6
6
|
[](./LICENSE)
|
|
7
7
|
|
|
8
|
-
`ggui.json` is the single source of truth for a
|
|
8
|
+
`ggui.json` is the single source of truth for a GGUI app: its identity, the agent entry point, storage, theme, primitives, and blueprints. This package owns the schema (a [Zod](https://zod.dev) document) and the loaders that read, validate, and write it.
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
package/dist/schema.d.ts
CHANGED
|
@@ -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" | "openai/gpt-oss-120b";
|
|
168
|
+
model: (string & {}) | "anthropic/claude-opus-5.5" | "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-6-sol" | "openai/gpt-6-luna" | "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";
|
|
@@ -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" | "openai/gpt-oss-120b";
|
|
345
|
+
model: (string & {}) | "anthropic/claude-opus-5.5" | "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-6-sol" | "openai/gpt-6-luna" | "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
CHANGED
|
@@ -14,9 +14,13 @@
|
|
|
14
14
|
* ramps, every `on*` ink and container, the neutral ladder, outlines,
|
|
15
15
|
* `elevated`, the type scale from the one `font.ramp` — is DERIVED by
|
|
16
16
|
* the one producer (`deriveThemeVariables`), so the retired ladders
|
|
17
|
-
* (`font.size`, `font.lineHeight`, `motion.duration
|
|
18
|
-
* and `$metadata.fontUrl` are refused, not ignored.
|
|
19
|
-
*
|
|
17
|
+
* (`font.size`, `font.lineHeight`, the FREE-MAP `motion.duration` /
|
|
18
|
+
* `motion.easing`) and `$metadata.fontUrl` are refused, not ignored.
|
|
19
|
+
* `motion` admits only the bounded tempo override (ggui#1093 P1c,
|
|
20
|
+
* consumed since ggui#1106): three duration steps (`fast` / `base` /
|
|
21
|
+
* `slow`) and three easing roles (`standard` / `emphasized` / `exit`),
|
|
22
|
+
* nothing else. Fonts are declared as `typography.faces` (https `src`
|
|
23
|
+
* only); the card installs them.
|
|
20
24
|
*
|
|
21
25
|
* **External-tool leniency.** `motion`, `accessibility`, `zIndex` and
|
|
22
26
|
* the DTCG metadata fields stay OPTIONAL; {@link normalizeThemeDocument}
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,wBAAwB,CAAC;AA4YnE;;;;;;;;;;;;;;;;;;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
|
@@ -14,9 +14,13 @@
|
|
|
14
14
|
* ramps, every `on*` ink and container, the neutral ladder, outlines,
|
|
15
15
|
* `elevated`, the type scale from the one `font.ramp` — is DERIVED by
|
|
16
16
|
* the one producer (`deriveThemeVariables`), so the retired ladders
|
|
17
|
-
* (`font.size`, `font.lineHeight`, `motion.duration
|
|
18
|
-
* and `$metadata.fontUrl` are refused, not ignored.
|
|
19
|
-
*
|
|
17
|
+
* (`font.size`, `font.lineHeight`, the FREE-MAP `motion.duration` /
|
|
18
|
+
* `motion.easing`) and `$metadata.fontUrl` are refused, not ignored.
|
|
19
|
+
* `motion` admits only the bounded tempo override (ggui#1093 P1c,
|
|
20
|
+
* consumed since ggui#1106): three duration steps (`fast` / `base` /
|
|
21
|
+
* `slow`) and three easing roles (`standard` / `emphasized` / `exit`),
|
|
22
|
+
* nothing else. Fonts are declared as `typography.faces` (https `src`
|
|
23
|
+
* only); the card installs them.
|
|
20
24
|
*
|
|
21
25
|
* **External-tool leniency.** `motion`, `accessibility`, `zIndex` and
|
|
22
26
|
* the DTCG metadata fields stay OPTIONAL; {@link normalizeThemeDocument}
|
|
@@ -254,7 +258,9 @@ const TypeScaleRole = z.strictObject({
|
|
|
254
258
|
* shell's knob, carried and stored, never projected). `motion.duration` /
|
|
255
259
|
* `motion.easing` DO reach the card since **ggui#1106** (the primitives
|
|
256
260
|
* read `--ggui-motion-*` variables the projection emits); `motion.reduce`
|
|
257
|
-
* is
|
|
261
|
+
* is carried and never read, because a card always honours the viewer's
|
|
262
|
+
* reduced-motion request, so `'ignore'` is treated as `'respect'`
|
|
263
|
+
* (ggui#1326). A writer may declare
|
|
258
264
|
* all of them now, which is the point of contracting first; nobody should
|
|
259
265
|
* read the contract as shipping a behaviour this list says is not consumed.
|
|
260
266
|
*/
|
|
@@ -345,14 +351,16 @@ const MotionGroup = z.strictObject({
|
|
|
345
351
|
/** Per-app easing override — three roles, each value validated at the door (ggui#1093 P1c). */
|
|
346
352
|
easing: MotionEasingGroup.optional(),
|
|
347
353
|
/**
|
|
348
|
-
*
|
|
354
|
+
* The document's reduced-motion stance. Whatever it says, a card never
|
|
355
|
+
* overrides its viewer's reduced-motion request (ggui#1326): the
|
|
356
|
+
* reduced-motion rule applies under `prefers-reduced-motion: reduce`
|
|
357
|
+
* for every theme, because the preference is the viewer's own
|
|
358
|
+
* accessibility setting.
|
|
349
359
|
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
* unless a document explicitly says `ignore`. Absence therefore means
|
|
355
|
-
* "respect" downstream, without the wire inventing it.
|
|
360
|
+
* The door still accepts `'ignore'`, because stored documents and theme
|
|
361
|
+
* writes from earlier releases carry it, and downstream treats it as
|
|
362
|
+
* `'respect'`. The door does not stamp a value: absent stays absent, so
|
|
363
|
+
* the document never carries something its author did not write.
|
|
356
364
|
*/
|
|
357
365
|
reduce: z.enum(['respect', 'ignore']).optional(),
|
|
358
366
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/project-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.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.26.0",
|
|
37
|
+
"@ggui-ai/protocol": "0.26.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^24.0.0",
|