@kitn.ai/ui 0.28.0 → 0.30.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.
Files changed (615) hide show
  1. package/README.md +11 -7
  2. package/dist/{Icon-DObhsRtm.js → Icon-BzBET3E-.js} +1 -1
  3. package/dist/{action-icons-CcgNN2oT.js → action-icons-DaW2pU6m.js} +1 -1
  4. package/dist/agent-tooling/construct/public.d.ts +15 -0
  5. package/dist/agent-tooling/construct/schema.d.ts +111 -0
  6. package/dist/arrow-down-D783iMJj.js +1 -0
  7. package/dist/arrow-left-0VLM5kyg.js +1 -0
  8. package/dist/artifact-DGjzHYUT.js +1 -0
  9. package/dist/{attachments-Qr4kg-2b.js → attachments-YvXHlg88.js} +1 -1
  10. package/dist/{audio-visualizer-DToYdfSc.js → audio-visualizer-9lz5IHsL.js} +1 -1
  11. package/dist/{badge-CdEu_jn2.js → badge-Dh_vp8A5.js} +1 -1
  12. package/dist/{bell-DQAAOpDz.js → bell-CT7_WUwS.js} +1 -1
  13. package/dist/{button-DkuOnGLy.js → button-C_3te6fm.js} +1 -1
  14. package/dist/{card-renderer-Jx70m6_l.js → card-renderer-DZVaGH2e.js} +1 -1
  15. package/dist/check-CiEOVnEN.js +1 -0
  16. package/dist/{checkbox-D7iRB3nL.js → checkbox-Bu2T2e0U.js} +1 -1
  17. package/dist/{checkbox-group-B2_rpoPM.js → checkbox-group-BiryEXPQ.js} +1 -1
  18. package/dist/chevron-down-CSobuZRG.js +1 -0
  19. package/dist/chevron-right-DR9ZAP-2.js +1 -0
  20. package/dist/{choice-card-m0BYqqOK.js → choice-card-CM6IjkmL.js} +1 -1
  21. package/dist/circle-BC66EYF7.js +1 -0
  22. package/dist/circle-check-BqmahW0O.js +1 -0
  23. package/dist/{circle-x-BPG0iPst.js → circle-x-Bk-dA5Wf.js} +1 -1
  24. package/dist/{code-block-ClMLKb7C.js → code-block-B26t-Q7q.js} +1 -1
  25. package/dist/{collapsible-B4DlWicL.js → collapsible-Bhc636Cf.js} +1 -1
  26. package/dist/components/builder-composer-triggers.d.ts +62 -0
  27. package/dist/components/builder-layout.d.ts +54 -0
  28. package/dist/components/builder-message-actions.d.ts +72 -0
  29. package/dist/components/builder-panel.d.ts +189 -0
  30. package/dist/components/builder-preview.d.ts +11 -0
  31. package/dist/components/builder-shell-controls.d.ts +69 -0
  32. package/dist/components/builder-skeleton.d.ts +58 -0
  33. package/dist/components/builder-start.d.ts +75 -0
  34. package/dist/components/builder-workspace-variants.d.ts +23 -0
  35. package/dist/components/captions.d.ts +66 -0
  36. package/dist/{composer-sQ0HcvyG.js → composer-DMI85B6j.js} +1 -1
  37. package/dist/{confirm-card-rQWDQsnC.js → confirm-card-B0YIAwXp.js} +1 -1
  38. package/dist/construct-cli.es.js +3 -3
  39. package/dist/construct.d.ts +5 -0
  40. package/dist/construct.js +327 -0
  41. package/dist/{context-0kg4ZX1J.js → context-DWgfhqWp.js} +1 -1
  42. package/dist/controllable-BagRpyHv.js +1 -0
  43. package/dist/{conversation-item-BxwQLaFJ.js → conversation-item-BsOsVGmT.js} +1 -1
  44. package/dist/{conversation-list-BCfGN1JU.js → conversation-list-aX3Vtc7L.js} +1 -1
  45. package/dist/{copy-n9u9rqpi.js → copy-BmEwsNhJ.js} +1 -1
  46. package/dist/core-C8fzo39E.js +1 -12
  47. package/dist/{create-tween-uPkArjIG.js → create-tween-CNOAU3Fx.js} +1 -1
  48. package/dist/{create-tween-C-q-JCM-.js → create-tween-WfqiENls.js} +1 -1
  49. package/dist/{create-tween-CRrJXxBd.js → create-tween-wlFtW9Kh.js} +1 -1
  50. package/dist/{create-tween-DZ3RRDHD.js → create-tween-zt79ba32.js} +1 -1
  51. package/dist/{default-input-CaMrJkgH.js → default-input-DMV5Eaze.js} +1 -1
  52. package/dist/define-CI0y3eE4.js +1 -0
  53. package/dist/define.js +40 -40
  54. package/dist/define.server.js +45 -45
  55. package/dist/{disclosure-WUImBbDv.js → disclosure-NnACBxsC.js} +1 -1
  56. package/dist/{dropdown-wZVeJOMd.js → dropdown-DT7G0RGR.js} +1 -1
  57. package/dist/elements/agent-card.js +1 -1
  58. package/dist/elements/artifact.js +1 -1
  59. package/dist/elements/attachments.js +1 -1
  60. package/dist/elements/audio-visualizer.js +1 -1
  61. package/dist/elements/avatar.js +1 -1
  62. package/dist/elements/badge.js +1 -1
  63. package/dist/elements/button.js +1 -1
  64. package/dist/elements/card.js +1 -1
  65. package/dist/elements/cards.js +1 -1
  66. package/dist/elements/chain-of-thought.js +1 -1
  67. package/dist/elements/chat-scope-picker.js +1 -1
  68. package/dist/elements/chat-workspace.js +1 -1
  69. package/dist/elements/chat.js +1 -1
  70. package/dist/elements/checkbox-group.js +1 -1
  71. package/dist/elements/checkbox.js +1 -1
  72. package/dist/elements/checkpoint.js +1 -1
  73. package/dist/elements/choice.js +1 -1
  74. package/dist/elements/coachmark.js +1 -1
  75. package/dist/elements/code-block.js +1 -1
  76. package/dist/elements/command.js +1 -1
  77. package/dist/elements/compare.js +1 -1
  78. package/dist/elements/composer.js +1 -1
  79. package/dist/elements/confirm-card.js +1 -1
  80. package/dist/elements/context-meter.js +1 -1
  81. package/dist/elements/conversation-item.js +1 -1
  82. package/dist/elements/conversation-list.js +1 -1
  83. package/dist/elements/dialog.js +1 -1
  84. package/dist/elements/dock.js +1 -1
  85. package/dist/elements/dropdown.js +1 -1
  86. package/dist/elements/editable-label.js +1 -1
  87. package/dist/elements/embed.js +1 -1
  88. package/dist/elements/empty.js +1 -1
  89. package/dist/elements/feedback-bar.js +1 -1
  90. package/dist/elements/file-tree.js +1 -1
  91. package/dist/elements/file-upload.js +1 -1
  92. package/dist/elements/form.js +1 -1
  93. package/dist/elements/hover-card.js +1 -1
  94. package/dist/elements/icon.js +1 -1
  95. package/dist/elements/image.js +1 -1
  96. package/dist/elements/input.js +1 -1
  97. package/dist/elements/kbd.js +1 -1
  98. package/dist/elements/link-preview.js +1 -1
  99. package/dist/elements/loader.js +1 -1
  100. package/dist/elements/markdown.js +1 -1
  101. package/dist/elements/menu.js +1 -1
  102. package/dist/elements/message-skills.js +1 -1
  103. package/dist/elements/message.js +1 -1
  104. package/dist/elements/model-switcher.js +1 -1
  105. package/dist/elements/nav.js +1 -1
  106. package/dist/elements/notice.js +1 -1
  107. package/dist/elements/pane-grid.js +1 -1
  108. package/dist/elements/pane-group.js +1 -1
  109. package/dist/elements/pane.js +1 -1
  110. package/dist/elements/popover.js +1 -1
  111. package/dist/elements/progress-bar.js +1 -1
  112. package/dist/elements/prompt-dock.js +1 -1
  113. package/dist/elements/prompt-input.js +1 -1
  114. package/dist/elements/prompt-suggestions.js +1 -1
  115. package/dist/elements/radio-group.js +1 -1
  116. package/dist/elements/reasoning.js +1 -1
  117. package/dist/elements/remote.js +1 -1
  118. package/dist/elements/resizable.js +1 -1
  119. package/dist/elements/response-stream.js +1 -1
  120. package/dist/elements/screen.js +1 -1
  121. package/dist/elements/scroll-area.js +1 -1
  122. package/dist/elements/scroll-button.js +1 -1
  123. package/dist/elements/search.js +1 -1
  124. package/dist/elements/segmented.js +1 -1
  125. package/dist/elements/select.js +1 -1
  126. package/dist/elements/separator.js +1 -1
  127. package/dist/elements/setting-item.js +1 -1
  128. package/dist/elements/settings-group.js +1 -1
  129. package/dist/elements/skeleton.js +1 -1
  130. package/dist/elements/slider.js +1 -1
  131. package/dist/elements/source.js +1 -1
  132. package/dist/elements/status.js +1 -1
  133. package/dist/elements/switch.js +1 -1
  134. package/dist/elements/tabs.js +1 -1
  135. package/dist/elements/tasks.js +1 -1
  136. package/dist/elements/text-shimmer.js +1 -1
  137. package/dist/elements/thinking-bar.js +1 -1
  138. package/dist/elements/thread.js +1 -1
  139. package/dist/elements/toast.js +1 -1
  140. package/dist/elements/tool.js +1 -1
  141. package/dist/elements/tooltip.js +1 -1
  142. package/dist/elements/voice-input.js +1 -1
  143. package/dist/elements/voice-output.js +1 -1
  144. package/dist/{ellipsis-CbOpJnU3.js → ellipsis-6pJ7SxYT.js} +1 -1
  145. package/dist/{embed-CrfjkbUG.js → embed-BMje-nxj.js} +1 -1
  146. package/dist/engine-javascript-C1x7zo1_.js +1 -141
  147. package/dist/{external-link-ByXAwBBQ.js → external-link-Beh9DKeR.js} +1 -1
  148. package/dist/{file-text-DMib2qwt.js → file-text-D1GPfZ8Q.js} +1 -1
  149. package/dist/{file-tree-CJqM2aP7.js → file-tree-Dwj2lqg-.js} +1 -1
  150. package/dist/{folder-_BAb929C.js → folder-b6D8x1DY.js} +1 -1
  151. package/dist/{form-DSZgZQZk.js → form-DWgdxDXu.js} +1 -1
  152. package/dist/{hover-card-BQbul9eq.js → hover-card-CWRkqm40.js} +1 -1
  153. package/dist/{icon-CdcfRhYI.js → icon-CL0jdhsf.js} +1 -1
  154. package/dist/index.js +1741 -1725
  155. package/dist/index.server.js +1582 -1566
  156. package/dist/{info-DsFjGuI_.js → info-0cOUherQ.js} +1 -1
  157. package/dist/{input-DKbmkMos.js → input-BH6Ru91Q.js} +1 -1
  158. package/dist/kai.es.js +1 -1
  159. package/dist/{kbd-PvdGhX4s.js → kbd-DRAnVtNX.js} +1 -1
  160. package/dist/{link-zF8PzWfF.js → link-Dlr0vssB.js} +1 -1
  161. package/dist/{link-preview-DbM1866N.js → link-preview-DODgRyV9.js} +1 -1
  162. package/dist/loader-KvJB6NrT.js +1 -0
  163. package/dist/{markdown-LMvmAyBk.js → markdown-DX9tuJVj.js} +1 -1
  164. package/dist/mcp.es.js +9 -5
  165. package/dist/{message-BYZECyek.js → message-BqQ7Ot5q.js} +1 -1
  166. package/dist/{message-BSsgvHvf.js → message-DkaGfBd8.js} +1 -1
  167. package/dist/message-circle-BPpp5QKv.js +1 -0
  168. package/dist/message-square-BLbsd9BJ.js +1 -0
  169. package/dist/{minimize-2-BQRoBV1V.js → minimize-2-CyOHJwcN.js} +1 -1
  170. package/dist/{model-switcher-CMpCOYcB.js → model-switcher-0hrKDiK2.js} +1 -1
  171. package/dist/{overlay-Cb-MkyDa.js → overlay-DBMFXie6.js} +1 -1
  172. package/dist/{panel-right-i8warFxT.js → panel-right-t8SWJL6e.js} +1 -1
  173. package/dist/{paperclip-ByY3UVO6.js → paperclip-CdzuOjbU.js} +1 -1
  174. package/dist/play-BXy1u7rW.js +1 -0
  175. package/dist/primitives/use-auto-resize.d.ts +11 -0
  176. package/dist/{progress-bar-jVAHvMUf.js → progress-bar-CiBtxMWT.js} +1 -1
  177. package/dist/{prompt-suggestion-CD-qtNgC.js → prompt-suggestion-I_DHP21i.js} +1 -1
  178. package/dist/{radio-BsoBMhkF.js → radio-C_p3n39l.js} +1 -1
  179. package/dist/{reasoning-4kBPtlTx.js → reasoning-BDwy_tIe.js} +1 -1
  180. package/dist/register-impl-DvEnhIxx.js +424 -0
  181. package/dist/{resizable-uPmY9VY-.js → resizable-SYC-fStM.js} +1 -1
  182. package/dist/{rotate-ccw-B2xn93py.js → rotate-ccw-B1nwmwuY.js} +1 -1
  183. package/dist/{rotate-cw-CMVLoCyH.js → rotate-cw-CLAnBcm1.js} +1 -1
  184. package/dist/{scroll-area-BqLUo8ZZ.js → scroll-area-zRyXoLhI.js} +1 -1
  185. package/dist/{scroll-button-DslXiJyL.js → scroll-button-jzrbYCG9.js} +1 -1
  186. package/dist/{select-2cLRtPGT.js → select-DM-0nEe0.js} +1 -1
  187. package/dist/{separator-BWQtNJcM.js → separator-BToOOoOt.js} +1 -1
  188. package/dist/{settings-BBR63jLg.js → settings-PaGo_S4U.js} +1 -1
  189. package/dist/{settings-group-B2ciy-Iw.js → settings-group-BFXGIfXq.js} +1 -1
  190. package/dist/{skeleton-CkHI-HgC.js → skeleton-DYpmFnnm.js} +1 -1
  191. package/dist/{slider-DDR9U-i0.js → slider-ebutAmkQ.js} +1 -1
  192. package/dist/{solid-DruVOXnf.js → solid-15v_3WVL.js} +3563 -3412
  193. package/dist/{solid-BzCFdL25.js → solid-5P-otgdi.js} +4502 -4296
  194. package/dist/solid.d.ts +6 -0
  195. package/dist/solid.js +259 -254
  196. package/dist/solid.server.js +259 -254
  197. package/dist/{source-GEnFF528.js → source-c1gpRl9h.js} +1 -1
  198. package/dist/{star-CilHq8GP.js → star-pcV_3LqF.js} +1 -1
  199. package/dist/{store-Ciyk6eZG.js → store-CSgbFFCg.js} +1 -1
  200. package/dist/{switch-KkeQIbuH.js → switch-Bh2OdLV2.js} +1 -1
  201. package/dist/{tasks-card-BrN4bggJ.js → tasks-card-CbqQAn2S.js} +1 -1
  202. package/dist/text-shimmer-BSzgEnDH.js +1 -0
  203. package/dist/textarea-DrYNt_0z.js +1 -0
  204. package/dist/theme.tokens.css +22 -21
  205. package/dist/{thumbs-up-CsT9Wzb9.js → thumbs-up-BL3-NenK.js} +1 -1
  206. package/dist/{toast-store-tgK6MuMv.js → toast-store-DkOlYczt.js} +1 -1
  207. package/dist/{tool-DzUjIBT8.js → tool-CeIWUVUe.js} +1 -1
  208. package/dist/{tooltip-Bkkg_4t0.js → tooltip-GA-nmg06.js} +1 -1
  209. package/dist/{trash-2-jBKxjGGQ.js → trash-2-CT66QWlm.js} +1 -1
  210. package/dist/{triangle-alert-DlQ68ppf.js → triangle-alert-CeHLWxhD.js} +1 -1
  211. package/dist/ui/color-field.d.ts +48 -0
  212. package/dist/ui/textarea.d.ts +4 -0
  213. package/dist/ui/toggle-chip.d.ts +40 -0
  214. package/dist/{upload-TcAHXv9W.js → upload-9Csb0F0J.js} +1 -1
  215. package/dist/{use-card-resolution-DaZqAdWf.js → use-card-resolution-Zg0a08Z-.js} +1 -1
  216. package/dist/{variant-aurora-DbW_OWL2.js → variant-aurora-4VBQHIKV.js} +1 -1
  217. package/dist/{variant-aurora-CNmfHhcx.js → variant-aurora-DBeCAQNk.js} +2 -2
  218. package/dist/{variant-aurora-D6GsdTPA.js → variant-aurora-FzHVXHby.js} +2 -2
  219. package/dist/{variant-aurora-BhLuYxJR.js → variant-aurora-LE3fqxgw.js} +1 -1
  220. package/dist/{variant-custom-BvYHR62b.js → variant-custom-AFRGcOBS.js} +1 -1
  221. package/dist/{variant-custom-DV2x254s.js → variant-custom-BQkNuPpE.js} +2 -2
  222. package/dist/{variant-custom-BRvaNHSi.js → variant-custom-DI5R0rln.js} +1 -1
  223. package/dist/{variant-custom-DMTrEO5w.js → variant-custom-WWnrrRHS.js} +2 -2
  224. package/dist/{variant-wave-CyBueXj9.js → variant-wave-DUCbH5oI.js} +2 -2
  225. package/dist/{variant-wave-BNMGrDfj.js → variant-wave-DuQV7DhQ.js} +2 -2
  226. package/dist/{variant-wave-BpDd8t3Z.js → variant-wave-nSI2sfII.js} +1 -1
  227. package/dist/{variant-wave-sp-qwsdI.js → variant-wave-wTP5v_jU.js} +1 -1
  228. package/dist/x-eiO9V6J6.js +1 -0
  229. package/{src/elements/styles.css → kit-base.css} +27 -44
  230. package/package.json +32 -17
  231. package/solid.css +33 -0
  232. package/theme.css +39 -23
  233. package/bin/route.test.js +0 -58
  234. package/dist/arrow-down-CjRU3JgV.js +0 -1
  235. package/dist/arrow-left-Bnpb1UEW.js +0 -1
  236. package/dist/artifact-Bwt7OgcR.js +0 -1
  237. package/dist/check-njkVdZu2.js +0 -1
  238. package/dist/chevron-down-B72s6PXR.js +0 -1
  239. package/dist/chevron-right-BatuHzUm.js +0 -1
  240. package/dist/circle-check-B62pODB3.js +0 -1
  241. package/dist/circle-zx0ByzY9.js +0 -1
  242. package/dist/controllable-CnGpMF6r.js +0 -1
  243. package/dist/define-By-uL588.js +0 -1
  244. package/dist/loader-BM4CEz4G.js +0 -1
  245. package/dist/message-circle-DruwObfX.js +0 -1
  246. package/dist/message-square-BG6q6mlm.js +0 -1
  247. package/dist/play-BvKKq3fX.js +0 -1
  248. package/dist/register-impl-B1hLkrI8.js +0 -424
  249. package/dist/text-shimmer-Dcj1MHuq.js +0 -1
  250. package/dist/textarea-Dpvbngbg.js +0 -1
  251. package/dist/x-Z5UntkIJ.js +0 -1
  252. package/src/agent-tooling/README.md +0 -192
  253. package/src/agent-tooling/archetypes.ts +0 -205
  254. package/src/agent-tooling/catalog/README.md +0 -676
  255. package/src/agent-tooling/catalog/catalog-types.ts +0 -231
  256. package/src/agent-tooling/catalog/fabrications.ts +0 -96
  257. package/src/agent-tooling/catalog/invariants.ts +0 -284
  258. package/src/agent-tooling/catalog/labs-titles.ts +0 -114
  259. package/src/agent-tooling/catalog/scenarios.ts +0 -87
  260. package/src/agent-tooling/catalog/surfaces.ts +0 -347
  261. package/src/agent-tooling/construct/cli-entry.ts +0 -8
  262. package/src/agent-tooling/construct/cli.ts +0 -147
  263. package/src/agent-tooling/construct/codegen.ts +0 -1635
  264. package/src/agent-tooling/construct/construct.v1.schema.json +0 -319
  265. package/src/agent-tooling/construct/dev.ts +0 -148
  266. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +0 -7
  267. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +0 -44
  268. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +0 -32
  269. package/src/agent-tooling/construct/schema.ts +0 -452
  270. package/src/agent-tooling/integrations/anthropic.ts +0 -442
  271. package/src/agent-tooling/integrations/cloudflare.ts +0 -218
  272. package/src/agent-tooling/integrations/langgraph.ts +0 -133
  273. package/src/agent-tooling/integrations/mastra.ts +0 -182
  274. package/src/agent-tooling/integrations/mock.ts +0 -148
  275. package/src/agent-tooling/integrations/ollama.ts +0 -97
  276. package/src/agent-tooling/integrations/openai.ts +0 -95
  277. package/src/agent-tooling/integrations/openrouter.ts +0 -82
  278. package/src/agent-tooling/integrations/pi.ts +0 -176
  279. package/src/agent-tooling/integrations/pydantic-ai.ts +0 -108
  280. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +0 -398
  281. package/src/agent-tooling/mcp/css-raw.d.ts +0 -12
  282. package/src/agent-tooling/mcp/manifest.ts +0 -422
  283. package/src/agent-tooling/mcp/server.ts +0 -116
  284. package/src/agent-tooling/mcp/stdio.ts +0 -18
  285. package/src/agent-tooling/mcp/tools/construct.ts +0 -130
  286. package/src/agent-tooling/mcp/tools/debug.ts +0 -621
  287. package/src/agent-tooling/mcp/tools/reference.ts +0 -980
  288. package/src/agent-tooling/mcp/tools/scaffold.ts +0 -6708
  289. package/src/agent-tooling/mcp/tools/theme.ts +0 -456
  290. package/src/agent-tooling/mcp/tools/types.ts +0 -14
  291. package/src/agent-tooling/mcp/validate-args.ts +0 -141
  292. package/src/agent-tooling/recipes/composed-thread.ts +0 -714
  293. package/src/agent-tooling/recipes/index.ts +0 -22
  294. package/src/agent-tooling/recipes/types.ts +0 -32
  295. package/src/agent-tooling/registry.ts +0 -132
  296. package/src/agent-tooling/route-emit.ts +0 -305
  297. package/src/agent-tooling/types.ts +0 -390
  298. package/src/components/artifact-card.tsx +0 -120
  299. package/src/components/artifact.tsx +0 -914
  300. package/src/components/attachment-types.ts +0 -66
  301. package/src/components/attachments.tsx +0 -536
  302. package/src/components/audio-visualizer/audio-visualizer.voice-fixture.ts +0 -257
  303. package/src/components/audio-visualizer/aurora.glsl.ts +0 -330
  304. package/src/components/audio-visualizer/fit-scale.ts +0 -112
  305. package/src/components/audio-visualizer/index.tsx +0 -528
  306. package/src/components/audio-visualizer/labs/lab-choreography.ts +0 -187
  307. package/src/components/audio-visualizer/labs/lab-shaders.ts +0 -363
  308. package/src/components/audio-visualizer/labs/lab-visualizer.tsx +0 -102
  309. package/src/components/audio-visualizer/shader-canvas.tsx +0 -876
  310. package/src/components/audio-visualizer/sizes.ts +0 -54
  311. package/src/components/audio-visualizer/variant-aurora.tsx +0 -305
  312. package/src/components/audio-visualizer/variant-bar.tsx +0 -175
  313. package/src/components/audio-visualizer/variant-custom.tsx +0 -344
  314. package/src/components/audio-visualizer/variant-grid.tsx +0 -175
  315. package/src/components/audio-visualizer/variant-radial.tsx +0 -163
  316. package/src/components/audio-visualizer/variant-wave.tsx +0 -130
  317. package/src/components/audio-visualizer/wave.glsl.ts +0 -130
  318. package/src/components/card-fallback.tsx +0 -60
  319. package/src/components/card-renderer.tsx +0 -220
  320. package/src/components/card.tsx +0 -212
  321. package/src/components/chain-of-thought.tsx +0 -348
  322. package/src/components/chat-container.tsx +0 -89
  323. package/src/components/chat-scope-picker.tsx +0 -57
  324. package/src/components/chat-thread.tsx +0 -1014
  325. package/src/components/checkpoint.tsx +0 -88
  326. package/src/components/choice-card.tsx +0 -743
  327. package/src/components/coachmark.tsx +0 -249
  328. package/src/components/code-block.tsx +0 -181
  329. package/src/components/composer-dom.ts +0 -159
  330. package/src/components/composer-highlight.ts +0 -242
  331. package/src/components/composer-history.ts +0 -82
  332. package/src/components/composer.tsx +0 -1075
  333. package/src/components/confirm-card.tsx +0 -402
  334. package/src/components/context.tsx +0 -377
  335. package/src/components/conversation-item.tsx +0 -241
  336. package/src/components/conversation-list.tsx +0 -429
  337. package/src/components/conversation-panel.tsx +0 -118
  338. package/src/components/dismissed-stub.tsx +0 -80
  339. package/src/components/embed.tsx +0 -200
  340. package/src/components/empty.tsx +0 -177
  341. package/src/components/feedback-bar.tsx +0 -166
  342. package/src/components/file-tree.tsx +0 -530
  343. package/src/components/file-upload.tsx +0 -167
  344. package/src/components/form-widgets.tsx +0 -525
  345. package/src/components/form.tsx +0 -1296
  346. package/src/components/home-panel.tsx +0 -159
  347. package/src/components/image.tsx +0 -65
  348. package/src/components/link-preview.tsx +0 -195
  349. package/src/components/loader.tsx +0 -367
  350. package/src/components/markdown.tsx +0 -162
  351. package/src/components/message-skills.tsx +0 -40
  352. package/src/components/message.tsx +0 -765
  353. package/src/components/model-switcher.tsx +0 -132
  354. package/src/components/prompt-input.tsx +0 -188
  355. package/src/components/prompt-suggestion.tsx +0 -150
  356. package/src/components/reasoning.tsx +0 -293
  357. package/src/components/response-compare-types.ts +0 -152
  358. package/src/components/response-compare.tsx +0 -455
  359. package/src/components/response-stream.tsx +0 -109
  360. package/src/components/screen.tsx +0 -181
  361. package/src/components/scroll-button.tsx +0 -93
  362. package/src/components/source.tsx +0 -192
  363. package/src/components/tasks-card.tsx +0 -801
  364. package/src/components/text-shimmer.tsx +0 -37
  365. package/src/components/thinking-bar.tsx +0 -50
  366. package/src/components/thread.tsx +0 -228
  367. package/src/components/toast.tsx +0 -503
  368. package/src/components/tool-classify.ts +0 -26
  369. package/src/components/tool-types.ts +0 -49
  370. package/src/components/tool.tsx +0 -190
  371. package/src/components/use-card-resolution.ts +0 -44
  372. package/src/components/voice-input.tsx +0 -222
  373. package/src/components/voice-output.tsx +0 -242
  374. package/src/components/widget-tab-bar.tsx +0 -73
  375. package/src/components/workspace-shell.tsx +0 -285
  376. package/src/diagnostics/hook.ts +0 -352
  377. package/src/diagnostics/index.ts +0 -82
  378. package/src/diagnostics/report-request.ts +0 -296
  379. package/src/elements/agent-card.tsx +0 -67
  380. package/src/elements/artifact.tsx +0 -194
  381. package/src/elements/attachments.tsx +0 -140
  382. package/src/elements/audio-visualizer.tsx +0 -227
  383. package/src/elements/autoloader.ts +0 -89
  384. package/src/elements/avatar.tsx +0 -33
  385. package/src/elements/badge.tsx +0 -32
  386. package/src/elements/button.tsx +0 -149
  387. package/src/elements/card.tsx +0 -133
  388. package/src/elements/cards.tsx +0 -266
  389. package/src/elements/chain-of-thought.tsx +0 -141
  390. package/src/elements/chat-scope-picker.tsx +0 -65
  391. package/src/elements/chat-types.ts +0 -102
  392. package/src/elements/chat-workspace.tsx +0 -188
  393. package/src/elements/chat.tsx +0 -304
  394. package/src/elements/checkbox-group.tsx +0 -164
  395. package/src/elements/checkbox.tsx +0 -134
  396. package/src/elements/checkpoint.tsx +0 -47
  397. package/src/elements/choice.tsx +0 -100
  398. package/src/elements/coachmark.tsx +0 -90
  399. package/src/elements/code-block.tsx +0 -60
  400. package/src/elements/command.tsx +0 -197
  401. package/src/elements/compare.tsx +0 -111
  402. package/src/elements/compiled.css +0 -2
  403. package/src/elements/composer.tsx +0 -162
  404. package/src/elements/confirm-card.tsx +0 -76
  405. package/src/elements/context-meter.tsx +0 -107
  406. package/src/elements/conversation-item.tsx +0 -120
  407. package/src/elements/conversation-list.tsx +0 -203
  408. package/src/elements/css.ts +0 -5
  409. package/src/elements/default-input.tsx +0 -392
  410. package/src/elements/define-entry.ts +0 -12
  411. package/src/elements/define.tsx +0 -563
  412. package/src/elements/diagnostic-events.ts +0 -114
  413. package/src/elements/dialog.tsx +0 -145
  414. package/src/elements/disclosure.ts +0 -95
  415. package/src/elements/dock.tsx +0 -215
  416. package/src/elements/dropdown.tsx +0 -123
  417. package/src/elements/editable-label.tsx +0 -140
  418. package/src/elements/element-data-types.ts +0 -152
  419. package/src/elements/element-diagnostics.ts +0 -392
  420. package/src/elements/element-manifest.json +0 -354
  421. package/src/elements/element-nonscalar.json +0 -187
  422. package/src/elements/element-types.d.ts +0 -4353
  423. package/src/elements/embed.tsx +0 -35
  424. package/src/elements/empty.tsx +0 -29
  425. package/src/elements/feedback-bar.tsx +0 -66
  426. package/src/elements/file-tree.tsx +0 -62
  427. package/src/elements/file-upload.tsx +0 -44
  428. package/src/elements/form.tsx +0 -94
  429. package/src/elements/hover-card.tsx +0 -80
  430. package/src/elements/icon.tsx +0 -41
  431. package/src/elements/image.tsx +0 -32
  432. package/src/elements/input.tsx +0 -492
  433. package/src/elements/kbd.tsx +0 -45
  434. package/src/elements/link-preview.tsx +0 -34
  435. package/src/elements/loader.tsx +0 -25
  436. package/src/elements/markdown.tsx +0 -38
  437. package/src/elements/menu.tsx +0 -241
  438. package/src/elements/message-skills.tsx +0 -83
  439. package/src/elements/message.tsx +0 -361
  440. package/src/elements/model-switcher.tsx +0 -121
  441. package/src/elements/nav.tsx +0 -87
  442. package/src/elements/notice.tsx +0 -53
  443. package/src/elements/pane-grid.tsx +0 -111
  444. package/src/elements/pane-group.tsx +0 -119
  445. package/src/elements/pane.tsx +0 -129
  446. package/src/elements/popover.tsx +0 -81
  447. package/src/elements/progress-bar.tsx +0 -39
  448. package/src/elements/prompt-dock.tsx +0 -82
  449. package/src/elements/prompt-input.tsx +0 -240
  450. package/src/elements/prompt-suggestions.tsx +0 -113
  451. package/src/elements/radio-group.tsx +0 -129
  452. package/src/elements/reasoning.tsx +0 -71
  453. package/src/elements/register-impl.ts +0 -148
  454. package/src/elements/register.ts +0 -76
  455. package/src/elements/remote.tsx +0 -225
  456. package/src/elements/resizable.globals.d.ts +0 -36
  457. package/src/elements/resizable.tsx +0 -704
  458. package/src/elements/response-stream.tsx +0 -40
  459. package/src/elements/screen.tsx +0 -90
  460. package/src/elements/scroll-area.tsx +0 -33
  461. package/src/elements/scroll-button.tsx +0 -179
  462. package/src/elements/search.tsx +0 -185
  463. package/src/elements/segmented.tsx +0 -129
  464. package/src/elements/select.tsx +0 -165
  465. package/src/elements/separator.tsx +0 -36
  466. package/src/elements/setting-item.tsx +0 -50
  467. package/src/elements/settings-group.tsx +0 -37
  468. package/src/elements/skeleton.tsx +0 -45
  469. package/src/elements/slider.tsx +0 -171
  470. package/src/elements/slot-text.ts +0 -73
  471. package/src/elements/slots.ts +0 -787
  472. package/src/elements/source.tsx +0 -126
  473. package/src/elements/status.tsx +0 -42
  474. package/src/elements/switch.tsx +0 -118
  475. package/src/elements/tabs.tsx +0 -95
  476. package/src/elements/tasks.tsx +0 -103
  477. package/src/elements/text-shimmer.tsx +0 -28
  478. package/src/elements/thinking-bar.tsx +0 -43
  479. package/src/elements/thread.tsx +0 -139
  480. package/src/elements/toast.tsx +0 -106
  481. package/src/elements/tool.tsx +0 -78
  482. package/src/elements/tooltip.tsx +0 -85
  483. package/src/elements/validate-messages.ts +0 -76
  484. package/src/elements/voice-input.tsx +0 -100
  485. package/src/elements/voice-output.tsx +0 -82
  486. package/src/index.ts +0 -430
  487. package/src/primitives/audio-bands.ts +0 -174
  488. package/src/primitives/card-component-types.ts +0 -63
  489. package/src/primitives/card-contract.ts +0 -80
  490. package/src/primitives/card-data-types.ts +0 -361
  491. package/src/primitives/card-host.tsx +0 -37
  492. package/src/primitives/card-recovery.ts +0 -160
  493. package/src/primitives/card-registry.tsx +0 -78
  494. package/src/primitives/card-resolution.ts +0 -36
  495. package/src/primitives/card-routing.ts +0 -85
  496. package/src/primitives/card-schemas/artifact.schema.json +0 -92
  497. package/src/primitives/card-schemas/card-envelope.schema.json +0 -14
  498. package/src/primitives/card-schemas/card-event.schema.json +0 -12
  499. package/src/primitives/card-schemas/choice.schema.json +0 -75
  500. package/src/primitives/card-schemas/confirm.schema.json +0 -65
  501. package/src/primitives/card-schemas/embed.schema.json +0 -63
  502. package/src/primitives/card-schemas/form.result.schema.json +0 -7
  503. package/src/primitives/card-schemas/form.schema.json +0 -53
  504. package/src/primitives/card-schemas/link.schema.json +0 -54
  505. package/src/primitives/card-schemas/tasks.result.schema.json +0 -16
  506. package/src/primitives/card-schemas/tasks.schema.json +0 -83
  507. package/src/primitives/card-tags.ts +0 -61
  508. package/src/primitives/card-validate-cards.ts +0 -255
  509. package/src/primitives/card-validate-schemas.ts +0 -58
  510. package/src/primitives/card-validate.ts +0 -131
  511. package/src/primitives/chat-config.tsx +0 -103
  512. package/src/primitives/composer-model.ts +0 -49
  513. package/src/primitives/composer-triggers.ts +0 -35
  514. package/src/primitives/controllable.ts +0 -21
  515. package/src/primitives/conversation-store.ts +0 -248
  516. package/src/primitives/create-kai-chat.ts +0 -66
  517. package/src/primitives/create-tween.ts +0 -266
  518. package/src/primitives/embed-providers.ts +0 -254
  519. package/src/primitives/field-mask.ts +0 -256
  520. package/src/primitives/field-semantics.ts +0 -115
  521. package/src/primitives/highlighter.ts +0 -157
  522. package/src/primitives/input-mask.ts +0 -853
  523. package/src/primitives/link-preview.ts +0 -87
  524. package/src/primitives/message-feedback.ts +0 -124
  525. package/src/primitives/pdf-preview.ts +0 -121
  526. package/src/primitives/toast-store.ts +0 -338
  527. package/src/primitives/url-scheme-policy.ts +0 -70
  528. package/src/primitives/use-audio-analysis.ts +0 -340
  529. package/src/primitives/use-auto-resize.ts +0 -31
  530. package/src/primitives/use-resize-observer.ts +0 -45
  531. package/src/primitives/use-sequencer.ts +0 -72
  532. package/src/primitives/use-speech-recognition.ts +0 -146
  533. package/src/primitives/use-stick-to-bottom.ts +0 -75
  534. package/src/primitives/use-text-stream.ts +0 -143
  535. package/src/primitives/use-voice-recorder.ts +0 -62
  536. package/src/primitives/visualizer-sequences.ts +0 -350
  537. package/src/remote/host-embed.ts +0 -345
  538. package/src/remote/index.ts +0 -2
  539. package/src/remote/origin.ts +0 -30
  540. package/src/remote/provider-runtime.ts +0 -262
  541. package/src/remote/provider.ts +0 -2
  542. package/src/remote/validate.ts +0 -22
  543. package/src/remote/version.ts +0 -12
  544. package/src/remote/wire.ts +0 -48
  545. package/src/schemas/from-tool-call.ts +0 -151
  546. package/src/schemas/index.ts +0 -341
  547. package/src/schemas/provider-subsets.ts +0 -538
  548. package/src/schemas/registry.ts +0 -355
  549. package/src/schemas/tool-defs.ts +0 -793
  550. package/src/solid.ts +0 -173
  551. package/src/state/index.ts +0 -44
  552. package/src/state/messages.ts +0 -53
  553. package/src/state/mock.ts +0 -297
  554. package/src/state/parts.ts +0 -295
  555. package/src/state/persistence.ts +0 -180
  556. package/src/state/stream.ts +0 -246
  557. package/src/state/suggestions.ts +0 -9
  558. package/src/state/threads.ts +0 -142
  559. package/src/test-utils/fake-clock.ts +0 -88
  560. package/src/types.ts +0 -95
  561. package/src/ui/action-icons.ts +0 -53
  562. package/src/ui/agent-card.tsx +0 -218
  563. package/src/ui/avatar.tsx +0 -23
  564. package/src/ui/badge.tsx +0 -21
  565. package/src/ui/button.tsx +0 -49
  566. package/src/ui/card.tsx +0 -245
  567. package/src/ui/checkbox-group.tsx +0 -153
  568. package/src/ui/checkbox.tsx +0 -63
  569. package/src/ui/collapsible.tsx +0 -163
  570. package/src/ui/command.tsx +0 -103
  571. package/src/ui/dialog.tsx +0 -223
  572. package/src/ui/dock.tsx +0 -630
  573. package/src/ui/dropdown.tsx +0 -636
  574. package/src/ui/editable-label.tsx +0 -112
  575. package/src/ui/hover-card.tsx +0 -345
  576. package/src/ui/icon.tsx +0 -167
  577. package/src/ui/input.tsx +0 -391
  578. package/src/ui/kbd.tsx +0 -118
  579. package/src/ui/nav.tsx +0 -282
  580. package/src/ui/notice.tsx +0 -84
  581. package/src/ui/overlay.tsx +0 -277
  582. package/src/ui/pane-grid.tsx +0 -117
  583. package/src/ui/pane-group.tsx +0 -291
  584. package/src/ui/pane.tsx +0 -193
  585. package/src/ui/popover.tsx +0 -106
  586. package/src/ui/progress-bar.tsx +0 -83
  587. package/src/ui/prompt-dock.tsx +0 -145
  588. package/src/ui/radio.tsx +0 -150
  589. package/src/ui/resizable.tsx +0 -693
  590. package/src/ui/scroll-area.tsx +0 -26
  591. package/src/ui/segmented.tsx +0 -109
  592. package/src/ui/select.tsx +0 -168
  593. package/src/ui/separator.tsx +0 -10
  594. package/src/ui/settings-group.tsx +0 -67
  595. package/src/ui/skeleton.tsx +0 -73
  596. package/src/ui/slider.tsx +0 -178
  597. package/src/ui/status.tsx +0 -48
  598. package/src/ui/switch.tsx +0 -119
  599. package/src/ui/tabs.tsx +0 -168
  600. package/src/ui/textarea.tsx +0 -21
  601. package/src/ui/tooltip.tsx +0 -118
  602. package/src/utils/cn.ts +0 -30
  603. package/src/wire/chunk.ts +0 -248
  604. package/src/wire/consume.ts +0 -599
  605. package/src/wire/diagnostics.ts +0 -727
  606. package/src/wire/encode-probe.ts +0 -214
  607. package/src/wire/encode.ts +0 -947
  608. package/src/wire/files.ts +0 -342
  609. package/src/wire/formats/anthropic.ts +0 -274
  610. package/src/wire/formats/openai.ts +0 -228
  611. package/src/wire/index.ts +0 -95
  612. package/src/wire/media-types.ts +0 -344
  613. package/src/wire/read.ts +0 -396
  614. package/src/wire/sink-helpers.ts +0 -50
  615. package/src/wire/sse.ts +0 -153
