@adia-ai/adia-ui-factory 0.2.2 → 0.2.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 (95) hide show
  1. package/.claude-plugin/plugin.json +12 -3
  2. package/.mcp.json +1 -1
  3. package/CHANGELOG.md +12 -0
  4. package/README.md +24 -1
  5. package/bin/adia-scaffold +93 -13
  6. package/package.json +1 -1
  7. package/references/shell-embed.md +10 -0
  8. package/references/spa-architecture.md +7 -0
  9. package/skills/adia-ui-kit/CHANGELOG.md +41 -0
  10. package/skills/adia-ui-kit/SKILL.md +442 -0
  11. package/skills/adia-ui-kit/assets/figma-make/guidelines/Guidelines.md +87 -0
  12. package/skills/adia-ui-kit/assets/figma-make/guidelines/components.md +142 -0
  13. package/skills/adia-ui-kit/assets/figma-make/guidelines/styles.md +118 -0
  14. package/skills/adia-ui-kit/assets/figma-make/guidelines/tokens.md +120 -0
  15. package/skills/adia-ui-kit/assets/team-scaffold/archive-README.md +30 -0
  16. package/skills/adia-ui-kit/assets/team-scaffold/drafts-README.md +57 -0
  17. package/skills/adia-ui-kit/assets/team-scaffold/inbox-README.md +76 -0
  18. package/skills/adia-ui-kit/assets/team-scaffold/outbox-README.md +46 -0
  19. package/skills/adia-ui-kit/assets/team-scaffold/team-root.README.md +51 -0
  20. package/skills/adia-ui-kit/assets/team-scaffold/tickets-README.md +208 -0
  21. package/skills/adia-ui-kit/assets/team-scaffold/tickets-REGISTRY.md +81 -0
  22. package/skills/adia-ui-kit/assets/templates/AGENTS.template.md +128 -0
  23. package/skills/adia-ui-kit/assets/templates/CLAUDE.template.md +1 -0
  24. package/skills/adia-ui-kit/assets/templates/FEEDBACK-OMISSIONS-DEFENSE.template.md +150 -0
  25. package/skills/adia-ui-kit/assets/templates/FEEDBACK.template.md +213 -0
  26. package/skills/adia-ui-kit/assets/templates/RESPONSE.template.md +114 -0
  27. package/skills/adia-ui-kit/assets/templates/figma-make-guidelines.md +90 -0
  28. package/skills/adia-ui-kit/evals/adversarial-content-trust.json +83 -0
  29. package/skills/adia-ui-kit/evals/evals.json +55 -0
  30. package/skills/adia-ui-kit/evals/routing-corpus.json +121 -0
  31. package/skills/adia-ui-kit/evals/teach-routing-cases.json +92 -0
  32. package/skills/adia-ui-kit/references/capabilities.md +245 -0
  33. package/skills/adia-ui-kit/references/catalog-lookup.md +186 -0
  34. package/skills/adia-ui-kit/references/changelog-archive/CHANGELOG-v1.md +8 -0
  35. package/skills/adia-ui-kit/references/changelog-archive/CHANGELOG-v2.md +3585 -0
  36. package/skills/adia-ui-kit/references/changelog-archive/CHANGELOG-v3.md +1899 -0
  37. package/skills/adia-ui-kit/references/common-gotchas-consumer.md +522 -0
  38. package/skills/adia-ui-kit/references/component-literacy.md +291 -0
  39. package/skills/adia-ui-kit/references/composition.md +245 -0
  40. package/skills/adia-ui-kit/references/correction-loop.md +462 -0
  41. package/skills/adia-ui-kit/references/css-policy.md +343 -0
  42. package/skills/adia-ui-kit/references/decision-model.md +158 -0
  43. package/skills/adia-ui-kit/references/diagnostic-output.md +57 -0
  44. package/skills/adia-ui-kit/references/docs-catalog.md +239 -0
  45. package/skills/adia-ui-kit/references/exclusions.md +225 -0
  46. package/skills/adia-ui-kit/references/feedback-authoring.md +466 -0
  47. package/skills/adia-ui-kit/references/figma-make.md +244 -0
  48. package/skills/adia-ui-kit/references/flows-auth.md +307 -0
  49. package/skills/adia-ui-kit/references/flows-content.md +206 -0
  50. package/skills/adia-ui-kit/references/flows-data.md +348 -0
  51. package/skills/adia-ui-kit/references/flows-interaction.md +181 -0
  52. package/skills/adia-ui-kit/references/flows-shells.md +336 -0
  53. package/skills/adia-ui-kit/references/gap-detection.md +266 -0
  54. package/skills/adia-ui-kit/references/harness.md +284 -0
  55. package/skills/adia-ui-kit/references/loading-protocol.md +406 -0
  56. package/skills/adia-ui-kit/references/local-link.md +198 -0
  57. package/skills/adia-ui-kit/references/mcp.md +401 -0
  58. package/skills/adia-ui-kit/references/migration.md +116 -0
  59. package/skills/adia-ui-kit/references/mission.md +194 -0
  60. package/skills/adia-ui-kit/references/mode-routing.md +298 -0
  61. package/skills/adia-ui-kit/references/patterns-agent.md +223 -0
  62. package/skills/adia-ui-kit/references/patterns-data.md +1065 -0
  63. package/skills/adia-ui-kit/references/patterns-forms.md +223 -0
  64. package/skills/adia-ui-kit/references/patterns-layout.md +326 -0
  65. package/skills/adia-ui-kit/references/patterns-recipes.md +1416 -0
  66. package/skills/adia-ui-kit/references/patterns-shells.md +1097 -0
  67. package/skills/adia-ui-kit/references/patterns-traits.md +259 -0
  68. package/skills/adia-ui-kit/references/patterns-wiring.md +339 -0
  69. package/skills/adia-ui-kit/references/pev-rationale.md +137 -0
  70. package/skills/adia-ui-kit/references/reasoning-gate.md +146 -0
  71. package/skills/adia-ui-kit/references/reasoning-methodologies.md +112 -0
  72. package/skills/adia-ui-kit/references/recon.md +192 -0
  73. package/skills/adia-ui-kit/references/rendering-model.md +431 -0
  74. package/skills/adia-ui-kit/references/response-authoring.md +398 -0
  75. package/skills/adia-ui-kit/references/session-log-schema.md +203 -0
  76. package/skills/adia-ui-kit/references/session-log-template.md +118 -0
  77. package/skills/adia-ui-kit/references/setup.md +652 -0
  78. package/skills/adia-ui-kit/references/skill-hygiene.md +135 -0
  79. package/skills/adia-ui-kit/references/spec-to-ui-reasoning.md +394 -0
  80. package/skills/adia-ui-kit/references/state.md +229 -0
  81. package/skills/adia-ui-kit/references/teach-protocol.md +421 -0
  82. package/skills/adia-ui-kit/references/theme.md +142 -0
  83. package/skills/adia-ui-kit/references/version-check.md +69 -0
  84. package/skills/adia-ui-kit/scripts/audit-decision-trace.mjs +198 -0
  85. package/skills/adia-ui-kit/scripts/audit-kit-roster.mjs +366 -0
  86. package/skills/adia-ui-kit/scripts/changelog-archive.mjs +126 -0
  87. package/skills/adia-ui-kit/scripts/check-adia-versions.py +404 -0
  88. package/skills/adia-ui-kit/scripts/run-skill-evals.mjs +358 -0
  89. package/skills/adia-ui-kit/scripts/validate-session-log.mjs +242 -0
  90. package/skills/adia-ui-kit/skill.json +102 -0
  91. package/skills/adia-ui-migration/CHANGELOG.md +47 -0
  92. package/skills/adia-ui-migration/SKILL.md +381 -0
  93. package/skills/adia-ui-migration/skill.json +29 -0
  94. package/skills/adia-ui-spa/SKILL.md +1 -1
  95. package/skills/adia-ui-verify/SKILL.md +2 -2
