@kitn.ai/ui 0.25.2 → 0.27.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 (603) hide show
  1. package/README.md +17 -6
  2. package/bin/mcp.js +16 -3
  3. package/bin/route.js +23 -0
  4. package/bin/route.test.js +58 -0
  5. package/dist/{elements/chunks/Icon-b5A8hlHs.js → Icon-BnFKqqtY.js} +1 -1
  6. package/dist/action-icons-CBskfBMz.js +1 -0
  7. package/dist/arrow-down-Br0qtpsz.js +1 -0
  8. package/dist/arrow-left-Dj7xgE12.js +1 -0
  9. package/dist/artifact-CvXEm1lS.js +1 -0
  10. package/dist/assets/dev-5XzXYR21.js +91 -0
  11. package/dist/attachments-C43ZegEq.js +1 -0
  12. package/dist/audio-visualizer-B-79y1Tj.js +1 -0
  13. package/dist/badge-BpUbq8c0.js +1 -0
  14. package/dist/bash-InADTalH.js +1 -6
  15. package/dist/bell-sn17Ip9v.js +1 -0
  16. package/dist/{elements/chunks/button-B9okqG73.js → button-BH6rN0U-.js} +1 -1
  17. package/dist/card-renderer-Cb1gQmth.js +1 -0
  18. package/dist/card-routing-DifQgS7n.js +1 -0
  19. package/dist/check-DPeeMUYx.js +1 -0
  20. package/dist/checkbox-Dc9Yov_B.js +1 -0
  21. package/dist/checkbox-group-B1kDLLYk.js +1 -0
  22. package/dist/chevron-down-CHSWk7ZT.js +1 -0
  23. package/dist/chevron-right-B7l_fMgx.js +1 -0
  24. package/dist/choice-card-BT3c1S8g.js +1 -0
  25. package/dist/circle-Bb0yOpqM.js +1 -0
  26. package/dist/circle-check-BGZpCiz7.js +1 -0
  27. package/dist/circle-x-wobWkoSx.js +1 -0
  28. package/dist/{elements/chunks/cn-CU7UAWzk.js → cn-DN5AWfiS.js} +1 -1
  29. package/dist/code-block-CUQ5mtv0.js +1 -0
  30. package/dist/collapsible-CPJbf6FM.js +1 -0
  31. package/dist/components/attachment-types.d.ts +53 -1
  32. package/dist/components/attachments.d.ts +31 -0
  33. package/dist/components/audio-visualizer/fit-scale.d.ts +50 -0
  34. package/dist/components/audio-visualizer/index.d.ts +15 -1
  35. package/dist/components/audio-visualizer/variant-bar.d.ts +24 -1
  36. package/dist/components/card-renderer.d.ts +13 -0
  37. package/dist/components/card.d.ts +4 -0
  38. package/dist/components/chat-thread.d.ts +49 -42
  39. package/dist/components/code-block.d.ts +22 -0
  40. package/dist/components/conversation-item.d.ts +66 -1
  41. package/dist/components/conversation-list.d.ts +77 -0
  42. package/dist/components/form-widgets.d.ts +67 -2
  43. package/dist/components/form.d.ts +89 -0
  44. package/dist/components/message.d.ts +29 -0
  45. package/dist/components/reasoning.d.ts +6 -0
  46. package/dist/components/scroll-button.d.ts +11 -0
  47. package/dist/components/thread.d.ts +5 -0
  48. package/dist/components/toast.d.ts +2 -1
  49. package/dist/components/tool-types.d.ts +9 -0
  50. package/dist/components/voice-input.d.ts +8 -0
  51. package/dist/components/voice-output.d.ts +12 -1
  52. package/dist/components/workspace-shell.d.ts +87 -0
  53. package/dist/composer-CjngLzal.js +106 -0
  54. package/dist/confirm-card-DCx_A4bU.js +1 -0
  55. package/dist/construct-cli.es.js +1169 -0
  56. package/dist/context-BY8V-Nlp.js +1 -0
  57. package/dist/controllable-D43BKmtX.js +1 -0
  58. package/dist/conversation-list-D4lLU_yS.js +1 -0
  59. package/dist/copy-B6DO4PqB.js +1 -0
  60. package/dist/core-AYMC6_lb.js +12 -5874
  61. package/dist/{create-tween-CUzOlaMS.js → create-tween-BPzaefTp.js} +1 -1
  62. package/dist/{create-tween-B5Y4Im8G.js → create-tween-CnMHviKB.js} +1 -1
  63. package/dist/{create-tween-4z1XYLkR.js → create-tween-D1aiGZZh.js} +1 -1
  64. package/dist/{elements/chunks/create-tween-CUrM6D_o.js → create-tween-DUSQUKpr.js} +2 -2
  65. package/dist/css-M7EaDHN_.js +1 -6
  66. package/dist/custom-elements.json +3468 -1927
  67. package/dist/default-input-CucQEOqH.js +1 -0
  68. package/dist/define-CGGX-7Vg.js +1 -0
  69. package/dist/define.d.ts +4 -0
  70. package/dist/define.js +510 -0
  71. package/dist/define.server.d.ts +5 -0
  72. package/dist/define.server.js +506 -0
  73. package/dist/diagnostics/hook.d.ts +81 -0
  74. package/dist/diagnostics/index.d.ts +7 -0
  75. package/dist/diagnostics/report-request.d.ts +61 -0
  76. package/dist/diagnostics.d.ts +5 -0
  77. package/dist/diagnostics.js +209 -0
  78. package/dist/disclosure-CbLtajUQ.js +1 -0
  79. package/dist/dropdown-BwhViJFd.js +1 -0
  80. package/dist/elements/agent-card.js +1 -1
  81. package/dist/elements/artifact.js +1 -1
  82. package/dist/elements/attachments.js +1 -1
  83. package/dist/elements/audio-visualizer.js +1 -1
  84. package/dist/elements/autoloader.js +1 -1
  85. package/dist/elements/avatar.js +1 -1
  86. package/dist/elements/badge.js +1 -1
  87. package/dist/elements/button.js +1 -1
  88. package/dist/elements/card.js +1 -1
  89. package/dist/elements/cards.js +1 -1
  90. package/dist/elements/chain-of-thought.js +1 -1
  91. package/dist/elements/chat-scope-picker.js +1 -1
  92. package/dist/elements/chat-workspace.js +1 -1
  93. package/dist/elements/chat.js +1 -1
  94. package/dist/elements/checkbox-group.d.ts +1 -0
  95. package/dist/elements/checkbox-group.js +1 -0
  96. package/dist/elements/checkbox.d.ts +1 -0
  97. package/dist/elements/checkbox.js +1 -0
  98. package/dist/elements/checkpoint.js +1 -1
  99. package/dist/elements/choice.js +1 -1
  100. package/dist/elements/coachmark.js +1 -1
  101. package/dist/elements/code-block.js +1 -1
  102. package/dist/elements/command.js +1 -1
  103. package/dist/elements/compare.js +1 -1
  104. package/dist/elements/composer.js +1 -1
  105. package/dist/elements/confirm-card.js +1 -1
  106. package/dist/elements/context-meter.js +1 -1
  107. package/dist/elements/conversation-item.d.ts +1 -0
  108. package/dist/elements/conversation-item.js +1 -0
  109. package/dist/elements/conversation-list.js +1 -1
  110. package/dist/elements/default-input.d.ts +3 -3
  111. package/dist/elements/define-entry.d.ts +12 -0
  112. package/dist/elements/define.d.ts +27 -0
  113. package/dist/elements/diagnostic-events.d.ts +74 -0
  114. package/dist/elements/dialog.js +1 -1
  115. package/dist/elements/dock.d.ts +1 -0
  116. package/dist/elements/dock.js +243 -0
  117. package/dist/elements/dropdown.d.ts +1 -0
  118. package/dist/elements/dropdown.js +1 -0
  119. package/dist/elements/editable-label.js +1 -1
  120. package/dist/elements/element-data-types.d.ts +37 -0
  121. package/dist/elements/element-diagnostics.d.ts +81 -0
  122. package/dist/elements/embed.js +1 -1
  123. package/dist/elements/empty.js +1 -1
  124. package/dist/elements/feedback-bar.js +1 -1
  125. package/dist/elements/file-tree.js +1 -1
  126. package/dist/elements/file-upload.js +1 -1
  127. package/dist/elements/form.js +1 -1
  128. package/dist/elements/hover-card.js +1 -1
  129. package/dist/elements/icon.js +1 -1
  130. package/dist/elements/image.js +1 -1
  131. package/dist/elements/input.js +1 -1
  132. package/dist/elements/kbd.js +1 -1
  133. package/dist/elements/link-preview.js +1 -1
  134. package/dist/elements/loader.js +1 -1
  135. package/dist/elements/markdown.js +1 -1
  136. package/dist/elements/menu.js +1 -1
  137. package/dist/elements/message-skills.js +1 -1
  138. package/dist/elements/message.js +1 -1
  139. package/dist/elements/model-switcher.js +1 -1
  140. package/dist/elements/nav.js +1 -1
  141. package/dist/elements/notice.js +1 -1
  142. package/dist/elements/pane-grid.d.ts +1 -0
  143. package/dist/elements/pane-grid.js +1 -0
  144. package/dist/elements/pane-group.js +1 -1
  145. package/dist/elements/pane.js +1 -1
  146. package/dist/elements/popover.js +1 -1
  147. package/dist/elements/progress-bar.js +1 -1
  148. package/dist/elements/prompt-dock.js +1 -1
  149. package/dist/elements/prompt-input.js +1 -1
  150. package/dist/elements/prompt-suggestions.js +1 -1
  151. package/dist/elements/radio-group.d.ts +1 -0
  152. package/dist/elements/radio-group.js +1 -0
  153. package/dist/elements/reasoning.js +1 -1
  154. package/dist/elements/register.d.ts +2 -0
  155. package/dist/elements/remote.js +1 -1
  156. package/dist/elements/resizable.js +1 -1
  157. package/dist/elements/response-stream.js +3 -3
  158. package/dist/elements/screen.js +1 -1
  159. package/dist/elements/scroll-area.js +1 -1
  160. package/dist/elements/scroll-button.js +1 -1
  161. package/dist/elements/search.js +1 -1
  162. package/dist/elements/segmented.js +1 -1
  163. package/dist/elements/select.d.ts +1 -0
  164. package/dist/elements/select.js +1 -0
  165. package/dist/elements/separator.js +1 -1
  166. package/dist/elements/setting-item.js +1 -1
  167. package/dist/elements/settings-group.js +1 -1
  168. package/dist/elements/skeleton.js +1 -1
  169. package/dist/elements/slider.d.ts +1 -0
  170. package/dist/elements/slider.js +1 -0
  171. package/dist/elements/slots.d.ts +36 -4
  172. package/dist/elements/source.js +1 -1
  173. package/dist/elements/status.js +1 -1
  174. package/dist/elements/switch.js +1 -1
  175. package/dist/elements/tabs.js +1 -1
  176. package/dist/elements/tasks.js +1 -1
  177. package/dist/elements/text-shimmer.js +1 -1
  178. package/dist/elements/thinking-bar.js +1 -1
  179. package/dist/elements/thread.js +1 -1
  180. package/dist/elements/toast.js +1 -1
  181. package/dist/elements/tool.js +1 -1
  182. package/dist/elements/tooltip.js +1 -1
  183. package/dist/elements/voice-input.js +1 -1
  184. package/dist/elements/voice-output.js +1 -1
  185. package/dist/elements.d.ts +589 -167
  186. package/dist/{elements/chunks/ellipsis-CVxqfsDZ.js → ellipsis-DFr4Vqr3.js} +1 -1
  187. package/dist/embed-5s_vU4J0.js +1 -0
  188. package/dist/engine-javascript-vq0WuIJl.js +14 -2516
  189. package/dist/{elements/chunks/external-link-DG2sRdQL.js → external-link-u9d85ORQ.js} +1 -1
  190. package/dist/file-text-CX7_x42o.js +1 -0
  191. package/dist/{elements/chunks/file-tree-yGWNK0Js.js → file-tree-D3kBjXI5.js} +1 -1
  192. package/dist/folder-V-YdIL8f.js +1 -0
  193. package/dist/form-BRNUMCN2.js +1 -0
  194. package/dist/github-dark-dimmed-DUshB20C.js +1 -4
  195. package/dist/github-light-JYsPkUQd.js +1 -4
  196. package/dist/hover-card-DaeiYrTA.js +1 -0
  197. package/dist/html-CPZ3oZQ7.js +1 -10
  198. package/dist/icon-BpixdZNq.js +1 -0
  199. package/dist/{elements/chunks/index-BCRhi84a.js → index-xu_pdcPi.js} +1 -1
  200. package/dist/index.d.ts +3 -1
  201. package/dist/index.js +8473 -6470
  202. package/dist/index.server.js +6495 -4958
  203. package/dist/info-8mFsIjS3.js +1 -0
  204. package/dist/input-d1Yuu-hz.js +1 -0
  205. package/dist/javascript-C25yR2R2.js +1 -6
  206. package/dist/json-DxJze_jm.js +1 -6
  207. package/dist/kai-provider.es.js +40 -40
  208. package/dist/kai.es.js +1 -1
  209. package/dist/kbd-961zMPFB.js +1 -0
  210. package/dist/link-DlZZBGaR.js +1 -0
  211. package/dist/{elements/chunks/link-preview-Cf5KOP-i.js → link-preview-DIIbV2Sd.js} +1 -1
  212. package/dist/loader-YQszHFaW.js +1 -0
  213. package/dist/{elements/chunks/markdown-DbozyYqa.js → markdown-CVk1MPsj.js} +1 -1
  214. package/dist/mcp.es.js +3873 -544
  215. package/dist/message-CwKVEdZg.js +1 -0
  216. package/dist/message-DS8lzHc1.js +1 -0
  217. package/dist/message-circle-Xf8Q-vZp.js +1 -0
  218. package/dist/message-square-Cxnwgkns.js +1 -0
  219. package/dist/{elements/chunks/minimize-2-SegJ_oku.js → minimize-2-UEZmP2QT.js} +1 -1
  220. package/dist/{elements/chunks/model-switcher-D7JrFFHp.js → model-switcher-Kk1jEQ5t.js} +1 -1
  221. package/dist/{elements/chunks/overlay-CV7z2YuX.js → overlay-C1od6LOz.js} +1 -1
  222. package/dist/panel-right-ryET0yyn.js +1 -0
  223. package/dist/paperclip-BDNoZFJP.js +1 -0
  224. package/dist/play-OFIvYXUQ.js +1 -0
  225. package/dist/primitives/card-data-types.d.ts +49 -0
  226. package/dist/primitives/card-routing.d.ts +1 -33
  227. package/dist/primitives/card-validate.d.ts +2 -2
  228. package/dist/primitives/chat-config.d.ts +29 -2
  229. package/dist/primitives/field-mask.d.ts +96 -0
  230. package/dist/primitives/field-semantics.d.ts +36 -0
  231. package/dist/primitives/input-mask.d.ts +46 -0
  232. package/dist/primitives/url-scheme-policy.d.ts +34 -0
  233. package/dist/primitives/use-resize-observer.d.ts +23 -0
  234. package/dist/primitives/use-speech-recognition.d.ts +8 -0
  235. package/dist/primitives/use-text-stream.d.ts +5 -0
  236. package/dist/progress-bar-BvYX0aoy.js +1 -0
  237. package/dist/prompt-suggestion-BRFu2lcu.js +1 -0
  238. package/dist/radio-DcL23cNJ.js +1 -0
  239. package/dist/react/index.d.ts +306 -283
  240. package/dist/react.js +309 -247
  241. package/dist/reasoning-Cackq4Rh.js +1 -0
  242. package/dist/register-impl-C7rENvPK.js +424 -0
  243. package/dist/{elements/chunks/resizable-Dpzjlvp4.js → resizable-Cp9HUYih.js} +1 -1
  244. package/dist/rotate-ccw-0DLRDHH5.js +1 -0
  245. package/dist/rotate-cw-DOB9IGcU.js +1 -0
  246. package/dist/schemas/form.schema.json +21 -1
  247. package/dist/schemas/index.d.ts +1 -1
  248. package/dist/schemas/tool-defs.d.ts +45 -0
  249. package/dist/schemas.js +398 -305
  250. package/dist/scroll-area-emVmWP4K.js +1 -0
  251. package/dist/scroll-button-CeP_gv1x.js +1 -0
  252. package/dist/select-CWmu00tS.js +1 -0
  253. package/dist/{elements/chunks/separator-DH2r_ZSZ.js → separator-CE6vly6z.js} +1 -1
  254. package/dist/{elements/chunks/settings-BFMOd6yB.js → settings-CE-78SvZ.js} +1 -1
  255. package/dist/{elements/chunks/settings-group-B3VZKIcz.js → settings-group-ZFWNxFQR.js} +1 -1
  256. package/dist/{elements/chunks/skeleton-N8BuWYmf.js → skeleton-BebdP4mf.js} +1 -1
  257. package/dist/slider-BAKRYUlz.js +1 -0
  258. package/dist/slots-DaNjX0rc.js +1 -0
  259. package/dist/{solid-BMuDmFo_.js → solid-BE5ui6sy.js} +10672 -8116
  260. package/dist/{solid-CGYNdLRR.js → solid-DFhsce3O.js} +8137 -6056
  261. package/dist/solid.d.ts +15 -0
  262. package/dist/solid.js +248 -235
  263. package/dist/solid.server.js +248 -235
  264. package/dist/source-B0FlguSx.js +1 -0
  265. package/dist/star-CBMZvLuN.js +1 -0
  266. package/dist/state/index.d.ts +5 -1
  267. package/dist/state/mock.d.ts +32 -2
  268. package/dist/state/persistence.d.ts +51 -0
  269. package/dist/state/stream.d.ts +50 -0
  270. package/dist/state/threads.d.ts +71 -0
  271. package/dist/state.js +297 -172
  272. package/dist/store-7eoadydQ.js +1 -0
  273. package/dist/svelte--5p79yCD.js +1 -15
  274. package/dist/switch-CViARZCy.js +1 -0
  275. package/dist/tasks-card-MjCcOhR_.js +1 -0
  276. package/dist/text-shimmer-DKlwRF2G.js +1 -0
  277. package/dist/textarea-3ay2Me2-.js +1 -0
  278. package/dist/theme.tokens.css +82 -13
  279. package/dist/{elements/chunks/thumbs-up-DQe0hvkZ.js → thumbs-up-DQcu2HMO.js} +1 -1
  280. package/dist/toast-store-C6yKOhbk.js +1 -0
  281. package/dist/{elements/chunks/tool-C1YtxwPu.js → tool-BCYNlfKy.js} +1 -1
  282. package/dist/{elements/chunks/tooltip-BqwnFWhn.js → tooltip-05zI4hjs.js} +1 -1
  283. package/dist/trash-2-BR1RxGky.js +1 -0
  284. package/dist/{elements/chunks/triangle-alert-B6or7F5u.js → triangle-alert-DHohDOCy.js} +1 -1
  285. package/dist/tsx-B8rCNbgL.js +1 -6
  286. package/dist/types.d.ts +4 -2
  287. package/dist/typescript-RycA9KXf.js +1 -6
  288. package/dist/ui/checkbox-group.d.ts +83 -0
  289. package/dist/ui/checkbox.d.ts +40 -0
  290. package/dist/ui/dock.d.ts +131 -0
  291. package/dist/ui/hover-card.d.ts +44 -0
  292. package/dist/ui/icon.d.ts +3 -0
  293. package/dist/ui/input.d.ts +48 -2
  294. package/dist/ui/radio.d.ts +85 -0
  295. package/dist/ui/select.d.ts +71 -0
  296. package/dist/ui/slider.d.ts +65 -0
  297. package/dist/ui/switch.d.ts +9 -2
  298. package/dist/upload-BbGW6A_u.js +1 -0
  299. package/dist/url-scheme-policy-DHpoTJwB.js +1 -0
  300. package/dist/use-card-resolution-CJW4grFa.js +1 -0
  301. package/dist/{variant-aurora-DwSOfraQ.js → variant-aurora-BUOVgPOB.js} +27 -27
  302. package/dist/{variant-aurora-wKvAQ5wp.js → variant-aurora-CUsUJvFI.js} +28 -28
  303. package/dist/{variant-aurora-XEkPT0_z.js → variant-aurora-CW2i4bfr.js} +2 -2
  304. package/dist/{elements/chunks/variant-aurora-QXTZPyST.js → variant-aurora-xiMPty8f.js} +2 -2
  305. package/dist/variant-custom-BQtOnmeO.js +1 -0
  306. package/dist/{variant-custom-BhS9wIpU.js → variant-custom-CAm9L-E5.js} +65 -65
  307. package/dist/{variant-custom-eFIg2XWQ.js → variant-custom-CAnzzppW.js} +40 -40
  308. package/dist/variant-custom-D91HjAKz.js +1 -0
  309. package/dist/{variant-wave-CUWGx9Bn.js → variant-wave-Ca1Ls4_y.js} +21 -21
  310. package/dist/{variant-wave-CbVsmgwT.js → variant-wave-CxX39DKd.js} +25 -25
  311. package/dist/{variant-wave-BwzrHD1s.js → variant-wave-DYyzIIZv.js} +2 -2
  312. package/dist/{elements/chunks/variant-wave-DDCwhLas.js → variant-wave-uY5crU_K.js} +2 -2
  313. package/dist/vue-BmIZj4XD.js +1 -33
  314. package/dist/wire/chunk.d.ts +47 -0
  315. package/dist/wire/diagnostics.d.ts +575 -0
  316. package/dist/wire/encode-probe.d.ts +70 -0
  317. package/dist/wire/encode.d.ts +24 -0
  318. package/dist/wire/index.d.ts +2 -0
  319. package/dist/wire/sse.d.ts +10 -2
  320. package/dist/wire.js +917 -480
  321. package/dist/x-C5m1JFgi.js +1 -0
  322. package/frameworks/react/index.tsx +325 -108
  323. package/llms-full.txt +1354 -82
  324. package/llms.txt +6 -3
  325. package/package.json +39 -6
  326. package/src/agent-tooling/archetypes.ts +41 -9
  327. package/src/agent-tooling/catalog/README.md +676 -0
  328. package/src/agent-tooling/catalog/catalog-types.ts +231 -0
  329. package/src/agent-tooling/catalog/fabrications.ts +96 -0
  330. package/src/agent-tooling/catalog/invariants.ts +284 -0
  331. package/src/agent-tooling/catalog/labs-titles.ts +114 -0
  332. package/src/agent-tooling/catalog/scenarios.ts +87 -0
  333. package/src/agent-tooling/catalog/surfaces.ts +347 -0
  334. package/src/agent-tooling/construct/cli-entry.ts +8 -0
  335. package/src/agent-tooling/construct/cli.ts +131 -0
  336. package/src/agent-tooling/construct/codegen.ts +1353 -0
  337. package/src/agent-tooling/construct/construct.v1.schema.json +250 -0
  338. package/src/agent-tooling/construct/dev.ts +148 -0
  339. package/src/agent-tooling/construct/fixtures/demo-widget.construct.json +7 -0
  340. package/src/agent-tooling/construct/fixtures/ops-console.construct.json +44 -0
  341. package/src/agent-tooling/construct/fixtures/owner-widget.construct.json +23 -0
  342. package/src/agent-tooling/construct/schema.ts +371 -0
  343. package/src/agent-tooling/integrations/anthropic.ts +7 -1
  344. package/src/agent-tooling/integrations/cloudflare.ts +43 -2
  345. package/src/agent-tooling/integrations/langgraph.ts +7 -1
  346. package/src/agent-tooling/integrations/mastra.ts +7 -1
  347. package/src/agent-tooling/integrations/mock.ts +92 -17
  348. package/src/agent-tooling/integrations/ollama.ts +7 -1
  349. package/src/agent-tooling/integrations/openai.ts +7 -1
  350. package/src/agent-tooling/integrations/openrouter.ts +7 -1
  351. package/src/agent-tooling/integrations/pi.ts +56 -1
  352. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +7 -1
  353. package/src/agent-tooling/mcp/css-raw.d.ts +12 -0
  354. package/src/agent-tooling/mcp/manifest.ts +100 -1
  355. package/src/agent-tooling/mcp/server.ts +63 -6
  356. package/src/agent-tooling/mcp/tools/construct.ts +130 -0
  357. package/src/agent-tooling/mcp/tools/debug.ts +126 -4
  358. package/src/agent-tooling/mcp/tools/reference.ts +542 -5
  359. package/src/agent-tooling/mcp/tools/scaffold.ts +1834 -307
  360. package/src/agent-tooling/mcp/tools/theme.ts +146 -30
  361. package/src/agent-tooling/mcp/validate-args.ts +141 -0
  362. package/src/agent-tooling/recipes/composed-thread.ts +714 -0
  363. package/src/agent-tooling/recipes/index.ts +22 -0
  364. package/src/agent-tooling/recipes/types.ts +32 -0
  365. package/src/agent-tooling/registry.ts +24 -7
  366. package/src/agent-tooling/route-emit.ts +26 -2
  367. package/src/components/attachment-types.ts +54 -1
  368. package/src/components/attachments.tsx +169 -22
  369. package/src/components/audio-visualizer/fit-scale.ts +112 -0
  370. package/src/components/audio-visualizer/index.tsx +80 -3
  371. package/src/components/audio-visualizer/variant-aurora.tsx +10 -4
  372. package/src/components/audio-visualizer/variant-bar.tsx +38 -6
  373. package/src/components/audio-visualizer/variant-custom.tsx +8 -2
  374. package/src/components/audio-visualizer/variant-grid.tsx +16 -11
  375. package/src/components/audio-visualizer/variant-radial.tsx +15 -10
  376. package/src/components/audio-visualizer/variant-wave.tsx +7 -2
  377. package/src/components/card-renderer.tsx +39 -8
  378. package/src/components/card.tsx +10 -2
  379. package/src/components/chat-container.tsx +4 -1
  380. package/src/components/chat-scope-picker.tsx +2 -2
  381. package/src/components/chat-thread.tsx +105 -13
  382. package/src/components/choice-card.tsx +102 -37
  383. package/src/components/coachmark.tsx +1 -1
  384. package/src/components/code-block.tsx +81 -5
  385. package/src/components/composer.tsx +89 -8
  386. package/src/components/confirm-card.tsx +20 -4
  387. package/src/components/conversation-item.tsx +138 -4
  388. package/src/components/conversation-list.tsx +230 -15
  389. package/src/components/embed.tsx +4 -0
  390. package/src/components/empty.tsx +14 -3
  391. package/src/components/file-tree.tsx +5 -1
  392. package/src/components/form-widgets.tsx +257 -195
  393. package/src/components/form.tsx +336 -21
  394. package/src/components/loader.tsx +12 -5
  395. package/src/components/message-skills.tsx +1 -1
  396. package/src/components/message.tsx +142 -12
  397. package/src/components/prompt-input.tsx +7 -1
  398. package/src/components/prompt-suggestion.tsx +4 -1
  399. package/src/components/reasoning.tsx +30 -3
  400. package/src/components/response-compare.tsx +2 -2
  401. package/src/components/response-stream.tsx +13 -7
  402. package/src/components/screen.tsx +5 -0
  403. package/src/components/scroll-button.tsx +63 -4
  404. package/src/components/source.tsx +6 -1
  405. package/src/components/tasks-card.tsx +58 -16
  406. package/src/components/thread.tsx +10 -1
  407. package/src/components/toast.tsx +11 -5
  408. package/src/components/tool-types.ts +9 -0
  409. package/src/components/voice-input.tsx +35 -3
  410. package/src/components/voice-output.tsx +46 -6
  411. package/src/components/workspace-shell.tsx +285 -0
  412. package/src/diagnostics/hook.ts +352 -0
  413. package/src/diagnostics/index.ts +82 -0
  414. package/src/diagnostics/report-request.ts +296 -0
  415. package/src/elements/attachments.tsx +9 -8
  416. package/src/elements/audio-visualizer.tsx +48 -4
  417. package/src/elements/chat-workspace.tsx +159 -287
  418. package/src/elements/chat.tsx +31 -10
  419. package/src/elements/checkbox-group.tsx +164 -0
  420. package/src/elements/checkbox.tsx +134 -0
  421. package/src/elements/code-block.tsx +19 -1
  422. package/src/elements/command.tsx +4 -1
  423. package/src/elements/compiled.css +1 -1
  424. package/src/elements/composer.tsx +12 -1
  425. package/src/elements/conversation-item.tsx +120 -0
  426. package/src/elements/conversation-list.tsx +60 -11
  427. package/src/elements/default-input.tsx +5 -5
  428. package/src/elements/define-entry.ts +12 -0
  429. package/src/elements/define.tsx +168 -8
  430. package/src/elements/diagnostic-events.ts +114 -0
  431. package/src/elements/dialog.tsx +47 -0
  432. package/src/elements/disclosure.ts +34 -12
  433. package/src/elements/dock.tsx +215 -0
  434. package/src/elements/dropdown.tsx +123 -0
  435. package/src/elements/element-data-types.ts +40 -0
  436. package/src/elements/element-diagnostics.ts +392 -0
  437. package/src/elements/element-manifest.json +36 -0
  438. package/src/elements/element-meta.json +1483 -560
  439. package/src/elements/element-nonscalar.json +185 -0
  440. package/src/elements/element-types.d.ts +589 -167
  441. package/src/elements/feedback-bar.tsx +5 -0
  442. package/src/elements/icon-names.json +29 -0
  443. package/src/elements/input.tsx +312 -23
  444. package/src/elements/menu.tsx +13 -0
  445. package/src/elements/message.tsx +2 -0
  446. package/src/elements/pane-grid.tsx +111 -0
  447. package/src/elements/prompt-dock.tsx +2 -1
  448. package/src/elements/prompt-input.tsx +16 -10
  449. package/src/elements/radio-group.tsx +129 -0
  450. package/src/elements/register-impl.ts +52 -0
  451. package/src/elements/register.ts +28 -0
  452. package/src/elements/resizable.tsx +52 -25
  453. package/src/elements/scroll-button.tsx +59 -6
  454. package/src/elements/select.tsx +165 -0
  455. package/src/elements/slider.tsx +171 -0
  456. package/src/elements/slots.ts +108 -13
  457. package/src/elements/styles.css +119 -9
  458. package/src/elements/thinking-bar.tsx +16 -7
  459. package/src/elements/thread.tsx +2 -0
  460. package/src/elements/toast.tsx +17 -1
  461. package/src/elements/tool.tsx +26 -5
  462. package/src/elements/voice-input.tsx +11 -2
  463. package/src/elements/voice-output.tsx +16 -3
  464. package/src/index.ts +4 -1
  465. package/src/primitives/card-data-types.ts +49 -0
  466. package/src/primitives/card-host.tsx +4 -2
  467. package/src/primitives/card-routing.ts +7 -56
  468. package/src/primitives/card-schemas/form.schema.json +21 -1
  469. package/src/primitives/card-validate.ts +10 -2
  470. package/src/primitives/chat-config.tsx +33 -6
  471. package/src/primitives/field-mask.ts +256 -0
  472. package/src/primitives/field-semantics.ts +115 -0
  473. package/src/primitives/input-mask.ts +853 -0
  474. package/src/primitives/toast-store.ts +66 -4
  475. package/src/primitives/url-scheme-policy.ts +70 -0
  476. package/src/primitives/use-resize-observer.ts +33 -0
  477. package/src/primitives/use-speech-recognition.ts +12 -1
  478. package/src/primitives/use-stick-to-bottom.ts +34 -2
  479. package/src/primitives/use-text-stream.ts +33 -2
  480. package/src/remote/provider-runtime.ts +6 -3
  481. package/src/schemas/index.ts +1 -0
  482. package/src/schemas/tool-defs.ts +307 -6
  483. package/src/solid.ts +15 -0
  484. package/src/state/index.ts +13 -1
  485. package/src/state/mock.ts +92 -6
  486. package/src/state/persistence.ts +180 -0
  487. package/src/state/stream.ts +71 -4
  488. package/src/state/threads.ts +142 -0
  489. package/src/types.ts +4 -2
  490. package/src/ui/agent-card.tsx +2 -2
  491. package/src/ui/avatar.tsx +1 -1
  492. package/src/ui/checkbox-group.tsx +153 -0
  493. package/src/ui/checkbox.tsx +63 -0
  494. package/src/ui/dialog.tsx +6 -0
  495. package/src/ui/dock.tsx +584 -0
  496. package/src/ui/dropdown.tsx +67 -23
  497. package/src/ui/hover-card.tsx +156 -6
  498. package/src/ui/icon.tsx +53 -0
  499. package/src/ui/input.tsx +275 -16
  500. package/src/ui/kbd.tsx +1 -1
  501. package/src/ui/nav.tsx +1 -1
  502. package/src/ui/pane-group.tsx +2 -2
  503. package/src/ui/radio.tsx +150 -0
  504. package/src/ui/resizable.tsx +11 -0
  505. package/src/ui/select.tsx +168 -0
  506. package/src/ui/slider.tsx +178 -0
  507. package/src/ui/switch.tsx +49 -18
  508. package/src/utils/cn.ts +11 -5
  509. package/src/wire/chunk.ts +47 -0
  510. package/src/wire/consume.ts +185 -26
  511. package/src/wire/diagnostics.ts +727 -0
  512. package/src/wire/encode-probe.ts +214 -0
  513. package/src/wire/encode.ts +267 -14
  514. package/src/wire/formats/anthropic.ts +8 -1
  515. package/src/wire/formats/openai.ts +5 -0
  516. package/src/wire/index.ts +22 -0
  517. package/src/wire/read.ts +250 -6
  518. package/src/wire/sse.ts +16 -3
  519. package/theme.css +84 -13
  520. package/dist/elements/chunks/action-icons-DW9muWrY.js +0 -1
  521. package/dist/elements/chunks/arrow-left-iJVnQmxA.js +0 -1
  522. package/dist/elements/chunks/artifact-BSuPYFHY.js +0 -1
  523. package/dist/elements/chunks/attachments-CL6TaqIb.js +0 -1
  524. package/dist/elements/chunks/audio-visualizer-BuUqQmaO.js +0 -1
  525. package/dist/elements/chunks/badge-TIMiJFKc.js +0 -1
  526. package/dist/elements/chunks/bash-InADTalH.js +0 -1
  527. package/dist/elements/chunks/card-renderer-CSoTL_e1.js +0 -1
  528. package/dist/elements/chunks/card-routing-BK09BdmL.js +0 -1
  529. package/dist/elements/chunks/chat-thread-DxoKaStk.js +0 -1
  530. package/dist/elements/chunks/check-MdLzbxrm.js +0 -1
  531. package/dist/elements/chunks/chevron-down-MK7IzDqe.js +0 -1
  532. package/dist/elements/chunks/chevron-right-C5jXhmtV.js +0 -1
  533. package/dist/elements/chunks/choice-card-CGMc3kek.js +0 -1
  534. package/dist/elements/chunks/circle-BG7VkPep.js +0 -1
  535. package/dist/elements/chunks/circle-check-GqvO2UBs.js +0 -1
  536. package/dist/elements/chunks/circle-x-mhH7pOK2.js +0 -1
  537. package/dist/elements/chunks/code-block-ClhQO9RW.js +0 -1
  538. package/dist/elements/chunks/collapsible-DBcBkFPh.js +0 -1
  539. package/dist/elements/chunks/composer-CZZmtYOT.js +0 -69
  540. package/dist/elements/chunks/confirm-card-BWjf2-xo.js +0 -1
  541. package/dist/elements/chunks/context-hKjNqiyQ.js +0 -1
  542. package/dist/elements/chunks/conversation-list-CsGJjSKG.js +0 -1
  543. package/dist/elements/chunks/core-AYMC6_lb.js +0 -12
  544. package/dist/elements/chunks/css-M7EaDHN_.js +0 -1
  545. package/dist/elements/chunks/default-input-B1Mem5wu.js +0 -1
  546. package/dist/elements/chunks/define-B_tXMYRm.js +0 -1
  547. package/dist/elements/chunks/disclosure-DAoYOKew.js +0 -1
  548. package/dist/elements/chunks/download-DnCyWFJE.js +0 -1
  549. package/dist/elements/chunks/dropdown-CmNna5lT.js +0 -1
  550. package/dist/elements/chunks/embed-CjAD2jSi.js +0 -1
  551. package/dist/elements/chunks/engine-javascript-vq0WuIJl.js +0 -141
  552. package/dist/elements/chunks/file-text-D0J9F6M7.js +0 -1
  553. package/dist/elements/chunks/folder-NV1pi_ud.js +0 -1
  554. package/dist/elements/chunks/form-Cp8Y00Wn.js +0 -1
  555. package/dist/elements/chunks/github-dark-dimmed-DUshB20C.js +0 -1
  556. package/dist/elements/chunks/github-light-JYsPkUQd.js +0 -1
  557. package/dist/elements/chunks/hover-card-6KtXpLwT.js +0 -1
  558. package/dist/elements/chunks/html-CPZ3oZQ7.js +0 -1
  559. package/dist/elements/chunks/icon-97R8SR2p.js +0 -1
  560. package/dist/elements/chunks/info-C8r5Q6cc.js +0 -1
  561. package/dist/elements/chunks/input-DrseEjhp.js +0 -1
  562. package/dist/elements/chunks/javascript-C25yR2R2.js +0 -1
  563. package/dist/elements/chunks/json-DxJze_jm.js +0 -1
  564. package/dist/elements/chunks/kbd-OGJDUT-O.js +0 -1
  565. package/dist/elements/chunks/link-BdsfLB7b.js +0 -1
  566. package/dist/elements/chunks/loader-B5QzK_8_.js +0 -1
  567. package/dist/elements/chunks/message-CE4k-qaj.js +0 -1
  568. package/dist/elements/chunks/message-DtXKPqiR.js +0 -1
  569. package/dist/elements/chunks/message-square-C9ovmtOo.js +0 -1
  570. package/dist/elements/chunks/paperclip-Bg0ITU3b.js +0 -1
  571. package/dist/elements/chunks/progress-bar-D1_rzt6N.js +0 -1
  572. package/dist/elements/chunks/prompt-suggestion-D5Sm8xF1.js +0 -1
  573. package/dist/elements/chunks/reasoning-BrxQfpfI.js +0 -1
  574. package/dist/elements/chunks/rotate-cw-DzVDJOA1.js +0 -1
  575. package/dist/elements/chunks/scroll-area-93A1bbeG.js +0 -1
  576. package/dist/elements/chunks/scroll-button-CrTo7wm4.js +0 -1
  577. package/dist/elements/chunks/share-DgNbkJKY.js +0 -1
  578. package/dist/elements/chunks/slots-CIw9RlAe.js +0 -1
  579. package/dist/elements/chunks/source-w9V0NnBn.js +0 -1
  580. package/dist/elements/chunks/star-DHvACxtm.js +0 -1
  581. package/dist/elements/chunks/store-HIPGhNz9.js +0 -1
  582. package/dist/elements/chunks/svelte--5p79yCD.js +0 -1
  583. package/dist/elements/chunks/tasks-card-lPxoodlA.js +0 -1
  584. package/dist/elements/chunks/text-shimmer-BY_rI3s5.js +0 -1
  585. package/dist/elements/chunks/textarea-DPfuhswM.js +0 -1
  586. package/dist/elements/chunks/toast-store-VUZZBhzH.js +0 -1
  587. package/dist/elements/chunks/tsx-B8rCNbgL.js +0 -1
  588. package/dist/elements/chunks/typescript-RycA9KXf.js +0 -1
  589. package/dist/elements/chunks/use-card-resolution-DJg32jGH.js +0 -1
  590. package/dist/elements/chunks/variant-custom-D5ZlmziF.js +0 -1
  591. package/dist/elements/chunks/video-Bb86fVYI.js +0 -1
  592. package/dist/elements/chunks/vue-BmIZj4XD.js +0 -1
  593. package/dist/elements/chunks/x-BOhjBeOd.js +0 -1
  594. package/dist/llms/llms-full.txt +0 -2834
  595. package/dist/llms/llms.txt +0 -156
  596. package/dist/primitives/card-validate-generator.testlib.d.ts +0 -20
  597. package/dist/register-impl-DGmGzrEM.js +0 -145
  598. package/dist/ui/stat.d.ts +0 -16
  599. package/dist/variant-custom-MkTNTycd.js +0 -1
  600. package/src/primitives/card-validate-generator.testlib.ts +0 -38
  601. package/src/ui/stat.tsx +0 -41
  602. /package/dist/{elements/chunks/card-tags-D8lZ-C_U.js → card-tags-D8lZ-C_U.js} +0 -0
  603. /package/dist/{elements/chunks/link-preview-DNILK391.js → link-preview-DNILK391.js} +0 -0
