@ggui-ai/cli 0.3.0-rc.0 → 0.4.0-rc.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 CHANGED
@@ -45,7 +45,7 @@ ggui serve --mcp-only # skip agent supervision
45
45
 
46
46
  - ✅ Local server, viewer, cookie-authenticated WebSocket subscribe/ack all work end-to-end.
47
47
  - ✅ `ggui_render` mints shortCodes and lands on the same-origin viewer.
48
- - ✅ Component-code generation is wired on the OSS path via `createUiGenerator()` from `@ggui-ai/ui-gen` — the same harness the hosted runtime uses. When no LLM credentials resolve (no `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / etc.), `ggui_render` still lands a real render — a connect-your-key onboarding card with `codeReady: true` that walks the operator through supplying a key. `codeReady: false` is reserved for failures (generation errors, malformed credentials at boot).
48
+ - ✅ Component-code generation is wired on the OSS path via `createUiGenerator()` from `@ggui-ai/ui-gen` — the same harness the hosted runtime uses. When no LLM credentials resolve (no `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / etc.), `ggui_render` returns an `isError: true` tool result whose `structuredContent.error.code` is `NO_CREDENTIALS`, with a message naming which key to set; supply a key to get full generation locally.
49
49
  - 🔒 Default auth is strict pairing — only pair-minted bearer tokens authenticate `/mcp` (pair via the landing page or `POST /pair`). `--dev-allow-all` (local dev / tunnel smoke) and `--public-demo` (rate-limited, operator-paid public demo) relax `/mcp` to any-bearer; `--multi-tenant` keeps strict auth with per-user provider-key scoping; `--oauth` mounts the OAuth 2.1 + DCR routes MCP custom-connector hosts (claude.ai, ChatGPT) need. Custom adapters via `createGguiServer({ auth })`.
50
50
 
51
51
  ### `ggui dev`
