@adia-ai/a2ui-corpus 0.3.2 → 0.3.4

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.
Files changed (183) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.md +64 -0
  3. package/catalog-a2ui_0_9.json +721 -39
  4. package/catalog-a2ui_0_9_rules.txt +29 -0
  5. package/chunks/_index.json +5 -5
  6. package/chunks/agent-activity-feed.json +1 -1
  7. package/chunks/agent-reasoning-collapsed.json +1 -1
  8. package/chunks/auth-account-deleted-actions.json +1 -1
  9. package/chunks/auth-account-deleted.json +1 -1
  10. package/chunks/auth-card-content.json +1 -1
  11. package/chunks/auth-card-header.json +1 -1
  12. package/chunks/auth-email-entry.json +1 -1
  13. package/chunks/auth-email-verify-confirm.json +1 -1
  14. package/chunks/auth-email-verify.json +1 -1
  15. package/chunks/auth-forbidden-actions.json +1 -1
  16. package/chunks/auth-forbidden.json +1 -1
  17. package/chunks/auth-invite-actions.json +1 -1
  18. package/chunks/auth-invite-team-card.json +1 -1
  19. package/chunks/auth-link-expired-form.json +1 -1
  20. package/chunks/auth-link-expired.json +1 -1
  21. package/chunks/auth-locked-account.json +1 -1
  22. package/chunks/auth-locked-recovery-options.json +1 -1
  23. package/chunks/auth-mfa-enrollment-submit.json +1 -1
  24. package/chunks/auth-mfa-enrollment.json +1 -1
  25. package/chunks/auth-mfa-fallback-actions.json +1 -1
  26. package/chunks/auth-mfa-recovery.json +1 -1
  27. package/chunks/auth-new-password-form.json +1 -1
  28. package/chunks/auth-new-password.json +1 -1
  29. package/chunks/auth-oauth-fallback-actions.json +1 -1
  30. package/chunks/auth-oauth-interstitial.json +1 -1
  31. package/chunks/auth-password-challenge.json +1 -1
  32. package/chunks/auth-password-reset-form.json +1 -1
  33. package/chunks/auth-password-reset.json +1 -1
  34. package/chunks/auth-profile-form.json +1 -1
  35. package/chunks/auth-profile-setup.json +1 -1
  36. package/chunks/auth-reset-sent.json +1 -1
  37. package/chunks/auth-session-expired-actions.json +1 -1
  38. package/chunks/auth-session-expired.json +1 -1
  39. package/chunks/auth-signin-card-email.json +1 -1
  40. package/chunks/auth-signin-card-magic-link.json +1 -1
  41. package/chunks/auth-signin-card-mfa.json +1 -1
  42. package/chunks/auth-signin-card-otp.json +1 -1
  43. package/chunks/auth-signin-card-password.json +1 -1
  44. package/chunks/auth-signin-card-recovery.json +1 -1
  45. package/chunks/auth-signout-actions.json +1 -1
  46. package/chunks/auth-signout.json +1 -1
  47. package/chunks/auth-signup-email-entry.json +1 -1
  48. package/chunks/auth-signup-entry.json +1 -1
  49. package/chunks/auth-signup-social-auths.json +1 -1
  50. package/chunks/auth-signup-verify.json +1 -1
  51. package/chunks/auth-social-auths.json +1 -1
  52. package/chunks/auth-sso-providers.json +1 -1
  53. package/chunks/auth-sso-required.json +1 -1
  54. package/chunks/auth-team-invite.json +1 -1
  55. package/chunks/chat-streaming-surface.json +1 -1
  56. package/chunks/{command-palette-grouped.json → command-palette.json} +2 -2
  57. package/chunks/commerce-pricing-tiers.json +1 -1
  58. package/chunks/conversion-funnel-6step.json +1 -1
  59. package/chunks/dashboard-acquisition-panel.json +1 -1
  60. package/chunks/dashboard-admin-page.json +2 -2
  61. package/chunks/dashboard-audience-kpis.json +1 -1
  62. package/chunks/dashboard-audience-panel.json +1 -1
  63. package/chunks/dashboard-behavior-panel.json +1 -1
  64. package/chunks/dashboard-chart-recent.json +1 -1
  65. package/chunks/dashboard-cohort-retention.json +1 -1
  66. package/chunks/dashboard-conversion-panel.json +1 -1
  67. package/chunks/dashboard-country-list.json +1 -1
  68. package/chunks/dashboard-filter-bar.json +1 -1
  69. package/chunks/dashboard-funnel.json +1 -1
  70. package/chunks/dashboard-kpi-grid.json +1 -1
  71. package/chunks/dashboard-notifications-feed.json +1 -1
  72. package/chunks/dashboard-notifications-panel.json +1 -1
  73. package/chunks/dashboard-overview-panel.json +1 -1
  74. package/chunks/dashboard-page-header.json +1 -1
  75. package/chunks/dashboard-pages-table.json +1 -1
  76. package/chunks/dashboard-quick-actions.json +1 -1
  77. package/chunks/dashboard-reports-panel.json +1 -1
  78. package/chunks/dashboard-reports-table.json +1 -1
  79. package/chunks/dashboard-spark-cards.json +1 -1
  80. package/chunks/dashboard-storage-card.json +1 -1
  81. package/chunks/dashboard-tabs.json +1 -1
  82. package/chunks/dashboard-team-actions-storage.json +1 -1
  83. package/chunks/dashboard-team-list.json +1 -1
  84. package/chunks/dashboard-traffic-channels.json +1 -1
  85. package/chunks/dashboard-transactions-table.json +1 -1
  86. package/chunks/destructive-confirm-modal.json +1 -1
  87. package/chunks/drawer-2fa-key.json +1 -1
  88. package/chunks/drawer-2fa-sms.json +1 -1
  89. package/chunks/drawer-2fa-totp.json +1 -1
  90. package/chunks/drawer-cancel-sub.json +1 -1
  91. package/chunks/drawer-change-plan.json +1 -1
  92. package/chunks/drawer-custom-roles.json +1 -1
  93. package/chunks/drawer-data-start.json +1 -1
  94. package/chunks/drawer-delete-account.json +1 -1
  95. package/chunks/drawer-delete-workspace.json +1 -1
  96. package/chunks/drawer-discord.json +1 -1
  97. package/chunks/drawer-figma.json +1 -1
  98. package/chunks/drawer-first-dashboard.json +1 -1
  99. package/chunks/drawer-gcal.json +1 -1
  100. package/chunks/drawer-github.json +1 -1
  101. package/chunks/drawer-invite.json +1 -1
  102. package/chunks/drawer-payment-method.json +1 -1
  103. package/chunks/drawer-report.json +1 -1
  104. package/chunks/drawer-revoke-session.json +1 -1
  105. package/chunks/drawer-role.json +1 -1
  106. package/chunks/drawer-slack.json +1 -1
  107. package/chunks/drawer-smtp.json +1 -1
  108. package/chunks/drawer-source.json +1 -1
  109. package/chunks/drawer-transaction.json +1 -1
  110. package/chunks/editor-code-pane.json +1 -1
  111. package/chunks/editor-page-shell.json +1 -1
  112. package/chunks/editor-preview-pane.json +1 -1
  113. package/chunks/error-404-actions.json +1 -1
  114. package/chunks/error-404.json +1 -1
  115. package/chunks/error-500-actions.json +1 -1
  116. package/chunks/error-500.json +1 -1
  117. package/chunks/error-maintenance-actions.json +1 -1
  118. package/chunks/error-maintenance.json +1 -1
  119. package/chunks/error-page-shell.json +1 -1
  120. package/chunks/form-page-shell.json +4 -4
  121. package/chunks/kanban-board-3col.json +1 -1
  122. package/chunks/marketing-hero-cta.json +1 -1
  123. package/chunks/marketing-page-shell.json +1 -1
  124. package/chunks/member-edit-drawer.json +1 -1
  125. package/chunks/onb-completion.json +1 -1
  126. package/chunks/onb-extension-install.json +1 -1
  127. package/chunks/onb-hero-welcome.json +1 -1
  128. package/chunks/onb-import-picker.json +1 -1
  129. package/chunks/onb-mobile-handoff.json +1 -1
  130. package/chunks/onb-notification-prefs.json +1 -1
  131. package/chunks/onb-persona-picker.json +1 -1
  132. package/chunks/onb-provider-tiles.json +1 -1
  133. package/chunks/onb-settings-review.json +1 -1
  134. package/chunks/onb-step-footer.json +1 -1
  135. package/chunks/onb-step-header.json +1 -1
  136. package/chunks/onb-step-progress.json +1 -1
  137. package/chunks/onb-step-shell.json +1 -1
  138. package/chunks/onb-story-pane.json +1 -1
  139. package/chunks/onb-tutorial-steps.json +1 -1
  140. package/chunks/playground-a2ui.json +1 -1
  141. package/chunks/playground-app-shell.json +1 -1
  142. package/chunks/playground-chat.json +1 -1
  143. package/chunks/playground-construct-canvas.json +1 -1
  144. package/chunks/playground-gen-ui.json +1 -1
  145. package/chunks/playground-render-preview.json +1 -1
  146. package/chunks/playground-streams-bridge.json +2 -2
  147. package/chunks/playground-table-toolbar.json +1 -1
  148. package/chunks/reg-address-form.json +1 -1
  149. package/chunks/reg-billing-card.json +1 -1
  150. package/chunks/reg-brand-scrape.json +1 -1
  151. package/chunks/reg-departments-toggle.json +1 -1
  152. package/chunks/reg-extended-profile.json +1 -1
  153. package/chunks/reg-final-done.json +1 -1
  154. package/chunks/reg-helpdesk-grid.json +1 -1
  155. package/chunks/reg-import-picker.json +1 -1
  156. package/chunks/reg-integrations-grid.json +1 -1
  157. package/chunks/reg-invite-form.json +1 -1
  158. package/chunks/reg-legal-entity.json +1 -1
  159. package/chunks/reg-org-chart-review.json +1 -1
  160. package/chunks/reg-profile-identity.json +1 -1
  161. package/chunks/reg-step-footer.json +1 -1
  162. package/chunks/reg-step-header.json +1 -1
  163. package/chunks/reg-step-progress.json +1 -1
  164. package/chunks/reg-step-shell.json +1 -1
  165. package/chunks/reg-story-pane.json +1 -1
  166. package/chunks/reg-success-summary.json +1 -1
  167. package/chunks/reg-team-size.json +1 -1
  168. package/chunks/reg-usecase-picker.json +1 -1
  169. package/chunks/reg-workspace-name.json +1 -1
  170. package/chunks/settings-billing-plan.json +1 -1
  171. package/chunks/settings-general-form.json +1 -1
  172. package/chunks/settings-integrations.json +1 -1
  173. package/chunks/settings-members-invite.json +1 -1
  174. package/chunks/settings-notifications.json +1 -1
  175. package/chunks/settings-page-shell.json +1 -1
  176. package/chunks/settings-profile-security.json +1 -1
  177. package/chunks/user-profile-card.json +1 -1
  178. package/chunks/users-table-badge.json +1 -1
  179. package/compositions/{form → forms}/data-import-wizard.json +1 -1
  180. package/exemplars/README.md +49 -0
  181. package/fragments/layout/auth-card-header.json +64 -0
  182. package/package.json +2 -2
  183. package/scripts/chunk-library.js +14 -6