package/dist/react.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { forwardRef as A, useRef as x, useImperativeHandle as E, useLayoutEffect as w, createElement as V, useState as I, useCallback as g, useMemo as F } from "react";
2
+ import { forwardRef as M, useRef as x, useImperativeHandle as E, useLayoutEffect as T, createElement as L, useState as I, useCallback as k, useMemo as P } from "react";
3
3
  const O = /* @__PURE__ */ new Set();
4
- let T;
5
- function P(e, t) {
4
+ let w;
5
+ function V(e, t) {
6
6
  if (!(!t || O.has(e)) && !(typeof window > "u" || typeof customElements > "u") && (O.add(e), !customElements.get(e))) {
7
- if (T) {
8
- T.catch(() => t());
7
+ if (w) {
8
+ w.catch(() => t());
9
9
  return;
10
10
  }
11
11
  t();
@@ -13,40 +13,40 @@ function P(e, t) {
13
13
  }
14
14
  function ae() {
15
15
  if (!(typeof window > "u" || typeof customElements > "u"))
16
- return T ?? (T = import("@kitn.ai/ui/elements")), T;
16
+ return w ?? (w = import("@kitn.ai/ui/elements")), w;
17
17
  }
18
18
  function a(e, t, n, i) {
19
- const s = Object.entries(n), c = A((o, l) => {
20
- const r = x(null);
21
- E(l, () => r.current, []);
22
- const m = o, f = x({});
23
- for (const p of Object.keys(n)) f.current[p] = m[p];
24
- return w(() => {
25
- const p = r.current;
26
- if (!p) return;
27
- const k = () => {
28
- for (const h of t)
29
- h in m && m[h] !== void 0 && (p[h] = m[h]);
19
+ const r = Object.entries(n), c = M((o, s) => {
20
+ const l = x(null);
21
+ E(s, () => l.current, []);
22
+ const m = o, b = x({});
23
+ for (const d of Object.keys(n)) b.current[d] = m[d];
24
+ return T(() => {
25
+ const d = l.current;
26
+ if (!d) return;
27
+ const h = () => {
28
+ for (const g of t)
29
+ g in m && m[g] !== void 0 && (d[g] = m[g]);
30
30
  };
31
- k(), typeof customElements < "u" && !customElements.get(e) && customElements.whenDefined(e).then(k);
32
- }), w(() => {
33
- P(e, i);
34
- }, []), w(() => {
35
- const p = r.current;
36
- if (!p) return;
37
- const k = [];
38
- for (const [h, b] of s) {
39
- const C = (S) => {
40
- const y = f.current[h];
41
- typeof y == "function" && y(S);
31
+ h(), typeof customElements < "u" && !customElements.get(e) && customElements.whenDefined(e).then(h);
32
+ }), T(() => {
33
+ V(e, i);
34
+ }, []), T(() => {
35
+ const d = l.current;
36
+ if (!d) return;
37
+ const h = [];
38
+ for (const [g, f] of r) {
39
+ const C = (y) => {
40
+ const S = b.current[g];
41
+ typeof S == "function" && S(y);
42
42
  };
43
- p.addEventListener(b, C), k.push([b, C]);
43
+ d.addEventListener(f, C), h.push([f, C]);
44
44
  }
45
- return () => k.forEach(([h, b]) => p.removeEventListener(h, b));
46
- }, []), V(
45
+ return () => h.forEach(([g, f]) => d.removeEventListener(g, f));
46
+ }, []), L(
47
47
  e,
48
48
  {
49
- ref: r,
49
+ ref: l,
50
50
  className: m.className,
51
51
  style: m.style,
52
52
  id: m.id
@@ -66,7 +66,7 @@ function v(e) {
66
66
  if (i === null || typeof i != "object") return i;
67
67
  if (t.has(i)) return "[circular]";
68
68
  t.add(i);
69
- const s = i, c = Array.isArray(i) ? i.map(n) : Object.fromEntries(Object.keys(s).sort().map((o) => [o, n(s[o])]));
69
+ const r = i, c = Array.isArray(i) ? i.map(n) : Object.fromEntries(Object.keys(r).sort().map((o) => [o, n(r[o])]));
70
70
  return t.delete(i), c;
71
71
  };
72
72
  return JSON.stringify(n(e)) ?? "";
@@ -75,20 +75,20 @@ function D(e, t) {
75
75
  const n = e[e.length - 1];
76
76
  return (n == null ? void 0 : n.type) === "text" ? [...e.slice(0, -1), { ...n, text: n.text + t }] : [...e, { type: "text", text: t }];
77
77
  }
78
- function L(e, t, n = {}) {
79
- const i = n.index ?? 0, s = n.streamId, c = e.findIndex(
80
- (r) => r.type === "reasoning" && (r.index ?? 0) === i && r.streamId === s
78
+ function F(e, t, n = {}) {
79
+ const i = n.index ?? 0, r = n.streamId, c = e.findIndex(
80
+ (l) => l.type === "reasoning" && (l.index ?? 0) === i && l.streamId === r
81
81
  );
82
82
  if (c < 0)
83
- return [...e, { type: "reasoning", text: t, index: i, streamId: s, label: n.label, signature: n.signature, raw: n.raw }];
84
- const o = e[c], l = {
83
+ return [...e, { type: "reasoning", text: t, index: i, streamId: r, label: n.label, signature: n.signature, raw: n.raw }];
84
+ const o = e[c], s = {
85
85
  ...o,
86
86
  text: o.text + t,
87
87
  label: n.label ?? o.label,
88
88
  signature: n.signature ?? o.signature,
89
89
  raw: n.raw ?? o.raw
90
90
  };
91
- return H(o, l) ? e : [...e.slice(0, c), l, ...e.slice(c + 1)];
91
+ return H(o, s) ? e : [...e.slice(0, c), s, ...e.slice(c + 1)];
92
92
  }
93
93
  const N = [
94
94
  "type",
@@ -111,12 +111,12 @@ function H(e, t) {
111
111
  return N.every((n) => B[n](e, t));
112
112
  }
113
113
  function j(e, t) {
114
- const n = e.findIndex((s) => s.type === "card" && s.envelope.id === t.id);
114
+ const n = e.findIndex((r) => r.type === "card" && r.envelope.id === t.id);
115
115
  if (n < 0) return [...e, { type: "card", envelope: t }];
116
116
  const i = e[n];
117
117
  return v(i.envelope) === v(t) ? e : [...e.slice(0, n), { ...i, envelope: t }, ...e.slice(n + 1)];
118
118
  }
119
- function U(e, t, n) {
119
+ function G(e, t, n) {
120
120
  const i = e.findIndex((o) => o.type === "tool" && o.tool.toolCallId === t);
121
121
  if (i < 0) {
122
122
  const o = {
@@ -127,13 +127,13 @@ function U(e, t, n) {
127
127
  };
128
128
  return o.kind = o.kind ?? z(o.type), [...e, { type: "tool", tool: o }];
129
129
  }
130
- const s = e[i].tool, c = { ...s, ...n, toolCallId: t };
131
- return c.kind = W(s, n, c.type), c.raw === void 0 && s.raw !== void 0 && (c.raw = s.raw), G(s, c) ? e : [...e.slice(0, i), { type: "tool", tool: c }, ...e.slice(i + 1)];
130
+ const r = e[i].tool, c = { ...r, ...n, toolCallId: t };
131
+ return c.kind = U(r, n, c.type), c.raw === void 0 && r.raw !== void 0 && (c.raw = r.raw), K(r, c) ? e : [...e.slice(0, i), { type: "tool", tool: c }, ...e.slice(i + 1)];
132
132
  }
133
- function W(e, t, n) {
133
+ function U(e, t, n) {
134
134
  return t.kind !== void 0 ? t.kind : e.kind === void 0 || e.kind === z(e.type) ? z(n) : e.kind;
135
135
  }
136
- const K = [
136
+ const W = [
137
137
  "type",
138
138
  "state",
139
139
  "kind",
@@ -154,8 +154,8 @@ const K = [
154
154
  input: (e, t) => e.input === t.input || v(e.input) === v(t.input),
155
155
  output: (e, t) => e.output === t.output || v(e.output) === v(t.output)
156
156
  };
157
- function G(e, t) {
158
- return K.every((n) => q[n](e, t));
157
+ function K(e, t) {
158
+ return W.every((n) => q[n](e, t));
159
159
  }
160
160
  function _(e, t) {
161
161
  return [...e, t];
@@ -181,39 +181,47 @@ function $(e, t = {}) {
181
181
  const n = t.id ?? Z();
182
182
  let i = !1;
183
183
  e((o) => [...o, { id: n, role: "assistant", parts: [], ...t }]);
184
- const s = (o) => {
185
- i || e((l) => {
186
- const r = l.findIndex((f) => f.id === n);
187
- if (r < 0) return l;
188
- const m = o(l[r].parts);
189
- return m === l[r].parts ? l : [...l.slice(0, r), { ...l[r], parts: m }, ...l.slice(r + 1)];
184
+ const r = (o) => {
185
+ i || e((s) => {
186
+ const l = s.findIndex((b) => b.id === n);
187
+ if (l < 0) return s;
188
+ const m = o(s[l].parts);
189
+ return m === s[l].parts ? s : [...s.slice(0, l), { ...s[l], parts: m }, ...s.slice(l + 1)];
190
190
  });
191
191
  }, c = {
192
192
  id: n,
193
193
  appendText(o) {
194
- return s((l) => D(l, o)), c;
194
+ return r((s) => D(s, o)), c;
195
195
  },
196
- appendReasoning(o, l) {
197
- return s((r) => L(r, o, l)), c;
196
+ appendReasoning(o, s) {
197
+ return r((l) => F(l, o, s)), c;
198
198
  },
199
- upsertTool(o, l) {
200
- return s((r) => U(r, o, l)), c;
199
+ upsertTool(o, s) {
200
+ return r((l) => G(l, o, s)), c;
201
201
  },
202
202
  // Upsert, not append: keyed on envelope.id so a revised card replaces itself.
203
203
  addCard(o) {
204
- return s((l) => j(l, o)), c;
204
+ return r((s) => j(s, o)), c;
205
205
  },
206
206
  addSource(o) {
207
- return s((l) => [...l, { type: "source", source: o }]), c;
207
+ return r((s) => [...s, { type: "source", source: o }]), c;
208
208
  },
209
209
  addFile(o) {
210
- return s((l) => [...l, { type: "file", attachment: o }]), c;
210
+ return r((s) => [...s, { type: "file", attachment: o }]), c;
211
211
  },
212
212
  done() {
213
213
  i = !0;
214
214
  },
215
215
  abort(o) {
216
- s((l) => l.map((r) => r.type === "tool" && r.tool.state !== "output-available" ? { ...r, tool: { ...r.tool, state: "output-error", errorText: o } } : r)), i = !0;
216
+ const s = (o == null ? void 0 : o.trim()) || void 0;
217
+ r((l) => {
218
+ let m = !1;
219
+ const b = l.map((d) => {
220
+ var h;
221
+ return d.type !== "tool" || d.tool.state === "output-available" ? d : d.tool.state === "output-error" && ((h = d.tool.errorText) != null && h.trim()) ? (m = !0, d) : (m = !0, { ...d, tool: { ...d.tool, state: "output-error", errorText: s } });
222
+ });
223
+ return m || !s ? b : [...b, { type: "text", text: s }];
224
+ }), i = !0;
217
225
  }
218
226
  };
219
227
  return c;
@@ -224,11 +232,11 @@ function ee(e, t) {
224
232
  appendText(i) {
225
233
  return e.appendText(i), n;
226
234
  },
227
- appendReasoning(i, s) {
228
- return e.appendReasoning(i, s), n;
235
+ appendReasoning(i, r) {
236
+ return e.appendReasoning(i, r), n;
229
237
  },
230
- upsertTool(i, s) {
231
- return e.upsertTool(i, s), n;
238
+ upsertTool(i, r) {
239
+ return e.upsertTool(i, r), n;
232
240
  },
233
241
  addCard(i) {
234
242
  return e.addCard(i), n;
@@ -249,38 +257,38 @@ function ee(e, t) {
249
257
  return n;
250
258
  }
251
259
  function ne(e = {}) {
252
- const [t, n] = I(() => [...e.initialMessages ?? []]), [i, s] = I(() => [...e.initialSuggestions ?? []]), [c, o] = I(!1), l = x(e.onSubmit);
253
- l.current = e.onSubmit;
254
- const r = g((d) => n(d), []), m = g((d) => r((u) => _(u, d)), [r]), f = g(
255
- (d, u) => r((R) => Y(R, d, u)),
256
- [r]
257
- ), p = g((d) => r((u) => J(u, d)), [r]), k = g((d) => s((u) => Q(u, d)), []), h = g((d) => s((u) => X(u, d)), []), b = g(() => s([]), []), C = g((d) => (o(!0), ee($(r, d), () => o(!1))), [r]), S = g(
258
- (d) => {
259
- var u;
260
- (u = l.current) == null || u.call(l, d.detail);
260
+ const [t, n] = I(() => [...e.initialMessages ?? []]), [i, r] = I(() => [...e.initialSuggestions ?? []]), [c, o] = I(!1), s = x(e.onSubmit);
261
+ s.current = e.onSubmit;
262
+ const l = k((u) => n(u), []), m = k((u) => l((p) => _(p, u)), [l]), b = k(
263
+ (u, p) => l((A) => Y(A, u, p)),
264
+ [l]
265
+ ), d = k((u) => l((p) => J(p, u)), [l]), h = k((u) => r((p) => Q(p, u)), []), g = k((u) => r((p) => X(p, u)), []), f = k(() => r([]), []), C = k((u) => (o(!0), ee($(l, u), () => o(!1))), [l]), y = k(
266
+ (u) => {
267
+ var p;
268
+ (p = s.current) == null || p.call(s, u.detail);
261
269
  },
262
270
  []
263
- ), y = F(
264
- () => ({ messages: t, loading: c, suggestions: i, onSubmit: S }),
265
- [t, c, i, S]
271
+ ), S = P(
272
+ () => ({ messages: t, loading: c, suggestions: i, onSubmit: y }),
273
+ [t, c, i, y]
266
274
  );
267
275
  return {
268
276
  messages: t,
269
277
  setMessages: n,
270
278
  suggestions: i,
271
- setSuggestions: s,
279
+ setSuggestions: r,
272
280
  loading: c,
273
281
  append: m,
274
- update: f,
275
- remove: p,
276
- addSuggestion: k,
277
- removeSuggestion: h,
278
- clearSuggestions: b,
282
+ update: b,
283
+ remove: d,
284
+ addSuggestion: h,
285
+ removeSuggestion: g,
286
+ clearSuggestions: f,
279
287
  streamAssistant: C,
280
- bind: y
288
+ bind: S
281
289
  };
282
290
  }
283
- function M() {
291
+ function R() {
284
292
  if (typeof window > "u") return;
285
293
  const e = window;
286
294
  return e.SpeechRecognition ?? e.webkitSpeechRecognition;
@@ -288,10 +296,10 @@ function M() {
288
296
  function ie(e) {
289
297
  const t = x(e);
290
298
  t.current = e;
291
- const n = M() !== void 0, i = g(() => {
292
- const s = M();
293
- if (!s) return;
294
- const c = new s();
299
+ const n = R() !== void 0, i = k(() => {
300
+ const r = R();
301
+ if (!r) return;
302
+ const c = new r();
295
303
  c.lang = "en-US", c.interimResults = !1, c.onresult = (o) => t.current(o.results[0][0].transcript), c.start();
296
304
  }, []);
297
305
  return { supported: n, start: i };
@@ -301,19 +309,19 @@ const oe = /* @__PURE__ */ a(
301
309
  ["theme", "name", "active", "needsAttention", "status"],
302
310
  { onActivate: "kai-activate", onMenu: "kai-menu" },
303
311
  () => import("@kitn.ai/ui/elements/agent-card")
304
- ), se = /* @__PURE__ */ a(
312
+ ), re = /* @__PURE__ */ a(
305
313
  "kai-artifact",
306
314
  ["theme", "src", "files", "tab", "defaultTab", "activeFile", "sandbox", "iframeTitle", "maximized", "expandable", "openInTab", "noNav", "noReload", "noHome", "noPathField", "noTabs", "standalone", "readonlyPath", "displayUrl"],
307
315
  { onFileSelect: "kai-file-select", onMaximizeChange: "kai-maximize-change", onMaximizeIntent: "kai-maximize-intent", onNavigate: "kai-navigate", onTabChange: "kai-tab-change" },
308
316
  () => import("@kitn.ai/ui/elements/artifact")
309
- ), re = /* @__PURE__ */ a(
317
+ ), se = /* @__PURE__ */ a(
310
318
  "kai-attachments",
311
319
  ["theme", "items", "variant", "hoverCard", "removable", "showMediaType", "emptyText"],
312
320
  { onRemove: "kai-remove" },
313
321
  () => import("@kitn.ai/ui/elements/attachments")
314
322
  ), ce = /* @__PURE__ */ a(
315
323
  "kai-audio-visualizer",
316
- ["theme", "variant", "state", "size", "barCount", "count", "radius", "spread", "interval", "color", "complexity", "label", "stream", "audioElement", "bands", "shader", "animateWhenNotVisible"],
324
+ ["theme", "variant", "state", "size", "barCount", "count", "radius", "spread", "interval", "color", "complexity", "label", "stream", "audioElement", "bands", "listeningAmplitude", "shader", "animateWhenNotVisible"],
317
325
  {},
318
326
  () => import("@kitn.ai/ui/elements/audio-visualizer")
319
327
  ), le = /* @__PURE__ */ a(
@@ -348,359 +356,404 @@ const oe = /* @__PURE__ */ a(
348
356
  () => import("@kitn.ai/ui/elements/chain-of-thought")
349
357
  ), ge = /* @__PURE__ */ a(
350
358
  "kai-chat",
351
- ["theme", "search", "value", "placeholder", "loading", "suggestions", "suggestionMode", "persistSuggestions", "proseSize", "codeTheme", "codeHighlight", "chatTitle", "models", "currentModel", "context", "scrollButton", "headerStart", "headerEnd", "headerFull", "sidebar", "empty", "composer", "composerActions", "footer", "voice", "triggers", "kindIcons", "actionsReveal", "accept", "messages", "cardTypes", "cardSchemas"],
352
- { onAttachmentsChange: "kai-attachments-change", onAttachmentsRejected: "kai-attachments-rejected", onMessageAction: "kai-message-action", onModelChange: "kai-model-change", onSearch: "kai-search", onSubmit: "kai-submit", onSuggestionClick: "kai-suggestion-click", onValueChange: "kai-value-change", onVoice: "kai-voice" },
359
+ ["theme", "value", "placeholder", "loading", "suggestions", "suggestionMode", "persistSuggestions", "proseSize", "codeTheme", "codeHighlight", "reasoning", "reasoningOpen", "chatTitle", "models", "currentModel", "context", "scrollButton", "headerStart", "headerEnd", "headerFull", "sidebar", "empty", "composer", "composerActions", "footer", "attach", "webSearch", "voice", "triggers", "kindIcons", "actionsReveal", "accept", "messages", "cardTypes", "cardSchemas"],
360
+ { onAttachmentsChange: "kai-attachments-change", onAttachmentsRejected: "kai-attachments-rejected", onMessageAction: "kai-message-action", onModelChange: "kai-model-change", onSubmit: "kai-submit", onSuggestionClick: "kai-suggestion-click", onValueChange: "kai-value-change", onVoice: "kai-voice", onWebSearch: "kai-web-search" },
353
361
  () => import("@kitn.ai/ui/elements/chat")
354
362
  ), ke = /* @__PURE__ */ a(
363
+ "kai-checkbox",
364
+ ["theme", "checked", "defaultChecked", "indeterminate", "disabled", "required", "label", "name", "value"],
365
+ { onChange: "kai-change" },
366
+ () => import("@kitn.ai/ui/elements/checkbox")
367
+ ), be = /* @__PURE__ */ a(
368
+ "kai-checkbox-group",
369
+ ["theme", "options", "value", "name", "disabled", "label"],
370
+ { onChange: "kai-change" },
371
+ () => import("@kitn.ai/ui/elements/checkbox-group")
372
+ ), fe = /* @__PURE__ */ a(
355
373
  "kai-checkpoint",
356
374
  ["theme", "label", "tooltip", "variant", "size"],
357
375
  { onSelect: "kai-select" },
358
376
  () => import("@kitn.ai/ui/elements/checkpoint")
359
- ), fe = /* @__PURE__ */ a(
377
+ ), ve = /* @__PURE__ */ a(
360
378
  "kai-choice",
361
379
  ["theme", "data", "cardId", "heading", "resolution", "value", "defaultValue", "disabled"],
362
380
  { onValueChange: "kai-value-change" },
363
381
  () => import("@kitn.ai/ui/elements/choice")
364
- ), be = /* @__PURE__ */ a(
382
+ ), Ce = /* @__PURE__ */ a(
365
383
  "kai-coachmark",
366
384
  ["theme", "open", "defaultOpen", "headline", "badge", "placement", "tone", "arrow"],
367
385
  { onDismiss: "kai-dismiss", onOpenChange: "kai-open-change" },
368
386
  () => import("@kitn.ai/ui/elements/coachmark")
369
- ), ve = /* @__PURE__ */ a(
387
+ ), ye = /* @__PURE__ */ a(
370
388
  "kai-code-block",
371
- ["theme", "code", "language", "codeTheme", "codeHighlight", "proseSize"],
389
+ ["theme", "code", "language", "codeTheme", "codeHighlight", "copy", "proseSize"],
372
390
  {},
373
391
  () => import("@kitn.ai/ui/elements/code-block")
374
- ), Ce = /* @__PURE__ */ a(
392
+ ), Se = /* @__PURE__ */ a(
375
393
  "kai-command",
376
394
  ["theme", "items", "placeholder", "emptyLabel"],
377
395
  { onActiveChange: "kai-active-change", onQueryChange: "kai-query-change", onSelect: "kai-select" },
378
396
  () => import("@kitn.ai/ui/elements/command")
379
- ), Se = /* @__PURE__ */ a(
397
+ ), xe = /* @__PURE__ */ a(
380
398
  "kai-compare",
381
399
  ["theme", "data", "compareId", "selection", "layout", "proseSize", "codeTheme", "codeHighlight"],
382
400
  { onCompareSelect: "kai-compare-select", onError: "kai-error", onReady: "kai-ready" },
383
401
  () => import("@kitn.ai/ui/elements/compare")
384
- ), ye = /* @__PURE__ */ a(
402
+ ), we = /* @__PURE__ */ a(
385
403
  "kai-composer",
386
404
  ["theme", "value", "placeholder", "disabled", "loading", "maxHeight", "submitOnEnter", "triggers", "highlights", "kindIcons"],
387
405
  { onBlur: "kai-blur", onEntityAdd: "kai-entity-add", onEntityRemove: "kai-entity-remove", onFocus: "kai-focus", onSubmit: "kai-submit", onTrigger: "kai-trigger", onTriggerClose: "kai-trigger-close", onValueChange: "kai-value-change" },
388
406
  () => import("@kitn.ai/ui/elements/composer")
389
- ), xe = /* @__PURE__ */ a(
407
+ ), Te = /* @__PURE__ */ a(
390
408
  "kai-confirm",
391
409
  ["theme", "data", "cardId", "heading", "autofocus", "resolution"],
392
410
  {},
393
411
  () => import("@kitn.ai/ui/elements/confirm-card")
394
- ), Te = /* @__PURE__ */ a(
412
+ ), Ie = /* @__PURE__ */ a(
395
413
  "kai-context",
396
414
  ["theme", "context", "warnThreshold", "dangerThreshold"],
397
415
  { onThresholdChange: "kai-threshold-change" },
398
416
  () => import("@kitn.ai/ui/elements/context-meter")
399
- ), we = /* @__PURE__ */ a(
417
+ ), ze = /* @__PURE__ */ a(
418
+ "kai-conversation-item",
419
+ ["theme", "conversationId", "active", "compact"],
420
+ { onSelect: "kai-select" },
421
+ () => import("@kitn.ai/ui/elements/conversation-item")
422
+ ), Oe = /* @__PURE__ */ a(
400
423
  "kai-conversations",
401
- ["theme", "groups", "conversations", "activeId", "collapsed", "defaultCollapsed"],
424
+ ["theme", "groups", "conversations", "activeId", "collapsed", "defaultCollapsed", "compact"],
402
425
  { onCollapseToggle: "kai-collapse-toggle", onConversationSelect: "kai-conversation-select", onNewChat: "kai-new-chat", onSearch: "kai-search", onToggleSidebar: "kai-toggle-sidebar" },
403
426
  () => import("@kitn.ai/ui/elements/conversation-list")
404
- ), Ie = /* @__PURE__ */ a(
427
+ ), Re = /* @__PURE__ */ a(
405
428
  "kai-dialog",
406
- ["theme", "open", "defaultOpen"],
429
+ ["theme", "open", "defaultOpen", "label"],
407
430
  { onOpenChange: "kai-open-change" },
408
431
  () => import("@kitn.ai/ui/elements/dialog")
409
- ), ze = /* @__PURE__ */ a(
432
+ ), Ae = /* @__PURE__ */ a(
433
+ "kai-dock",
434
+ ["theme", "open", "defaultOpen", "position", "label", "openLabel", "closeLabel", "unread", "disabled", "hideClose", "focusOnOpen"],
435
+ { onOpenChange: "kai-open-change" },
436
+ () => import("@kitn.ai/ui/elements/dock")
437
+ ), Me = /* @__PURE__ */ a(
438
+ "kai-dropdown",
439
+ ["theme", "triggerIcon", "triggerLabel", "triggerIconTrailing", "label", "full", "open", "defaultOpen", "disabled"],
440
+ { onOpenChange: "kai-open-change" },
441
+ () => import("@kitn.ai/ui/elements/dropdown")
442
+ ), Ee = /* @__PURE__ */ a(
410
443
  "kai-editable-label",
411
444
  ["theme", "value", "editing", "placeholder", "disabled"],
412
445
  { onCancel: "kai-cancel", onRename: "kai-rename" },
413
446
  () => import("@kitn.ai/ui/elements/editable-label")
414
- ), Oe = /* @__PURE__ */ a(
447
+ ), Le = /* @__PURE__ */ a(
415
448
  "kai-embed",
416
449
  ["theme", "cardId", "data"],
417
450
  {},
418
451
  () => import("@kitn.ai/ui/elements/embed")
419
- ), Me = /* @__PURE__ */ a(
452
+ ), Pe = /* @__PURE__ */ a(
420
453
  "kai-empty",
421
454
  ["theme", "emptyTitle", "description"],
422
455
  {},
423
456
  () => import("@kitn.ai/ui/elements/empty")
424
- ), Re = /* @__PURE__ */ a(
457
+ ), Ve = /* @__PURE__ */ a(
425
458
  "kai-feedback-bar",
426
459
  ["theme", "barTitle", "collectDetail", "categories", "detailTitle", "detailPlaceholder", "submitLabel", "thanksMessage"],
427
460
  { onClose: "kai-close", onFeedback: "kai-feedback", onFeedbackDetail: "kai-feedback-detail" },
428
461
  () => import("@kitn.ai/ui/elements/feedback-bar")
429
- ), Ae = /* @__PURE__ */ a(
462
+ ), De = /* @__PURE__ */ a(
430
463
  "kai-file-tree",
431
464
  ["theme", "files", "activeFile", "defaultExpanded", "summary"],
432
465
  { onSelect: "kai-select" },
433
466
  () => import("@kitn.ai/ui/elements/file-tree")
434
- ), Ee = /* @__PURE__ */ a(
467
+ ), Fe = /* @__PURE__ */ a(
435
468
  "kai-file-upload",
436
469
  ["theme", "multiple", "accept", "disabled", "label"],
437
470
  { onFilesAdded: "kai-files-added" },
438
471
  () => import("@kitn.ai/ui/elements/file-upload")
439
- ), Ve = /* @__PURE__ */ a(
472
+ ), Ne = /* @__PURE__ */ a(
440
473
  "kai-form",
441
474
  ["theme", "data", "cardId", "heading", "resolution", "values", "defaultValues", "disabled"],
442
475
  { onValuesChange: "kai-values-change" },
443
476
  () => import("@kitn.ai/ui/elements/form")
444
- ), Fe = /* @__PURE__ */ a(
477
+ ), Be = /* @__PURE__ */ a(
445
478
  "kai-hover-card",
446
479
  ["theme", "openDelay", "closeDelay", "placement", "open", "defaultOpen", "disabled"],
447
480
  { onOpenChange: "kai-open-change" },
448
481
  () => import("@kitn.ai/ui/elements/hover-card")
449
- ), Pe = /* @__PURE__ */ a(
482
+ ), He = /* @__PURE__ */ a(
450
483
  "kai-icon",
451
484
  ["theme", "name", "size"],
452
485
  {},
453
486
  () => import("@kitn.ai/ui/elements/icon")
454
- ), De = /* @__PURE__ */ a(
487
+ ), je = /* @__PURE__ */ a(
455
488
  "kai-image",
456
489
  ["theme", "base64", "bytes", "alt", "mediaType"],
457
490
  {},
458
491
  () => import("@kitn.ai/ui/elements/image")
459
- ), Le = /* @__PURE__ */ a(
492
+ ), Ge = /* @__PURE__ */ a(
460
493
  "kai-input",
461
- ["theme", "type", "value", "placeholder", "label", "hint", "error", "size", "disabled", "readonly", "required", "invalid", "name", "autocomplete", "inputmode"],
462
- { onChange: "kai-change", onInput: "kai-input" },
494
+ ["theme", "type", "value", "placeholder", "label", "hint", "error", "size", "disabled", "readonly", "required", "invalid", "name", "autocomplete", "inputmode", "format", "guide", "semantic", "caseMode", "copyPolicy"],
495
+ { onChange: "kai-change", onInput: "kai-input", onInputRejected: "kai-input-rejected" },
463
496
  () => import("@kitn.ai/ui/elements/input")
464
- ), Ne = /* @__PURE__ */ a(
497
+ ), Ue = /* @__PURE__ */ a(
465
498
  "kai-kbd",
466
499
  ["theme", "keys", "platform", "size"],
467
500
  {},
468
501
  () => import("@kitn.ai/ui/elements/kbd")
469
- ), Be = /* @__PURE__ */ a(
502
+ ), We = /* @__PURE__ */ a(
470
503
  "kai-link-preview",
471
504
  ["theme", "cardId", "data"],
472
505
  {},
473
506
  () => import("@kitn.ai/ui/elements/link-preview")
474
- ), He = /* @__PURE__ */ a(
507
+ ), qe = /* @__PURE__ */ a(
475
508
  "kai-loader",
476
509
  ["theme", "variant", "size", "text"],
477
510
  {},
478
511
  () => import("@kitn.ai/ui/elements/loader")
479
- ), je = /* @__PURE__ */ a(
512
+ ), Ke = /* @__PURE__ */ a(
480
513
  "kai-markdown",
481
514
  ["theme", "content", "proseSize", "codeTheme", "codeHighlight"],
482
515
  {},
483
516
  () => import("@kitn.ai/ui/elements/markdown")
484
- ), Ue = /* @__PURE__ */ a(
517
+ ), _e = /* @__PURE__ */ a(
485
518
  "kai-menu",
486
- ["theme", "items", "placement", "triggerIcon", "triggerLabel", "triggerIconTrailing", "label", "open", "defaultOpen", "disabled"],
519
+ ["theme", "items", "placement", "triggerIcon", "triggerLabel", "triggerIconTrailing", "label", "full", "open", "defaultOpen", "disabled"],
487
520
  { onOpenChange: "kai-open-change", onSelect: "kai-select" },
488
521
  () => import("@kitn.ai/ui/elements/menu")
489
- ), We = /* @__PURE__ */ a(
522
+ ), Ye = /* @__PURE__ */ a(
490
523
  "kai-message",
491
524
  ["theme", "message", "role", "markdown", "proseSize", "codeTheme", "codeHighlight", "actionsReveal", "avatarSrc", "avatarFallback", "avatar", "cardTypes", "cardSchemas"],
492
525
  { onMessageAction: "kai-message-action" },
493
526
  () => import("@kitn.ai/ui/elements/message")
494
- ), Ke = /* @__PURE__ */ a(
527
+ ), Je = /* @__PURE__ */ a(
495
528
  "kai-model-switcher",
496
529
  ["theme", "models", "currentModel", "open", "defaultOpen", "disabled"],
497
530
  { onModelChange: "kai-model-change", onOpenChange: "kai-open-change" },
498
531
  () => import("@kitn.ai/ui/elements/model-switcher")
499
- ), qe = /* @__PURE__ */ a(
532
+ ), Qe = /* @__PURE__ */ a(
500
533
  "kai-nav",
501
534
  ["theme", "items", "value", "defaultValue", "defaultCollapsed"],
502
535
  { onNavItemAction: "kai-nav-item-action", onNavItemClose: "kai-nav-item-close", onNavSelect: "kai-nav-select" },
503
536
  () => import("@kitn.ai/ui/elements/nav")
504
- ), Ge = /* @__PURE__ */ a(
537
+ ), Xe = /* @__PURE__ */ a(
505
538
  "kai-notice",
506
539
  ["theme", "severity", "icon", "dismissible"],
507
540
  { onDismiss: "kai-dismiss" },
508
541
  () => import("@kitn.ai/ui/elements/notice")
509
- ), _e = /* @__PURE__ */ a(
542
+ ), Ze = /* @__PURE__ */ a(
510
543
  "kai-pane",
511
544
  ["theme", "headline", "subtitle", "maximized", "focused", "showSplit", "showDock", "status"],
512
545
  { onClose: "kai-close", onDock: "kai-dock", onMaximize: "kai-maximize", onSplit: "kai-split" },
513
546
  () => import("@kitn.ai/ui/elements/pane")
514
- ), Ye = /* @__PURE__ */ a(
547
+ ), $e = /* @__PURE__ */ a(
548
+ "kai-pane-grid",
549
+ ["theme", "minPaneWidth", "minPaneHeight", "maxColumns", "gap", "maximizedIndex"],
550
+ {},
551
+ () => import("@kitn.ai/ui/elements/pane-grid")
552
+ ), et = /* @__PURE__ */ a(
515
553
  "kai-pane-group",
516
554
  ["theme", "tabs", "active", "focused"],
517
555
  { onTabChange: "kai-tab-change", onTabClose: "kai-tab-close", onTabMenu: "kai-tab-menu" },
518
556
  () => import("@kitn.ai/ui/elements/pane-group")
519
- ), Je = /* @__PURE__ */ a(
557
+ ), tt = /* @__PURE__ */ a(
520
558
  "kai-popover",
521
559
  ["theme", "placement", "gutter", "open", "defaultOpen", "disabled"],
522
560
  { onOpenChange: "kai-open-change" },
523
561
  () => import("@kitn.ai/ui/elements/popover")
524
- ), Qe = /* @__PURE__ */ a(
562
+ ), at = /* @__PURE__ */ a(
525
563
  "kai-progress-bar",
526
564
  ["theme", "value", "max", "label", "tone"],
527
565
  {},
528
566
  () => import("@kitn.ai/ui/elements/progress-bar")
529
- ), Xe = /* @__PURE__ */ a(
567
+ ), nt = /* @__PURE__ */ a(
530
568
  "kai-prompt-dock",
531
569
  ["theme", "frame", "appearance"],
532
570
  {},
533
571
  () => import("@kitn.ai/ui/elements/prompt-dock")
534
- ), Ze = /* @__PURE__ */ a(
572
+ ), it = /* @__PURE__ */ a(
535
573
  "kai-prompt-input",
536
- ["theme", "value", "placeholder", "disabled", "loading", "suggestions", "suggestionMode", "search", "voice", "stoppable", "submit", "attach", "attachments", "triggers", "kindIcons"],
537
- { onAttachmentsChange: "kai-attachments-change", onSearch: "kai-search", onStop: "kai-stop", onSubmit: "kai-submit", onSuggestionClick: "kai-suggestion-click", onToolbarAction: "kai-toolbar-action", onValueChange: "kai-value-change", onVoice: "kai-voice" },
574
+ ["theme", "value", "placeholder", "disabled", "loading", "suggestions", "suggestionMode", "webSearch", "voice", "stoppable", "submit", "attach", "attachments", "triggers", "kindIcons"],
575
+ { onAttachmentsChange: "kai-attachments-change", onStop: "kai-stop", onSubmit: "kai-submit", onSuggestionClick: "kai-suggestion-click", onToolbarAction: "kai-toolbar-action", onValueChange: "kai-value-change", onVoice: "kai-voice", onWebSearch: "kai-web-search" },
538
576
  () => import("@kitn.ai/ui/elements/prompt-input")
539
- ), $e = /* @__PURE__ */ a(
577
+ ), ot = /* @__PURE__ */ a(
578
+ "kai-radio-group",
579
+ ["theme", "options", "value", "name", "disabled", "label"],
580
+ { onChange: "kai-change" },
581
+ () => import("@kitn.ai/ui/elements/radio-group")
582
+ ), rt = /* @__PURE__ */ a(
540
583
  "kai-reasoning",
541
584
  ["theme", "text", "label", "open", "defaultOpen", "streaming", "markdown", "disabled"],
542
585
  { onOpenChange: "kai-open-change" },
543
586
  () => import("@kitn.ai/ui/elements/reasoning")
544
- ), et = /* @__PURE__ */ a(
587
+ ), st = /* @__PURE__ */ a(
545
588
  "kai-remote",
546
589
  ["theme", "src", "providerOrigin", "envelope", "policy"],
547
590
  {},
548
591
  () => import("@kitn.ai/ui/elements/remote")
549
- ), tt = /* @__PURE__ */ a(
592
+ ), ct = /* @__PURE__ */ a(
550
593
  "kai-resizable",
551
594
  ["theme", "orientation", "maximizedIndex", "handle"],
552
595
  { onChange: "kai-change", onMaximizeChange: "kai-maximize-change", onMaximizeState: "kai-maximize-state" },
553
596
  () => import("@kitn.ai/ui/elements/resizable")
554
- ), at = /* @__PURE__ */ a(
597
+ ), lt = /* @__PURE__ */ a(
555
598
  "kai-resizable-item",
556
599
  ["theme", "size", "min", "max", "locked", "hidden", "collapsed"],
557
600
  { onChange: "kai-change", onMaximizeChange: "kai-maximize-change", onMaximizeState: "kai-maximize-state" },
558
601
  () => import("@kitn.ai/ui/elements/resizable")
559
- ), nt = /* @__PURE__ */ a(
602
+ ), dt = /* @__PURE__ */ a(
560
603
  "kai-response-stream",
561
604
  ["theme", "text", "mode", "speed", "as"],
562
605
  { onComplete: "kai-complete" },
563
606
  () => import("@kitn.ai/ui/elements/response-stream")
564
- ), it = /* @__PURE__ */ a(
607
+ ), mt = /* @__PURE__ */ a(
565
608
  "kai-scope-picker",
566
609
  ["theme", "availableAuthors", "availableTags", "currentLabel", "open", "defaultOpen", "disabled"],
567
610
  { onOpenChange: "kai-open-change", onScopeChange: "kai-scope-change" },
568
611
  () => import("@kitn.ai/ui/elements/chat-scope-picker")
569
- ), ot = /* @__PURE__ */ a(
612
+ ), ut = /* @__PURE__ */ a(
570
613
  "kai-screen",
571
614
  ["theme", "open", "defaultOpen", "headline", "back", "noInert"],
572
615
  { onBack: "kai-back", onOpenChange: "kai-open-change" },
573
616
  () => import("@kitn.ai/ui/elements/screen")
574
- ), st = /* @__PURE__ */ a(
617
+ ), pt = /* @__PURE__ */ a(
575
618
  "kai-scroll-area",
576
619
  ["theme", "orientation"],
577
620
  {},
578
621
  () => import("@kitn.ai/ui/elements/scroll-area")
579
- ), rt = /* @__PURE__ */ a(
622
+ ), ht = /* @__PURE__ */ a(
580
623
  "kai-scroll-button",
581
- ["theme", "for", "variant", "size"],
624
+ ["theme", "for", "variant", "size", "label", "showLabel"],
582
625
  { onScroll: "kai-scroll" },
583
626
  () => import("@kitn.ai/ui/elements/scroll-button")
584
- ), ct = /* @__PURE__ */ a(
627
+ ), gt = /* @__PURE__ */ a(
585
628
  "kai-search",
586
629
  ["theme", "value", "placeholder", "icon", "debounce", "loading", "shortcut"],
587
630
  { onChange: "kai-change", onSearch: "kai-search", onSubmit: "kai-submit" },
588
631
  () => import("@kitn.ai/ui/elements/search")
589
- ), lt = /* @__PURE__ */ a(
632
+ ), kt = /* @__PURE__ */ a(
590
633
  "kai-segmented",
591
634
  ["theme", "options", "value", "size"],
592
635
  { onChange: "kai-change" },
593
636
  () => import("@kitn.ai/ui/elements/segmented")
594
- ), dt = /* @__PURE__ */ a(
637
+ ), bt = /* @__PURE__ */ a(
638
+ "kai-select",
639
+ ["theme", "options", "value", "placeholder", "multiple", "invalid", "disabled", "required", "label", "name"],
640
+ { onChange: "kai-change" },
641
+ () => import("@kitn.ai/ui/elements/select")
642
+ ), ft = /* @__PURE__ */ a(
595
643
  "kai-separator",
596
644
  ["theme", "orientation"],
597
645
  {},
598
646
  () => import("@kitn.ai/ui/elements/separator")
599
- ), mt = /* @__PURE__ */ a(
647
+ ), vt = /* @__PURE__ */ a(
600
648
  "kai-setting-item",
601
649
  ["theme", "label", "description"],
602
650
  {},
603
651
  () => import("@kitn.ai/ui/elements/setting-item")
604
- ), ut = /* @__PURE__ */ a(
652
+ ), Ct = /* @__PURE__ */ a(
605
653
  "kai-settings-group",
606
654
  ["theme", "heading", "description"],
607
655
  {},
608
656
  () => import("@kitn.ai/ui/elements/settings-group")
609
- ), pt = /* @__PURE__ */ a(
657
+ ), yt = /* @__PURE__ */ a(
610
658
  "kai-skeleton",
611
659
  ["theme", "variant", "width", "height", "lines"],
612
660
  {},
613
661
  () => import("@kitn.ai/ui/elements/skeleton")
614
- ), ht = /* @__PURE__ */ a(
662
+ ), St = /* @__PURE__ */ a(
615
663
  "kai-skills",
616
664
  ["theme", "skills"],
617
665
  {},
618
666
  () => import("@kitn.ai/ui/elements/message-skills")
619
- ), gt = /* @__PURE__ */ a(
667
+ ), xt = /* @__PURE__ */ a(
668
+ "kai-slider",
669
+ ["theme", "min", "max", "step", "value", "disabled", "label", "name", "valueLabel"],
670
+ { onChange: "kai-change", onInput: "kai-input" },
671
+ () => import("@kitn.ai/ui/elements/slider")
672
+ ), wt = /* @__PURE__ */ a(
620
673
  "kai-source",
621
674
  ["theme", "href", "label", "headline", "description", "showFavicon"],
622
675
  {},
623
676
  () => import("@kitn.ai/ui/elements/source")
624
- ), kt = /* @__PURE__ */ a(
677
+ ), Tt = /* @__PURE__ */ a(
625
678
  "kai-sources",
626
679
  ["theme", "sources", "showFavicon", "numbered"],
627
680
  {},
628
681
  () => import("@kitn.ai/ui/elements/source")
629
- ), ft = /* @__PURE__ */ a(
682
+ ), It = /* @__PURE__ */ a(
630
683
  "kai-status",
631
684
  ["theme", "status", "pulse", "label", "size"],
632
685
  {},
633
686
  () => import("@kitn.ai/ui/elements/status")
634
- ), bt = /* @__PURE__ */ a(
687
+ ), zt = /* @__PURE__ */ a(
635
688
  "kai-suggestions",
636
689
  ["theme", "suggestions", "variant", "size", "layout", "block", "highlight"],
637
690
  { onSelect: "kai-select" },
638
691
  () => import("@kitn.ai/ui/elements/prompt-suggestions")
639
- ), vt = /* @__PURE__ */ a(
692
+ ), Ot = /* @__PURE__ */ a(
640
693
  "kai-switch",
641
694
  ["theme", "checked", "defaultChecked", "disabled", "label", "name", "value"],
642
695
  { onChange: "kai-change" },
643
696
  () => import("@kitn.ai/ui/elements/switch")
644
- ), Ct = /* @__PURE__ */ a(
697
+ ), Rt = /* @__PURE__ */ a(
645
698
  "kai-tabs",
646
699
  ["theme", "items", "value", "defaultValue", "variant", "block", "disabled"],
647
700
  { onTabChange: "kai-tab-change" },
648
701
  () => import("@kitn.ai/ui/elements/tabs")
649
- ), St = /* @__PURE__ */ a(
702
+ ), At = /* @__PURE__ */ a(
650
703
  "kai-tasks",
651
704
  ["theme", "data", "cardId", "heading", "resolution", "value", "defaultValue", "disabled", "readonly"],
652
705
  { onValueChange: "kai-value-change" },
653
706
  () => import("@kitn.ai/ui/elements/tasks")
654
- ), yt = /* @__PURE__ */ a(
707
+ ), Mt = /* @__PURE__ */ a(
655
708
  "kai-text-shimmer",
656
709
  ["theme", "text", "as", "duration", "spread"],
657
710
  {},
658
711
  () => import("@kitn.ai/ui/elements/text-shimmer")
659
- ), xt = /* @__PURE__ */ a(
712
+ ), Et = /* @__PURE__ */ a(
660
713
  "kai-thinking-bar",
661
714
  ["theme", "text", "stoppable", "stopLabel"],
662
715
  { onStop: "kai-stop" },
663
716
  () => import("@kitn.ai/ui/elements/thinking-bar")
664
- ), Tt = /* @__PURE__ */ a(
717
+ ), Lt = /* @__PURE__ */ a(
665
718
  "kai-thread",
666
719
  ["theme", "messages", "loading", "proseSize", "codeTheme", "codeHighlight", "actionsReveal", "scrollButton", "class", "cardTypes", "cardSchemas"],
667
720
  { onMessageAction: "kai-message-action" },
668
721
  () => import("@kitn.ai/ui/elements/thread")
669
- ), wt = /* @__PURE__ */ a(
722
+ ), Pt = /* @__PURE__ */ a(
670
723
  "kai-toast-region",
671
724
  ["theme", "toasts", "position", "max", "stack", "appearance", "inverse", "target"],
672
725
  { onAction: "kai-action", onDismiss: "kai-dismiss" },
673
726
  () => import("@kitn.ai/ui/elements/toast")
674
- ), It = /* @__PURE__ */ a(
727
+ ), Vt = /* @__PURE__ */ a(
675
728
  "kai-tool",
676
729
  ["theme", "tool", "open", "defaultOpen", "disabled"],
677
730
  { onOpenChange: "kai-open-change" },
678
731
  () => import("@kitn.ai/ui/elements/tool")
679
- ), zt = /* @__PURE__ */ a(
732
+ ), Dt = /* @__PURE__ */ a(
680
733
  "kai-tooltip",
681
734
  ["theme", "content", "openDelay", "closeDelay", "placement", "open", "defaultOpen", "disabled"],
682
735
  { onOpenChange: "kai-open-change" },
683
736
  () => import("@kitn.ai/ui/elements/tooltip")
684
- ), Ot = /* @__PURE__ */ a(
737
+ ), Ft = /* @__PURE__ */ a(
685
738
  "kai-voice-input",
686
739
  ["theme", "transcribe", "disabled", "recognitionLang", "interim"],
687
- { onAudioCaptured: "kai-audio-captured", onRecordingChange: "kai-recording-change", onTranscriptInterim: "kai-transcript-interim", onTranscription: "kai-transcription" },
740
+ { onAudioCaptured: "kai-audio-captured", onRecordingChange: "kai-recording-change", onTranscriptInterim: "kai-transcript-interim", onTranscription: "kai-transcription", onVoiceError: "kai-voice-error" },
688
741
  () => import("@kitn.ai/ui/elements/voice-input")
689
- ), Mt = /* @__PURE__ */ a(
742
+ ), Nt = /* @__PURE__ */ a(
690
743
  "kai-voice-output",
691
744
  ["theme", "text", "autoplay", "synthesize", "disabled"],
692
- { onSpeakingChange: "kai-speaking-change", onSynthesized: "kai-synthesized" },
745
+ { onSpeakingChange: "kai-speaking-change", onSynthesized: "kai-synthesized", onVoiceError: "kai-voice-error" },
693
746
  () => import("@kitn.ai/ui/elements/voice-output")
694
- ), Rt = /* @__PURE__ */ a(
747
+ ), Bt = /* @__PURE__ */ a(
695
748
  "kai-workspace",
696
- ["theme", "groups", "conversations", "activeId", "messages", "value", "placeholder", "loading", "suggestions", "suggestionMode", "proseSize", "codeTheme", "codeHighlight", "chatTitle", "models", "currentModel", "context", "scrollButton", "search", "voice", "triggers", "kindIcons", "sidebarWidth", "sidebarMinWidth", "sidebarMaxWidth", "sidebarCollapsed", "defaultSidebarCollapsed", "collapseBelow", "compact", "noConversations", "cardTypes", "cardSchemas"],
697
- { onConversationSelect: "kai-conversation-select", onMessageAction: "kai-message-action", onModelChange: "kai-model-change", onNewChat: "kai-new-chat", onSearch: "kai-search", onSidebarToggle: "kai-sidebar-toggle", onSubmit: "kai-submit", onSuggestionClick: "kai-suggestion-click", onValueChange: "kai-value-change", onVoice: "kai-voice" },
749
+ ["theme", "startCollapsed", "defaultStartCollapsed", "endCollapsed", "defaultEndCollapsed", "collapseBelow", "drawerBelow", "compact"],
750
+ { onAsideResize: "kai-aside-resize", onAsideToggle: "kai-aside-toggle" },
698
751
  () => import("@kitn.ai/ui/elements/chat-workspace")
699
752
  );
700
753
  export {
701
754
  oe as AgentCard,
702
- se as Artifact,
703
- re as Attachments,
755
+ re as Artifact,
756
+ se as Attachments,
704
757
  ce as AudioVisualizer,
705
758
  le as Avatar,
706
759
  de as Badge,
@@ -709,75 +762,84 @@ export {
709
762
  pe as Cards,
710
763
  he as ChainOfThought,
711
764
  ge as Chat,
712
- ke as Checkpoint,
713
- fe as Choice,
714
- be as Coachmark,
715
- ve as CodeBlock,
716
- Ce as Command,
717
- Se as Compare,
718
- ye as Composer,
719
- xe as Confirm,
720
- Te as Context,
721
- we as Conversations,
722
- Ie as Dialog,
723
- ze as EditableLabel,
724
- Oe as Embed,
725
- Me as Empty,
726
- Re as FeedbackBar,
727
- Ae as FileTree,
728
- Ee as FileUpload,
729
- Ve as Form,
730
- Fe as HoverCard,
731
- Pe as Icon,
732
- De as Image,
733
- Le as Input,
734
- Ne as Kbd,
735
- Be as LinkPreview,
736
- He as Loader,
737
- je as Markdown,
738
- Ue as Menu,
739
- We as Message,
740
- Ke as ModelSwitcher,
741
- qe as Nav,
742
- Ge as Notice,
743
- _e as Pane,
744
- Ye as PaneGroup,
745
- Je as Popover,
746
- Qe as ProgressBar,
747
- Xe as PromptDock,
748
- Ze as PromptInput,
749
- $e as Reasoning,
750
- et as Remote,
751
- tt as Resizable,
752
- at as ResizableItem,
753
- nt as ResponseStream,
754
- it as ScopePicker,
755
- ot as Screen,
756
- st as ScrollArea,
757
- rt as ScrollButton,
758
- ct as Search,
759
- lt as Segmented,
760
- dt as Separator,
761
- mt as SettingItem,
762
- ut as SettingsGroup,
763
- pt as Skeleton,
764
- ht as Skills,
765
- gt as Source,
766
- kt as Sources,
767
- ft as Status,
768
- bt as Suggestions,
769
- vt as Switch,
770
- Ct as Tabs,
771
- St as Tasks,
772
- yt as TextShimmer,
773
- xt as ThinkingBar,
774
- Tt as Thread,
775
- wt as ToastRegion,
776
- It as Tool,
777
- zt as Tooltip,
778
- Ot as VoiceInput,
779
- Mt as VoiceOutput,
780
- Rt as Workspace,
765
+ ke as Checkbox,
766
+ be as CheckboxGroup,
767
+ fe as Checkpoint,
768
+ ve as Choice,
769
+ Ce as Coachmark,
770
+ ye as CodeBlock,
771
+ Se as Command,
772
+ xe as Compare,
773
+ we as Composer,
774
+ Te as Confirm,
775
+ Ie as Context,
776
+ ze as ConversationItem,
777
+ Oe as Conversations,
778
+ Re as Dialog,
779
+ Ae as Dock,
780
+ Me as Dropdown,
781
+ Ee as EditableLabel,
782
+ Le as Embed,
783
+ Pe as Empty,
784
+ Ve as FeedbackBar,
785
+ De as FileTree,
786
+ Fe as FileUpload,
787
+ Ne as Form,
788
+ Be as HoverCard,
789
+ He as Icon,
790
+ je as Image,
791
+ Ge as Input,
792
+ Ue as Kbd,
793
+ We as LinkPreview,
794
+ qe as Loader,
795
+ Ke as Markdown,
796
+ _e as Menu,
797
+ Ye as Message,
798
+ Je as ModelSwitcher,
799
+ Qe as Nav,
800
+ Xe as Notice,
801
+ Ze as Pane,
802
+ $e as PaneGrid,
803
+ et as PaneGroup,
804
+ tt as Popover,
805
+ at as ProgressBar,
806
+ nt as PromptDock,
807
+ it as PromptInput,
808
+ ot as RadioGroup,
809
+ rt as Reasoning,
810
+ st as Remote,
811
+ ct as Resizable,
812
+ lt as ResizableItem,
813
+ dt as ResponseStream,
814
+ mt as ScopePicker,
815
+ ut as Screen,
816
+ pt as ScrollArea,
817
+ ht as ScrollButton,
818
+ gt as Search,
819
+ kt as Segmented,
820
+ bt as Select,
821
+ ft as Separator,
822
+ vt as SettingItem,
823
+ Ct as SettingsGroup,
824
+ yt as Skeleton,
825
+ St as Skills,
826
+ xt as Slider,
827
+ wt as Source,
828
+ Tt as Sources,
829
+ It as Status,
830
+ zt as Suggestions,
831
+ Ot as Switch,
832
+ Rt as Tabs,
833
+ At as Tasks,
834
+ Mt as TextShimmer,
835
+ Et as ThinkingBar,
836
+ Lt as Thread,
837
+ Pt as ToastRegion,
838
+ Vt as Tool,
839
+ Dt as Tooltip,
840
+ Ft as VoiceInput,
841
+ Nt as VoiceOutput,
842
+ Bt as Workspace,
781
843
  ae as registerAll,
782
844
  ne as useKaiChat,
783
845
  ie as useVoiceInput