package/dist/cli.js CHANGED
@@ -520,8 +520,8 @@ async function runServeCommand(args) {
520
520
  if (routeResolution.kind === 'invalid-env') {
521
521
  process.stderr.write(`ggui serve: ${GENERATION_MODEL_ENV}="${routeResolution.raw}" is not a ` +
522
522
  `valid model route. Accepted forms:\n` +
523
- ` - canonical: "openai:gpt-5.4-mini"\n` +
524
- ` - LiteLLM: "gemini/gemini-3.1-flash-lite"\n` +
523
+ ` - canonical: "openai:gpt-5.6-luna"\n` +
524
+ ` - LiteLLM: "gemini/gemini-3.5-flash-lite"\n` +
525
525
  `See docs/principles/model-string-convention.md.\n`);
526
526
  return 1;
527
527
  }
@@ -209,7 +209,7 @@ export async function runDeployCommand(_args) {
209
209
  const { gguiJsonPath, envLocalPath, state } = ctx;
210
210
  if (!gguiJsonPath) {
211
211
  process.stderr.write('ggui deploy: no ggui.json found in this directory or its parents.\n' +
212
- ' Run from a scaffolded project directory (one created by `npx @ggui-ai/create-agentic-app`).\n');
212
+ ' Run from a project directory containing a ggui.json (start from the samples/ quickstart in the ggui repo README).\n');
213
213
  return 1;
214
214
  }
215
215
  const steps = planDeploySteps({ state, pushKeys });
@@ -99,7 +99,7 @@ export type ResolveConfiguredRouteResult = {
99
99
  *
100
100
  * 1. `GGUI_GENERATION_MODEL` (when set + non-empty) — parsed via
101
101
  * {@link parseAnyLlmRoute}, accepting both canonical
102
- * (`openai:gpt-5.4-mini`) and LiteLLM (`gemini/gemini-3.1-flash-lite`)
102
+ * (`openai:gpt-5.6-luna`) and LiteLLM (`gemini/gemini-3.5-flash-lite`)
103
103
  * forms. A malformed value yields `kind: 'invalid-env'` so the
104
104
  * caller can hard-fail rather than silently ignore the operator's
105
105
  * intent.
@@ -23,8 +23,8 @@ import { createUiGenerator } from '@ggui-ai/ui-gen';
23
23
  */
24
24
  export const DEFAULT_ROUTE_BY_PROVIDER = {
25
25
  anthropic: { provider: 'anthropic', model: 'claude-haiku-4-5-20251001' },
26
- openai: { provider: 'openai', model: 'gpt-5.5-2026-04-23' },
27
- google: { provider: 'google', model: 'gemini-3.1-flash-lite' },
26
+ openai: { provider: 'openai', model: 'gpt-5.6-luna' },
27
+ google: { provider: 'google', model: 'gemini-3.5-flash-lite' },
28
28
  openrouter: { provider: 'openrouter', model: 'anthropic/claude-haiku-4.5' },
29
29
  };
30
30
  /**
@@ -45,7 +45,7 @@ export const GENERATION_MODEL_ENV = 'GGUI_GENERATION_MODEL';
45
45
  *
46
46
  * 1. `GGUI_GENERATION_MODEL` (when set + non-empty) — parsed via
47
47
  * {@link parseAnyLlmRoute}, accepting both canonical
48
- * (`openai:gpt-5.4-mini`) and LiteLLM (`gemini/gemini-3.1-flash-lite`)
48
+ * (`openai:gpt-5.6-luna`) and LiteLLM (`gemini/gemini-3.5-flash-lite`)
49
49
  * forms. A malformed value yields `kind: 'invalid-env'` so the
50
50
  * caller can hard-fail rather than silently ignore the operator's
51
51
  * intent.
@@ -8,6 +8,13 @@ export interface PushRecord {
8
8
  readonly manifest: {
9
9
  readonly contract: DataContract;
10
10
  readonly description?: string;
11
+ /**
12
+ * Intent prose from the exported registry row — first choice of
13
+ * the server-side intent derivation (`intent ?? description ??
14
+ * name ?? artifactId`), so semantic (Tier-2) matching gets real
15
+ * prose instead of the artifactId fallback.
16
+ */
17
+ readonly intent?: string;
11
18
  /** Generator era this blueprint was built against — feeds the import gate. */
12
19
  readonly generatorProtocolVersion?: string;
13
20
  /** Tool-identity catalog hash at export — feeds the import gate's re-key check. */
@@ -1 +1 @@
1
- {"version":3,"file":"push-command.d.ts","sourceRoot":"","sources":["../src/push-command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWtD,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,8EAA8E;QAC9E,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAC3C,mFAAmF;QACnF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAC3C,CAAC;IACF,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CA+BvE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B9D;AAMD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAwC1F;AAMD,eAAO,MAAM,SAAS,onBAerB,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4E7E"}
1
+ {"version":3,"file":"push-command.d.ts","sourceRoot":"","sources":["../src/push-command.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAWtD,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;QAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B;;;;;WAKG;QACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,8EAA8E;QAC9E,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAC3C,mFAAmF;QACnF,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAC3C,CAAC;IACF,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CA+BvE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B9D;AAMD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAyC1F;AAMD,eAAO,MAAM,SAAS,onBAerB,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4E7E"}
@@ -122,6 +122,7 @@ export async function buildBlueprintPushPayload(artifactDir) {
122
122
  ...(r.variance.seedPrompt !== undefined
123
123
  ? { description: r.variance.seedPrompt }
124
124
  : {}),
125
+ ...(r.intent !== undefined ? { intent: r.intent } : {}),
125
126
  // Carry the PortableBlueprint stamp fields so the cloud import gate
126
127
  // can verify generator era + tool-identity catalog at load time.
127
128
  // v2 records always carry the era stamp; the catalog hash stays
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/cli",
3
- "version": "0.3.0-rc.0",
3
+ "version": "0.4.0-rc.0",
4
4
  "description": "The `ggui` CLI — run the ggui protocol locally: dev server, self-hosted MCP server, and gadget / blueprint authoring. End-to-end OSS and self-hosted workflows; no account required.",
5
5
  "keywords": [
6
6
  "ggui",
@@ -37,27 +37,27 @@
37
37
  "@noble/hashes": "^1.6.0",
38
38
  "esbuild": "^0.25.12",
39
39
  "zod": "^4.3.6",
40
- "@ggui-ai/agent-runtime": "0.3.0-rc.0",
41
- "@ggui-ai/dev-stack": "0.3.0-rc.0",
42
- "@ggui-ai/design": "0.3.0-rc.0",
43
- "@ggui-ai/gadget-signing": "0.3.0-rc.0",
44
- "@ggui-ai/artifact-manifest": "0.3.0-rc.0",
45
- "@ggui-ai/mcp-server": "0.3.0-rc.0",
46
- "@ggui-ai/mcp-server-handlers": "0.3.0-rc.0",
47
- "@ggui-ai/embedding-local": "0.3.0-rc.0",
48
- "@ggui-ai/mcp-server-core": "0.3.0-rc.0",
49
- "@ggui-ai/preview-a2ui": "0.3.0-rc.0",
50
- "@ggui-ai/project-config": "0.3.0-rc.0",
51
- "@ggui-ai/protocol": "0.3.0-rc.0",
52
- "@ggui-ai/registry-core": "0.3.0-rc.0",
53
- "@ggui-ai/iframe-runtime": "0.3.0-rc.0",
54
- "@ggui-ai/ui-registry": "0.3.0-rc.0",
55
- "@ggui-ai/ui-gen": "0.3.0-rc.0"
40
+ "@ggui-ai/agent-runtime": "0.4.0-rc.0",
41
+ "@ggui-ai/artifact-manifest": "0.4.0-rc.0",
42
+ "@ggui-ai/design": "0.4.0-rc.0",
43
+ "@ggui-ai/gadget-signing": "0.4.0-rc.0",
44
+ "@ggui-ai/dev-stack": "0.4.0-rc.0",
45
+ "@ggui-ai/embedding-local": "0.4.0-rc.0",
46
+ "@ggui-ai/mcp-server": "0.4.0-rc.0",
47
+ "@ggui-ai/preview-a2ui": "0.4.0-rc.0",
48
+ "@ggui-ai/mcp-server-core": "0.4.0-rc.0",
49
+ "@ggui-ai/project-config": "0.4.0-rc.0",
50
+ "@ggui-ai/protocol": "0.4.0-rc.0",
51
+ "@ggui-ai/mcp-server-handlers": "0.4.0-rc.0",
52
+ "@ggui-ai/registry-core": "0.4.0-rc.0",
53
+ "@ggui-ai/iframe-runtime": "0.4.0-rc.0",
54
+ "@ggui-ai/ui-gen": "0.4.0-rc.0",
55
+ "@ggui-ai/ui-registry": "0.4.0-rc.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/node": "^24.0.0",
59
59
  "typescript": "^5.0.0",
60
- "vitest": "^3.0.0"
60
+ "vitest": "^3.2.6"
61
61
  },
62
62
  "repository": {
63
63
  "type": "git",