@adia-ai/mcp 0.8.39 → 0.8.41

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/CHANGELOG.md CHANGED
@@ -9,6 +9,21 @@
9
9
  > entire changelog was still `[Unreleased]` at fold time (minted at ADR-0048 P4,
10
10
  > never released under its own name) and is merged into the section below.
11
11
 
12
+ ## [0.8.41] — 2026-08-17
13
+
14
+ ### Added
15
+ - **`gen-ui/scripts/eval-diff.mjs` stamps the git ref into run artifacts (#1393).** Every eval run's artifact now records the exact commit it ran against, so floor comparisons across branches attribute regressions to code, not drift.
16
+
17
+ ### Changed
18
+ - **`refine_ui` + `refine_composition` tool descriptions teach the caller-owned surface-lifecycle bracket (gh#1364; `spec-a2ui-surface-lifecycle.md`, ADR-0061).** The tools stay request/response; the descriptions in `gen-ui/tools/refine.ts` + `gen-ui/tools/synthesis.ts` (and the `gen-ui/server.ts` docs) now spell out that the CALLER opens `beginSurfaceUpdate` → `applyTo` → `commitSurfaceUpdate`/`abortSurfaceUpdate` around a re-generation of an already-rendered surface (first-render validate-and-repair needs no bracket), naming each tool's own result field (`messages` vs `ops_applied`).
19
+ - **Factory `pattern-index` resource drops the silent top-12 component-tag cap (gh#1498).** `factory/resources/pattern-index.md` now lists every component tag a pattern composes — the cap silently hid tags from consumers picking patterns by component; also regenerated for the 0.8.41 catalog wave (`progress-row-ui` absorption, `input-ui[type]` trim).
20
+ - **v1.0-Candidate terminology sweep across the protocol server's teaching surfaces (gh#1354, REQ-018).** `protocol/tools/protocol.ts` + `TOOLS.md` adopt the Candidate vocabulary (e.g. `rendererFunctionResponse`); tool shapes are unchanged.
21
+
22
+ ## [0.8.40] — 2026-08-15
23
+
24
+ ### Maintenance
25
+ - **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.40 work shipped in the ADR-0052/0053/0054/0056 attribute-grammar and token-convention breaking wave. See `packages/web-components/CHANGELOG.md#0840--2026-08-15` for details.
26
+
12
27
  ## [0.8.39] — 2026-08-15
13
28
 
14
29
  ### Added
package/TOOLS.md CHANGED
@@ -53,6 +53,8 @@ Mode selection (monolithic only; zettel uses "instant"):
53
53
 
54
54
  The generator knows 96+ UI patterns across 5 domains: forms, data, layout, agent, navigation.
55
55
 
56
+ Regenerating an existing surface (not first render): this tool stays request/response — it does not itself know about surface lifecycle state. The CALLER owns the pending/stale bracket (spec-a2ui-surface-lifecycle.md, ADR-0061): call the renderer's beginSurfaceUpdate(surfaceId) BEFORE invoking this tool and retain the generationId it returns; on success, applyTo(surfaceId, result.messages) — the A2UI messages live on this tool's own "messages" field — then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error — REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Bracketing keeps the prior answer visible (no blank frame) while this call is in flight.
57
+
56
58
  | Param | Type | Required | Default | Description |
57
59
  |---|---|---|---|---|
58
60
  | `intent` | string | yes | — | Description of the UI to generate |
@@ -67,6 +69,8 @@ The generator knows 96+ UI patterns across 5 domains: forms, data, layout, agent
67
69
 
68
70
  Refine a previous generate_ui result whose validation failed. Pass the messages from the prior result + the validation errors, and the tool produces a corrected version. For monolithic engine; zettel has refine_composition.
69
71
 
72
+ This tool stays request/response — the CALLER owns the surface lifecycle bracket if the prior (failing) messages already rendered (spec-a2ui-surface-lifecycle.md, ADR-0061): call beginSurfaceUpdate(surfaceId) BEFORE this call and retain the generationId it returns; on success, applyTo(surfaceId, result.messages) — the corrected A2UI messages live on this tool's own "messages" field — then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error — REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Validate-and-repair before first render needs no bracket — only re-validation of an already-rendered surface does.
73
+
70
74
  | Param | Type | Required | Default | Description |
71
75
  |---|---|---|---|---|
72
76
  | `intent` | string | yes | — | Original intent string |
@@ -299,6 +303,8 @@ Returns a new `state_id` (versioned chain from the parent), the A2UI op-list app
299
303
 
300
304
  For *fresh creation* use `compose_from_chunks`, not this tool.
301
305
 
306
+ This tool stays request/response — the CALLER owns the surface lifecycle bracket (spec-a2ui-surface-lifecycle.md, ADR-0061): call beginSurfaceUpdate(surfaceId) BEFORE this call and retain the generationId it returns; on success, applyTo(surfaceId, result.ops_applied) — the applied A2UI messages live on this tool's own "ops_applied" field, not "messages" — then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error — REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Bracketing keeps the surface's prior content visible and marked stale (no blank frame) while the refinement is in flight.
307
+
302
308
  | Param | Type | Required | Default | Description |
303
309
  |---|---|---|---|---|
304
310
  | `state_id` | string | yes | — | State id from a prior compose_from_chunks or refine_composition call |
@@ -532,6 +538,8 @@ Validate A2UI messages against the protocol: message envelope shape, flat-adjace
532
538
 
533
539
  This is the PROTOCOL-side form of validation. It needs no catalog and no corpus, so it validates any A2UI document from any producer. For catalog-aware validation (per-component prop schemas via the v0.9 catalog) plus anti-pattern scoring, use gen-ui-mcp's `validate_schema` instead.
534
540
 
541
+ Scope: this validates the shipping A2UI DIALECT, not the A2UI v1.0 Candidate wire format. Candidate envelopes use renderer/agent terminology — kinds `callRendererFunction`/`callAgentFunction` + `rendererFunctionResponse`/`agentFunctionResponse`, MIME `application/a2ui+json`, strict catalog resolution — and are validated by the vendored genui-system (`@genui/core`) validator, which dialect documents reach through the wire-bridge.
542
+
535
543
  | Param | Type | Required | Default | Description |
536
544
  |---|---|---|---|---|
537
545
  | `messages` | string | yes | — | JSON array of A2UI messages (a single message object is also accepted) |
@@ -21,7 +21,7 @@
21
21
  - source: `/packages/web-components/patterns/agent-cost/agent-cost.examples.html` · demo: `/packages/web-components/patterns/agent-cost/agent-cost.html` · docs: `/site/patterns/agent-cost`
22
22
  - **Agent Memory** (Patterns) — Surfaces to audit and edit what an agent remembers — a memory list, a single-entry detail, and an add/revise editor.
23
23
  - keywords: context, recall, saved facts, persistence, remember
24
- - components: `button-ui` `tag-ui` `list-item-ui` `card-ui` `col-ui` `radio-ui` `text-ui` `field-ui` `code-ui` `description-list-ui` `list-ui` `row-ui`
24
+ - components: `button-ui` `tag-ui` `list-item-ui` `card-ui` `col-ui` `radio-ui` `text-ui` `field-ui` `code-ui` `description-list-ui` `list-ui` `row-ui` `textarea-ui`
25
25
  - source: `/packages/web-components/patterns/agent-memory/agent-memory.examples.html` · demo: `/packages/web-components/patterns/agent-memory/agent-memory.html` · docs: `/site/patterns/agent-memory`
26
26
  - **Agent Prompt Library** (Patterns) — Saved-prompt store — a full library grid, a compact in-context recall picker, and the reusable prompt card shared by both.
27
27
  - keywords: snippets, templates, slash menu, saved queries, presets
@@ -43,7 +43,7 @@
43
43
 
44
44
  - **Comments & Collaboration** (Patterns) — Comment threads with @-mentions and emoji reactions on any object — reach for it to let users discuss a doc, task, row, or design.
45
45
  - keywords: threads, mentions, reactions, replies, discussion, annotations
46
- - components: `button-ui` `text-ui` `row-ui` `col-ui` `avatar-ui` `tag-ui` `card-ui` `field-ui` `kbd-ui` `divider-ui` `icon-ui` `input-ui`
46
+ - components: `button-ui` `text-ui` `row-ui` `col-ui` `avatar-ui` `tag-ui` `card-ui` `field-ui` `kbd-ui` `divider-ui` `icon-ui` `input-ui` `textarea-ui`
47
47
  - source: `/packages/web-components/patterns/comments-and-collaboration/comments-and-collaboration.examples.html` · demo: `/packages/web-components/patterns/comments-and-collaboration/comments-and-collaboration.html` · docs: `/site/patterns/comments-and-collaboration`
48
48
 
49
49
  ### data-table
@@ -62,7 +62,7 @@
62
62
  - source: `/packages/web-components/patterns/data-tables-inline-edit-and-tree/data-tables-inline-edit-and-tree.examples.html` · demo: `/packages/web-components/patterns/data-tables-inline-edit-and-tree/data-tables-inline-edit-and-tree.html` · docs: `/site/patterns/data-tables-inline-edit-and-tree`
63
63
  - **Filter Bar** (Patterns) — Row of removable facet chips above a table/list with an add-filter popover — reach for it when users stack multiple faceted filters.
64
64
  - keywords: facet, chips, refine, narrow, segment, query
65
- - components: `action-item-ui` `tag-ui` `button-ui` `segment-ui` `card-ui` `row-ui` `action-list-ui` `code-ui` `popover-ui` `search-ui` `segmented-ui` `table-ui`
65
+ - components: `action-item-ui` `tag-ui` `button-ui` `segment-ui` `card-ui` `row-ui` `action-list-ui` `code-ui` `popover-ui` `search-ui` `segmented-ui` `table-ui` `text-ui` `toolbar-ui`
66
66
  - source: `/packages/web-components/patterns/filter-bar/filter-bar.examples.html` · demo: `/packages/web-components/patterns/filter-bar/filter-bar.html` · docs: `/site/patterns/filter-bar`
67
67
 
68
68
  ### data-viz
@@ -73,7 +73,7 @@
73
73
  - source: `/packages/web-components/patterns/chart-in-card/chart-in-card.examples.html` · demo: `/packages/web-components/patterns/chart-in-card/chart-in-card.html` · docs: `/site/patterns/chart-in-card`
74
74
  - **Conversion Funnel** (Patterns) — Multi-step drop-off funnel built from labeled progress rows — reach for onboarding, checkout, activation, or paywall sequences.
75
75
  - keywords: drop-off, activation, checkout steps, sign-up flow, progress rows
76
- - components: `text-ui` `progress-row-ui` `col-ui` `badge-ui` `card-ui` `row-ui` `segment-ui` `button-ui` `segmented-ui`
76
+ - components: `text-ui` `progress-ui` `col-ui` `badge-ui` `card-ui` `row-ui` `segment-ui` `button-ui` `segmented-ui`
77
77
  - source: `/packages/web-components/patterns/conversion-funnel/conversion-funnel.examples.html` · demo: `/packages/web-components/patterns/conversion-funnel/conversion-funnel.html` · docs: `/site/patterns/conversion-funnel`
78
78
  - **Retention Cohort** (Patterns) — Retention cohort heatmap rendered as a table with color-bucketed badge cells — reach for it for retention/decay reporting.
79
79
  - keywords: heatmap, churn, decay, weekly buckets, engagement grid
@@ -92,7 +92,7 @@
92
92
  - source: `/packages/web-components/patterns/export-flow/export-flow.examples.html` · demo: `/packages/web-components/patterns/export-flow/export-flow.html` · docs: `/site/patterns/export-flow`
93
93
  - **Time-zone Selector** (Patterns) — Searchable IANA zone picker (region/city · UTC±N) from browser Intl data — reach for it for scheduling, log-display, or user prefs.
94
94
  - keywords: iana, utc offset, dst, locale, scheduling, region picker
95
- - components: `field-ui` `text-ui` `card-ui` `col-ui` `select-ui` `input-ui`
95
+ - components: `field-ui` `text-ui` `card-ui` `col-ui` `select-ui` `time-picker-ui`
96
96
  - source: `/packages/web-components/patterns/timezone-selector/timezone-selector.examples.html` · demo: `/packages/web-components/patterns/timezone-selector/timezone-selector.html` · docs: `/site/patterns/timezone-selector`
97
97
  - **Form Drawer** (Patterns) — Side drawer with a sticky action footer for create/edit forms — reach for it for '+ New X' flows that fit one screen of fields.
98
98
  - keywords: side panel, create, edit, sticky footer, slide-in, new record
@@ -107,7 +107,7 @@
107
107
 
108
108
  - **Marketing & Engagement** (Patterns) — Hero/CTA blocks, referral-invite flows, and achievement moments — reach for it for landing pages and growth/engagement surfaces.
109
109
  - keywords: hero, cta, referral, invite, landing page, gamification
110
- - components: `text-ui` `card-ui` `tag-ui` `col-ui` `button-ui` `stat-ui` `avatar-ui` `list-item-ui` `row-ui` `grid-ui` `field-ui` `input-ui`
110
+ - components: `text-ui` `card-ui` `tag-ui` `col-ui` `button-ui` `stat-ui` `avatar-ui` `list-item-ui` `row-ui` `grid-ui` `field-ui` `input-ui` `list-ui`
111
111
  - source: `/packages/web-components/patterns/marketing-engagement/marketing-engagement.examples.html` · demo: `/packages/web-components/patterns/marketing-engagement/marketing-engagement.html` · docs: `/site/patterns/marketing-engagement`
112
112
 
113
113
  ### navigation
@@ -118,7 +118,7 @@
118
118
  - source: `/packages/web-components/patterns/overview/overview.examples.html` · demo: `/packages/web-components/patterns/overview/overview.html` · docs: `/site/patterns/overview`
119
119
  - **Admin Sidebar** (Patterns) — The admin left rail — workspace + user switchers over a nav tree, with grouped, divided, sub-nav, and sign-in variants.
120
120
  - keywords: side rail, workspace switcher, account menu, left nav, rail
121
- - components: `nav-item-ui` `admin-shell` `admin-sidebar` `adia-mark-ui` `admin-entity-item` `admin-topbar` `nav-ui` `section-ui` `admin-statusbar` `code-ui` `nav-group-ui` `select-ui`
121
+ - components: `nav-item-ui` `admin-shell` `admin-sidebar` `adia-mark-ui` `admin-entity-item` `admin-topbar` `nav-ui` `section-ui` `admin-statusbar` `code-ui` `nav-group-ui` `select-ui` `tag-ui` `avatar-ui` `button-ui`
122
122
  - source: `/site/pages/patterns/admin-sidebar.html` · docs: `/site/patterns/admin-sidebar`
123
123
  - **App Nav** (Patterns) — Sidebar navigation tree — grouped collapsible items, dividers, section labels, badges, and popover flyouts when collapsed.
124
124
  - keywords: menu tree, side rail, groups, flyout, collapsible menu
@@ -148,11 +148,11 @@
148
148
  - source: `/packages/web-components/patterns/alert-dialog/alert-dialog.examples.html` · demo: `/packages/web-components/patterns/alert-dialog/alert-dialog.html` · docs: `/site/patterns/alert-dialog`
149
149
  - **Inline Dialog** (Patterns) — Anchored non-modal popover carrying a 1–3 field mini-form — reach for it for reversible in-context micro-decisions like rename or set-status.
150
150
  - keywords: popover, anchored, non-modal, contextual, confirm, quick edit
151
- - components: `button-ui` `field-ui` `input-ui` `card-ui` `popover-ui` `row-ui` `text-ui` `col-ui` `icon-ui` `select-ui` `tag-ui`
151
+ - components: `button-ui` `field-ui` `card-ui` `popover-ui` `row-ui` `text-ui` `col-ui` `icon-ui` `input-ui` `calendar-picker-ui` `select-ui` `tag-ui` `time-picker-ui`
152
152
  - source: `/packages/web-components/patterns/inline-dialog/inline-dialog.examples.html` · demo: `/packages/web-components/patterns/inline-dialog/inline-dialog.html` · docs: `/site/patterns/inline-dialog`
153
153
  - **Record Detail Drawer** (Patterns) — Side drawer showing a selected row's details over tabs — reach for it for list-detail workflows that must keep list scroll and filters.
154
154
  - keywords: side panel, row inspector, peek, tabbed, contact, order
155
- - components: `button-ui` `badge-ui` `col-ui` `text-ui` `timeline-item-ui` `row-ui` `tab-ui` `description-list-ui` `drawer-ui` `avatar-ui` `code-ui` `tabs-ui`
155
+ - components: `button-ui` `badge-ui` `col-ui` `text-ui` `timeline-item-ui` `row-ui` `tab-ui` `description-list-ui` `drawer-ui` `avatar-ui` `code-ui` `tabs-ui` `timeline-ui`
156
156
  - source: `/packages/web-components/patterns/record-detail-drawer/record-detail-drawer.examples.html` · demo: `/packages/web-components/patterns/record-detail-drawer/record-detail-drawer.html` · docs: `/site/patterns/record-detail-drawer`
157
157
 
158
158
  ### permissions-access
@@ -163,7 +163,7 @@
163
163
  - source: `/packages/web-components/patterns/access-requests/access-requests.examples.html` · demo: `/packages/web-components/patterns/access-requests/access-requests.html` · docs: `/site/patterns/access-requests`
164
164
  - **Admin — Keys & Export** (Patterns) — API-key/webhook management plus GDPR/CCPA data export — secret-masking and destructive-action wiring for account admin.
165
165
  - keywords: api tokens, webhooks, secrets, credentials, gdpr
166
- - components: `button-ui` `icon-ui` `list-item-ui` `tag-ui` `text-ui` `row-ui` `card-ui` `col-ui` `field-ui` `list-ui` `alert-ui` `select-ui`
166
+ - components: `button-ui` `icon-ui` `list-item-ui` `tag-ui` `text-ui` `row-ui` `card-ui` `col-ui` `field-ui` `list-ui` `alert-ui` `select-ui` `input-ui`
167
167
  - source: `/packages/web-components/patterns/admin-keys-and-export/admin-keys-and-export.examples.html` · demo: `/packages/web-components/patterns/admin-keys-and-export/admin-keys-and-export.html` · docs: `/site/patterns/admin-keys-and-export`
168
168
  - **Permissions Matrix** (Patterns) — RBAC grid of capabilities × roles with checkbox cells plus a plain-language role summary — reach for it for configurable role authoring.
169
169
  - keywords: rbac, roles, capabilities, grid, access control, entitlements
@@ -175,11 +175,11 @@
175
175
  - source: `/packages/web-components/patterns/permissions-role-picker/permissions-role-picker.examples.html` · demo: `/packages/web-components/patterns/permissions-role-picker/permissions-role-picker.html` · docs: `/site/patterns/permissions-role-picker`
176
176
  - **Permissions Sharing** (Patterns) — Share-a-resource surfaces: visibility scope picker, share link with expiry, add-people autocomplete — reach for it for a Share dialog.
177
177
  - keywords: visibility, share link, expiry, invite people, scope, access
178
- - components: `col-ui` `row-ui` `text-ui` `select-ui` `option-card-ui` `avatar-ui` `button-ui` `field-ui` `tag-ui` `card-ui` `description-list-ui` `input-ui`
178
+ - components: `col-ui` `row-ui` `text-ui` `select-ui` `option-card-ui` `avatar-ui` `button-ui` `field-ui` `tag-ui` `card-ui` `description-list-ui` `input-ui` `search-ui`
179
179
  - source: `/packages/web-components/patterns/permissions-sharing/permissions-sharing.examples.html` · demo: `/packages/web-components/patterns/permissions-sharing/permissions-sharing.html` · docs: `/site/patterns/permissions-sharing`
180
180
  - **Profile — Public & Verification** (Patterns) — Shareable public profile page plus a KYC identity-verification flow — reach for it for external bylines or regulated identity checks.
181
181
  - keywords: kyc, identity, verified badge, byline, onboarding, account
182
- - components: `text-ui` `col-ui` `button-ui` `card-ui` `alert-ui` `stepper-item-ui` `list-item-ui` `row-ui` `stat-ui` `tag-ui` `upload-ui` `avatar-ui`
182
+ - components: `text-ui` `col-ui` `button-ui` `card-ui` `alert-ui` `stepper-item-ui` `list-item-ui` `row-ui` `stat-ui` `tag-ui` `upload-ui` `avatar-ui` `field-ui` `grid-ui` `list-ui` `select-ui` `stepper-ui`
183
183
  - source: `/packages/web-components/patterns/profile-public-and-verification/profile-public-and-verification.examples.html` · demo: `/packages/web-components/patterns/profile-public-and-verification/profile-public-and-verification.html` · docs: `/site/patterns/profile-public-and-verification`
184
184
 
185
185
  ### search-discovery
@@ -193,7 +193,7 @@
193
193
 
194
194
  - **Admin Shell** (Patterns) — Canonical admin/SaaS/dashboard app shell — sidebar, topbar, scrollable content, statusbar, command palette; reach for a full internal app.
195
195
  - keywords: dashboard, saas, app frame, layout scaffold, workspace
196
- - components: `nav-item-ui` `admin-topbar` `button-ui` `admin-entity-item` `admin-content` `admin-page` `admin-page-body` `admin-page-header` `admin-scroll` `admin-shell` `admin-sidebar` `admin-statusbar`
196
+ - components: `nav-item-ui` `admin-topbar` `button-ui` `admin-entity-item` `admin-content` `admin-page` `admin-page-body` `admin-page-header` `admin-scroll` `admin-shell` `admin-sidebar` `admin-statusbar` `avatar-ui` `breadcrumb-ui` `nav-ui` `section-ui` `code-ui` `icon-ui` `select-ui`
197
197
  - source: `/packages/web-components/patterns/admin-shell/admin-shell.examples.html` · demo: `/packages/web-components/patterns/admin-shell/admin-shell.html` · docs: `/site/patterns/admin-shell`
198
198
  - **Admin Page Header** (Patterns) — The sticky page-title band inside admin-page — title, description, right-aligned page actions, and an optional tab row.
199
199
  - keywords: title band, deck, subtitle, action row, sticky title
@@ -205,7 +205,7 @@
205
205
  - source: `/site/pages/patterns/admin-content-topbar.html` · docs: `/site/patterns/admin-content-topbar`
206
206
  - **Admin Content Aside** (Patterns) — Content-attached rails — an in-content section subnav or a trailing inspector/changelog pane beside the page body.
207
207
  - keywords: inspector rail, side panel, subnav, right rail, context pane
208
- - components: `nav-item-ui` `code-ui` `tag-ui` `admin-content` `admin-page` `admin-page-body` `admin-page-header` `admin-scroll` `admin-shell` `admin-topbar` `breadcrumb-ui` `button-ui`
208
+ - components: `nav-item-ui` `code-ui` `tag-ui` `admin-content` `admin-page` `admin-page-body` `admin-page-header` `admin-scroll` `admin-shell` `admin-topbar` `breadcrumb-ui` `button-ui` `nav-ui`
209
209
  - source: `/site/pages/patterns/admin-content-aside.html` · docs: `/site/patterns/admin-content-aside`
210
210
  - **Adia Editor** (Patterns) — Design-tool/code-editor shell — toolbar, navigator, canvas, inspector, statusbar. Doc-hub — copy its canonical-hierarchy code sample, not the components list.
211
211
  - keywords: canvas layout, ide, workspace panes, design tool, inspector
@@ -243,7 +243,7 @@
243
243
  - source: `/packages/web-components/patterns/kanban-board/kanban-board.examples.html` · demo: `/packages/web-components/patterns/kanban-board/kanban-board.html` · docs: `/site/patterns/kanban-board`
244
244
  - **Wizard Drawer** (Patterns) — Multi-step form in a drawer with a header stepper and Back/Next footer — reach for it for 3–5 step onboarding or guided setup flows.
245
245
  - keywords: stepper, multi-step, onboarding, guided setup, progress, steps
246
- - components: `field-ui` `button-ui` `col-ui` `stepper-item-ui` `input-ui` `textarea-ui` `alert-ui` `code-ui` `description-list-ui` `drawer-ui` `select-ui` `stepper-ui`
246
+ - components: `field-ui` `button-ui` `col-ui` `stepper-item-ui` `input-ui` `textarea-ui` `alert-ui` `code-ui` `description-list-ui` `drawer-ui` `select-ui` `stepper-ui` `switch-ui` `text-ui`
247
247
  - source: `/packages/web-components/patterns/wizard-drawer/wizard-drawer.examples.html` · demo: `/packages/web-components/patterns/wizard-drawer/wizard-drawer.html` · docs: `/site/patterns/wizard-drawer`
248
248
 
249
249
  ## Templates
@@ -379,7 +379,7 @@
379
379
 
380
380
  - **Admin Dashboard** (Dashboards) — Tabbed SaaS analytics dashboard (KPI grid, activity chart, transactions table) — reach for it as the app's home monitoring surface.
381
381
  - keywords: analytics, kpi, metrics, saas, home
382
- - components: `text-ui` `row-ui` `col-ui` `card-ui` `button-ui` `list-item-ui` `badge-ui` `avatar-ui` `field-ui` `grid-ui` `icon-ui` `stat-ui`
382
+ - components: `text-ui` `row-ui` `col-ui` `card-ui` `button-ui` `list-item-ui` `badge-ui` `avatar-ui` `field-ui` `grid-ui` `icon-ui` `stat-ui` `segment-ui` `input-ui` `progress-ui` `chart-ui` `nav-item-ui` `divider-ui` `list-ui` `select-ui` `tab-ui` `action-item-ui` `check-ui` `col-def` `table-ui` `integration-card-ui` `menu-item-ui` `segmented-ui` `switch-ui` `textarea-ui` `admin-page-body` `drawer-ui` `nav-group-ui` `tag-ui` `action-list-ui` `admin-page` `admin-page-header` `alert-ui` `code-ui` `heatmap-ui` `link-ui` `menu-ui` `nav-ui` `tabs-ui` `time-picker-ui`
383
383
  - source: `/apps/saas/app/admin-dashboard/admin-dashboard.contents.html` · demo: `/apps/saas/app/admin-dashboard/admin-dashboard.html` · docs: `/site/examples/admin-dashboard`
384
384
 
385
385
  ### data-table
@@ -397,7 +397,7 @@
397
397
 
398
398
  - **Conversion Funnel 6step** (Pattern Library) — Conversion funnel with 6 stages, stage labels, counts, and drop-off conversion percentages.
399
399
  - keywords: funnel, conversion, analytics, stages, metrics, drop-off, rate, marketing
400
- - components: `progress-row-ui` `text-ui` `col-ui` `card-ui` `row-ui`
400
+ - components: `progress-ui` `text-ui` `col-ui` `card-ui` `row-ui`
401
401
  - source: `/catalog/ui-patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html` · demo: `/catalog/ui-patterns/app/conversion-funnel-6step/conversion-funnel-6step.html` · docs: `/site/examples/patterns/conversion-funnel-6step`
402
402
  - **Email Inbox List** (Pattern Library) — Email inbox list — scrollable list of email rows with sender avatar, subject, preview snippet, timestamp, and unread badge indicator. List-item-ui rows with dividers.
403
403
  - keywords: email, inbox, list, message, unread, sender, subject, preview, timestamp, avatar
@@ -405,7 +405,7 @@
405
405
  - source: `/catalog/ui-patterns/app/email-inbox-list/email-inbox-list.contents.html` · demo: `/catalog/ui-patterns/app/email-inbox-list/email-inbox-list.html` · docs: `/site/examples/patterns/email-inbox-list`
406
406
  - **Import Mapping** (Pattern Library) — Multi-step CSV/file import flow — upload, field mapping (source columns ↔ target fields), preview, import. Shows the field-mapping step prominently since it's the part most often m
407
407
  - keywords: import, csv, upload, mapping, fields, columns, bulk, data, migration
408
- - components: `text-ui` `col-ui` `icon-ui` `grid-ui` `list-item-ui` `select-ui` `button-ui` `avatar-ui` `card-ui` `row-ui` `alert-ui` `badge-ui`
408
+ - components: `text-ui` `col-ui` `icon-ui` `grid-ui` `list-item-ui` `select-ui` `button-ui` `avatar-ui` `card-ui` `row-ui` `alert-ui` `badge-ui` `list-ui` `step-progress-ui` `table-ui`
409
409
  - source: `/catalog/ui-patterns/app/import-mapping/import-mapping.contents.html` · demo: `/catalog/ui-patterns/app/import-mapping/import-mapping.html` · docs: `/site/examples/patterns/import-mapping`
410
410
  - **Invoice Line Items** (Pattern Library) — Invoice table with line items, quantities, unit prices, and total row. Card with invoice header, item rows, subtotal, tax, and total due.
411
411
  - keywords: invoice, table, line, items, quantities, totals, billing, amount, price, quantity
@@ -437,7 +437,7 @@
437
437
  - source: `/catalog/ui-patterns/app/users-table-badge/users-table-badge.contents.html` · demo: `/catalog/ui-patterns/app/users-table-badge/users-table-badge.html` · docs: `/site/examples/patterns/users-table-badge`
438
438
  - **Data Blocks** (Pattern Library) — Real-time metrics dashboard with live counter cards, streaming line chart, error-rate progress, and last-updated timestamp.
439
439
  - keywords: real-time, metrics, live, dashboard, streaming, counters, charts, websocket, telemetry, monitoring
440
- - components: `text-ui` `col-ui` `row-ui` `card-ui` `button-ui` `icon-ui` `progress-ui` `col-def` `badge-ui` `chart-ui` `description-list-ui` `grid-ui`
440
+ - components: `text-ui` `col-ui` `row-ui` `card-ui` `button-ui` `icon-ui` `progress-ui` `col-def` `badge-ui` `chart-ui` `description-list-ui` `grid-ui` `table-ui` `tag-ui`
441
441
  - source: `/catalog/ui-patterns/v050-data-blocks/v050-data-blocks.contents.html` · demo: `/catalog/ui-patterns/v050-data-blocks/v050-data-blocks.html` · docs: `/site/examples/patterns/v050-data-blocks`
442
442
  - **Chart With Filter Pills** (Pattern Library) — Chart card with time-range pill selector in the header — segmented switch between day/week/month/year + chart body + footer caption.
443
443
  - keywords: chart, filter, pills, time-range, segmented, period, selector, analytics, dashboard, card
@@ -472,7 +472,7 @@
472
472
  - source: `/catalog/ui-patterns/app/survey-rating-form/survey-rating-form.contents.html` · demo: `/catalog/ui-patterns/app/survey-rating-form/survey-rating-form.html` · docs: `/site/examples/patterns/survey-rating-form`
473
473
  - **Form Blocks** (Pattern Library) — File upload form with drag and drop zone and file list. Upload-ui with browse fallback, file-type hints, and max-size note.
474
474
  - keywords: file, upload, drag-and-drop, dnd, browse, attachments, form-input, drop, zone, file-list
475
- - components: `field-ui` `button-ui` `col-ui` `text-ui` `input-ui` `row-ui` `card-ui` `tag-ui` `radio-ui` `calendar-picker-ui` `check-ui` `grid-ui`
475
+ - components: `field-ui` `button-ui` `col-ui` `text-ui` `input-ui` `row-ui` `card-ui` `tag-ui` `radio-ui` `calendar-picker-ui` `check-ui` `grid-ui` `icon-ui` `select-ui` `textarea-ui` `search-ui` `step-progress-ui` `time-picker-ui` `upload-ui`
476
476
  - source: `/catalog/ui-patterns/v050-form-blocks/v050-form-blocks.contents.html` · demo: `/catalog/ui-patterns/v050-form-blocks/v050-form-blocks.html` · docs: `/site/examples/patterns/v050-form-blocks`
477
477
  - **Accordion Settings** (Pattern Library) — Settings panel organized as accordion — expandable sections (profile / notifications / privacy / advanced) each containing form controls.
478
478
  - keywords: accordion, settings, collapsible, expandable, sections, preferences, profile, notifications, privacy
@@ -515,7 +515,7 @@
515
515
  - source: `/catalog/ui-patterns/app/testimonials-avatar-cards/testimonials-avatar-cards.contents.html` · demo: `/catalog/ui-patterns/app/testimonials-avatar-cards/testimonials-avatar-cards.html` · docs: `/site/examples/patterns/testimonials-avatar-cards`
516
516
  - **Marketing Blocks** (Pattern Library) — Two-column hero — left side heading + lede + CTA buttons; right side product image or media.
517
517
  - keywords: hero, split-hero, two-column, landing-page, heading, lede, media, product-image, cta
518
- - components: `text-ui` `col-ui` `link-ui` `row-ui` `accordion-item-ui` `grid-ui` `avatar-ui` `button-ui` `card-ui` `icon-ui` `accordion-ui` `divider-ui`
518
+ - components: `text-ui` `col-ui` `link-ui` `row-ui` `accordion-item-ui` `grid-ui` `avatar-ui` `button-ui` `card-ui` `icon-ui` `accordion-ui` `divider-ui` `image-ui`
519
519
  - source: `/catalog/ui-patterns/v050-marketing-blocks/v050-marketing-blocks.contents.html` · demo: `/catalog/ui-patterns/v050-marketing-blocks/v050-marketing-blocks.html` · docs: `/site/examples/patterns/v050-marketing-blocks`
520
520
  - **Image Carousel** (Pattern Library) — Horizontal image carousel — current slide + peek of next/prev + dot indicators + autoplay-pause control.
521
521
  - keywords: carousel, slider, swiper, image-gallery, slides, photos, hero, rotator, paginated
@@ -584,7 +584,7 @@
584
584
  - source: `/apps/user-flow/app/onboarding/first-action/first-action.contents.html` · demo: `/apps/user-flow/app/onboarding/first-action/first-action.html` · docs: `/site/examples/onboarding/first-action`
585
585
  - **Review** (Onboarding) — 'Review your setup' onboarding step — summary of choices before finishing; reach for it as the pre-completion review step of onboarding.
586
586
  - keywords: summary, confirm, recap, verify, overview
587
- - components: `text-ui` `button-ui` `field-ui` `option-card-ui` `col-ui` `avatar-ui` `drawer-ui` `grid-ui` `select-ui` `switch-ui` `divider-ui` `input-ui`
587
+ - components: `text-ui` `button-ui` `field-ui` `option-card-ui` `col-ui` `avatar-ui` `drawer-ui` `grid-ui` `select-ui` `switch-ui` `divider-ui` `input-ui` `textarea-ui` `adia-mark-ui` `alert-ui` `badge-ui` `step-progress-ui`
588
588
  - source: `/apps/user-flow/app/onboarding/review/review.contents.html` · demo: `/apps/user-flow/app/onboarding/review/review.html` · docs: `/site/examples/onboarding/review`
589
589
  - **Notifications** (Onboarding) — Notification-preferences onboarding step — toggles for email and push channels; reach for it as the alert opt-in step of product onboarding.
590
590
  - keywords: preferences, alerts, email, push, opt-in
@@ -615,7 +615,7 @@
615
615
  - source: `/catalog/ui-patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html` · demo: `/catalog/ui-patterns/app/destructive-confirm-modal/destructive-confirm-modal.html` · docs: `/site/examples/patterns/destructive-confirm-modal`
616
616
  - **Content Blocks** (Pattern Library) — Masonry image gallery — variable-height tiles in a column-flow grid with hover overlays.
617
617
  - keywords: masonry, gallery, images, photos, grid, variable-height, pinterest, tiles, overlays, lightbox
618
- - components: `text-ui` `col-ui` `card-ui` `avatar-ui` `image-ui` `row-ui` `progress-ui` `col-def` `grid-ui` `timeline-item-ui` `avatar-group-ui` `badge-ui`
618
+ - components: `text-ui` `col-ui` `card-ui` `avatar-ui` `image-ui` `row-ui` `progress-ui` `col-def` `grid-ui` `timeline-item-ui` `avatar-group-ui` `badge-ui` `blockquote-ui` `description-list-ui` `rating-ui` `table-ui` `timeline-ui`
619
619
  - source: `/catalog/ui-patterns/v050-content-blocks/v050-content-blocks.contents.html` · demo: `/catalog/ui-patterns/v050-content-blocks/v050-content-blocks.html` · docs: `/site/examples/patterns/v050-content-blocks`
620
620
  - **Popover With Content** (Pattern Library) — Popover anchored to a trigger button, containing a small content panel with a heading + body text + close affordance.
621
621
  - keywords: popover, popup, overlay, anchor, trigger, content, tooltip, floating, panel, hint
@@ -674,19 +674,19 @@
674
674
  - source: `/apps/user-flow/app/registration/address/address.contents.html` · demo: `/apps/user-flow/app/registration/address/address.html` · docs: `/site/examples/registration/address`
675
675
  - **Brand scrape** (Registration) — 'Pull your brand' signup step — URL input that fetches logo/colors into preview cards; reach for it as the auto-brand-import step of signup.
676
676
  - keywords: logo, colors, website, url, theme
677
- - components: `text-ui` `button-ui` `row-ui` `avatar-ui` `badge-ui` `card-ui` `icon-ui` `adia-mark-ui` `check-ui` `col-ui` `field-ui` `input-ui`
677
+ - components: `text-ui` `button-ui` `row-ui` `avatar-ui` `badge-ui` `card-ui` `icon-ui` `adia-mark-ui` `check-ui` `col-ui` `field-ui` `input-ui` `step-progress-ui`
678
678
  - source: `/apps/user-flow/app/registration/brand-scrape/brand-scrape.contents.html` · demo: `/apps/user-flow/app/registration/brand-scrape/brand-scrape.html` · docs: `/site/examples/registration/brand-scrape`
679
679
  - **Support** (Registration) — Customer-support setup signup step — configure help channels and contacts; reach for it as an optional support-setup step of registration.
680
680
  - keywords: help, contact, channels, desk, service
681
- - components: `text-ui` `card-ui` `icon-ui` `switch-ui` `field-ui` `segment-ui` `input-ui` `adia-mark-ui` `alert-ui` `button-ui` `check-ui` `col-ui`
681
+ - components: `text-ui` `card-ui` `icon-ui` `switch-ui` `field-ui` `segment-ui` `input-ui` `adia-mark-ui` `alert-ui` `button-ui` `check-ui` `col-ui` `divider-ui` `grid-ui` `segmented-ui` `step-progress-ui`
682
682
  - source: `/apps/user-flow/app/registration/support/support.contents.html` · demo: `/apps/user-flow/app/registration/support/support.html` · docs: `/site/examples/registration/support`
683
683
  - **Departments** (Registration) — 'Set up your departments' signup step — add and name org departments; reach for it as the org-structure step of a multi-team registration.
684
684
  - keywords: teams, org, divisions, groups, units
685
- - components: `check-ui` `text-ui` `button-ui` `row-ui` `tag-ui` `adia-mark-ui` `alert-ui` `col-ui` `divider-ui` `field-ui` `grid-ui` `input-ui`
685
+ - components: `check-ui` `text-ui` `button-ui` `row-ui` `tag-ui` `adia-mark-ui` `alert-ui` `col-ui` `divider-ui` `field-ui` `grid-ui` `input-ui` `step-progress-ui`
686
686
  - source: `/apps/user-flow/app/registration/departments/departments.contents.html` · demo: `/apps/user-flow/app/registration/departments/departments.html` · docs: `/site/examples/registration/departments`
687
687
  - **Org review** (Registration) — 'Review your org chart' signup step — org-structure summary before finishing; reach for it as the org-confirmation step of registration.
688
688
  - keywords: organization, chart, structure, summary, hierarchy
689
- - components: `text-ui` `button-ui` `row-ui` `avatar-ui` `badge-ui` `card-ui` `list-item-ui` `field-ui` `segment-ui` `icon-ui` `input-ui` `select-ui`
689
+ - components: `text-ui` `button-ui` `row-ui` `avatar-ui` `badge-ui` `card-ui` `list-item-ui` `field-ui` `segment-ui` `icon-ui` `input-ui` `select-ui` `adia-mark-ui` `check-ui` `drawer-ui` `list-ui` `segmented-ui` `step-progress-ui`
690
690
  - source: `/apps/user-flow/app/registration/org-review/org-review.contents.html` · demo: `/apps/user-flow/app/registration/org-review/org-review.html` · docs: `/site/examples/registration/org-review`
691
691
  - **Personal** (Registration) — 'Round out your profile' signup step — extra personal-detail fields; reach for it as a profile-completion step of a registration wizard.
692
692
  - keywords: profile, details, bio, about, complete
@@ -701,23 +701,23 @@
701
701
 
702
702
  - **General** (Settings) — Workspace general-settings page — name, defaults, appearance, notifications, danger zone; reach for it as the primary settings surface.
703
703
  - keywords: workspace, preferences, configuration, account, defaults
704
- - components: `divider-ui` `switch-ui` `field-ui` `check-ui` `button-ui` `card-ui` `stat-ui` `text-ui` `col-ui` `grid-ui` `input-ui` `theme-panel`
704
+ - components: `divider-ui` `switch-ui` `field-ui` `check-ui` `button-ui` `card-ui` `stat-ui` `text-ui` `col-ui` `grid-ui` `input-ui` `theme-panel` `alert-ui` `range-ui` `select-ui` `textarea-ui` `avatar-ui` `badge-ui` `drawer-ui`
705
705
  - source: `/apps/saas/app/settings-page/settings-page.contents.html` · demo: `/apps/saas/app/settings-page/settings-page.html` · docs: `/site/examples/settings-page`
706
706
  - **Billing** (Settings) — Billing settings sub-page — trial countdown, plan card with monthly/annual toggle, usage quotas; reach for it as the plan-and-usage tab.
707
707
  - keywords: subscription, plan, invoice, usage, quota
708
- - components: `text-ui` `field-ui` `button-ui` `icon-ui` `input-ui` `row-ui` `card-ui` `col-ui` `divider-ui` `list-item-ui` `avatar-ui` `badge-ui`
708
+ - components: `text-ui` `field-ui` `button-ui` `icon-ui` `input-ui` `row-ui` `card-ui` `col-ui` `divider-ui` `list-item-ui` `avatar-ui` `badge-ui` `alert-ui` `grid-ui` `progress-ui` `drawer-ui` `radio-ui` `select-ui` `list-ui` `segment-ui` `stat-ui` `segmented-ui` `table-ui` `textarea-ui`
709
709
  - source: `/apps/saas/app/billing/billing.contents.html` · demo: `/apps/saas/app/billing/billing.html` · docs: `/site/examples/billing`
710
710
  - **Members** (Settings) — Members settings sub-page — invite-by-email form plus an active roster table with roles; reach for it as the workspace people-management tab.
711
711
  - keywords: team, invite, roster, roles, seats
712
- - components: `field-ui` `text-ui` `button-ui` `check-ui` `col-ui` `card-ui` `divider-ui` `avatar-ui` `badge-ui` `grid-ui` `input-ui` `row-ui`
712
+ - components: `field-ui` `text-ui` `button-ui` `check-ui` `col-ui` `card-ui` `divider-ui` `avatar-ui` `badge-ui` `grid-ui` `row-ui` `select-ui` `stat-ui` `switch-ui` `input-ui` `textarea-ui` `drawer-ui` `list-item-ui` `alert-ui` `description-list-ui` `list-ui` `modal-ui` `search-ui` `table-ui`
713
713
  - source: `/apps/saas/app/members/members.contents.html` · demo: `/apps/saas/app/members/members.html` · docs: `/site/examples/members`
714
714
  - **Integrations** (Settings) — Connected-apps settings sub-page — grid of third-party cards with per-app configure drawers; reach for it as the app-connections settings tab.
715
715
  - keywords: apps, connections, oauth, third-party, services
716
- - components: `field-ui` `text-ui` `button-ui` `col-ui` `divider-ui` `input-ui` `switch-ui` `check-ui` `row-ui` `card-ui` `avatar-ui` `badge-ui`
716
+ - components: `field-ui` `text-ui` `button-ui` `col-ui` `divider-ui` `input-ui` `switch-ui` `check-ui` `row-ui` `card-ui` `avatar-ui` `badge-ui` `icon-ui` `grid-ui` `select-ui` `drawer-ui` `alert-ui` `list-item-ui` `stat-ui` `code-ui` `range-ui` `empty-state-ui` `list-ui`
717
717
  - source: `/apps/saas/app/integrations/integrations.contents.html` · demo: `/apps/saas/app/integrations/integrations.html` · docs: `/site/examples/integrations`
718
718
  - **Profile & Security** (Settings) — Profile-and-security settings sub-page — name/avatar fields, password change, 2FA setup, sessions; reach for it as the account-security tab.
719
719
  - keywords: account, password, 2fa, sessions, authentication
720
- - components: `text-ui` `button-ui` `field-ui` `col-ui` `avatar-ui` `input-ui` `divider-ui` `row-ui` `card-ui` `code-ui` `icon-ui` `alert-ui`
720
+ - components: `text-ui` `button-ui` `field-ui` `col-ui` `avatar-ui` `input-ui` `divider-ui` `row-ui` `card-ui` `code-ui` `icon-ui` `alert-ui` `badge-ui` `grid-ui` `drawer-ui` `check-ui` `select-ui` `switch-ui` `otp-input-ui` `textarea-ui` `upload-ui`
721
721
  - source: `/apps/saas/app/profile-security/profile-security.contents.html` · demo: `/apps/saas/app/profile-security/profile-security.html` · docs: `/site/examples/profile-security`
722
722
 
723
723
  ### system-status
@@ -739,7 +739,7 @@
739
739
 
740
740
  - **Checkout success — 6-trait composed flow** (Trait compositions) — Checkout→success flow stitched from six independent traits — reach for it as the canonical place-order → success product moment.
741
741
  - keywords: place-order, payment, celebration, animation, ecommerce
742
- - components: `list-item-ui` `text-ui` `field-ui` `switch-ui` `col-ui` `row-ui` `button-ui` `input-ui` `list-ui` `stat-ui` `card-ui` `code-ui`
742
+ - components: `list-item-ui` `text-ui` `field-ui` `switch-ui` `col-ui` `row-ui` `button-ui` `input-ui` `list-ui` `stat-ui` `card-ui` `code-ui` `grid-ui` `tag-ui` `icon-ui`
743
743
  - source: `/playgrounds/composed-flow/app/composed-flow.contents.html` · demo: `/playgrounds/composed-flow/app/composed-flow.html` · docs: `/site/examples/composed-flow`
744
744
 
745
745
  ### workflow
package/gen-ui/server.js CHANGED
@@ -158,7 +158,9 @@ Mode selection (monolithic only; zettel uses "instant"):
158
158
  - "thinking" \u2014 Full LLM-powered generation with semantic search, decomposition, and streaming.
159
159
  - "instant" \u2014 fast pattern matching, no LLM.
160
160
 
161
- The generator knows 96+ UI patterns across 5 domains: forms, data, layout, agent, navigation.`,
161
+ The generator knows 96+ UI patterns across 5 domains: forms, data, layout, agent, navigation.
162
+
163
+ Regenerating an existing surface (not first render): this tool stays request/response \u2014 it does not itself know about surface lifecycle state. The CALLER owns the pending/stale bracket (spec-a2ui-surface-lifecycle.md, ADR-0061): call the renderer's beginSurfaceUpdate(surfaceId) BEFORE invoking this tool and retain the generationId it returns; on success, applyTo(surfaceId, result.messages) \u2014 the A2UI messages live on this tool's own "messages" field \u2014 then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error \u2014 REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Bracketing keeps the prior answer visible (no blank frame) while this call is in flight.`,
162
164
  {
163
165
  intent: z.string().describe("Description of the UI to generate"),
164
166
  engine: z.enum(["monolithic", "zettel"]).optional().describe('Generation engine. "monolithic" (default) is pattern-match + adapt. "zettel" is fragment-graph composition.'),
@@ -51,7 +51,9 @@ function extractJsonObject(text) {
51
51
  }
52
52
  throw new Error("Unbalanced JSON object in LLM response");
53
53
  }
54
- const DESCRIPTION = `Refine a previous generate_ui result whose validation failed. Pass the messages from the prior result + the validation errors, and the tool produces a corrected version. For monolithic engine; zettel has refine_composition.`;
54
+ const DESCRIPTION = `Refine a previous generate_ui result whose validation failed. Pass the messages from the prior result + the validation errors, and the tool produces a corrected version. For monolithic engine; zettel has refine_composition.
55
+
56
+ This tool stays request/response \u2014 the CALLER owns the surface lifecycle bracket if the prior (failing) messages already rendered (spec-a2ui-surface-lifecycle.md, ADR-0061): call beginSurfaceUpdate(surfaceId) BEFORE this call and retain the generationId it returns; on success, applyTo(surfaceId, result.messages) \u2014 the corrected A2UI messages live on this tool's own "messages" field \u2014 then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error \u2014 REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Validate-and-repair before first render needs no bracket \u2014 only re-validation of an already-rendered surface does.`;
55
57
  class RefineFailure extends Error {
56
58
  body;
57
59
  constructor(body) {
@@ -158,7 +158,9 @@ Two modes:
158
158
 
159
159
  Returns a new \`state_id\` (versioned chain from the parent), the A2UI op-list applied, the post-op HTML, and a delta summary. Failed ops are reported in \`ops_failed\` with reasons.
160
160
 
161
- For *fresh creation* use \`compose_from_chunks\`, not this tool.`,
161
+ For *fresh creation* use \`compose_from_chunks\`, not this tool.
162
+
163
+ This tool stays request/response \u2014 the CALLER owns the surface lifecycle bracket (spec-a2ui-surface-lifecycle.md, ADR-0061): call beginSurfaceUpdate(surfaceId) BEFORE this call and retain the generationId it returns; on success, applyTo(surfaceId, result.ops_applied) \u2014 the applied A2UI messages live on this tool's own "ops_applied" field, not "messages" \u2014 then commitSurfaceUpdate(surfaceId, generationId) with that SAME id (a superseded id is ignored, not an error \u2014 REQ-008); on failure, abortSurfaceUpdate(surfaceId, generationId, error) with that same id. Bracketing keeps the surface's prior content visible and marked stale (no blank frame) while the refinement is in flight.`,
162
164
  {
163
165
  state_id: z.string().describe("State id from a prior compose_from_chunks or refine_composition call"),
164
166
  intent: z.string().optional().describe('Natural-language description of what to change (e.g. "add a country list to page-content")'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/mcp",
3
- "version": "0.8.39",
3
+ "version": "0.8.41",
4
4
  "description": "AdiaUI's three MCP servers, one npm package (gh#1240, ADR-0051). `adia-mcp gen-ui` — the 31-tool generation server (compose engine, corpus, retrieval, feedback/eval loop). `adia-mcp protocol` — the 5-tool A2UI protocol server (validate + registry introspection + the L0/L1 catalog-contract rungs, no generation system, no model client). `adia-mcp factory` — the 7-tool adia-factory server (orient, scaffold, audit, surface QA for building adia-ui apps from any MCP harness; no generation system, no model client). ADR-0048 §3's distinct-server decision is unchanged; only the distribution unified.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -3,7 +3,9 @@ import { registry, wiringRegistry } from "@adia-ai/a2ui";
3
3
  import { validateSchema } from "@adia-ai/a2ui/validate";
4
4
  const VALIDATE_DOCUMENT_DESCRIPTION = `Validate A2UI messages against the protocol: message envelope shape, flat-adjacency child references, component types resolvable in the runtime registry, and the semantic checks the renderer relies on (Card content model, renderable content, slot addressing).
5
5
 
6
- This is the PROTOCOL-side form of validation. It needs no catalog and no corpus, so it validates any A2UI document from any producer. For catalog-aware validation (per-component prop schemas via the v0.9 catalog) plus anti-pattern scoring, use gen-ui-mcp's \`validate_schema\` instead.`;
6
+ This is the PROTOCOL-side form of validation. It needs no catalog and no corpus, so it validates any A2UI document from any producer. For catalog-aware validation (per-component prop schemas via the v0.9 catalog) plus anti-pattern scoring, use gen-ui-mcp's \`validate_schema\` instead.
7
+
8
+ Scope: this validates the shipping A2UI DIALECT, not the A2UI v1.0 Candidate wire format. Candidate envelopes use renderer/agent terminology \u2014 kinds \`callRendererFunction\`/\`callAgentFunction\` + \`rendererFunctionResponse\`/\`agentFunctionResponse\`, MIME \`application/a2ui+json\`, strict catalog resolution \u2014 and are validated by the vendored genui-system (\`@genui/core\`) validator, which dialect documents reach through the wire-bridge.`;
7
9
  const GET_REGISTRY_MAP_DESCRIPTION = `Get the A2UI protocol registry: every component type name mapped to the custom-element tag that renders it.
8
10
 
9
11
  This is the registry view \u2014 the authoritative answer to "what types exist and what does each one render to". It carries no descriptions, categories, or prop schemas: those are catalog data and live on gen-ui-mcp's \`get_component_map\` tool instead. Alias types (several type names resolving to one tag, e.g. Toggle and Switch both -> switch-ui) are reported as such.`;