@@ -1 +1 @@
1
- import{I as a}from"./Icon-DObhsRtm.js";import{c,q as m}from"./define-By-uL588.js";var e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],o=r=>c(a,m(r,{name:"CircleX",iconNode:e})),i=o;export{i as c};
1
+ import{I as a}from"./Icon-BzBET3E-.js";import{c,q as m}from"./define-CI0y3eE4.js";var e=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],o=r=>c(a,m(r,{name:"CircleX",iconNode:e})),i=o;export{i as c};
@@ -1 +1 @@
1
- import{s as f,p as d,q as p,i as u,c as s,S as b,A as $,K as L,t as g,g as P,h as q,a as A,d as E,b as J,e as K}from"./define-By-uL588.js";import{c as m}from"./cn-DN5AWfiS.js";import{c as M}from"./check-njkVdZu2.js";import{c as R}from"./copy-n9u9rqpi.js";const B={bash:()=>import("./bash-InADTalH.js"),javascript:()=>import("./javascript-C25yR2R2.js"),typescript:()=>import("./typescript-RycA9KXf.js"),tsx:()=>import("./tsx-B8rCNbgL.js"),html:()=>import("./html-CPZ3oZQ7.js"),css:()=>import("./css-M7EaDHN_.js"),json:()=>import("./json-DxJze_jm.js"),vue:()=>import("./vue-BmIZj4XD.js"),svelte:()=>import("./svelte--5p79yCD.js")},D={"github-dark-dimmed":()=>import("./github-dark-dimmed-DUshB20C.js"),"github-light":()=>import("./github-light-JYsPkUQd.js")},F={js:"javascript",ts:"typescript",jsx:"tsx",sh:"bash",shell:"bash"},w="github-dark-dimmed";let G={...B},I={...D},N={...F},v=null;const y=new Set,T=new Set;function O(){return v||(v=(async()=>{const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([import("./core-AYMC6_lb.js"),import("./engine-javascript-vq0WuIJl.js")]);return e({themes:[],langs:[],engine:t()})})()),v}function j(e){return N[e]??e}async function Q(e,t){const n=j(t);if(y.has(n))return!0;const r=G[n];return r?(await e.loadLanguage(r()),y.add(n),!0):!1}async function k(e,t){if(T.has(t))return!0;const n=I[t];return n?(await e.loadTheme(n()),T.add(t),!0):!1}function U(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function h(e){return`<pre><code>${U(e)}</code></pre>`}async function V(e,t,n){if(!e)return h(e);try{const r=await O();if(!await Q(r,t))return h(e);const a=await k(r,n)?n:await k(r,w)?w:null;return a?r.codeToHtml(e,{lang:j(t),theme:a}):h(e)}catch{return h(e)}}var W=g("<button type=button part=copy>"),C=g("<div>"),X=g("<div tabindex=0>"),Y=g("<div tabindex=0><pre><code>");const Z=2e3;function _(e){const[t,n]=P(!1);let r;return q(()=>clearTimeout(r)),(()=>{var a=W();return a.$$click=()=>{var i;Promise.resolve((i=navigator.clipboard)==null?void 0:i.writeText(e.text)).catch(()=>{}),n(!0),clearTimeout(r),r=setTimeout(()=>n(!1),Z)},u(a,s(b,{get when(){return t()},get fallback(){return s(R,{size:14,"aria-hidden":"true"})},get children(){return s(M,{size:14,"aria-hidden":"true",class:"text-emerald-500"})}})),A(i=>{var l=t()?"Copied":"Copy code",c=m("inline-flex items-center justify-center rounded-md p-1.5","text-muted-foreground transition-colors hover:bg-muted hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");return l!==i.e&&E(a,"aria-label",i.e=l),c!==i.t&&J(a,i.t=c),i},{e:void 0,t:void 0}),a})()}function ee(e){const[t,n]=f(e,["children","class","copy","copyText"]);return(()=>{var r=C();return d(r,p({get class(){return m("not-prose flex w-full flex-col overflow-clip border","border-border bg-card text-card-foreground","rounded-[var(--kai-code-radius,0.75rem)]",t.class)}},n),!1,!0),u(r,s(b,{get when(){return t.copy},get children(){return s(re,{class:"justify-end border-b border-border px-2 py-1",get children(){return s(_,{get text(){return t.copyText??""}})}})}}),null),u(r,()=>t.children,null),r})()}function te(e){const[t,n]=f(e,["code","language","theme","class"]),r=$(),a=()=>t.language??"tsx",i=()=>t.theme??r.codeTheme(),l=()=>r.codeHighlight(),[c]=L(()=>l()?{code:t.code,lang:a(),theme:i()}:null,o=>V(o.code,o.lang,o.theme)),S=()=>{switch(r.proseSize()){case"xs":return"text-caption";case"sm":return"text-compact";case"base":return"text-sm";case"lg":return"text-base"}},x=()=>m("w-full overflow-x-auto kai-focus-inset [&>pre]:px-4 [&>pre]:py-4",S(),t.class);return s(b,{get when(){return c()},get fallback(){return(()=>{var o=Y(),H=o.firstChild,z=H.firstChild;return d(o,p({get class(){return x()}},n),!1,!0),u(z,()=>t.code),o})()},get children(){var o=X();return d(o,p({get class(){return x()},get innerHTML(){return c()}},n),!1,!1),o}})}function re(e){const[t,n]=f(e,["children","class"]);return(()=>{var r=C();return d(r,p({get class(){return m("flex items-center justify-between",t.class)}},n),!1,!0),u(r,()=>t.children),r})()}K(["click"]);export{ee as C,te as a};
1
+ import{s as f,p as d,q as p,i as u,c as s,S as b,A as $,K as L,t as g,g as P,h as q,a as A,d as E,b as J,e as K}from"./define-CI0y3eE4.js";import{c as m}from"./cn-DN5AWfiS.js";import{c as M}from"./check-CiEOVnEN.js";import{c as R}from"./copy-BmEwsNhJ.js";const B={bash:()=>import("./bash-InADTalH.js"),javascript:()=>import("./javascript-C25yR2R2.js"),typescript:()=>import("./typescript-RycA9KXf.js"),tsx:()=>import("./tsx-B8rCNbgL.js"),html:()=>import("./html-CPZ3oZQ7.js"),css:()=>import("./css-M7EaDHN_.js"),json:()=>import("./json-DxJze_jm.js"),vue:()=>import("./vue-BmIZj4XD.js"),svelte:()=>import("./svelte--5p79yCD.js")},D={"github-dark-dimmed":()=>import("./github-dark-dimmed-DUshB20C.js"),"github-light":()=>import("./github-light-JYsPkUQd.js")},F={js:"javascript",ts:"typescript",jsx:"tsx",sh:"bash",shell:"bash"},w="github-dark-dimmed";let G={...B},I={...D},N={...F},v=null;const y=new Set,T=new Set;function O(){return v||(v=(async()=>{const[{createHighlighterCore:e},{createJavaScriptRegexEngine:t}]=await Promise.all([import("./core-AYMC6_lb.js"),import("./engine-javascript-vq0WuIJl.js")]);return e({themes:[],langs:[],engine:t()})})()),v}function j(e){return N[e]??e}async function Q(e,t){const n=j(t);if(y.has(n))return!0;const r=G[n];return r?(await e.loadLanguage(r()),y.add(n),!0):!1}async function k(e,t){if(T.has(t))return!0;const n=I[t];return n?(await e.loadTheme(n()),T.add(t),!0):!1}function U(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function h(e){return`<pre><code>${U(e)}</code></pre>`}async function V(e,t,n){if(!e)return h(e);try{const r=await O();if(!await Q(r,t))return h(e);const a=await k(r,n)?n:await k(r,w)?w:null;return a?r.codeToHtml(e,{lang:j(t),theme:a}):h(e)}catch{return h(e)}}var W=g("<button type=button part=copy>"),C=g("<div>"),X=g("<div tabindex=0>"),Y=g("<div tabindex=0><pre><code>");const Z=2e3;function _(e){const[t,n]=P(!1);let r;return q(()=>clearTimeout(r)),(()=>{var a=W();return a.$$click=()=>{var i;Promise.resolve((i=navigator.clipboard)==null?void 0:i.writeText(e.text)).catch(()=>{}),n(!0),clearTimeout(r),r=setTimeout(()=>n(!1),Z)},u(a,s(b,{get when(){return t()},get fallback(){return s(R,{size:14,"aria-hidden":"true"})},get children(){return s(M,{size:14,"aria-hidden":"true",class:"text-emerald-500"})}})),A(i=>{var l=t()?"Copied":"Copy code",c=m("inline-flex items-center justify-center rounded-md p-1.5","text-muted-foreground transition-colors hover:bg-muted hover:text-foreground","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring");return l!==i.e&&E(a,"aria-label",i.e=l),c!==i.t&&J(a,i.t=c),i},{e:void 0,t:void 0}),a})()}function ee(e){const[t,n]=f(e,["children","class","copy","copyText"]);return(()=>{var r=C();return d(r,p({get class(){return m("not-prose flex w-full flex-col overflow-clip border","border-border bg-card text-card-foreground","rounded-[var(--kai-code-radius,0.75rem)]",t.class)}},n),!1,!0),u(r,s(b,{get when(){return t.copy},get children(){return s(re,{class:"justify-end border-b border-border px-2 py-1",get children(){return s(_,{get text(){return t.copyText??""}})}})}}),null),u(r,()=>t.children,null),r})()}function te(e){const[t,n]=f(e,["code","language","theme","class"]),r=$(),a=()=>t.language??"tsx",i=()=>t.theme??r.codeTheme(),l=()=>r.codeHighlight(),[c]=L(()=>l()?{code:t.code,lang:a(),theme:i()}:null,o=>V(o.code,o.lang,o.theme)),S=()=>{switch(r.proseSize()){case"xs":return"text-caption";case"sm":return"text-compact";case"base":return"text-sm";case"lg":return"text-base"}},x=()=>m("w-full overflow-x-auto kai-focus-inset [&>pre]:px-4 [&>pre]:py-4",S(),t.class);return s(b,{get when(){return c()},get fallback(){return(()=>{var o=Y(),H=o.firstChild,z=H.firstChild;return d(o,p({get class(){return x()}},n),!1,!0),u(z,()=>t.code),o})()},get children(){var o=X();return d(o,p({get class(){return x()},get innerHTML(){return c()}},n),!1,!1),o}})}function re(e){const[t,n]=f(e,["children","class"]);return(()=>{var r=C();return d(r,p({get class(){return m("flex items-center justify-between",t.class)}},n),!1,!0),u(r,()=>t.children),r})()}K(["click"]);export{ee as C,te as a};
@@ -1 +1 @@
1
- import{s as c,g as k,w as I,c as y,p,q as u,i as v,m as h,a as R,J as q,b as E,t as g,G as H,H as J}from"./define-By-uL588.js";import{c as C}from"./cn-DN5AWfiS.js";var P=g("<div>"),A=g("<button>"),G=g("<div><div>");const w=H(),m=()=>{const o=J(w);if(!o)throw new Error("Collapsible parts must be used within <Collapsible>");return o};function N(o){var n;const[e,l]=c(o,["open","defaultOpen","onOpenChange","disabled","controllerRef","children","class"]),[r,a]=k(e.defaultOpen??!1),s=()=>e.open!==void 0,t=()=>s()?!!e.open:r(),i=()=>!!e.disabled,f=d=>{var b;t()!==d&&(s()||a(d),(b=e.onOpenChange)==null||b.call(e,d))},x=()=>{i()||f(!t())};(n=e.controllerRef)==null||n.call(e,{open:t,setOpen:f});const O=I();return y(w.Provider,{value:{open:t,toggle:x,contentId:O,disabled:i},get children(){var d=P();return p(d,u({get class(){return e.class}},l,{get"data-expanded"(){return t()?"":void 0},get"data-closed"(){return t()?void 0:""},get"data-state"(){return t()?"open":"closed"}}),!1,!0),v(d,()=>e.children),d}})}function U(o){const n=m(),[e,l]=c(o,["children","class","as","onClick"]),r=()=>({type:"button","aria-expanded":n.open(),"aria-controls":n.contentId,disabled:n.disabled()||void 0,"data-expanded":n.open()?"":void 0,"data-closed":n.open()?void 0:"","data-state":n.open()?"open":"closed",onClick:a=>{n.disabled()||(typeof e.onClick=="function"&&e.onClick(a),n.toggle())},class:e.class,...l});return h(()=>h(()=>!!e.as)()?e.as(r()):(()=>{var a=A();return p(a,u(r),!1,!0),v(a,()=>e.children),a})())}function _(o){const n=m(),[e,l]=c(o,["children","class"]);return(()=>{var r=G(),a=r.firstChild;return p(r,u(l,{get id(){return n.contentId},get"data-expanded"(){return n.open()?"":void 0},get"data-closed"(){return n.open()?void 0:""},get class(){return C("grid transition-[grid-template-rows] duration-200 ease-out",n.open()?"grid-rows-[1fr]":"grid-rows-[0fr]")}}),!1,!0),v(a,()=>e.children),R(s=>{var t=!n.open(),i=C("overflow-hidden",e.class);return t!==s.e&&q(r,"inert",s.e=t),i!==s.t&&E(a,s.t=i),s},{e:void 0,t:void 0}),r})()}export{N as C,U as a,_ as b};
1
+ import{s as c,g as k,w as I,c as y,p,q as u,i as v,m as h,a as R,J as q,b as E,t as g,G as H,H as J}from"./define-CI0y3eE4.js";import{c as C}from"./cn-DN5AWfiS.js";var P=g("<div>"),A=g("<button>"),G=g("<div><div>");const w=H(),m=()=>{const o=J(w);if(!o)throw new Error("Collapsible parts must be used within <Collapsible>");return o};function N(o){var n;const[e,l]=c(o,["open","defaultOpen","onOpenChange","disabled","controllerRef","children","class"]),[r,a]=k(e.defaultOpen??!1),s=()=>e.open!==void 0,t=()=>s()?!!e.open:r(),i=()=>!!e.disabled,f=d=>{var b;t()!==d&&(s()||a(d),(b=e.onOpenChange)==null||b.call(e,d))},x=()=>{i()||f(!t())};(n=e.controllerRef)==null||n.call(e,{open:t,setOpen:f});const O=I();return y(w.Provider,{value:{open:t,toggle:x,contentId:O,disabled:i},get children(){var d=P();return p(d,u({get class(){return e.class}},l,{get"data-expanded"(){return t()?"":void 0},get"data-closed"(){return t()?void 0:""},get"data-state"(){return t()?"open":"closed"}}),!1,!0),v(d,()=>e.children),d}})}function U(o){const n=m(),[e,l]=c(o,["children","class","as","onClick"]),r=()=>({type:"button","aria-expanded":n.open(),"aria-controls":n.contentId,disabled:n.disabled()||void 0,"data-expanded":n.open()?"":void 0,"data-closed":n.open()?void 0:"","data-state":n.open()?"open":"closed",onClick:a=>{n.disabled()||(typeof e.onClick=="function"&&e.onClick(a),n.toggle())},class:e.class,...l});return h(()=>h(()=>!!e.as)()?e.as(r()):(()=>{var a=A();return p(a,u(r),!1,!0),v(a,()=>e.children),a})())}function _(o){const n=m(),[e,l]=c(o,["children","class"]);return(()=>{var r=G(),a=r.firstChild;return p(r,u(l,{get id(){return n.contentId},get"data-expanded"(){return n.open()?"":void 0},get"data-closed"(){return n.open()?void 0:""},get class(){return C("grid transition-[grid-template-rows] duration-200 ease-out",n.open()?"grid-rows-[1fr]":"grid-rows-[0fr]")}}),!1,!0),v(a,()=>e.children),R(s=>{var t=!n.open(),i=C("overflow-hidden",e.class);return t!==s.e&&q(r,"inert",s.e=t),i!==s.t&&E(a,s.t=i),s},{e:void 0,t:void 0}),r})()}export{N as C,U as a,_ as b};
@@ -0,0 +1,62 @@
1
+ import { JSX } from 'solid-js';
2
+ import { TriggerDef } from './composer.js';
3
+ /**
4
+ * The composer TRIGGERS control group — `/` (commands/skills) and `@`
5
+ * (agents/mentions) — extracted as a standalone module (T-1 build-out,
6
+ * owner addendum) so every template's composer control group can reuse the
7
+ * SAME editor and the SAME real-`TriggerDef` builder, rather than each
8
+ * template inventing its own.
9
+ *
10
+ * THIS WIRES THE KIT'S REAL MECHANISM, NOT A STUB: `components/composer.tsx`
11
+ * (read before building this) ships `ComposerProps.triggers?: TriggerDef[]`
12
+ * — a real, shipped, atomic-pill trigger system (`TriggerDef = { char, kind,
13
+ * items?: TriggerItem[] }`) that `ChatThread` already forwards straight
14
+ * through to `DefaultPromptInput`/`Composer` via its own `triggers` prop
15
+ * (confirmed in `chat-thread.tsx` before use). Typing the configured
16
+ * character in a real, mounted `ChatThread` composer opens the REAL trigger
17
+ * menu and inserts a REAL atomic pill on selection — there is no "honest
18
+ * stub" fallback needed here, unlike some other preview-only controls in
19
+ * this template family, because the composer this story mounts IS the real
20
+ * component. (`slashCommands`-as-flat-config was deliberately removed from
21
+ * the kit in favor of this trigger system — this control group represents
22
+ * that real shape, not the retired one.)
23
+ *
24
+ * `buildTriggerDefs` converts this panel's editable rows into the real
25
+ * `TriggerDef[]` shape — the one and only translation point, so a story
26
+ * wiring this into its `ChatThread` call never hand-assembles `TriggerDef`
27
+ * itself.
28
+ */
29
+ export interface TriggerEntryRow {
30
+ id: string;
31
+ label: string;
32
+ description?: string;
33
+ /** A curated `renderIcon` name, free text per the same convention the
34
+ * Workspace composer-menu editor uses. */
35
+ icon?: string;
36
+ }
37
+ export interface TriggerGroupState {
38
+ enabled: boolean;
39
+ entries: TriggerEntryRow[];
40
+ }
41
+ export declare function newTriggerRowId(prefix: string): string;
42
+ export declare const DEFAULT_SLASH_ENTRIES: TriggerEntryRow[];
43
+ export declare const DEFAULT_MENTION_ENTRIES: TriggerEntryRow[];
44
+ /** The one translation point from this panel's editable rows to the real
45
+ * `TriggerDef[]` a `ChatThread`/`Composer` `triggers` prop takes. `/` maps
46
+ * to `kind: 'command'`, `@` to `kind: 'agent'` — the two kinds
47
+ * `composer-highlight.ts`'s built-in glyphs already cover (checked before
48
+ * choosing them, see that file's `kindGlyph`). */
49
+ export declare function buildTriggerDefs(slash: TriggerGroupState, mention: TriggerGroupState): TriggerDef[];
50
+ /**
51
+ * The full "Triggers" subsection: an on/off switch per trigger character,
52
+ * each revealing its own entry editor when on. Meant to sit inside a
53
+ * template's existing "Composer" panel section (a subsection, not a whole
54
+ * new top-level section), matching the rhythm every other composer control
55
+ * already uses.
56
+ */
57
+ export declare function ComposerTriggersSection(props: {
58
+ slash: TriggerGroupState;
59
+ onSlashChange: (v: TriggerGroupState) => void;
60
+ mention: TriggerGroupState;
61
+ onMentionChange: (v: TriggerGroupState) => void;
62
+ }): JSX.Element;
@@ -0,0 +1,54 @@
1
+ import { JSX } from 'solid-js';
2
+ export type BuilderViewport = 'desktop' | 'tablet' | 'mobile';
3
+ export interface BuilderLayoutProps {
4
+ /** The construct's display name, shown in the toolbar. */
5
+ name: string;
6
+ /** The inspector panel content — typically `<BuilderPanel>`. */
7
+ panel: JSX.Element;
8
+ /** The preview content — typically a device frame wrapping `<ChatThread>`.
9
+ * Callers that need to reflow their OWN preview at narrower widths (e.g.
10
+ * a docked-rail template collapsing to full-bleed on `mobile`, matching
11
+ * `ui/dock.tsx`'s own <=480px takeover) should read `viewport`/
12
+ * `defaultViewport`/`onViewportChange` below and drive their preview's
13
+ * shape from the same signal they hand this component — see
14
+ * `builder-in-app-assistant.stories.tsx` and `builder.stories.tsx` for
15
+ * the pattern. */
16
+ preview: JSX.Element;
17
+ /** Controlled viewport selection. Omit for uncontrolled (internal) state,
18
+ * same controlled/uncontrolled convention as `Switch`'s
19
+ * `checked`/`defaultChecked` and `ToggleChip`'s `pressed`/
20
+ * `defaultPressed`. A caller that needs to reflow its own `preview` JSX
21
+ * per viewport (see the doc comment on `preview`) should lift this to a
22
+ * signal of its own and pass both this and `onViewportChange`. */
23
+ viewport?: BuilderViewport;
24
+ /** Initial viewport when uncontrolled. Defaults to `'desktop'`. */
25
+ defaultViewport?: BuilderViewport;
26
+ /** Fires with the next viewport on chip selection (controlled or not). */
27
+ onViewportChange?: (viewport: BuilderViewport) => void;
28
+ /** Stub export/save action; the real seam (a file write, per the spike) isn't
29
+ * built here. */
30
+ onSave?: () => void;
31
+ class?: string;
32
+ }
33
+ /**
34
+ * `BuilderLayout` — the two-pane builder shell: a fixed-width scrollable
35
+ * inspector on the left, a live preview on the right over a dotted canvas
36
+ * background (a deliberate "this is a design tool" cue, not a real device
37
+ * emulator). A thin toolbar strip carries the construct name, a viewport
38
+ * toggle, and a stub Export action.
39
+ *
40
+ * The viewport toggle (Round A4 — was a round-1 visual stub) constrains the
41
+ * PREVIEW FRAME's width: `desktop` fills the pane exactly as before (no
42
+ * wrapper, no width style — the historical "stub" behavior for that one
43
+ * case); `tablet`/`mobile` wrap `preview` in a centered frame sized to
44
+ * `FRAME_WIDTH` above (768px / 390px), letting whatever `preview` renders
45
+ * reflow inside it. This is still not a real device emulator — no bezel,
46
+ * no user-agent spoofing, no touch simulation — just a width constraint,
47
+ * consistent with the doc comment this replaced.
48
+ *
49
+ * Pure shell: `panel` and `preview` are handed in as JSX so this component
50
+ * carries no opinion about what fills them; reflowing the CONTENT of
51
+ * `preview` at a given width (rather than just its outer box) is the
52
+ * caller's job — see the `preview` prop's own doc comment.
53
+ */
54
+ export declare function BuilderLayout(props: BuilderLayoutProps): JSX.Element;
@@ -0,0 +1,72 @@
1
+ import { JSX, Component } from 'solid-js';
2
+ import { ChatMessageAction, CustomAction } from '../elements/chat-types.js';
3
+ /**
4
+ * The role-scoped, ordered message-action picker — extracted from
5
+ * `builder-in-app-assistant.stories.tsx` (Round A3) into this standalone
6
+ * module during the T-1 build-out so the Assistant and Research templates
7
+ * (both asked for a "message actions, role-scoped picker, reuse" section)
8
+ * share one definition instead of forking it. `builder-in-app-assistant.
9
+ * stories.tsx` was retrofitted to import from here in the same round; its
10
+ * rendered output and behavior are unchanged — this is a pure extraction.
11
+ *
12
+ * Model: `ChatMessage.actions` (`elements/chat-types.ts`) is `(ChatMessage
13
+ * Action | CustomAction)[]` — an ORDERED array, not a set — and role-scoped
14
+ * only by caller curation (checked against `message.tsx`/`chat-thread.tsx`:
15
+ * neither hard-couples any built-in id to a role). This picker enforces
16
+ * role-appropriateness via two independent catalogs, one per role, each
17
+ * independently ordered and toggled.
18
+ *
19
+ * `'speak'` (read-aloud) is a kit-tier PROPOSAL, not a real
20
+ * `ChatMessageAction` value — voice OUTPUT exists as a separate element
21
+ * (`kai-voice-output`), not as a message-action id. When the row is
22
+ * enabled, callers should append `SPEAK_CUSTOM_ACTION` (a real, clickable,
23
+ * no-op `CustomAction`) rather than inventing a fake `ChatMessageAction`.
24
+ */
25
+ export type UserActionId = Extract<ChatMessageAction, 'edit' | 'copy'>;
26
+ export type AssistantActionId = ChatMessageAction | 'speak';
27
+ export interface ActionRowDef<TId extends string> {
28
+ id: TId;
29
+ label: string;
30
+ /** A curated icon — same components `ui/action-icons.ts`'s registry maps
31
+ * each built-in id to, so the picker's icons match what the real action
32
+ * bar renders. */
33
+ icon: Component<{
34
+ class?: string;
35
+ }>;
36
+ /** Not a real `ChatMessageAction` today — see the module doc comment. */
37
+ proposed?: boolean;
38
+ }
39
+ export interface ActionRowState<TId extends string> {
40
+ id: TId;
41
+ enabled: boolean;
42
+ }
43
+ export declare const USER_ACTION_CATALOG: readonly ActionRowDef<UserActionId>[];
44
+ export declare const ASSISTANT_ACTION_CATALOG: readonly ActionRowDef<AssistantActionId>[];
45
+ /** Owner defaults (Round A3): "Your messages" starts with only Edit on;
46
+ * "Assistant messages" starts with Copy/Like/Dislike on, Regenerate and
47
+ * the proposed Speak row off. Row ORDER here is also the default
48
+ * enabled-action order. */
49
+ export declare const DEFAULT_USER_ACTION_ROWS: ActionRowState<UserActionId>[];
50
+ export declare const DEFAULT_ASSISTANT_ACTION_ROWS: ActionRowState<AssistantActionId>[];
51
+ /** The real `CustomAction` a preview should append when the proposed Speak
52
+ * row is enabled — a genuine, clickable (no-op) button, never faked
53
+ * audio. `volume-2` is already a curated icon in `ui/action-icons.ts`'s
54
+ * registry. */
55
+ export declare const SPEAK_CUSTOM_ACTION: CustomAction;
56
+ /**
57
+ * One role's ordered, toggleable action list — a vertical list of rows
58
+ * (icon + label + a "Proposed" tag when the row is one + up/down reorder
59
+ * buttons + an enable switch). Row ORDER is the array order, and doubles
60
+ * as the enabled-action order once filtered — no separate "priority"
61
+ * field, because the component tier has no separate concept either.
62
+ *
63
+ * Up/down buttons over drag-and-drop: keyboard- and screen-reader-operable
64
+ * for free, which a bare drag handle is not, without extra work a design
65
+ * round doesn't need to do to prove the model (T-6).
66
+ */
67
+ export declare function ActionRowPicker<TId extends string>(props: {
68
+ legend: string;
69
+ catalog: readonly ActionRowDef<TId>[];
70
+ rows: ActionRowState<TId>[];
71
+ onChange: (next: ActionRowState<TId>[]) => void;
72
+ }): JSX.Element;
@@ -0,0 +1,189 @@
1
+ import { JSX } from 'solid-js';
2
+ export type BuilderLayoutKind = 'widget' | 'fullscreen' | 'aside' | 'split' | 'custom';
3
+ export type BuilderThemeMode = 'light' | 'dark' | 'system';
4
+ export type BuilderHistoryPersistence = 'none' | 'local' | 'endpoint';
5
+ export interface BuilderHomeLink {
6
+ label: string;
7
+ href?: string;
8
+ description?: string;
9
+ icon?: string;
10
+ }
11
+ export interface BuilderHome {
12
+ greeting?: {
13
+ title?: string;
14
+ subtitle?: string;
15
+ };
16
+ links?: BuilderHomeLink[];
17
+ }
18
+ export interface BuilderCapabilities {
19
+ starters?: string[];
20
+ attachments?: {
21
+ accept?: string[];
22
+ };
23
+ history?: {
24
+ persistence: BuilderHistoryPersistence;
25
+ };
26
+ conversations?: boolean;
27
+ }
28
+ export type BuilderWidgetPosition = 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start';
29
+ /** `layout: 'widget'`-scoped FAB chrome — mirrors `construct.v1`'s own
30
+ * `widget` block. Meaningless on any other layout, which is exactly why
31
+ * the panel section it drives is HIDDEN, not just disabled, on any other
32
+ * layout (see the Layout section's own doc comment for that distinction). */
33
+ export interface BuilderWidget {
34
+ position?: BuilderWidgetPosition;
35
+ launcherIcon?: string;
36
+ defaultOpen?: boolean;
37
+ }
38
+ export type BuilderProviderMode = 'mock' | 'endpoint';
39
+ export type BuilderProviderWire = 'openai' | 'anthropic';
40
+ /** Mirrors `construct.v1`'s own `provider` discriminated union
41
+ * (`agent-tooling/construct/schema.ts`'s `ProviderSchema`) — `mock` needs
42
+ * nothing else; `endpoint` needs the consumer's own chat route + wire
43
+ * format. A DISPLAY/edit stub, not a real one: no dev-server exists for
44
+ * this design round to actually call, so there's nothing to validate the
45
+ * URL against — the field exists so a template's panel shows the whole
46
+ * construct shape, not because this round wires it to anything. */
47
+ export interface BuilderProvider {
48
+ mode: BuilderProviderMode;
49
+ url?: string;
50
+ wire?: BuilderProviderWire;
51
+ }
52
+ /** Mirrors `construct.v1`'s own `cards` entry shape (`schema.ts`'s
53
+ * `cards` array): a tool-facing `name` plus the kit's card-schema JSON.
54
+ * `schema` is `Record<string, unknown>` here too — deep card validation
55
+ * (incl. `x-kai-format` mask hints) is the kit's own card contract at
56
+ * render time, not this stub panel's job; this stub only ever READS
57
+ * `schema.title` for a display label (Round A's read-only Cards section —
58
+ * see `BuilderPanelSections.cards`). */
59
+ export interface BuilderCard {
60
+ name: string;
61
+ schema?: Record<string, unknown>;
62
+ }
63
+ export interface BuilderConstruct {
64
+ name: string;
65
+ layout: BuilderLayoutKind;
66
+ provider?: BuilderProvider;
67
+ header?: {
68
+ title?: string;
69
+ };
70
+ theme?: {
71
+ accent?: string;
72
+ unreadColor?: string;
73
+ mode?: BuilderThemeMode;
74
+ };
75
+ home?: BuilderHome;
76
+ capabilities?: BuilderCapabilities;
77
+ widget?: BuilderWidget;
78
+ cards?: BuilderCard[];
79
+ }
80
+ /**
81
+ * A template-scoped section configuration (Round W, T-2/T-6): a template
82
+ * FIXES its layout internally (no layout radio) and owns which of the
83
+ * layout-scoped sections apply — a widget template shows Widget chrome
84
+ * unconditionally (it IS the widget template, not merely "currently set to
85
+ * widget"), where the old layout-driven panel showed it only when the
86
+ * layout radio happened to be on "Widget". Omit this prop entirely to get
87
+ * the original, generic, layout-driven panel (every existing test above
88
+ * exercises that default) — a template panel opts INTO the narrower set
89
+ * rather than the generic panel opting out.
90
+ */
91
+ export interface BuilderPanelSections {
92
+ /** Show the Layout radio section. Default `true` (the generic panel).
93
+ * A template panel sets this `false` — T-2: the template fixes the
94
+ * layout, so there is nothing left to choose here. */
95
+ layout?: boolean;
96
+ /** The Widget-chrome section's visibility. `'auto'` (default) follows
97
+ * `value.layout === 'widget'`, the original cross-field-visibility
98
+ * behavior. `'always'` shows it unconditionally — what a Support widget
99
+ * template panel wants, since for THAT template the section is never
100
+ * conditional, it's simply always this template's own controls.
101
+ * `'never'` hides it — what every non-widget template wants once each
102
+ * gets its own `Labs/Builder/<Template>` story. */
103
+ widget?: 'auto' | 'always' | 'never';
104
+ /** Show the Provider section (mode + endpoint URL/wire when applicable).
105
+ * Default `false` — the generic panel predates `provider` existing on
106
+ * `BuilderConstruct` at all; a template panel opts in. */
107
+ provider?: boolean;
108
+ /** Show the Home section (greeting/links tab). Default `true` (the
109
+ * generic panel). A template with no Home concept at all — In-app
110
+ * assistant (Round A): widget-only chrome, no Home/Messages tab bar in
111
+ * its own construct basis (`fixtures/ops-console.construct.json` has no
112
+ * `home` key) — sets this `false` to remove the section outright,
113
+ * rather than leaving a switch that would only ever read "off". */
114
+ home?: boolean;
115
+ /** Show a READ-ONLY Cards section: the construct's declared card names
116
+ * (Round A's `cards` addition to `BuilderConstruct`), with a muted note
117
+ * that editing them is a later round. Default `false`. Deliberately not
118
+ * an editor — a template whose construct basis carries `cards` (like
119
+ * `ops-console.construct.json`'s `deployment_parameters` form) still
120
+ * needs the panel to acknowledge them exist rather than silently
121
+ * dropping them from view, without this design round faking a card-
122
+ * schema editor it doesn't have (decide loudly, per CLAUDE.md). */
123
+ cards?: boolean;
124
+ }
125
+ export interface BuilderPanelProps {
126
+ /** The construct being edited. Controlled — the panel never holds its own copy. */
127
+ value: BuilderConstruct;
128
+ /** Fires with the next construct on every edit. */
129
+ onChange: (next: BuilderConstruct) => void;
130
+ /** Which sections render — see `BuilderPanelSections`. Omit for the
131
+ * original generic, layout-driven panel. */
132
+ sections?: BuilderPanelSections;
133
+ class?: string;
134
+ }
135
+ /** One "common case" chip for `capabilities.attachments.accept`: a human label
136
+ * over one or more raw MIME patterns. Owner feedback (design round 2):
137
+ * raw MIME types are hostile to the audience this panel is for, so the
138
+ * common cases get a toggle chip and the raw list is a secondary, visible
139
+ * ("Advanced") affordance rather than the primary input. */
140
+ export interface AcceptChip {
141
+ id: string;
142
+ label: string;
143
+ patterns: readonly string[];
144
+ }
145
+ /**
146
+ * The chip → MIME-pattern map for the attachments accept editor below.
147
+ *
148
+ * Exported (not module-local) because it's exactly the vocabulary a future
149
+ * schema-driven wizard or capability menu (RECOMMENDATION.md's "real build")
150
+ * will also want — one place to widen the common-case list rather than a
151
+ * second one growing beside it.
152
+ */
153
+ export declare const ACCEPT_CHIPS: readonly AcceptChip[];
154
+ /**
155
+ * `BuilderPanel` — the visual construct builder's inspector: identity, layout,
156
+ * theme, an optional Home tab, and capabilities. Pure props/callbacks, stub-
157
+ * friendly (no dev-server seam, no schema derivation) — a STORY-FIRST design
158
+ * surface for the panel's look, per RECOMMENDATION.md. Composed entirely from
159
+ * the kit's own controls (`Input`/`Textarea`/`Switch`/`RadioGroup`/`Select`/
160
+ * `Button`/`ColorField`/`ToggleChip`); no `part=` attributes — this component is not
161
+ * yet wired to a `kai-*` facade.
162
+ *
163
+ * Round W (T-2/T-6) added `sections` (`BuilderPanelSections`): omit it for
164
+ * the original generic, layout-driven panel this doc comment otherwise
165
+ * describes unchanged; pass it to scope the panel to ONE template's control
166
+ * set — no Layout radio, Widget chrome shown unconditionally rather than
167
+ * `layout`-conditionally, a Provider section — the shape `Labs/Builder/
168
+ * Support widget` (`src/elements/builder.stories.tsx`) actually uses.
169
+ *
170
+ * Three patterns from the spike (plus the owner's own round-8 ruling) get
171
+ * real design treatment here rather than being hand-waved:
172
+ * - **presence-as-boolean**: `home` and `capabilities.attachments` are each
173
+ * driven by ONE switch that adds/removes the whole sub-object, with its
174
+ * revealed fields directly below (no second "enabled" flag living beside
175
+ * the object it toggles).
176
+ * - **cross-field visibility, field-level**: `capabilities.conversations`
177
+ * requires `capabilities.history.persistence` to be `local`/`endpoint`
178
+ * (the schema's own `superRefine` rule) — shown as a disabled switch with
179
+ * the reason spelled out in muted text right below it, not a validation
180
+ * error surfaced after the fact.
181
+ * - **cross-field visibility, section-level**: the whole "Widget" section
182
+ * (position/launcher icon/open-by-default) is meaningless outside
183
+ * `layout: 'widget'`, and unlike the single Conversations toggle above, a
184
+ * disabled-and-explained SECTION would just be three greyed-out rows for
185
+ * one sentence's worth of reason — so it's hidden entirely, not disabled,
186
+ * whenever `layout` isn't `'widget'` (owner ruling, design round 8; see
187
+ * that section's own comment for the full distinction).
188
+ */
189
+ export declare function BuilderPanel(props: BuilderPanelProps): JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { BuilderConstruct } from './builder-panel.js';
2
+ /**
3
+ * The inline style object a stub preview's wrapper needs so a construct's
4
+ * `theme.accent` actually retints its descendants: both the public
5
+ * (`--kai-color-primary`) and internal (`--color-primary`) tokens, plus
6
+ * their paired foreground when the accent resolves to concrete RGB — see
7
+ * the module doc comment above for why both are required. Returns `{}` for
8
+ * no accent (the kit's own neutral default applies, same as omitting the
9
+ * property entirely).
10
+ */
11
+ export declare function resolveAccentWrapperStyle(theme: BuilderConstruct['theme']): Record<string, string>;
@@ -0,0 +1,69 @@
1
+ import { JSX } from 'solid-js';
2
+ /**
3
+ * "App chrome" — the Command palette and User menu shell knobs (owner
4
+ * discovery round), factored as a shared module so every shell-bearing
5
+ * template (`Labs/Builder/Assistant`, `.../Workspace`, `.../Multi-mode`)
6
+ * reuses the same real pieces instead of forking a fourth copy —
7
+ * consistent with `builder-composer-triggers.tsx`'s own rule-of-three
8
+ * extraction earlier this round.
9
+ *
10
+ * COMMAND PALETTE: composes the kit's real `CommandList` (`ui/command.tsx`)
11
+ * — a presentational grouped listbox — inside a hand-built overlay
12
+ * (backdrop + centered panel + Escape/backdrop-click to close), the SAME
13
+ * shape `elements/claude-code.stories.tsx`'s own command-center overlay
14
+ * uses around `kai-command` (read before building this — `CommandList` is
15
+ * that facade's underlying Solid piece; the facade adds the search input's
16
+ * filtering behavior itself, which `CommandList` does not own). A plain
17
+ * `Input` above the list does the filtering here, client-side over a stub
18
+ * catalog, matching claude-code's own placeholder copy style ("Search
19
+ * commands...").
20
+ *
21
+ * USER MENU: `elements/user-menu.stories.tsx`'s own doc comment states it
22
+ * plainly — "the user menu is a RECIPE, not an element... kai-menu with a
23
+ * slotted trigger (kai-avatar + name + plan + a chevron + a kai-status
24
+ * dot)". Reused here as the Solid-tier equivalent: `Dropdown`/
25
+ * `DropdownTrigger`/`DropdownContent`/`DropdownItem` (the same primitives
26
+ * `components/model-switcher.tsx` and the Workspace composer menu already
27
+ * compose) with an `Avatar` + name/plan trigger.
28
+ */
29
+ export interface ShellControlsState {
30
+ commandPalette: boolean;
31
+ userMenu: boolean;
32
+ }
33
+ /** The command palette overlay — mounted only while `open`. Filters the
34
+ * stub catalog client-side; selecting a row or pressing Escape closes it. */
35
+ export declare function CommandPaletteOverlay(props: {
36
+ open: boolean;
37
+ onClose: () => void;
38
+ }): JSX.Element;
39
+ /** The command palette's TRIGGER — a plain search-icon button, matching
40
+ * claude-code's own rail-header search affordance. Rendering the overlay
41
+ * itself is the caller's job (`CommandPaletteOverlay`), so a template can
42
+ * place the trigger inside its own rail/header chrome while the overlay
43
+ * mounts at the frame root. */
44
+ export declare function CommandPaletteTrigger(props: {
45
+ onOpen: () => void;
46
+ }): JSX.Element;
47
+ /** The user-menu recipe itself — avatar + name/plan trigger, real Dropdown
48
+ * primitives, a stub items list (Settings/Help/Log out). `compact` (owner
49
+ * feedback round, Workspace's app-header rework) drops the name/plan text
50
+ * entirely, rendering avatar + chevron only — for a header utility cluster
51
+ * where the full name/plan reads as too much next to icon-only siblings.
52
+ * `name`/`plan` still feed the avatar initials and the accessible name
53
+ * (`aria-label`) even when compact, so the control never loses its name to
54
+ * assistive tech just because the text is hidden visually. */
55
+ export declare function UserMenu(props: {
56
+ name: string;
57
+ plan?: string;
58
+ class?: string;
59
+ compact?: boolean;
60
+ }): JSX.Element;
61
+ /** The panel section every shell-bearing template reuses: two toggles,
62
+ * "Command palette" and "User menu." Preview-only — see each template's
63
+ * own module doc comment for how the toggles wire into ITS OWN chrome
64
+ * (the trigger/overlay/menu placement differs per template's real
65
+ * anatomy, so this section only owns the on/off state, not the layout). */
66
+ export declare function ShellSection(props: {
67
+ state: ShellControlsState;
68
+ onChange: (v: ShellControlsState) => void;
69
+ }): JSX.Element;
@@ -0,0 +1,58 @@
1
+ import { JSX } from 'solid-js';
2
+ /**
3
+ * Shared wordless-skeleton language for `Labs/Builder/<Template>` preview
4
+ * hosts (docs/superpowers/specs/2026-08-28-template-builder-design.md).
5
+ *
6
+ * Extracted from `builder-in-app-assistant.stories.tsx` (Round A2) into this
7
+ * standalone module during the T-1 build-out (Assistant/Research/Workspace/
8
+ * Voice) so every template's "the rest of your app" skeleton chrome shares
9
+ * one definition instead of four copies drifting apart — the cross-cutting
10
+ * mandate the design spec's Process step names ("as shared needs emerge,
11
+ * refactor the shared components ONCE"). `builder-in-app-assistant.stories.tsx`
12
+ * was retrofitted to import from here in the same round; nothing about its
13
+ * rendered output changed.
14
+ *
15
+ * PLAIN inline CSS (`color-mix`), not a Tailwind opacity-modifier class
16
+ * on a color utility or an arbitrary-bracket width value — see the
17
+ * original Round A2 note in git blame: this Storybook dev server's
18
+ * Tailwind JIT pass proved non-deterministic for FRESH combinations
19
+ * introduced by a single file (a class would show correctly in the rendered
20
+ * `className` while `getComputedStyle` reported the rule simply wasn't
21
+ * compiled). `color-mix()` is real CSS with no compile step to race, and
22
+ * matches what Tailwind's own `/NN` opacity modifier generates.
23
+ */
24
+ export declare function mix(colorVar: string, pct: number): string;
25
+ /** One skeleton bar/pill. `widthClass` for a standard-scale Tailwind width
26
+ * utility (proven reliable); `width` for an inline CSS width (a
27
+ * percentage, or anything arbitrary); `flex` to grow and fill instead of
28
+ * taking either. Height is always a standard-scale utility unless
29
+ * overridden. */
30
+ export declare function SkeletonBar(props: {
31
+ widthClass?: string;
32
+ width?: string;
33
+ heightClass?: string;
34
+ pct: number;
35
+ flex?: boolean;
36
+ }): JSX.Element;
37
+ /** A grayscale/muted skeleton stat tile: a label bar over a bigger number
38
+ * bar. Deliberately toneless (muted-foreground tints only, never
39
+ * `bg-primary`/accent) so the host reads as chrome around the product
40
+ * rather than product itself. */
41
+ export declare function StubStatTile(props: {
42
+ class?: string;
43
+ }): JSX.Element;
44
+ /** A single stub nav-rail row: an icon-ish dot plus a label bar. `active`
45
+ * lights the row the way a real nav's current-page item would. */
46
+ export declare function StubNavRow(props: {
47
+ active?: boolean;
48
+ }): JSX.Element;
49
+ /** A single stub table row: a handful of column bars at staggered widths,
50
+ * so the row reads as data rather than one flat block. */
51
+ export declare function StubTableRow(): JSX.Element;
52
+ /** A wordless skeleton code/text block: a stack of bars at staggered
53
+ * widths, monospace rhythm (shorter, denser bars) rather than prose
54
+ * rhythm — for the Workspace template's artifact/code pane. */
55
+ export declare function StubCodeBlock(props: {
56
+ lines?: number;
57
+ class?: string;
58
+ }): JSX.Element;
@@ -0,0 +1,75 @@
1
+ import { JSX } from 'solid-js';
2
+ export type BuilderTemplateId = 'widget' | 'inAppAssistant' | 'assistant' | 'research' | 'workspace' | 'voice' | 'scratch';
3
+ /** The template ids that DO have a card — every `BuilderTemplateId` except
4
+ * `'scratch'`, which has no illustration and never appears in
5
+ * `BUILDER_TEMPLATES`. */
6
+ export type BuilderCardTemplateId = Exclude<BuilderTemplateId, 'scratch'>;
7
+ export interface BuilderTemplate {
8
+ id: BuilderCardTemplateId;
9
+ name: string;
10
+ description: string;
11
+ }
12
+ /** V1 templates, in build order (T-1: easiest to hardest, so controls
13
+ * accumulate template to template). Names and one-liners are the T-4/T-7
14
+ * copy this round exists to force into existence. Round P2 grows the set
15
+ * from four to six (In-app assistant, Voice) and sharpens the four
16
+ * existing one-liners for instant recognition. */
17
+ export declare const BUILDER_TEMPLATES: readonly BuilderTemplate[];
18
+ export interface BuilderStartProps {
19
+ /** The currently selected template id, or unset for none yet. Controlled —
20
+ * this component holds no selection state of its own. */
21
+ value?: BuilderTemplateId;
22
+ /**
23
+ * Fires with a template's id when its card is chosen. Click-to-advance
24
+ * (design choice, this round): T-7 says "selection advances to that
25
+ * template's builder", and there is nothing a second "Continue" step
26
+ * would add here that the click itself doesn't already mean — a
27
+ * disambiguating confirm step belongs to T-2's SWITCHING-template case
28
+ * (control set changes, so a re-pick needs a confirm), not to picking a
29
+ * template for the first time. So `onSelect` fires on the same click that
30
+ * shows the selected ring; the story's Continue readout below just proves
31
+ * the callback fired, since there's no template builder screen yet to
32
+ * navigate to.
33
+ */
34
+ onSelect: (id: BuilderTemplateId) => void;
35
+ class?: string;
36
+ }
37
+ export declare const BLUEPRINT_BG: {
38
+ readonly 'background-image': "radial-gradient(circle, var(--color-border) 1px, transparent 1px)";
39
+ readonly 'background-size': "14px 14px";
40
+ };
41
+ /**
42
+ * `BuilderStart` — the builder's opening screen: six selectable template
43
+ * cards (T-7, grown from four in Round P2). Each card is a real
44
+ * `ui/card.tsx` `Card` (`clickable`,
45
+ * `media` for the illustration, `header` for the name), not a hand-rolled
46
+ * button — the kit's own primitive already gives a `role="button"` with
47
+ * Enter/Space activation, which settles this screen's keyboard-semantics
48
+ * question: a `radiogroup` was the other defensible reading (this IS a
49
+ * single choice among six), but `Card` already implements exactly the
50
+ * button-per-card pattern with no extra wiring, and reusing it beats
51
+ * building a second selection primitive for one screen.
52
+ *
53
+ * Brand alignment (T-7): the kit's own tokens throughout — no new color, no
54
+ * new radius, no new type stack. The illustrations are the one genuinely new
55
+ * visual element this round adds; see `TEMPLATE_ILLUSTRATIONS` below for
56
+ * their shared style rules.
57
+ */
58
+ export declare function BuilderStart(props: BuilderStartProps): JSX.Element;
59
+ export declare const STROKE = 1.5;
60
+ export declare const LINE: {
61
+ stroke: string;
62
+ fill: string;
63
+ };
64
+ export declare const BORDER: {
65
+ stroke: string;
66
+ fill: string;
67
+ };
68
+ export declare const ACCENT: {
69
+ stroke: string;
70
+ fill: string;
71
+ };
72
+ export declare const ACCENT_FILL: {
73
+ stroke: string;
74
+ fill: string;
75
+ };