@@ -0,0 +1,223 @@
1
+ # Agent & Chat Patterns
2
+
3
+ ## Chat Shell (canonical substrate composition)
4
+
5
+ The canonical chat surface composes substrate primitives directly — `<chat-shell>` orchestrates LLM streaming + proxy-url wiring, with bespoke children for header / thread / composer / sidebar:
6
+
7
+ ```html
8
+ <chat-shell
9
+ proxy-url="/api/chat"
10
+ provider="anthropic"
11
+ model="claude-sonnet-4-7"
12
+ system="You are a helpful assistant."
13
+ thinking>
14
+ <chat-header>
15
+ <span slot="name">Assistant</span>
16
+ <chat-status slot="status">Connected</chat-status>
17
+ </chat-header>
18
+
19
+ <chat-thread>
20
+ <chat-empty>
21
+ <empty-state-ui icon="chat-circle" heading="How can I help?" description="Ask anything."></empty-state-ui>
22
+ </chat-empty>
23
+ </chat-thread>
24
+
25
+ <chat-composer>
26
+ <chat-input-ui placeholder="Message…" submit-on-enter></chat-input-ui>
27
+ </chat-composer>
28
+ </chat-shell>
29
+ ```
30
+
31
+ | Element | Purpose |
32
+ |-----------|---------|
33
+ | `chat-shell` | Behavior-only LLM-streaming orchestrator. Wires markdown rendering, code-block upgrades, proxy-url integration |
34
+ | `chat-header` | Top chrome bar — name, status, settings |
35
+ | `chat-thread` | Message-list scroll surface; reflects `[streaming]`, `[empty]` on itself |
36
+ | `chat-empty` | Empty-state slot inside `<chat-thread>` |
37
+ | `chat-composer` | Wraps the input primitive; flex footer alignment |
38
+ | `chat-input-ui` | Primitive textarea with submit-on-enter, slash-commands, attachments |
39
+ | `chat-sidebar` | Optional `slot="leading"` — conversation list, persistence |
40
+ | `chat-status` | Reflected connection indicator inside `<chat-header>` |
41
+
42
+ **State as attribute (cross-cut via `:has()`):**
43
+
44
+ ```css
45
+ chat-shell:has(chat-thread[streaming]) chat-header { /* show streaming indicator */ }
46
+ chat-shell:has(chat-thread[empty]) chat-composer { /* center the empty-state */ }
47
+ ```
48
+
49
+ For the full canonical shape including sidebar persistence and styling, see `flows-shells.md` `## Chat Shell` and the substrate demo at `packages/web-modules/chat/chat-shell/chat-shell.examples.html`. Per ADR-0023, all children are bespoke cluster-namespaced elements; legacy data-attribute shapes (`[data-chat-messages]`, `[data-chat-input]`) were retired in v0.4.0 per ADR-0024.
50
+
51
+ ## Manual Chat Layout (vanilla composition, no chat-shell)
52
+
53
+ Build a chat surface from raw layout primitives — useful when you need full control over message-bubble rendering or aren't wiring an LLM stream:
54
+
55
+ ```html
56
+ <card-ui size="lg" style="height:600px;display:flex;flex-direction:column">
57
+ <header divider>
58
+ <span slot="icon"><avatar-ui text="Assistant" size="sm"></avatar-ui></span>
59
+ <span slot="heading" variant="section">Assistant</span>
60
+ <badge-ui slot="action" text="Online" variant="success" size="xs"></badge-ui>
61
+ </header>
62
+ <section style="flex:1;overflow-y:auto">
63
+ <col-ui gap="4" id="messages"></col-ui>
64
+ </section>
65
+ <footer divider>
66
+ <row-ui gap="2" style="width:100%">
67
+ <input-ui raw placeholder="Type a message..." style="flex:1"></input-ui>
68
+ <button-ui text="Send" variant="primary" icon="paper-plane-right" size="sm"></button-ui>
69
+ </row-ui>
70
+ </footer>
71
+ </card-ui>
72
+ ```
73
+
74
+ ## Message Bubbles
75
+
76
+ ```html
77
+ <!-- User (right-aligned) -->
78
+ <row-ui justify="end">
79
+ <card-ui size="sm" variant="filled" style="max-width:70%;background:var(--a-accent-subtle)">
80
+ <section><p>Can you help me build a dashboard?</p></section>
81
+ </card-ui>
82
+ </row-ui>
83
+
84
+ <!-- Assistant (left-aligned with avatar) -->
85
+ <row-ui gap="2" align="start">
86
+ <avatar-ui text="AI" size="sm"></avatar-ui>
87
+ <card-ui size="sm" style="max-width:70%">
88
+ <section><p>I'd be happy to help!</p></section>
89
+ </card-ui>
90
+ </row-ui>
91
+ ```
92
+
93
+ ## Suggestion Chips
94
+
95
+ ```html
96
+ <row-ui gap="1" style="flex-wrap:wrap">
97
+ <button-ui text="Stat cards dashboard" variant="outline" size="sm"></button-ui>
98
+ <button-ui text="Login form" variant="outline" size="sm"></button-ui>
99
+ <button-ui text="User profile card" variant="outline" size="sm"></button-ui>
100
+ </row-ui>
101
+ ```
102
+
103
+ ## A2UI Rendering
104
+
105
+ ### Static
106
+ ```html
107
+ <a2ui-root id="surface"></a2ui-root>
108
+ ```
109
+ ```js
110
+ root.processAll([{
111
+ type: 'updateComponents',
112
+ surfaceId: 'default',
113
+ components: [
114
+ { id: 'root', component: 'Card', children: ['hdr', 'sec'] },
115
+ { id: 'hdr', component: 'Header', children: ['title'] },
116
+ { id: 'title', component: 'Text', variant: 'h3', textContent: 'Hello' },
117
+ { id: 'sec', component: 'Section', children: ['col'] },
118
+ { id: 'col', component: 'Column', children: ['msg'] },
119
+ { id: 'msg', component: 'Text', variant: 'body', textContent: 'Generated content.' },
120
+ ],
121
+ }]);
122
+ ```
123
+
124
+ ### Streaming
125
+ ```html
126
+ <a2ui-root src="/api/agent" transport="sse"></a2ui-root>
127
+ ```
128
+ Transports: `sse`, `ws`, `jsonl`, `mcp`.
129
+
130
+ ### A2UI Playground (debugging)
131
+
132
+ For interactive A2UI debugging — schema explorer, surface state inspection, code view — open the playground app at `apps/genui/` (multi-route a2ui workbench) or `playgrounds/composed-flow/` (single-page demo). There is no dedicated `<a2ui-playground>` primitive; the playground experience is composed via `<a2ui-root>` + `<chat-shell>` + dev panels in those apps.
133
+
134
+ ## Gen UI Pipeline
135
+
136
+ ```js
137
+ import { generateUI, generateUIStream } from '@adia-ai/a2ui-compose';
138
+
139
+ // Instant mode (pattern matching, no LLM)
140
+ const result = await generateUI({ intent: 'login form', mode: 'instant' });
141
+
142
+ // Streaming mode (LLM-powered)
143
+ for await (const event of generateUIStream({ intent: 'dashboard with metrics', llmAdapter })) {
144
+ switch (event.type) {
145
+ case 'status': // pipeline stage transition
146
+ case 'clarify': // vague intent — questions for user
147
+ case 'research': // brand/reference research results
148
+ case 'decompose': // complex intent split into subtasks
149
+ case 'text_delta': // raw LLM text chunk
150
+ case 'partial': // parseable partial A2UI — render immediately
151
+ case 'complete': // final result with validation, suggestions, executionId
152
+ case 'error': // generation error
153
+ }
154
+ }
155
+ ```
156
+
157
+ Multi-turn: pass `executionId` from a previous `complete` event to iterate.
158
+
159
+ ## Evolution Engine
160
+
161
+ ```js
162
+ import { savePattern, importPattern, FeedbackCollector, evaluatePromotion } from '@adia-ai/a2ui-compose';
163
+
164
+ // Save a generation as a reusable pattern
165
+ savePattern('login-form', { messages: result.messages, validation: result.validation, intent: 'login form', canvasHTML: canvas.getHTML() });
166
+
167
+ // Import at runtime
168
+ importPattern(patternJSON);
169
+
170
+ // Collect user feedback
171
+ const feedback = new FeedbackCollector();
172
+ feedback.initFromGeneration(execId, { intent, domain, messages, validation });
173
+ feedback.collectFeedback(execId, { rating: 5, intentAlignment: 5, visualQuality: 4, componentChoice: 5 });
174
+
175
+ // Check if this should become a named pattern
176
+ const promo = evaluatePromotion({ score: 98, feedback: { rating: 5 }, alignment: { score: 0.9 } });
177
+ // -> { shouldPromote: true, confidence: 0.97, suggestedName: 'login-form' }
178
+ ```
179
+
180
+ ## Activity Feed
181
+
182
+ ```html
183
+ <card-ui>
184
+ <header><span slot="heading" variant="section">Activity</span></header>
185
+ <section>
186
+ <col-ui gap="2">
187
+ <row-ui gap="2" align="start">
188
+ <avatar-ui text="Jane" size="sm"></avatar-ui>
189
+ <col-ui gap="1">
190
+ <small><strong>Jane</strong> created a new project</small>
191
+ <small style="color:var(--a-canvas-text-subtle)">2 minutes ago</small>
192
+ </col-ui>
193
+ </row-ui>
194
+ <divider-ui></divider-ui>
195
+ <row-ui gap="2" align="start">
196
+ <avatar-ui text="Alex" size="sm"></avatar-ui>
197
+ <col-ui gap="1">
198
+ <small><strong>Alex</strong> deployed to production</small>
199
+ <small style="color:var(--a-canvas-text-subtle)">15 minutes ago</small>
200
+ </col-ui>
201
+ </row-ui>
202
+ </col-ui>
203
+ </section>
204
+ </card-ui>
205
+ ```
206
+
207
+ ## MCP Tools (13)
208
+
209
+ | Tool | Purpose |
210
+ |------|---------|
211
+ | `generate_ui` | Natural language -> A2UI |
212
+ | `validate_schema` | 15 structural + 5 wiring checks |
213
+ | `lookup_component` | Component API by type name |
214
+ | `get_component_map` | Full 80-type catalog |
215
+ | `search_patterns` | Keyword + semantic + remix search |
216
+ | `classify_intent` | Domain classification |
217
+ | `assemble_context` | Token-budgeted context assembly |
218
+ | `check_anti_patterns` | HTML anti-pattern detection |
219
+ | `get_traits` | Trait catalog |
220
+ | `convert_html` | HTML -> A2UI transpilation |
221
+ | `get_wiring_catalog` | Controller/handler/resolver catalog |
222
+ | `import_pattern` | Import pattern JSON at runtime |
223
+ | `submit_feedback` | Structured quality feedback |