@ggui-ai/dev-stack 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.
@@ -32833,7 +32833,7 @@ config(en_default());
32833
32833
 
32834
32834
  // ../protocol/dist/gadgets/stdlib-gadgets.js
32835
32835
  var STDLIB_GADGETS_PACKAGE = "@ggui-ai/gadgets";
32836
- var STDLIB_GADGETS_VERSION = "0.3.0";
32836
+ var STDLIB_GADGETS_VERSION = "0.4.0-rc.0";
32837
32837
  var STDLIB_GADGETS = [
32838
32838
  {
32839
32839
  package: STDLIB_GADGETS_PACKAGE,
@@ -33446,6 +33446,16 @@ var renderCacheMarkerSchema = external_exports.object({
33446
33446
  kind: external_exports.enum(["full-template", "cold"]).optional().describe("full-template = a whole stored component was served; cold = freshly generated."),
33447
33447
  reason: external_exports.string().optional().describe("Compact human-readable explanation of the cache outcome \u2014 why this render reused a stored component or generated cold. Diagnostic; default-available without the verbose env-gated trace.")
33448
33448
  });
33449
+ var renderErrorCodeSchema = external_exports.enum([
33450
+ "PRODUCTION_FAILED",
33451
+ "VALIDATION_ERROR",
33452
+ "NO_PLATFORM_KEY",
33453
+ "NO_CREDENTIALS"
33454
+ ]);
33455
+ var renderErrorSchema = external_exports.object({
33456
+ code: renderErrorCodeSchema.describe("Canonical failure class. PRODUCTION_FAILED: generation did not produce a component. VALIDATION_ERROR: a server-side precondition rejected the render before generation. NO_PLATFORM_KEY: the server's managed provider-key configuration has no key for the resolved route. NO_CREDENTIALS: no generation credentials are configured on the server."),
33457
+ message: external_exports.string().describe("Human-readable failure detail \u2014 fold into the next attempt or surface to the operator.")
33458
+ });
33449
33459
  var renderOutputSchema = external_exports.object({
33450
33460
  sessionId: external_exports.string(),
33451
33461
  /**
@@ -33455,13 +33465,24 @@ var renderOutputSchema = external_exports.object({
33455
33465
  * tool_results (OpenAI Agents SDK, Google ADK) reach the mount URI;
33456
33466
  * SDKs that preserve `_meta` see the same value on both fields.
33457
33467
  * Mirrors the `resourceUri` field on `ggui_update`'s output.
33468
+ *
33469
+ * OPTIONAL — present iff the render is mountable. Absent on the
33470
+ * failure envelope (`error` present): a failed render commits an
33471
+ * error GguiSession but exposes no mount affordance.
33458
33472
  */
33459
- resourceUri: external_exports.string(),
33473
+ resourceUri: external_exports.string().optional().describe("MCP-Apps mount URI (ui://ggui/render/{id}). Present iff the render is mountable; absent on a failed render."),
33460
33474
  action: external_exports.enum(["create", "reuse", "update", "replace", "declined"]),
33461
33475
  contractHash: external_exports.string().describe("Canonical hash of the rendered data contract (shape only \u2014 fields, types, specs). Same hash \u27FA same data flow."),
33462
33476
  blueprintId: external_exports.string().describe("Opaque id of the materialised component for this render. On the handshake-decided reuse paths (accept a cache-origin proposal, or a variance re-aim that resolves to an existing variant) it is the stored id \u2014 equal ids across renders mean the same stored component. override.contract always generates cold and mints a fresh id, even for an identical contract."),
33463
33477
  variantKey: external_exports.string().describe("Canonical hash of the design-time variance (persona, aesthetic, seed prompt, context). With contractHash it forms the reuse key: the same pair reuses one component; a different variant of the same contract gets its own."),
33464
33478
  cache: renderCacheMarkerSchema.describe("Reuse outcome for this render: whether a stored component was served, its similarity, the matched component id, and how many generation calls that avoided."),
33479
+ /**
33480
+ * In-result failure marker — present iff the tool result is
33481
+ * `isError: true`. The structuredContent stays schema-conformant on
33482
+ * failures; this field carries the canonical `{code, message}`
33483
+ * classification. Absent on every successful render.
33484
+ */
33485
+ error: renderErrorSchema.optional().describe("Present iff the tool result is isError \u2014 canonical {code, message} for a failed/rejected generation. Absent on success."),
33465
33486
  /**
33466
33487
  * Wire-shape recovery hint for the next call. Emitted ONLY when the
33467
33488
  * rendered contract has a non-empty `actionSpec` — i.e. the agent will
@@ -33497,7 +33518,15 @@ var updateInputSchema = external_exports.discriminatedUnion("kind", [
33497
33518
  ]);
33498
33519
  var updateOutputSchema = external_exports.object({
33499
33520
  sessionId: external_exports.string(),
33500
- updated: external_exports.boolean()
33521
+ updated: external_exports.boolean(),
33522
+ /**
33523
+ * Unchanged from the initial render — the same `ui://ggui/render/{id}`
33524
+ * URI the mount stamped. Mirrored on the LLM-visible structuredContent
33525
+ * so SDKs that strip `_meta` from tool_results can still reach the
33526
+ * mount URI. Kept in sync with the update handler's wire shape —
33527
+ * this export and the handler's inline schema must not drift.
33528
+ */
33529
+ resourceUri: external_exports.string()
33501
33530
  });
33502
33531
  var declareToolCatalogInputSchema = external_exports.object({
33503
33532
  toolCatalog: external_exports.record(external_exports.string(), external_exports.object({ name: external_exports.string(), version: external_exports.string().optional() }).strict()).describe("Per-app canonical tool identities: bare tool name -> its server's initialize-declared serverInfo. Host/library-supplied; not an agent action.")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/dev-stack",
3
- "version": "0.3.0-rc.0",
3
+ "version": "0.4.0-rc.0",
4
4
  "description": "Shared local dev engine for the ggui protocol: local UI registry discovery, compile-on-demand, filesystem watcher with SSE, and a read-only HTTP surface for dev tooling. Framework-neutral — agent runtime supervision plugs in via an adapter seam, so no agent SDK is hardcoded.",
5
5
  "keywords": [
6
6
  "ggui",
@@ -28,9 +28,9 @@
28
28
  "dependencies": {
29
29
  "chokidar": "^4.0.3",
30
30
  "esbuild": "^0.25.12",
31
- "@ggui-ai/agent-runtime": "0.3.0-rc.0",
32
- "@ggui-ai/project-config": "0.3.0-rc.0",
33
- "@ggui-ai/ui-registry": "0.3.0-rc.0"
31
+ "@ggui-ai/project-config": "0.4.0-rc.0",
32
+ "@ggui-ai/agent-runtime": "0.4.0-rc.0",
33
+ "@ggui-ai/ui-registry": "0.4.0-rc.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/node": "^24.0.0",
@@ -39,10 +39,10 @@
39
39
  "react": "^19.0.0",
40
40
  "react-dom": "^19.0.0",
41
41
  "typescript": "^5.0.0",
42
- "vitest": "^3.0.0",
43
- "@ggui-ai/design": "0.3.0-rc.0",
44
- "@ggui-ai/react": "0.3.0-rc.0",
45
- "@ggui-ai/wire": "0.3.0-rc.0"
42
+ "vitest": "^3.2.6",
43
+ "@ggui-ai/design": "0.4.0-rc.0",
44
+ "@ggui-ai/wire": "0.4.0-rc.0",
45
+ "@ggui-ai/react": "0.4.0-rc.0"
46
46
  },
47
47
  "repository": {
48
48
  "type": "git",