package/CHANGELOG.md CHANGED
@@ -7,10 +7,99 @@ compositions, exemplars, held-out eval fixtures, feedback registry,
7
7
  gap registry. Consumed by `@adia-ai/a2ui-retrieval` and
8
8
  `@adia-ai/a2ui-mcp`.
9
9
 
10
+ > **Historical note (2026-05-05):** Entries dated before v0.3.0 reference
11
+ > "all 8 published `@adia-ai/*` packages" — that was the package count at
12
+ > the time. The lockstep policy expanded to 9 packages at v0.3.0 when
13
+ > `@adia-ai/llm` joined; see the [0.3.0] entry below for the transition
14
+ > details. References to "8 packages" in older entries are factually
15
+ > correct as of the date they were written and are preserved per
16
+ > Keep-A-Changelog convention (don't rewrite history).
17
+
10
18
  ## [Unreleased]
11
19
 
12
20
  _No pending changes._
13
21
 
22
+ ## [0.3.4] - 2026-05-07
23
+
24
+ ### Changed
25
+
26
+ - **Component catalog regenerated** — 100 → 107 yamls (+7 from new admin-* CSS-only structural children added in `@adia-ai/web-modules`). `catalog-a2ui_0_9.json` + `catalog-a2ui_0_9_rules.txt` regenerated by `scripts/build/components.mjs`.
27
+
28
+ - **New catalog entries** for the bespoke shell-tier family per ADR-0023:
29
+ - `AdminSidebar` (admin-sidebar) — JS-bearing
30
+ - `AdminCommand` (admin-command) — JS-bearing
31
+ - `AdminContent` / `AdminTopbar` / `AdminStatusbar` / `AdminScroll` / `AdminPage` / `AdminPageHeader` / `AdminPageBody` — CSS-only structural
32
+
33
+ The catalog is consumed by `@adia-ai/a2ui-retrieval` for protocol-vocabulary composition. Composers (zettel, chunk-zettel) now have addressable entries for shell sub-regions instead of falling back to chunk-name retrieval.
34
+
35
+ ### No source changes
36
+
37
+ Corpus chunks, fragments, compositions, and patterns are byte-identical to v0.3.3. The only change is the regenerated catalog manifest.
38
+
39
+ ## [0.3.3] - 2026-05-07
40
+
41
+ **Lockstep cut.** All 9 published `@adia-ai/*` packages now share version `0.3.3`, governed by [`docs/specs/package-architecture.md` § 15](../../../docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` ranges stay at `^0.3.0` (patch-cut asymmetry — caret floats `0.3.x`).
42
+
43
+ ### Added
44
+
45
+ - **`fragments/layout/auth-card-header.json`** — first fragment
46
+ promoted from chunk corpus. Was 23 instances across user-flow auth
47
+ pages (sign-in, sign-up, recovery, account-deleted, email-verify,
48
+ forbidden) + error pages (404, 500, maintenance), all sharing the
49
+ same shape: `Header > Column[align=center,gap=1] >
50
+ [Link>Image, Text(h1), Text]`. 4 slots
51
+ (logo-href, logo-src, title, description). Promotion provides 23×
52
+ leverage over chunk-by-chunk emission. Zettel retrieval test:
53
+ score 88 vs 48 next alternative. (closes backlog #65)
54
+
55
+ - **`A2UI_DISABLE_EMBEDDINGS` env-var override** in
56
+ `scripts/chunk-library.js`. When set, `searchChunksAsync()` falls
57
+ through to keyword-only search instead of attempting embeddings.
58
+ Used by the new top-level `npm run eval:keyword-only` script.
59
+ Latency drops from 100-400ms to 0-1ms with same scores; proves
60
+ keyword path is independently healthy. (closes backlog #11)
61
+
62
+ - **Glossary section** in README.md — chunk vs pattern vs fragment
63
+ vs composition. Four overlapping concepts circulate through this
64
+ package; the glossary disambiguates. (closes backlog #94)
65
+
66
+ - **Catalog manifest documentation** — README updated to clarify
67
+ that `retrieval/catalog.js` is **hand-written** (a CatalogManifest
68
+ module that dynamically reads per-component `<c>.a2ui.json`
69
+ sidecars at runtime), NOT a generated artifact. The actual
70
+ generated artifacts are `traits/_catalog.json` and per-component
71
+ `<name>.a2ui.json` sidecars. (companion to AGENTS.md hard-rule #7
72
+ correction; closes backlog #57)
73
+
74
+ ## [0.3.2] - 2026-05-06
75
+
76
+ **9-package lockstep patch cut to v0.3.2.** All lockstep members share
77
+ one version per [`docs/specs/package-architecture.md` § 15](../../../docs/specs/package-architecture.md#15-versioning-policy).
78
+ Internal `@adia-ai/*` dep ranges unchanged at `^0.3.0`.
79
+
80
+ ### Added
81
+
82
+ - **Corpus re-harvest** — 173 unique chunks (from 160), 322 instances.
83
+ 13 new block patterns (`command-palette-grouped`, `agent-activity-feed`,
84
+ `agent-reasoning-collapsed`, `user-profile-card`, `kanban-board-3col`,
85
+ `chat-streaming-surface`, `settings-notifications`, `marketing-hero-cta`,
86
+ `conversion-funnel-6step`, `users-table-badge`, `destructive-confirm-modal`,
87
+ `editor-code-pane`, `editor-preview-pane`) + 5 new page shells
88
+ (`settings-page-shell`, `form-page-shell`, `marketing-page-shell`,
89
+ `error-page-shell`, `editor-page-shell`).
90
+ - **Harvester source expansion** — `apps/` added alongside `site/pages/`;
91
+ `apps/generic-shells/app/` contributes the 5 generic page shells.
92
+
93
+ ### Fixed
94
+
95
+ - **`data-chunk-slot` preservation** — `stripChunkAttrs()` regex narrowed
96
+ to only strip `data-chunk` + `data-chunk-kind`; no longer strips
97
+ `data-chunk-slot` (composer runtime dependency for slot-finding).
98
+
99
+ ### Changed
100
+
101
+ - `version`: `0.3.1` → `0.3.2`.
102
+
14
103
  ## [0.3.1] - 2026-05-06
15
104
 
16
105
  **9-package lockstep patch cut.** All 9 published `@adia-ai/*` packages bump 0.3.0 → 0.3.1 per [`docs/specs/package-architecture.md` § 15](../../../docs/specs/package-architecture.md#15-versioning-policy). Internal `@adia-ai/*` dep ranges remain at `^0.3.0` (covers `0.3.1` under semver — patch-cut asymmetry).
package/README.md CHANGED
@@ -22,6 +22,30 @@ web-components ◀─reads── a2ui-corpus (exemplars use AdiaUI tags)
22
22
  No back-writes. No circular reads. Web-components ships UI atoms only;
23
23
  corpus lives here; runtime lives in a2ui-compose.
24
24
 
25
+ ## Glossary
26
+
27
+ Four overlapping concepts circulate through this package. Knowing which
28
+ is which prevents reading bugs from creeping into authoring.
29
+
30
+ | Term | Source of truth | Granularity | What it carries | Engine that consumes it |
31
+ | --- | --- | --- | --- | --- |
32
+ | **chunk** | `chunks/<id>.json` (one file per chunk) + `_index.json` | Smallest — a single labeled HTML region, harvested via `data-chunk` markers | `html`, `intent`, `domain`, `kind` (`block` / `data-chunk` / `field`), `keywords` | `chunk-zettel` (retrieve → synthesize) |
33
+ | **pattern** | `patterns/<domain>/<name>.json` | Full-canvas A2UI template (≈whole-page) | A2UI message tree, retrieval keywords, exemplar provenance | `monolithic-instant` / `monolithic-pro` (retrieve → emit verbatim) |
34
+ | **fragment** | `fragments/<domain>/<name>.json` | Atomic shape — re-usable across compositions | A2UI sub-tree, slot bindings, `metrics.leverage` | `zettel` (retrieve → compose into compositions) |
35
+ | **composition** | `compositions/<domain>/<name>.json` | Pre-assembled set of fragments | Ordered fragment refs, slot wiring, keywords + tags, `links.used_by` | `zettel` (retrieve → emit verbatim or refine) |
36
+
37
+ **One-line distinctions:**
38
+
39
+ - **Chunk vs fragment** — chunks are *harvested*, fragments are *authored*. A chunk is whatever HTML region a `data-chunk` marker pointed at; a fragment is a deliberately-shaped A2UI sub-tree with named slots and leverage metrics.
40
+ - **Fragment vs composition** — a fragment is *one shape*; a composition is *several fragments arranged together* into a coherent surface (e.g. `pricing-tiers` composition = header fragment + 3× tier-card fragments + footer fragment).
41
+ - **Composition vs pattern** — both are full-surface, but compositions are *fragment-graph* native (zettel reuses the fragment library) while patterns are *flat A2UI templates* (monolithic emits them whole).
42
+
43
+ **When in doubt, follow the engine:**
44
+
45
+ - Looking at `monolithic-*` retrieval? You want a **pattern**.
46
+ - Looking at `zettel` retrieval? You want a **composition** (or a fragment, if synthesis is composing one).
47
+ - Looking at `chunk-zettel`? You want a **chunk**.
48
+
25
49
  ## Layout
26
50
 
27
51
  ```
@@ -107,6 +131,46 @@ Consumers who want embedding-based retrieval either:
107
131
  fall through to keyword scoring when the index file is absent
108
132
  (`chunk-embedding-retriever.js` returns `null` gracefully).
109
133
 
134
+ ### Embedding model pinning
135
+
136
+ The `provider` and `model` recorded in each `*-embeddings.json` header
137
+ are the **source of truth** at query time. The retrievers
138
+ (`chunk-embedding-retriever.js`, `embedding-retriever.js`) re-resolve
139
+ the same embedder from those header fields — they do **not** auto-pick
140
+ a different provider when the recorded one's API key is unset, because
141
+ cross-model cosine similarity is meaningless and same-provider/
142
+ different-model emits different-dim vectors that `cosine()`
143
+ short-circuits to 0 (silent retrieval failure).
144
+
145
+ Currently pinned defaults:
146
+
147
+ | Provider | Model | Dims | Env |
148
+ |---|---|---:|---|
149
+ | openai | `text-embedding-3-small` | 1536 | `OPENAI_API_KEY` |
150
+ | voyage | `voyage-3-lite` | 1024 | `VOYAGE_API_KEY` |
151
+
152
+ `detectProvider()` (in `packages/a2ui/retrieval/embedding/embedding-provider.js`)
153
+ prefers Voyage when both keys are present (denser vectors, lower cost).
154
+ The `build:embeddings*` scripts record the chosen provider/model into the
155
+ `.json` header, so subsequent reads always re-bind to the same model.
156
+
157
+ When upgrading to a new model (e.g. `text-embedding-3-small` →
158
+ `text-embedding-3-large`):
159
+
160
+ 1. Update the default in `embedding-provider.js`.
161
+ 2. Rebuild **both** indexes (`npm run build:embeddings:all`).
162
+ 3. Verify with `npm run check:embeddings-fresh` that both index headers
163
+ record the new model.
164
+ 4. Re-run `npm run eval:diff -- --engine zettel` to confirm the new
165
+ model doesn't regress retrieval quality (different models score
166
+ queries differently — thresholds in `chunk-synthesizer.js` may
167
+ need a re-look, though the absolute keyword score floor remains
168
+ independent).
169
+
170
+ Don't mix models. If one index records `voyage-3-lite` and the other
171
+ records `text-embedding-3-small`, the retrievers will load both fine
172
+ but the rankings will be incomparable across the two corpora.
173
+
110
174
  ## Scripts
111
175
 
112
176
  All run from repo root via npm: