@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
@@ -2,7 +2,7 @@
2
2
  * Composition slots for `kai-*` elements. A slot is a named region a consumer
3
3
  * fills with their own markup. This registry is the SINGLE SOURCE OF TRUTH:
4
4
  * the facade derives its detection from it (and, later, docs are generated
5
- * from it). See docs/superpowers/specs/2026-06-23-kai-chat-composition-seams-design.md.
5
+ * from it).
6
6
  */
7
7
  /** `inject` = additive (the built-in region still renders, your markup is added
8
8
  * in). `replace` = your markup stands in for the whole region — you own that
@@ -34,6 +34,12 @@ export declare const PROMPT_INPUT_SLOTS: SlotDef[];
34
34
  export declare const CONVERSATIONS_SLOTS: SlotDef[];
35
35
  /** Styleable `::part`s of `<kai-conversations>`. */
36
36
  export declare const CONVERSATIONS_PARTS: PartDef[];
37
+ /** Slots of `<kai-conversation-item>` — one composed row of a consumer-owned
38
+ * conversation loop (the default slot is the title). */
39
+ export declare const CONVERSATION_ITEM_SLOTS: SlotDef[];
40
+ /** Styleable `::part`s of `<kai-conversation-item>`. (`leading`/`meta`/`menu`
41
+ * are covered by their slot defs' `part: true` flags.) */
42
+ export declare const CONVERSATION_ITEM_PARTS: PartDef[];
37
43
  /** Slots of `<kai-message>` — per-message composition seams. `before-body` and
38
44
  * `after-body` are INJECT regions inside the message's body column; `avatar`
39
45
  * REPLACES the built-in avatar rail (pair it with `avatar="none"` to omit the
@@ -78,6 +84,21 @@ export declare const SEPARATOR_PARTS: PartDef[];
78
84
  export declare const SCROLL_AREA_PARTS: PartDef[];
79
85
  /** Styleable `::part`s of `<kai-skeleton>`. */
80
86
  export declare const SKELETON_PARTS: PartDef[];
87
+ /**
88
+ * The parts of ONE attachment item, declared by `components/attachments.tsx`
89
+ * and therefore surfaced by every element that renders an attachment — the
90
+ * standalone `<kai-attachments>` AND the thread inside `<kai-message>` /
91
+ * `<kai-chat>`. Shared rather than duplicated so the two can never document
92
+ * different names for the same node.
93
+ *
94
+ * These are a styling seam and a TESTING seam, and the second is why they exist
95
+ * at all. `examples/internal/openrouter-spike` proves "a user can see which file
96
+ * was attached" by locating these; before they existed it pinned the chip by
97
+ * `span.truncate` and broke the day the thread moved to the grid tile, while the
98
+ * filename was still plainly on screen. A published part is what lets an
99
+ * assertion name the thing rather than its current markup.
100
+ */
101
+ export declare const ATTACHMENT_ITEM_PARTS: PartDef[];
81
102
  /** Styleable `::part`s of `<kai-message>`. (The `avatar` part is contributed by
82
103
  * the `avatar` slot's `part: true` flag, so it is not repeated here.) */
83
104
  export declare const MESSAGE_PARTS: PartDef[];
@@ -98,10 +119,9 @@ export declare const SCREEN_PARTS: PartDef[];
98
119
  export declare const CARD_SLOTS: SlotDef[];
99
120
  /** Styleable `::part`s of `<kai-card>`. */
100
121
  export declare const CARD_PARTS: PartDef[];
101
- /** Injection slots of `<kai-workspace>` (the carrier regions the consumer drops
102
- * content into: brand/tabs, the upgrade/Design/user-menu cluster, a top banner). */
122
+ /** Slots of `<kai-workspace>` (the five shell regions; main also takes the default slot). */
103
123
  export declare const WORKSPACE_SLOTS: SlotDef[];
104
- /** Styleable `::part`s of `<kai-workspace>`. */
124
+ /** Styleable `::part`s of `<kai-workspace>` (beyond the slot-backed header/start/main/end/footer parts). */
105
125
  export declare const WORKSPACE_PARTS: PartDef[];
106
126
  /** Styleable `::part`s of `<kai-nav>`. */
107
127
  export declare const NAV_PARTS: PartDef[];
@@ -148,6 +168,10 @@ export interface ElementComposition {
148
168
  /** Slots + styleable `::part`s of `<kai-prompt-dock>`. */
149
169
  export declare const PROMPT_DOCK_SLOTS: SlotDef[];
150
170
  export declare const PROMPT_DOCK_PARTS: PartDef[];
171
+ /** Slots + styleable `::part`s of `<kai-dock>` (the floating corner launcher — not
172
+ * `<kai-prompt-dock>`, which is an in-flow tray around a prompt input). */
173
+ export declare const DOCK_SLOTS: SlotDef[];
174
+ export declare const DOCK_PARTS: PartDef[];
151
175
  /** Styleable `::part`s of `<kai-segmented>`. */
152
176
  export declare const SEGMENTED_PARTS: PartDef[];
153
177
  /** Styleable `::part`s of `<kai-settings-group>`. */
@@ -160,6 +184,10 @@ export declare const PANE_SLOTS: SlotDef[];
160
184
  export declare const PANE_PARTS: PartDef[];
161
185
  /** Styleable `::part`s of `<kai-agent-card>`. */
162
186
  export declare const AGENT_CARD_PARTS: PartDef[];
187
+ /** Styleable `::part`s of `<kai-code-block>` (one syntax-highlighted code block).
188
+ * The code region itself is not a part — it is rebuilt when the highlight lands,
189
+ * and its look is owned by the Shiki theme (`code-theme`). */
190
+ export declare const CODE_BLOCK_PARTS: PartDef[];
163
191
  /** Slots + styleable `::part`s of `<kai-dialog>` (the centered modal). */
164
192
  export declare const DIALOG_SLOTS: SlotDef[];
165
193
  export declare const DIALOG_PARTS: PartDef[];
@@ -190,6 +218,10 @@ export declare const EMPTY_SLOTS: SlotDef[];
190
218
  /** Slots of `<kai-popover>`. The panel body is the default slot; `trigger` is the
191
219
  * control the panel anchors to and opens from. */
192
220
  export declare const POPOVER_SLOTS: SlotDef[];
221
+ /** Slots of `<kai-dropdown>`. The menu body is the default slot; `trigger` is the
222
+ * VISUAL content of the built-in trigger button (never your own `<button>`/`<a>`,
223
+ * which would nest interactive elements — the `kai-menu` rule). */
224
+ export declare const DROPDOWN_SLOTS: SlotDef[];
193
225
  /** Styleable `::part`s of `<kai-audio-visualizer>`. Every DOM variant (`bar`,
194
226
  * `grid`, `radial`) shares the `bar`/`cell` markup pattern; the shader variants
195
227
  * (`wave`, `aurora`) share the `canvas` part. Lit items ALSO carry the
@@ -1 +1 @@
1
- import{f as o,c as t,S as v,g as p,o as w,h as m,F,j as A,t as S}from"./chunks/define-B_tXMYRm.js";import{a,b as c,c as l,S as k}from"./chunks/source-w9V0NnBn.js";var y=S("<style>:host{display:inline-flex}");o("kai-source",{href:"",label:void 0,headline:"",description:"",showFavicon:!1},(e,{flag:n})=>[y(),t(v,{get when(){return e.href},get children(){return t(a,{get href(){return e.href},get children(){return[t(c,{get label(){return e.label},get showFavicon(){return n("showFavicon")}}),t(l,{get title(){return e.headline??""},get description(){return e.description??""}})]}})}})]);function u(e){return{href:e.getAttribute("href")??"",label:e.getAttribute("label")??void 0,title:e.getAttribute("headline")??void 0,description:e.getAttribute("description")??void 0,showFavicon:e.hasAttribute("show-favicon")&&e.getAttribute("show-favicon")!=="false"}}o("kai-sources",{sources:[],showFavicon:!1,numbered:!1},(e,{element:n,flag:s})=>{const[h,d]=p([]);w(()=>{const r=()=>{const f=[...n.querySelectorAll("kai-source")];d(f.map(u))};r();const i=new MutationObserver(r);i.observe(n,{childList:!0,attributes:!0,subtree:!0}),m(()=>i.disconnect())});const g=()=>[...e.sources??[],...h()],b=()=>s("numbered");return t(k,{get children(){return t(F,{get each(){return g()},children:(r,i)=>t(a,{get href(){return r.href},get children(){return[t(c,{get label(){return A(()=>!!b())()?i()+1:r.label},get showFavicon(){return r.showFavicon??s("showFavicon")}}),t(l,{get title(){return r.title??""},get description(){return r.description??""}})]}})})}})});export{u as parseKaiSourceElement};
1
+ import{f as o,c as t,S as v,g as p,o as w,h as m,F,m as A,t as S}from"../define-CGGX-7Vg.js";import{a,b as c,c as l,S as k}from"../source-B0FlguSx.js";var y=S("<style>:host{display:inline-flex}");o("kai-source",{href:"",label:void 0,headline:"",description:"",showFavicon:!1},(e,{flag:n})=>[y(),t(v,{get when(){return e.href},get children(){return t(a,{get href(){return e.href},get children(){return[t(c,{get label(){return e.label},get showFavicon(){return n("showFavicon")}}),t(l,{get title(){return e.headline??""},get description(){return e.description??""}})]}})}})]);function u(e){return{href:e.getAttribute("href")??"",label:e.getAttribute("label")??void 0,title:e.getAttribute("headline")??void 0,description:e.getAttribute("description")??void 0,showFavicon:e.hasAttribute("show-favicon")&&e.getAttribute("show-favicon")!=="false"}}o("kai-sources",{sources:[],showFavicon:!1,numbered:!1},(e,{element:n,flag:s})=>{const[h,d]=p([]);w(()=>{const r=()=>{const f=[...n.querySelectorAll("kai-source")];d(f.map(u))};r();const i=new MutationObserver(r);i.observe(n,{childList:!0,attributes:!0,subtree:!0}),m(()=>i.disconnect())});const g=()=>[...e.sources??[],...h()],b=()=>s("numbered");return t(k,{get children(){return t(F,{get each(){return g()},children:(r,i)=>t(a,{get href(){return r.href},get children(){return[t(c,{get label(){return A(()=>!!b())()?i()+1:r.label},get showFavicon(){return r.showFavicon??s("showFavicon")}}),t(l,{get title(){return r.title??""},get description(){return r.description??""}})]}})})}})});export{u as parseKaiSourceElement};
@@ -1 +1 @@
1
- import{s as h,i as w,c as g,a as m,b as p,S as z,q as y,m as x,d as l,t as r,f as k}from"./chunks/define-B_tXMYRm.js";import{c as i}from"./chunks/cn-CU7UAWzk.js";var C=r("<span aria-hidden=true>"),S=r("<span><span>");const v={new:"bg-tool-blue",online:"bg-tool-green",busy:"bg-tool-red",away:"bg-tool-amber",offline:"bg-muted-foreground"},q={sm:"size-2",md:"size-2.5"};function A(t){const[s,c]=h(t,["status","size","pulse","label","class"]),n=()=>s.status??"new";return(()=>{var a=S(),o=a.firstChild;return w(a,g(z,{get when(){return s.pulse},get children(){var e=C();return m(()=>p(e,i("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75 motion-reduce:hidden",v[n()]))),e}}),o),y(o,x(c,{get class(){return i("relative inline-block rounded-full",v[n()],q[s.size??"sm"])}}),!1,!1),m(e=>{var u=i("relative inline-flex",s.class),d=s.label?"status":void 0,b=s.label,f=s.label?void 0:"true";return u!==e.e&&p(a,e.e=u),d!==e.t&&l(a,"role",e.t=d),b!==e.a&&l(a,"aria-label",e.a=b),f!==e.o&&l(a,"aria-hidden",e.o=f),e},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}var _=r("<style>:host{display:inline-flex}");k("kai-status",{status:"new",pulse:!1,label:void 0,size:"sm"},(t,{flag:s})=>[_(),g(A,{get status(){return t.status??"new"},get size(){return t.size??"sm"},get pulse(){return s("pulse")},get label(){return t.label},part:"dot"})]);
1
+ import{s as h,i as w,c as g,a as p,b as v,S as z,p as y,q as x,d as l,t as r,f as k}from"../define-CGGX-7Vg.js";import{c as i}from"../cn-DN5AWfiS.js";var C=r("<span aria-hidden=true>"),S=r("<span><span>");const m={new:"bg-tool-blue",online:"bg-tool-green",busy:"bg-tool-red",away:"bg-tool-amber",offline:"bg-muted-foreground"},q={sm:"size-2",md:"size-2.5"};function A(t){const[s,c]=h(t,["status","size","pulse","label","class"]),n=()=>s.status??"new";return(()=>{var a=S(),o=a.firstChild;return w(a,g(z,{get when(){return s.pulse},get children(){var e=C();return p(()=>v(e,i("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75 motion-reduce:hidden",m[n()]))),e}}),o),y(o,x(c,{get class(){return i("relative inline-block rounded-full",m[n()],q[s.size??"sm"])}}),!1,!1),p(e=>{var u=i("relative inline-flex",s.class),d=s.label?"status":void 0,b=s.label,f=s.label?void 0:"true";return u!==e.e&&v(a,e.e=u),d!==e.t&&l(a,"role",e.t=d),b!==e.a&&l(a,"aria-label",e.a=b),f!==e.o&&l(a,"aria-hidden",e.o=f),e},{e:void 0,t:void 0,a:void 0,o:void 0}),a})()}var _=r("<style>:host{display:inline-flex}");k("kai-status",{status:"new",pulse:!1,label:void 0,size:"sm"},(t,{flag:s})=>[_(),g(A,{get status(){return t.status??"new"},get size(){return t.size??"sm"},get pulse(){return s("pulse")},get label(){return t.label},part:"dot"})]);
@@ -1 +1 @@
1
- import{g as p,j as m,a as b,d as v,v as C,b as w,t as y,e as A,f as $,B as f,k as R,c as j}from"./chunks/define-B_tXMYRm.js";import{c as x}from"./chunks/cn-CU7UAWzk.js";var E=y("<button type=button role=switch><span>"),q=y('<input type=checkbox aria-hidden=true tabindex=-1 style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap">');function O(i){const[h,d]=p(i.defaultChecked??!1),c=()=>i.checked!==void 0,n=()=>c()?!!i.checked:h(),u=()=>{var e;if(i.disabled)return;const o=!n();c()||d(o),(e=i.onChange)==null||e.call(i,o)};return[m(()=>m(()=>i.name!=null)()&&(()=>{var e=q();return e.addEventListener("change",()=>{}),b(o=>{var l=i.name,t=i.disabled;return l!==o.e&&v(e,"name",o.e=l),t!==o.t&&(e.disabled=o.t=t),o},{e:void 0,t:void 0}),b(()=>e.value=i.value??"on"),b(()=>e.checked=n()),e})()),(()=>{var e=E(),o=e.firstChild;e.$$keydown=t=>{(t.key===" "||t.key==="Enter")&&(t.preventDefault(),u())},e.$$click=u;var l=i.buttonRef;return typeof l=="function"?C(l,e):i.buttonRef=e,b(t=>{var r=n(),a=i.label,s=i.disabled,g=x("relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","disabled:cursor-not-allowed disabled:opacity-50",n()?"bg-primary":"bg-muted",i.class),k=x("inline-block h-4 w-4 rounded-full shadow transition-transform",n()?"translate-x-[1.125rem] bg-primary-foreground":"translate-x-0.5 bg-white");return r!==t.e&&v(e,"aria-checked",t.e=r),a!==t.t&&v(e,"aria-label",t.t=a),s!==t.a&&(e.disabled=t.a=s),g!==t.o&&w(e,t.o=g),k!==t.i&&w(o,t.i=k),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e})()]}A(["click","keydown"]),$("kai-switch",{checked:void 0,defaultChecked:void 0,disabled:void 0,label:void 0,name:void 0,value:void 0},(i,h)=>{const{element:d,dispatch:c,flag:n,expose:u}=h,[e,o]=p(n("defaultChecked")||n("checked")),l=r=>r===!0?!0:r===!1?!1:d.hasAttribute("checked")&&d.getAttribute("checked")!=="false",t=r=>{n("disabled")||f(e)!==r&&(o(r),c("kai-change",{checked:r}))};return Object.defineProperty(d,"checked",{get:()=>e(),set:r=>{const a=l(r);f(e)!==a&&o(a)},configurable:!0,enumerable:!0}),R(()=>{const r=e();r!==d.hasAttribute("checked")&&d.toggleAttribute("checked",r)}),u({toggle:()=>t(!f(e)),focus:r=>{var a,s;return(s=(a=d.shadowRoot)==null?void 0:a.querySelector('button[role="switch"]'))==null?void 0:s.focus(r)}}),j(O,{get checked(){return e()},get disabled(){return n("disabled")},get label(){return i.label},get name(){return i.name},get value(){return i.value},onChange:r=>t(r)})});
1
+ import{f as b,g as k,z as o,j as v,c as f}from"../define-CGGX-7Vg.js";import{S as m}from"../switch-CViARZCy.js";b("kai-switch",{checked:void 0,defaultChecked:void 0,disabled:void 0,label:void 0,name:void 0,value:void 0},(d,n)=>{const{element:t,dispatch:s,flag:r,expose:h}=n,[a,l]=k(r("defaultChecked")||r("checked")),g=e=>e===!0?!0:e===!1?!1:t.hasAttribute("checked")&&t.getAttribute("checked")!=="false",i=e=>{r("disabled")||o(a)!==e&&(l(e),s("kai-change",{checked:e}))};return Object.defineProperty(t,"checked",{get:()=>a(),set:e=>{const c=g(e);o(a)!==c&&l(c)},configurable:!0,enumerable:!0}),v(()=>{const e=a();e!==t.hasAttribute("checked")&&t.toggleAttribute("checked",e)}),h({toggle:()=>i(!o(a)),focus:e=>{var c,u;return(u=(c=t.shadowRoot)==null?void 0:c.querySelector('button[role="switch"]'))==null?void 0:u.focus(e)}}),f(m,{get checked(){return a()},get disabled(){return r("disabled")},get label(){return d.label},get name(){return d.name},get value(){return d.value},onChange:e=>i(e)})});
@@ -1 +1 @@
1
- import{s as E,v as C,q as V,m as j,i as k,c as D,a as z,d as x,b as F,F as H,t as q,e as I,f as L,g as R}from"./chunks/define-B_tXMYRm.js";import{r as S}from"./chunks/icon-97R8SR2p.js";import{c as h}from"./chunks/cn-CU7UAWzk.js";var B=q("<div>"),K=q("<button type=button part=tab role=tab>");const N={segmented:"inline-flex items-center gap-1 rounded-lg bg-muted p-1",underline:"inline-flex items-center gap-1 border-b border-border"};function P(l,a){const s="inline-flex items-center gap-1.5 whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";return l==="underline"?h(s,"border-b-2 px-3 py-2 -mb-px",a?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"):h(s,"rounded-md px-3 py-1.5",a?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground")}function T(l){const[a,s]=E(l,["items","value","variant","block","disabled","onChange","ref","class"]),b=()=>a.items??[],v=()=>a.variant??"segmented",f={},u=()=>b().filter(t=>!t.disabled),o=()=>a.value,c=()=>{var t;return o()!==void 0&&u().some(r=>r.id===o())?o():(t=u()[0])==null?void 0:t.id},n=t=>{var r;a.disabled||t.disabled||t.id!==a.value&&((r=a.onChange)==null||r.call(a,t.id))},g=t=>{const r=f[t];r&&r.focus()},m=(t,r)=>{const i=u();if(i.length===0)return;const d=i.findIndex(p=>p.id===r.id);let e;switch(t.key){case"ArrowRight":case"ArrowDown":e=i[(d+1)%i.length];break;case"ArrowLeft":case"ArrowUp":e=i[(d-1+i.length)%i.length];break;case"Home":e=i[0];break;case"End":e=i[i.length-1];break;case"Enter":case" ":t.preventDefault(),n(r);return;default:return}e&&(t.preventDefault(),n(e),g(e.id))};return(()=>{var t=B();return C(r=>{var i;return(i=a.ref)==null?void 0:i.call(a,r)},t),V(t,j(s,{role:"tablist",part:"tablist",get"aria-disabled"(){return a.disabled?"true":void 0},get class(){return h(N[v()],a.block&&"flex w-full",a.class)}}),!1,!0),k(t,D(H,{get each(){return b()},children:r=>{const i=()=>r.id===o();return(()=>{var d=K();return d.$$keydown=e=>m(e,r),d.$$click=()=>n(r),C(e=>{f[r.id]=e},d),k(d,()=>S(r.icon,{class:"size-4 shrink-0"}),null),k(d,()=>r.label,null),z(e=>{var p=i()?"":void 0,w=i()?"true":"false",y=r.id===c()?0:-1,A=a.disabled||r.disabled,$=h(P(v(),i()),a.block&&"flex-1 justify-center");return p!==e.e&&x(d,"data-active",e.e=p),w!==e.t&&x(d,"aria-selected",e.t=w),y!==e.a&&x(d,"tabindex",e.a=y),A!==e.o&&(d.disabled=e.o=A),$!==e.i&&F(d,e.i=$),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),d})()}})),t})()}I(["click","keydown"]),L("kai-tabs",{items:void 0,value:void 0,defaultValue:void 0,variant:"segmented",block:void 0,disabled:void 0},(l,{dispatch:a,flag:s,expose:b})=>{const[v,f]=R(l.defaultValue),u=()=>l.value??v(),o=n=>{f(n),a("kai-tab-change",{value:n})};let c;return b({select:n=>{var g;const m=(g=l.items)==null?void 0:g.find(t=>t.id===n);!m||m.disabled||s("disabled")||o(n)},focus:()=>{var n;(n=c?.querySelector('[role="tab"][tabindex="0"]:not([disabled])'))==null||n.focus()}}),D(T,{get items(){return l.items},get value(){return u()},get variant(){return l.variant??"segmented"},get block(){return s("block")},get disabled(){return s("disabled")},onChange:o,ref:n=>c=n})});
1
+ import{s as E,u as C,p as V,q as j,i as k,c as D,a as z,d as x,b as F,F as H,t as q,e as I,f as L,g as R}from"../define-CGGX-7Vg.js";import{r as S}from"../icon-BpixdZNq.js";import{c as h}from"../cn-DN5AWfiS.js";var B=q("<div>"),K=q("<button type=button part=tab role=tab>");const N={segmented:"inline-flex items-center gap-1 rounded-lg bg-muted p-1",underline:"inline-flex items-center gap-1 border-b border-border"};function P(l,a){const s="inline-flex items-center gap-1.5 whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50";return l==="underline"?h(s,"border-b-2 px-3 py-2 -mb-px",a?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"):h(s,"rounded-md px-3 py-1.5",a?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground")}function T(l){const[a,s]=E(l,["items","value","variant","block","disabled","onChange","ref","class"]),b=()=>a.items??[],v=()=>a.variant??"segmented",f={},u=()=>b().filter(t=>!t.disabled),o=()=>a.value,c=()=>{var t;return o()!==void 0&&u().some(r=>r.id===o())?o():(t=u()[0])==null?void 0:t.id},n=t=>{var r;a.disabled||t.disabled||t.id!==a.value&&((r=a.onChange)==null||r.call(a,t.id))},g=t=>{const r=f[t];r&&r.focus()},m=(t,r)=>{const i=u();if(i.length===0)return;const d=i.findIndex(p=>p.id===r.id);let e;switch(t.key){case"ArrowRight":case"ArrowDown":e=i[(d+1)%i.length];break;case"ArrowLeft":case"ArrowUp":e=i[(d-1+i.length)%i.length];break;case"Home":e=i[0];break;case"End":e=i[i.length-1];break;case"Enter":case" ":t.preventDefault(),n(r);return;default:return}e&&(t.preventDefault(),n(e),g(e.id))};return(()=>{var t=B();return C(r=>{var i;return(i=a.ref)==null?void 0:i.call(a,r)},t),V(t,j(s,{role:"tablist",part:"tablist",get"aria-disabled"(){return a.disabled?"true":void 0},get class(){return h(N[v()],a.block&&"flex w-full",a.class)}}),!1,!0),k(t,D(H,{get each(){return b()},children:r=>{const i=()=>r.id===o();return(()=>{var d=K();return d.$$keydown=e=>m(e,r),d.$$click=()=>n(r),C(e=>{f[r.id]=e},d),k(d,()=>S(r.icon,{class:"size-4 shrink-0"}),null),k(d,()=>r.label,null),z(e=>{var p=i()?"":void 0,w=i()?"true":"false",y=r.id===c()?0:-1,A=a.disabled||r.disabled,$=h(P(v(),i()),a.block&&"flex-1 justify-center");return p!==e.e&&x(d,"data-active",e.e=p),w!==e.t&&x(d,"aria-selected",e.t=w),y!==e.a&&x(d,"tabindex",e.a=y),A!==e.o&&(d.disabled=e.o=A),$!==e.i&&F(d,e.i=$),e},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),d})()}})),t})()}I(["click","keydown"]),L("kai-tabs",{items:void 0,value:void 0,defaultValue:void 0,variant:"segmented",block:void 0,disabled:void 0},(l,{dispatch:a,flag:s,expose:b})=>{const[v,f]=R(l.defaultValue),u=()=>l.value??v(),o=n=>{f(n),a("kai-tab-change",{value:n})};let c;return b({select:n=>{var g;const m=(g=l.items)==null?void 0:g.find(t=>t.id===n);!m||m.disabled||s("disabled")||o(n)},focus:()=>{var n;(n=c?.querySelector('[role="tab"][tabindex="0"]:not([disabled])'))==null||n.focus()}}),D(T,{get items(){return l.items},get value(){return u()},get variant(){return l.variant??"segmented"},get block(){return s("block")},get disabled(){return s("disabled")},onChange:o,ref:n=>c=n})});
@@ -1 +1 @@
1
- import{f as i,c as u}from"./chunks/define-B_tXMYRm.js";import{T as s}from"./chunks/tasks-card-lPxoodlA.js";i("kai-tasks",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,value:void 0,defaultValue:void 0,disabled:!1,readonly:!1},(a,{element:t,dispatch:o,flag:d,expose:r})=>{let e;return r({select:l=>e?.select(l),toggle:(l,n)=>e?.toggle(l,n),send:()=>e?.send(),focus:l=>e?.focus(l),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),u(s,{get data(){return a.data},get cardId(){return a.cardId??(t.id||"kai-tasks")},get heading(){return a.heading},get resolution(){return a.resolution},get value(){return a.value},get defaultValue(){return a.defaultValue},get disabled(){return d("disabled")},get readonly(){return d("readonly")},onValueChange:l=>o("kai-value-change",l),controllerRef:l=>e=l,hostElement:t})});
1
+ import{f as i,c as u}from"../define-CGGX-7Vg.js";import{T as s}from"../tasks-card-MjCcOhR_.js";i("kai-tasks",{data:void 0,cardId:void 0,heading:void 0,resolution:void 0,value:void 0,defaultValue:void 0,disabled:!1,readonly:!1},(a,{element:t,dispatch:o,flag:d,expose:r})=>{let e;return r({select:l=>e?.select(l),toggle:(l,n)=>e?.toggle(l,n),send:()=>e?.send(),focus:l=>e?.focus(l),dismiss:()=>e?.dismiss(),reopen:()=>e?.reopen()}),u(s,{get data(){return a.data},get cardId(){return a.cardId??(t.id||"kai-tasks")},get heading(){return a.heading},get resolution(){return a.resolution},get value(){return a.value},get defaultValue(){return a.defaultValue},get disabled(){return d("disabled")},get readonly(){return d("readonly")},onValueChange:l=>o("kai-value-change",l),controllerRef:l=>e=l,hostElement:t})});
@@ -1 +1 @@
1
- import{f as r,c as a}from"./chunks/define-B_tXMYRm.js";import{T as e}from"./chunks/text-shimmer-BY_rI3s5.js";r("kai-text-shimmer",{text:"",as:"span",duration:4,spread:20},t=>a(e,{get as(){return t.as},get duration(){return t.duration},get spread(){return t.spread},class:"text-body",get children(){return t.text}}));
1
+ import{f as r,c as a}from"../define-CGGX-7Vg.js";import{T as e}from"../text-shimmer-DKlwRF2G.js";r("kai-text-shimmer",{text:"",as:"span",duration:4,spread:20},t=>a(e,{get as(){return t.as},get duration(){return t.duration},get spread(){return t.spread},class:"text-body",get children(){return t.text}}));
@@ -1 +1 @@
1
- import{s as p,i as o,c as r,H as i,S as u,a as m,b,t as l,e as f,f as g}from"./chunks/define-B_tXMYRm.js";import{c as x}from"./chunks/cn-CU7UAWzk.js";import{T as c}from"./chunks/text-shimmer-BY_rI3s5.js";import{c as h}from"./chunks/chevron-right-C5jXhmtV.js";var k=l('<button type=button class="flex items-center gap-1 text-sm transition-opacity hover:opacity-80">'),v=l('<button type=button class="text-muted-foreground hover:text-foreground border-muted-foreground/50 hover:border-foreground border-b border-dotted text-sm transition-colors">'),w=l("<div>");function y(n){const[t]=p(n,["class","text","onStop","stopLabel","onClick"]),s=()=>t.text??"Thinking",d=()=>t.stopLabel??"Answer now";return(()=>{var a=w();return o(a,r(u,{get when(){return t.onClick},get fallback(){return r(c,{class:"cursor-default text-sm font-medium",get children(){return s()}})},get children(){var e=k();return i(e,"click",t.onClick,!0),o(e,r(c,{class:"text-sm font-medium",get children(){return s()}}),null),o(e,r(h,{class:"text-muted-foreground size-4"}),null),e}}),null),o(a,r(u,{get when(){return t.onStop},get children(){var e=v();return i(e,"click",t.onStop,!0),o(e,d),e}}),null),m(()=>b(a,x("flex w-full items-center justify-between",t.class))),a})()}f(["click"]),g("kai-thinking-bar",{text:"Thinking",stoppable:!1,stopLabel:"Answer now"},(n,{dispatch:t,flag:s})=>r(y,{get text(){return n.text},get stopLabel(){return n.stopLabel},get onStop(){return s("stoppable")?()=>t("kai-stop"):void 0}}));
1
+ import{s as d,i as o,c as r,y as u,S as c,a as b,b as f,t as i,e as g,f as m}from"../define-CGGX-7Vg.js";import{c as x}from"../cn-DN5AWfiS.js";import{T as p}from"../text-shimmer-DKlwRF2G.js";import{c as h}from"../chevron-right-B7l_fMgx.js";var k=i('<button type=button class="flex items-center gap-1 text-sm transition-opacity hover:opacity-80">'),v=i('<button type=button class="text-muted-foreground hover:text-foreground border-muted-foreground/50 hover:border-foreground border-b border-dotted text-sm transition-colors">'),w=i("<div>");function y(n){const[t]=d(n,["class","text","onStop","stopLabel","onClick"]),s=()=>t.text??"Thinking",l=()=>t.stopLabel??"Answer now";return(()=>{var a=w();return o(a,r(c,{get when(){return t.onClick},get fallback(){return r(p,{class:"cursor-default text-sm font-medium",get children(){return s()}})},get children(){var e=k();return u(e,"click",t.onClick,!0),o(e,r(p,{class:"text-sm font-medium",get children(){return s()}}),null),o(e,r(h,{class:"text-muted-foreground size-4"}),null),e}}),null),o(a,r(c,{get when(){return t.onStop},get children(){var e=v();return u(e,"click",t.onStop,!0),o(e,l),e}}),null),b(()=>f(a,x("flex w-full items-center justify-between",t.class))),a})()}g(["click"]),m("kai-thinking-bar",{text:"Thinking",stoppable:!1,stopLabel:"Answer now"},(n,{dispatch:t,flag:s,reflectFlag:l})=>(l("stoppable"),r(y,{get text(){return n.text},get stopLabel(){return n.stopLabel},get onStop(){return s("stoppable")?()=>t("kai-stop"):void 0}})));
@@ -1 +1 @@
1
- import{y as B,l as M,o as w,c as r,v as R,i as h,S as o,F as H,a as T,b as k,C as z,t as c,f as $,g as A,h as j,j as C,u as F}from"./chunks/define-B_tXMYRm.js";import{r as L,T as q}from"./chunks/slots-CIw9RlAe.js";import{C as N,a as O,b as U,S as _}from"./chunks/scroll-button-CrTo7wm4.js";import{M as D,a as x,b as E}from"./chunks/message-CE4k-qaj.js";import{b as G,c as I,a as J}from"./chunks/message-DtXKPqiR.js";import{L as K}from"./chunks/loader-B5QzK_8_.js";var P=c('<div class="flex min-h-[10rem] flex-1 flex-col items-center justify-center gap-1 py-12 text-center"><p class="text-sm font-medium text-foreground">No messages yet</p><p class="text-xs text-muted-foreground">Messages will appear here as the conversation starts.'),Q=c('<div class="rounded-lg px-1 py-2">'),V=c('<div class="absolute bottom-4 left-1/2 flex w-full max-w-3xl -translate-x-1/2 justify-center px-5">'),S=c("<div>");function W(){return P()}function X(e){const d=B(),m=()=>e.actionsReveal==="hover"?"hover":"always";let n;const i=G({emit:a=>{var t;return(t=e.onMessageAction)==null?void 0:t.call(e,a)},target:()=>n}),g=()=>e.scrollButton!==!1,p=()=>e.messages.length===0&&!e.loading,v=M(()=>e.messages.map(a=>a.id));return w(()=>{var a;(a=e.controllerRef)==null||a.call(e,{scrollToBottom:t=>{const l=n?.querySelector(".overflow-y-auto");l?.scrollTo({top:l.scrollHeight,behavior:t??"smooth"})}})}),r(z,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight!==!1},get portalMount(){return d.portalMount()},get children(){var a=S();return R(t=>n=t,a),h(a,r(N,{class:"h-full px-4 py-3",get children(){return[r(O,{class:"mx-auto w-full max-w-3xl space-y-4",get children(){return[r(o,{get when(){return p()},get children(){return r(o,{get when(){return e.empty},get fallback(){return r(W,{})},get children(){return e.empty}})}}),r(H,{get each(){return v()},children:(t,l)=>r(o,{get when(){return e.messages[l()]},children:s=>{const y=r(D,{get parts(){return s().parts},get cardTypes(){return e.cardTypes},get cardSchemas(){return e.cardSchemas},get isUser(){return s().role==="user"},get markdown(){return s().role==="assistant"},get actions(){return s().actions},get actionsReveal(){return m()},get activeFeedback(){return i.resolveFeedback(s())},get copied(){return i.isCopied(s().id)},onAction:u=>i.handleAction(s(),u)}),b=()=>m()==="hover"?"group ":"";return r(o,{get when(){return s().avatar},get fallback(){return r(x,{get role(){return s().role},get class(){return`${b()}${s().role==="user"?"flex-col items-end":"flex-col items-start"}`},children:y})},children:u=>r(x,{get role(){return s().role},get class(){return b()},get children(){return[r(E,{get src(){return u().src??""},get alt(){return u().alt??""},get fallback(){return u().fallback}}),(()=>{var f=S();return h(f,y),T(()=>k(f,`flex min-w-0 flex-1 flex-col ${s().role==="user"?"items-end":"items-start"}`)),f})()]}})})}})}),r(o,{get when(){return e.loading},get children(){return r(x,{class:"flex-col items-start",get children(){var t=Q();return h(t,r(K,{variant:"typing"})),t}})}}),r(U,{})]}}),r(o,{get when(){return g()},get children(){var t=V();return h(t,r(_,{class:"shadow-sm"})),t}})]}})),T(()=>k(a,`relative flex h-full min-h-0 flex-col bg-background ${e.class??""}`)),a}})}var Y=c("<style>:host{display:block;height:100%}"),Z=c("<slot name=empty>");$("kai-thread",{messages:void 0,loading:!1,proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,actionsReveal:"always",scrollButton:!0,class:void 0,cardTypes:void 0,cardSchemas:void 0},(e,{element:d,dispatch:m,flag:n,expose:i})=>{let g;const p=J("kai-thread"),[v,a]=A({});return w(()=>{const t=()=>a(L(d,q));t();const l=new MutationObserver(t);l.observe(d,{childList:!0}),j(()=>l.disconnect())}),i({scrollToBottom:t=>g?.scrollToBottom(t)}),[Y(),r(X,{get class(){return e.class},get messages(){return p(e.messages)},get loading(){return n("loading")},get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return n("codeHighlight")},get actionsReveal(){return e.actionsReveal},get scrollButton(){return e.scrollButton!==!1},get cardTypes(){return I(e.cardTypes,e.theme)},get cardSchemas(){return e.cardSchemas},get empty(){return C(()=>!!v().empty)()?(()=>{var t=Z();return t._$owner=F(),t})():void 0},onMessageAction:t=>m("kai-message-action",t),controllerRef:t=>g=t})]});
1
+ import{A as H,k as B,o as w,c as r,u as M,i as h,S as l,F as R,a as T,b as k,C as z,t as c,f as A,g as $,h as C,m as E,v as F}from"../define-CGGX-7Vg.js";import{r as j,T as L}from"../slots-DaNjX0rc.js";import{C as q,a as N,b as O,S as U}from"../scroll-button-CeP_gv1x.js";import{M as _,a as x,b as D}from"../message-DS8lzHc1.js";import{c as G,a as I,b as J}from"../message-CwKVEdZg.js";import{L as K}from"../loader-YQszHFaW.js";var P=c('<div class="flex min-h-[10rem] flex-1 flex-col items-center justify-center gap-1 py-12 text-center"><p class="text-sm font-medium text-foreground">No messages yet</p><p class="text-xs text-muted-foreground">Messages will appear here as the conversation starts.'),Q=c('<div class="rounded-lg px-1 py-2">'),V=c('<div class="absolute bottom-4 left-1/2 flex w-full max-w-3xl -translate-x-1/2 justify-center px-5">'),S=c("<div>");function W(){return P()}function X(e){const i=H(),m=()=>e.actionsReveal==="hover"?"hover":"always";let o;const u=G({emit:a=>{var t;return(t=e.onMessageAction)==null?void 0:t.call(e,a)},target:()=>o}),g=()=>e.scrollButton!==!1,p=()=>e.messages.length===0&&!e.loading,v=B(()=>e.messages.map(a=>a.id));return w(()=>{var a;(a=e.controllerRef)==null||a.call(e,{scrollToBottom:t=>{const n=o?.querySelector(".overflow-y-auto");n?.scrollTo({top:n.scrollHeight,behavior:t??"smooth"})}})}),r(z,{get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return e.codeHighlight!==!1},get portalMount(){return i.portalMount()},get children(){var a=S();return M(t=>o=t,a),h(a,r(q,{class:"h-full px-4 py-3",get children(){return[r(N,{class:"mx-auto w-full max-w-3xl space-y-4",get children(){return[r(l,{get when(){return p()},get children(){return r(l,{get when(){return e.empty},get fallback(){return r(W,{})},get children(){return e.empty}})}}),r(R,{get each(){return v()},children:(t,n)=>r(l,{get when(){return e.messages[n()]},children:s=>{const y=r(_,{get parts(){return s().parts},get cardTypes(){return e.cardTypes},get cardSchemas(){return e.cardSchemas},get cardHostElement(){return e.cardHostElement},get isUser(){return s().role==="user"},get markdown(){return s().role==="assistant"},get actions(){return s().actions},get actionsReveal(){return m()},get activeFeedback(){return u.resolveFeedback(s())},get copied(){return u.isCopied(s().id)},onAction:d=>u.handleAction(s(),d)}),b=()=>m()==="hover"?"group ":"";return r(l,{get when(){return s().avatar},get fallback(){return r(x,{get role(){return s().role},get class(){return`${b()}${s().role==="user"?"flex-col items-end":"flex-col items-start"}`},children:y})},children:d=>r(x,{get role(){return s().role},get class(){return b()},get children(){return[r(D,{get src(){return d().src??""},get alt(){return d().alt??""},get fallback(){return d().fallback}}),(()=>{var f=S();return h(f,y),T(()=>k(f,`flex min-w-0 flex-1 flex-col ${s().role==="user"?"items-end":"items-start"}`)),f})()]}})})}})}),r(l,{get when(){return e.loading},get children(){return r(x,{class:"flex-col items-start",get children(){var t=Q();return h(t,r(K,{variant:"typing"})),t}})}}),r(O,{})]}}),r(l,{get when(){return g()},get children(){var t=V();return h(t,r(U,{})),t}})]}})),T(()=>k(a,`relative flex h-full min-h-0 flex-col bg-background ${e.class??""}`)),a}})}var Y=c("<style>:host{display:block;height:100%}"),Z=c("<slot name=empty>");A("kai-thread",{messages:void 0,loading:!1,proseSize:"sm",codeTheme:"github-dark-dimmed",codeHighlight:!0,actionsReveal:"always",scrollButton:!0,class:void 0,cardTypes:void 0,cardSchemas:void 0},(e,{element:i,dispatch:m,flag:o,expose:u})=>{let g;const p=J("kai-thread"),[v,a]=$({});return w(()=>{const t=()=>a(j(i,L));t();const n=new MutationObserver(t);n.observe(i,{childList:!0}),C(()=>n.disconnect())}),u({scrollToBottom:t=>g?.scrollToBottom(t)}),[Y(),r(X,{get class(){return e.class},get messages(){return p(e.messages)},get loading(){return o("loading")},get proseSize(){return e.proseSize},get codeTheme(){return e.codeTheme},get codeHighlight(){return o("codeHighlight")},get actionsReveal(){return e.actionsReveal},get scrollButton(){return e.scrollButton!==!1},get cardTypes(){return I(e.cardTypes,e.theme)},get cardSchemas(){return e.cardSchemas},cardHostElement:i,get empty(){return E(()=>!!v().empty)()?(()=>{var t=Z();return t._$owner=F(),t})():void 0},onMessageAction:t=>m("kai-message-action",t),controllerRef:t=>g=t})]});
@@ -1 +1 @@
1
- import{g as y,l as Q,k as G,h as H,c as i,i as h,F as U,v as V,a as z,d as R,b as L,n as q,p as Z,S as b,t as D,x as ee,e as ie,f as ae}from"./chunks/define-B_tXMYRm.js";import{c as g}from"./chunks/cn-CU7UAWzk.js";import{c as se}from"./chunks/overlay-CV7z2YuX.js";import{r as te,t as de}from"./chunks/toast-store-VUZZBhzH.js";import{c as le}from"./chunks/check-MdLzbxrm.js";import{c as ce}from"./chunks/circle-x-mhH7pOK2.js";import{i as ue}from"./chunks/info-C8r5Q6cc.js";import{t as me}from"./chunks/triangle-alert-B6or7F5u.js";import{x as pe}from"./chunks/x-BOhjBeOd.js";var ve=D("<button type=button>"),fe=D("<button type=button aria-label=Dismiss>"),J=D("<div>"),ge=D('<div class="min-w-0 flex-1"><div class="font-medium leading-snug">'),he=D('<span class="min-w-0 flex-1 truncate">'),xe=D('<div role=region aria-label=Notifications aria-live=polite data-stack=collapsed><div class="pointer-events-auto relative transition-[height] duration-200 ease-out"style="min-width:16rem;max-width:min(30rem, calc(100vw - 2rem))">'),be=D("<div role=region aria-label=Notifications aria-live=polite data-stack=expanded>");function we(){var t,c;const[u,f]=y(typeof window<"u"&&((t=window.matchMedia)==null?void 0:t.call(window,"(prefers-reduced-motion: reduce)").matches)===!0);if(typeof window<"u"&&window.matchMedia){const m=window.matchMedia("(prefers-reduced-motion: reduce)"),l=()=>f(m.matches);(c=m.addEventListener)==null||c.call(m,"change",l),H(()=>{var d;return(d=m.removeEventListener)==null?void 0:d.call(m,"change",l)})}return u}function re(t){const[c,u]=y(!0),f=se(c),m=()=>t.item.variant??"neutral",l=()=>t.item.dismissible!==!1,d=()=>t.item.appearance??t.appearance??"pill",v=()=>t.item.inverse??t.inverse??!1,I=()=>v()?"bg-foreground text-background border-transparent":"bg-popover text-popover-foreground border-border",C=()=>v()?"text-background/70":"text-muted-foreground",E=()=>v()?"text-background hover:text-background/80":"text-primary hover:text-primary/80",S=()=>v()?"text-background/70 hover:text-background":"text-muted-foreground hover:text-foreground";let A=te(t.item),T=0,k,$="timeout";const w=()=>{k!==void 0&&(clearTimeout(k),k=void 0)},N=()=>{w(),!(A<=0)&&(T=Date.now(),k=setTimeout(()=>{$="timeout",u(!1)},A))},K=()=>{k!==void 0&&(w(),A-=Date.now()-T)},[P,X]=y(!1),B=()=>t.paused===!0||P();G(ee(()=>te(t.item),e=>{A=e,B()?w():N()})),G(ee(B,e=>{e?K():N()},{defer:!0})),H(w),G(()=>{!f.present()&&!c()&&t.onDismiss($)});const _=()=>{w(),$="close",u(!1)},M=()=>{var e;const o=t.item.action;o&&((e=t.onAction)==null||e.call(t,o.label),o.onAction()===!1||(w(),$="action",u(!1)))},x=()=>d()==="card"?"mt-0.5":void 0,F=()=>[i(b,{get when(){return m()==="success"},get children(){return i(le,{get class(){return g("size-4 shrink-0 text-emerald-500",x())}})}}),i(b,{get when(){return m()==="warning"},get children(){return i(me,{get class(){return g("size-4 shrink-0 text-warning",x())}})}}),i(b,{get when(){return m()==="error"},get children(){return i(ce,{get class(){return g("size-4 shrink-0 text-destructive",x())}})}}),i(b,{get when(){return m()==="info"},get children(){return i(ue,{get class(){return g("size-4 shrink-0 text-info",x())}})}})],n=e=>i(b,{get when(){return t.item.action},children:o=>(()=>{var r=ve();return r.$$click=M,h(r,()=>o().label),z(()=>L(r,g(d()==="card"?g("inline-flex shrink-0 items-center rounded-md border px-2.5 py-1 text-xs font-medium transition-colors",v()?"border-background/30 text-background hover:bg-background/10":"border-border text-foreground hover:bg-accent"):g("shrink-0 rounded-md text-sm font-medium underline-offset-2 hover:underline",E()),e.class))),r})()}),a=()=>i(b,{get when(){return l()},get children(){var e=fe();return e.$$click=_,h(e,i(pe,{class:"size-3.5"})),z(()=>L(e,g("-mr-1 flex size-5 shrink-0 items-center justify-center rounded-md transition-colors",S()))),e}});return i(b,{get when(){return f.present()},get children(){var e=J();e.addEventListener("pointerleave",()=>X(!1)),e.addEventListener("pointerenter",()=>X(!0));var o=f.setRef;return typeof o=="function"?V(o,e):f.setRef=e,h(e,i(F,{}),null),h(e,i(b,{get when(){return d()==="card"},get fallback(){return[(()=>{var r=he();return h(r,()=>t.item.message),r})(),i(n,{}),i(a,{})]},get children(){return[(()=>{var r=ge(),s=r.firstChild;return h(s,()=>t.item.message),h(r,i(b,{get when(){return t.item.description},get children(){var p=J();return h(p,()=>t.item.description),z(()=>L(p,g("mt-1 line-clamp-2 text-xs leading-snug",C()))),p}}),null),h(r,i(n,{class:"mt-2"}),null),r})(),i(a,{})]}}),null),z(r=>{var s=m()==="error"?"alert":"status",p=d(),j=v()?"":void 0,O=f.state()==="closed"?"":void 0,W=g("pointer-events-auto border text-sm shadow-lg",I(),"animate-in fade-in-0 slide-in-from-top-4","data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:slide-out-to-top-2",d()==="card"?"flex min-w-[24rem] items-start gap-3 rounded-xl p-4 shadow-xl":"flex items-center gap-3 rounded-full px-4 py-2.5");return s!==r.e&&R(e,"role",r.e=s),p!==r.t&&R(e,"data-appearance",r.t=p),j!==r.a&&R(e,"data-inverse",r.a=j),O!==r.o&&R(e,"data-closed",r.o=O),W!==r.i&&L(e,r.i=W),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e}})}const ne={"top-center":"top-4 left-1/2 -translate-x-1/2 items-center","top-right":"top-4 right-4 items-end","top-left":"top-4 left-4 items-start","bottom-center":"bottom-4 left-1/2 -translate-x-1/2 items-center flex-col-reverse","bottom-right":"bottom-4 right-4 items-end flex-col-reverse","bottom-left":"bottom-4 left-4 items-start flex-col-reverse"},ke={"top-center":"items-center","top-left":"items-start","top-right":"items-end","bottom-center":"items-center flex-col-reverse","bottom-left":"items-start flex-col-reverse","bottom-right":"items-end flex-col-reverse"},Y=12;function oe(t,c){const u=c.left+c.width/2,f=c.top+Y,m=c.bottom-Y,l=c.left+Y,d=c.right-Y,v=`${Math.max(0,c.width-Y*2)}px`;switch(t){case"top-left":return{top:`${f}px`,left:`${l}px`,transform:"none","max-width":v};case"top-right":return{top:`${f}px`,left:`${d}px`,transform:"translateX(-100%)","max-width":v};case"bottom-center":return{top:`${m}px`,left:`${u}px`,transform:"translate(-50%, -100%)","max-width":v};case"bottom-left":return{top:`${m}px`,left:`${l}px`,transform:"translateY(-100%)","max-width":v};case"bottom-right":return{top:`${m}px`,left:`${d}px`,transform:"translate(-100%, -100%)","max-width":v};default:return{top:`${f}px`,left:`${u}px`,transform:"translateX(-50%)","max-width":v}}}function $e(t){const c=()=>t.max??3,u=()=>t.position??"top-center",f=()=>t.stack??"expanded",m=we(),l=()=>f()==="collapsed"&&!m(),[d,v]=y(!1),[I,C]=y(!1),E=()=>d()||I(),S=20,A=.05,T=48,k=8,$=()=>u().startsWith("bottom"),w=()=>$()?-1:1,[N,K]=y(T),P=n=>{if(!n||typeof window>"u")return;const a=()=>{const o=n.offsetHeight;o&&K(o)};if(a(),typeof ResizeObserver>"u")return;const e=new ResizeObserver(a);e.observe(n),H(()=>e.disconnect())},X=n=>E()?`translateY(${w()*(N()+k)*n}px) scale(1)`:`translateY(${w()*S*n}px) scale(${1-A*n})`,B=()=>{const n=M().length;return n?E()?n*N()+(n-1)*k:N()+(n-1)*S:0},_=Q(()=>[...(t.toasts??[]).filter(n=>(n.target??void 0)===t.target)].reverse()),M=Q(()=>_().slice(0,c())),[x,F]=y(null);return G(()=>{const n=t.target;if(!n||typeof window>"u"){F(null);return}const a=window,e=()=>{const r=n.getBoundingClientRect();F({top:r.top,left:r.left,right:r.right,bottom:r.bottom,width:r.width})};e();const o=new ResizeObserver(e);o.observe(n),a.addEventListener("scroll",e,!0),a.addEventListener("resize",e),H(()=>{o.disconnect(),a.removeEventListener("scroll",e,!0),a.removeEventListener("resize",e)})}),i(b,{get when(){return l()},get fallback(){return(()=>{var n=be();return h(n,i(U,{get each(){return M()},children:a=>i(re,{item:a,get appearance(){return t.appearance},get inverse(){return t.inverse},onDismiss:e=>{var o;return(o=t.onDismiss)==null?void 0:o.call(t,a.id,e)},onAction:e=>{var o;return(o=t.onAction)==null?void 0:o.call(t,a.id,e)}})})),z(a=>{var e=g("pointer-events-none fixed z-[100] flex flex-col gap-2",x()?ke[u()]:g("max-w-[min(30rem,calc(100vw-2rem))]",ne[u()])),o=x()?oe(u(),x()):void 0;return e!==a.e&&L(n,a.e=e),a.t=Z(n,o,a.t),a},{e:void 0,t:void 0}),n})()},get children(){var n=xe(),a=n.firstChild;return n.$$focusout=()=>C(!1),n.$$focusin=()=>C(!0),n.addEventListener("pointerleave",()=>v(!1)),n.addEventListener("pointerenter",()=>v(!0)),h(a,i(U,{get each(){return M()},children:(e,o)=>(()=>{var r=J();return V(s=>{o()===0&&P(s)},r),h(r,i(re,{item:e,get paused(){return E()},get appearance(){return t.appearance},get inverse(){return t.inverse},onDismiss:s=>{var p;return(p=t.onDismiss)==null?void 0:p.call(t,e.id,s)},onAction:s=>{var p;return(p=t.onAction)==null?void 0:p.call(t,e.id,s)}})),z(s=>{var p=o(),j=g("absolute inset-x-0 flex transition-[transform,opacity] duration-200 ease-out",$()?"bottom-0 origin-bottom":"top-0 origin-top",u().endsWith("right")?"justify-end":u().endsWith("left")?"justify-start":"justify-center"),O=String(c()-o()),W=X(o());return p!==s.e&&R(r,"data-depth",s.e=p),j!==s.t&&L(r,s.t=j),O!==s.a&&q(r,"z-index",s.a=O),W!==s.o&&q(r,"transform",s.o=W),s},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()})),z(e=>{var o=E()?"":void 0,r=g("pointer-events-none fixed z-[100]",!x()&&ne[u()]),s=x()?oe(u(),x()):void 0,p=`${B()}px`;return o!==e.e&&R(n,"data-expanded",e.e=o),r!==e.t&&L(n,e.t=r),e.a=Z(n,s,e.a),p!==e.o&&q(a,"height",e.o=p),e},{e:void 0,t:void 0,a:void 0,o:void 0}),n}})}ie(["click","focusin","focusout"]),ae("kai-toast-region",{toasts:[],position:"top-center",max:3,stack:"expanded",appearance:"pill",inverse:!1,target:void 0},(t,{dispatch:c,flag:u})=>{const f=()=>{const l=t.max,d=typeof l=="string"?parseInt(l,10):l;return typeof d=="number"&&!Number.isNaN(d)?d:3},m=l=>{de.dismiss(l)};return i($e,{get toasts(){return t.toasts??[]},get position(){return t.position},get max(){return f()},get stack(){return t.stack},get appearance(){return t.appearance},get inverse(){return u("inverse")},get target(){return t.target},onDismiss:(l,d)=>{m(l),c("kai-dismiss",{id:l,reason:d})},onAction:(l,d)=>c("kai-action",{id:l,label:d})})});
1
+ import{g as y,k as Q,j as G,h as H,c as i,i as h,F as U,u as V,a as z,d as N,b as L,l as q,n as Z,S as b,t as D,x as ee,e as ie,f as ae}from"../define-CGGX-7Vg.js";import{c as g}from"../cn-DN5AWfiS.js";import{c as se}from"../overlay-C1od6LOz.js";import{r as te,t as de}from"../toast-store-C6yKOhbk.js";import{c as le}from"../check-DPeeMUYx.js";import{c as ce}from"../circle-x-wobWkoSx.js";import{i as ue}from"../info-8mFsIjS3.js";import{t as me}from"../triangle-alert-DHohDOCy.js";import{x as pe}from"../x-C5m1JFgi.js";var ve=D("<button type=button>"),fe=D("<button type=button aria-label=Dismiss>"),J=D("<div>"),ge=D('<div class="min-w-0 flex-1"><div class="font-medium leading-snug">'),he=D('<span class="min-w-0 flex-1 truncate">'),xe=D('<div role=region aria-label=Notifications aria-live=polite data-stack=collapsed style="z-index:var(--kai-toast-z, 100)"><div class="pointer-events-auto relative transition-[height] duration-200 ease-out"style="min-width:16rem;max-width:min(30rem, calc(100vw - 2rem))">'),be=D('<div role=region aria-label=Notifications aria-live=polite data-stack=expanded style="z-index:var(--kai-toast-z, 100)">');function we(){var t,c;const[u,f]=y(typeof window<"u"&&((t=window.matchMedia)==null?void 0:t.call(window,"(prefers-reduced-motion: reduce)").matches)===!0);if(typeof window<"u"&&window.matchMedia){const m=window.matchMedia("(prefers-reduced-motion: reduce)"),l=()=>f(m.matches);(c=m.addEventListener)==null||c.call(m,"change",l),H(()=>{var d;return(d=m.removeEventListener)==null?void 0:d.call(m,"change",l)})}return u}function re(t){const[c,u]=y(!0),f=se(c),m=()=>t.item.variant??"neutral",l=()=>t.item.dismissible!==!1,d=()=>t.item.appearance??t.appearance??"pill",v=()=>t.item.inverse??t.inverse??!1,I=()=>v()?"bg-foreground text-background border-transparent":"bg-popover text-popover-foreground border-border",Y=()=>v()?"text-background/70":"text-muted-foreground",E=()=>v()?"text-background hover:text-background/80":"text-primary hover:text-primary/80",S=()=>v()?"text-background/70 hover:text-background":"text-muted-foreground hover:text-foreground";let A=te(t.item),T=0,k,$="timeout";const w=()=>{k!==void 0&&(clearTimeout(k),k=void 0)},j=()=>{w(),!(A<=0)&&(T=Date.now(),k=setTimeout(()=>{$="timeout",u(!1)},A))},K=()=>{k!==void 0&&(w(),A-=Date.now()-T)},[P,X]=y(!1),F=()=>t.paused===!0||P();G(ee(()=>te(t.item),e=>{A=e,F()?w():j()})),G(ee(F,e=>{e?K():j()},{defer:!0})),H(w),G(()=>{!f.present()&&!c()&&t.onDismiss($)});const _=()=>{w(),$="close",u(!1)},R=()=>{var e;const o=t.item.action;o&&((e=t.onAction)==null||e.call(t,o.label),o.onAction()===!1||(w(),$="action",u(!1)))},x=()=>d()==="card"?"mt-0.5":void 0,B=()=>[i(b,{get when(){return m()==="success"},get children(){return i(le,{get class(){return g("size-4 shrink-0 text-emerald-500",x())}})}}),i(b,{get when(){return m()==="warning"},get children(){return i(me,{get class(){return g("size-4 shrink-0 text-warning",x())}})}}),i(b,{get when(){return m()==="error"},get children(){return i(ce,{get class(){return g("size-4 shrink-0 text-destructive",x())}})}}),i(b,{get when(){return m()==="info"},get children(){return i(ue,{get class(){return g("size-4 shrink-0 text-info",x())}})}})],n=e=>i(b,{get when(){return t.item.action},children:o=>(()=>{var r=ve();return r.$$click=R,h(r,()=>o().label),z(()=>L(r,g(d()==="card"?g("inline-flex shrink-0 items-center rounded-md border px-2.5 py-1 text-xs font-medium transition-colors",v()?"border-background/30 text-background hover:bg-background/10":"border-border text-foreground hover:bg-accent"):g("shrink-0 rounded-md text-sm font-medium underline-offset-2 hover:underline",E()),e.class))),r})()}),a=()=>i(b,{get when(){return l()},get children(){var e=fe();return e.$$click=_,h(e,i(pe,{class:"size-3.5"})),z(()=>L(e,g("-mr-1 flex size-5 shrink-0 items-center justify-center rounded-md transition-colors",S()))),e}});return i(b,{get when(){return f.present()},get children(){var e=J();e.addEventListener("pointerleave",()=>X(!1)),e.addEventListener("pointerenter",()=>X(!0));var o=f.setRef;return typeof o=="function"?V(o,e):f.setRef=e,h(e,i(B,{}),null),h(e,i(b,{get when(){return d()==="card"},get fallback(){return[(()=>{var r=he();return h(r,()=>t.item.message),r})(),i(n,{}),i(a,{})]},get children(){return[(()=>{var r=ge(),s=r.firstChild;return h(s,()=>t.item.message),h(r,i(b,{get when(){return t.item.description},get children(){var p=J();return h(p,()=>t.item.description),z(()=>L(p,g("mt-1 line-clamp-2 text-xs leading-snug",Y()))),p}}),null),h(r,i(n,{class:"mt-2"}),null),r})(),i(a,{})]}}),null),z(r=>{var s=m()==="error"?"alert":"status",p=d(),M=v()?"":void 0,C=f.state()==="closed"?"":void 0,O=g("pointer-events-auto border text-sm shadow-lg",I(),"animate-in fade-in-0 slide-in-from-top-4","data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:slide-out-to-top-2",d()==="card"?"flex min-w-[24rem] items-start gap-3 rounded-xl p-4 shadow-xl":"flex items-center gap-3 rounded-full px-4 py-2.5");return s!==r.e&&N(e,"role",r.e=s),p!==r.t&&N(e,"data-appearance",r.t=p),M!==r.a&&N(e,"data-inverse",r.a=M),C!==r.o&&N(e,"data-closed",r.o=C),O!==r.i&&L(e,r.i=O),r},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),e}})}const ne={"top-center":"top-4 left-1/2 -translate-x-1/2 items-center","top-right":"top-4 right-4 items-end","top-left":"top-4 left-4 items-start","bottom-center":"bottom-4 left-1/2 -translate-x-1/2 items-center flex-col-reverse","bottom-right":"bottom-4 right-4 items-end flex-col-reverse","bottom-left":"bottom-4 left-4 items-start flex-col-reverse"},ke={"top-center":"items-center","top-left":"items-start","top-right":"items-end","bottom-center":"items-center flex-col-reverse","bottom-left":"items-start flex-col-reverse","bottom-right":"items-end flex-col-reverse"},W=12;function oe(t,c){const u=c.left+c.width/2,f=c.top+W,m=c.bottom-W,l=c.left+W,d=c.right-W,v=`${Math.max(0,c.width-W*2)}px`;switch(t){case"top-left":return{top:`${f}px`,left:`${l}px`,transform:"none","max-width":v};case"top-right":return{top:`${f}px`,left:`${d}px`,transform:"translateX(-100%)","max-width":v};case"bottom-center":return{top:`${m}px`,left:`${u}px`,transform:"translate(-50%, -100%)","max-width":v};case"bottom-left":return{top:`${m}px`,left:`${l}px`,transform:"translateY(-100%)","max-width":v};case"bottom-right":return{top:`${m}px`,left:`${d}px`,transform:"translate(-100%, -100%)","max-width":v};default:return{top:`${f}px`,left:`${u}px`,transform:"translateX(-50%)","max-width":v}}}function $e(t){const c=()=>t.max??3,u=()=>t.position??"top-center",f=()=>t.stack??"expanded",m=we(),l=()=>f()==="collapsed"&&!m(),[d,v]=y(!1),[I,Y]=y(!1),E=()=>d()||I(),S=20,A=.05,T=48,k=8,$=()=>u().startsWith("bottom"),w=()=>$()?-1:1,[j,K]=y(T),P=n=>{if(!n||typeof window>"u")return;const a=()=>{const o=n.offsetHeight;o&&K(o)};if(a(),typeof ResizeObserver>"u")return;const e=new ResizeObserver(a);e.observe(n),H(()=>e.disconnect())},X=n=>E()?`translateY(${w()*(j()+k)*n}px) scale(1)`:`translateY(${w()*S*n}px) scale(${1-A*n})`,F=()=>{const n=R().length;return n?E()?n*j()+(n-1)*k:j()+(n-1)*S:0},_=Q(()=>[...(t.toasts??[]).filter(n=>(n.target??void 0)===t.target)].reverse()),R=Q(()=>_().slice(0,c())),[x,B]=y(null);return G(()=>{const n=t.target;if(!n||typeof window>"u"){B(null);return}const a=window,e=()=>{const r=n.getBoundingClientRect();B({top:r.top,left:r.left,right:r.right,bottom:r.bottom,width:r.width})};e();const o=new ResizeObserver(e);o.observe(n),a.addEventListener("scroll",e,!0),a.addEventListener("resize",e),H(()=>{o.disconnect(),a.removeEventListener("scroll",e,!0),a.removeEventListener("resize",e)})}),i(b,{get when(){return l()},get fallback(){return(()=>{var n=be();return h(n,i(U,{get each(){return R()},children:a=>i(re,{item:a,get appearance(){return t.appearance},get inverse(){return t.inverse},onDismiss:e=>{var o;return(o=t.onDismiss)==null?void 0:o.call(t,a.id,e)},onAction:e=>{var o;return(o=t.onAction)==null?void 0:o.call(t,a.id,e)}})})),z(a=>{var e=g("pointer-events-none fixed flex flex-col gap-2",x()?ke[u()]:g("max-w-[min(30rem,calc(100vw-2rem))]",ne[u()])),o={...x()?oe(u(),x()):void 0};return e!==a.e&&L(n,a.e=e),a.t=Z(n,o,a.t),a},{e:void 0,t:void 0}),n})()},get children(){var n=xe(),a=n.firstChild;return n.$$focusout=()=>Y(!1),n.$$focusin=()=>Y(!0),n.addEventListener("pointerleave",()=>v(!1)),n.addEventListener("pointerenter",()=>v(!0)),h(a,i(U,{get each(){return R()},children:(e,o)=>(()=>{var r=J();return V(s=>{o()===0&&P(s)},r),h(r,i(re,{item:e,get paused(){return E()},get appearance(){return t.appearance},get inverse(){return t.inverse},onDismiss:s=>{var p;return(p=t.onDismiss)==null?void 0:p.call(t,e.id,s)},onAction:s=>{var p;return(p=t.onAction)==null?void 0:p.call(t,e.id,s)}})),z(s=>{var p=o(),M=g("absolute inset-x-0 flex transition-[transform,opacity] duration-200 ease-out",$()?"bottom-0 origin-bottom":"top-0 origin-top",u().endsWith("right")?"justify-end":u().endsWith("left")?"justify-start":"justify-center"),C=String(c()-o()),O=X(o());return p!==s.e&&N(r,"data-depth",s.e=p),M!==s.t&&L(r,s.t=M),C!==s.a&&q(r,"z-index",s.a=C),O!==s.o&&q(r,"transform",s.o=O),s},{e:void 0,t:void 0,a:void 0,o:void 0}),r})()})),z(e=>{var o=E()?"":void 0,r=g("pointer-events-none fixed",!x()&&ne[u()]),s={...x()?oe(u(),x()):void 0},p=`${F()}px`;return o!==e.e&&N(n,"data-expanded",e.e=o),r!==e.t&&L(n,e.t=r),e.a=Z(n,s,e.a),p!==e.o&&q(a,"height",e.o=p),e},{e:void 0,t:void 0,a:void 0,o:void 0}),n}})}ie(["click","focusin","focusout"]),ae("kai-toast-region",{toasts:[],position:"top-center",max:3,stack:"expanded",appearance:"pill",inverse:!1,target:void 0},(t,{dispatch:c,flag:u})=>{const f=()=>{const l=t.max,d=typeof l=="string"?parseInt(l,10):l;return typeof d=="number"&&!Number.isNaN(d)?d:3},m=l=>{de.dismiss(l)};return i($e,{get toasts(){return t.toasts??[]},get position(){return t.position},get max(){return f()},get stack(){return t.stack},get appearance(){return t.appearance},get inverse(){return u("inverse")},get target(){return t.target},onDismiss:(l,d)=>{m(l),c("kai-dismiss",{id:l,reason:d})},onAction:(l,d)=>c("kai-action",{id:l,label:d})})});
@@ -1 +1 @@
1
- import{f as a,c as l,S as d}from"./chunks/define-B_tXMYRm.js";import{T as i}from"./chunks/tool-C1YtxwPu.js";import{w as f}from"./chunks/disclosure-DAoYOKew.js";a("kai-tool",{tool:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(t,e)=>{const{flag:o}=e;let r;return f(e,()=>r,()=>t.open),l(d,{get when(){return t.tool},get children(){return l(i,{get toolPart(){return t.tool},get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:n=>r=n})}})});
1
+ import{f as i,g as s,c as r,S as f}from"../define-CGGX-7Vg.js";import{T as u}from"../tool-BCYNlfKy.js";import{w as g}from"../disclosure-CbLtajUQ.js";i("kai-tool",{tool:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(e,t)=>{const{flag:o,reflectFlag:l}=t,[a,d]=s();return g(t,a,()=>e.open),l("disabled"),r(f,{get when(){return e.tool},get children(){return r(u,{get toolPart(){return e.tool},get defaultOpen(){return o("defaultOpen")},get disabled(){return o("disabled")},controllerRef:n=>d(n)})}})});
@@ -1 +1 @@
1
- import{f as i,c as d,u as s,j as r,t as a}from"./chunks/define-B_tXMYRm.js";import{T as p}from"./chunks/tooltip-BqwnFWhn.js";import{w as u}from"./chunks/disclosure-DAoYOKew.js";var c=a("<style>:host{display:inline-flex}"),m=a("<slot>");i("kai-tooltip",{content:"",openDelay:void 0,closeDelay:void 0,placement:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(e,o)=>{const{flag:l}=o;let n;return u(o,()=>n,()=>e.open),[c(),d(p,{get content(){return e.content??""},get openDelay(){return r(()=>e.openDelay!=null)()?Number(e.openDelay):void 0},get closeDelay(){return r(()=>e.closeDelay!=null)()?Number(e.closeDelay):void 0},get placement(){return e.placement??void 0},get defaultOpen(){return l("defaultOpen")},get disabled(){return l("disabled")},controllerRef:t=>n=t,get children(){var t=m();return t._$owner=s(),t}})]});
1
+ import{f as i,c as d,v as s,m as r,t as a}from"../define-CGGX-7Vg.js";import{T as p}from"../tooltip-05zI4hjs.js";import{w as u}from"../disclosure-CbLtajUQ.js";var c=a("<style>:host{display:inline-flex}"),m=a("<slot>");i("kai-tooltip",{content:"",openDelay:void 0,closeDelay:void 0,placement:void 0,open:void 0,defaultOpen:void 0,disabled:void 0},(e,o)=>{const{flag:l}=o;let n;return u(o,()=>n,()=>e.open),[c(),d(p,{get content(){return e.content??""},get openDelay(){return r(()=>e.openDelay!=null)()?Number(e.openDelay):void 0},get closeDelay(){return r(()=>e.closeDelay!=null)()?Number(e.closeDelay):void 0},get placement(){return e.placement??void 0},get defaultOpen(){return l("defaultOpen")},get disabled(){return l("disabled")},controllerRef:t=>n=t,get children(){var t=m();return t._$owner=s(),t}})]});
@@ -1 +1 @@
1
- import{g as b,h as C,s as z,k as L,x as P,i as I,c as g,F,n as V,S,j as M,a as D,b as U,t as x,f as $}from"./chunks/define-B_tXMYRm.js";import{c as B}from"./chunks/cn-CU7UAWzk.js";import{B as q}from"./chunks/button-B9okqG73.js";import{T as A}from"./chunks/tooltip-BqwnFWhn.js";function G(n={}){const l=n.mimeType??"audio/webm;codecs=opus",[s,p]=b(!1),[c,e]=b(null),[r,u]=b();let i,m=[],v;async function o(){e(null),m=[];try{const t=await navigator.mediaDevices.getUserMedia({audio:!0});return u(t),i=new MediaRecorder(t,{mimeType:l}),i.ondataavailable=a=>{a.data.size>0&&m.push(a.data)},i.onstop=()=>{const a=new Blob(m,{type:l});t.getTracks().forEach(h=>h.stop()),u(void 0),p(!1),v?.(a)},i.start(),p(!0),new Promise(a=>{v=a})}catch(t){const a=r();throw a&&(a.getTracks().forEach(h=>h.stop()),u(void 0)),e(t instanceof Error?t.message:"Microphone access denied"),p(!1),t}}function w(){i&&i.state==="recording"&&i.stop()}return C(()=>w()),{isRecording:s,error:c,stream:r,start:o,stop:w}}function E(){if(typeof window>"u")return;const n=window;return n.SpeechRecognition??n.webkitSpeechRecognition}function H(n={}){const[l,s]=b(!1),[p,c]=b(null),e=E()!==void 0;let r,u,i="";function m(o={}){c(null),i="";const w=E();if(!w){const t="SpeechRecognition is not supported in this browser";return c(t),Promise.reject(new Error(t))}try{return r=new w,o.lang&&(r.lang=o.lang),r.interimResults=n.interim===!0,r.continuous=!1,r.onresult=t=>{var a;let h="";for(let y=t.resultIndex;y<t.results.length;y++){const T=t.results[y],R=((a=T[0])==null?void 0:a.transcript)??"";T.isFinal?i+=R:h+=R}h&&o.onInterim&&o.onInterim(h)},r.onerror=t=>{c(t.error??"Speech recognition error")},r.onend=()=>{s(!1),u?.(i),r=void 0},r.start(),s(!0),new Promise(t=>{u=t})}catch(t){throw c(t instanceof Error?t.message:"Speech recognition failed to start"),s(!1),t}}function v(){r&&l()&&r.stop()}return C(()=>{r&&r.abort()}),{isSupported:e,isListening:l,error:p,start:m,stop:v}}var J=x('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 1a3 3 0 00-3 3v8a3 3 0 006 0V4a3 3 0 00-3-3z"></path><path d="M19 10v2a7 7 0 01-14 0v-2"></path><line x1=12 y1=19 x2=12 y2=23></line><line x1=8 y1=23 x2=16 y2=23>'),K=x('<svg width=14 height=14 viewBox="0 0 24 24"fill=currentColor><rect x=4 y=4 width=16 height=16 rx=2>'),N=x('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 class=animate-spin><path d="M21 12a9 9 0 11-6.219-8.56">'),O=x("<div>"),W=x('<div class="absolute inset-0 animate-ping rounded-full border-2 border-red-400/30"style=animation-duration:2s>');function _(n){var l;const[s]=z(n,["onTranscribe","onTranscription","disabled","class"]),{isRecording:p,start:c,stop:e}=G(),r=H({interim:n.interim}),[u,i]=b(!1),m=()=>!n.hasTranscribe&&r.isSupported,v=()=>u()?"Transcribing...":o()?"Stop recording":"Voice input",o=()=>m()?r.isListening():p();async function w(){try{const d=await r.start({lang:n.lang,onInterim:n.interim?f=>{var k;return(k=n.onInterim)==null?void 0:k.call(n,f)}:void 0});d.trim()&&s.onTranscription(d.trim())}catch{}}async function t(){try{const d=await c();i(!0);try{const f=await s.onTranscribe(d);f.trim()&&s.onTranscription(f.trim())}finally{i(!1)}}catch{i(!1)}}function a(){m()?w():t()}function h(){m()?r.stop():e()}async function y(){o()?h():a()}L(P(o,d=>{var f;(f=n.onRecordingChange)==null||f.call(n,d)},{defer:!0})),(l=n.controllerRef)==null||l.call(n,{start:()=>{o()||a()},stop:()=>h()});const T=()=>J(),R=()=>K(),j=()=>N();return(()=>{var d=O();return I(d,g(S,{get when(){return o()},get children(){return g(F,{each:[0,1,2],children:f=>(()=>{var k=W();return V(k,"animation-delay",`${f*.3}s`),k})()})}}),null),I(d,g(A,{get content(){return v()},get children(){return g(q,{variant:"ghost",size:"icon-sm",get"aria-label"(){return v()},onClick:y,get disabled(){return s.disabled||u()},get class(){return B("relative z-10 rounded-full transition-all duration-300",o()&&"bg-destructive text-white hover:bg-destructive/80")},get children(){return[g(S,{get when(){return u()},get children(){return g(j,{})}}),g(S,{get when(){return M(()=>!u())()&&o()},get children(){return g(R,{})}}),g(S,{get when(){return M(()=>!u())()&&!o()},get children(){return g(T,{})}})]}})}}),null),D(()=>U(d,B("relative inline-flex items-center justify-center",s.class))),d})()}$("kai-voice-input",{transcribe:void 0,disabled:!1,recognitionLang:void 0,interim:!1},(n,{dispatch:l,flag:s,expose:p})=>{let c;return p({start:()=>c?.start(),stop:()=>c?.stop()}),g(_,{get disabled(){return s("disabled")},get hasTranscribe(){return typeof n.transcribe=="function"},get lang(){return n.recognitionLang},get interim(){return s("interim")},onTranscribe:async e=>(l("kai-audio-captured",{blob:e}),n.transcribe?n.transcribe(e):""),onTranscription:e=>l("kai-transcription",{text:e}),onInterim:e=>l("kai-transcript-interim",{text:e}),onRecordingChange:e=>l("kai-recording-change",{recording:e}),controllerRef:e=>c=e})});
1
+ import{g as x,h as B,s as V,j as D,x as U,i as j,c as h,F as $,l as q,S as C,m as z,a as A,b as G,t as T,f as H}from"../define-CGGX-7Vg.js";import{c as L}from"../cn-DN5AWfiS.js";import{B as J}from"../button-BH6rN0U-.js";import{T as K}from"../tooltip-05zI4hjs.js";function N(r={}){const s=r.mimeType??"audio/webm;codecs=opus",[c,m]=x(!1),[l,e]=x(null),[t,u]=x();let a,v=[],f;async function o(){e(null),v=[];try{const n=await navigator.mediaDevices.getUserMedia({audio:!0});return u(n),a=new MediaRecorder(n,{mimeType:s}),a.ondataavailable=i=>{i.data.size>0&&v.push(i.data)},a.onstop=()=>{const i=new Blob(v,{type:s});n.getTracks().forEach(d=>d.stop()),u(void 0),m(!1),f?.(i)},a.start(),m(!0),new Promise(i=>{f=i})}catch(n){const i=t();throw i&&(i.getTracks().forEach(d=>d.stop()),u(void 0)),e(n instanceof Error?n.message:"Microphone access denied"),m(!1),n}}function y(){a&&a.state==="recording"&&a.stop()}return B(()=>y()),{isRecording:c,error:l,stream:t,start:o,stop:y}}function P(){if(typeof window>"u")return;const r=window;return r.SpeechRecognition??r.webkitSpeechRecognition}function O(r={}){const[s,c]=x(!1),[m,l]=x(null),e=P()!==void 0;let t,u,a="";function v(o={}){l(null),a="";const y=P();if(!y){const n="SpeechRecognition is not supported in this browser";return l(n),Promise.reject(new Error(n))}try{return t=new y,o.lang&&(t.lang=o.lang),t.interimResults=r.interim===!0,t.continuous=!1,t.onresult=n=>{var i;let d="";for(let w=n.resultIndex;w<n.results.length;w++){const E=n.results[w],R=((i=E[0])==null?void 0:i.transcript)??"";E.isFinal?a+=R:d+=R}d&&o.onInterim&&o.onInterim(d)},t.onerror=n=>{var i;const d=n.error??"unknown",w=`Speech recognition error: ${d}`;l(w),(i=o.onError)==null||i.call(o,d,w)},t.onend=()=>{c(!1),u?.(a),t=void 0},t.start(),c(!0),new Promise(n=>{u=n})}catch(n){throw l(n instanceof Error?n.message:"Speech recognition failed to start"),c(!1),n}}function f(){t&&s()&&t.stop()}return B(()=>{t&&t.abort()}),{isSupported:e,isListening:s,error:m,start:v,stop:f}}var Q=T('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 1a3 3 0 00-3 3v8a3 3 0 006 0V4a3 3 0 00-3-3z"></path><path d="M19 10v2a7 7 0 01-14 0v-2"></path><line x1=12 y1=19 x2=12 y2=23></line><line x1=8 y1=23 x2=16 y2=23>'),W=T('<svg width=14 height=14 viewBox="0 0 24 24"fill=currentColor><rect x=4 y=4 width=16 height=16 rx=2>'),X=T('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 class=animate-spin><path d="M21 12a9 9 0 11-6.219-8.56">'),Y=T("<div>"),Z=T('<div class="absolute inset-0 animate-ping rounded-full border-2 border-red-400/30"style=animation-duration:2s>');function _(r){var s;const[c]=V(r,["onTranscribe","onTranscription","disabled","class"]),{isRecording:m,start:l,stop:e}=N(),t=O({interim:r.interim}),[u,a]=x(!1),v=()=>!r.hasTranscribe&&t.isSupported,f=()=>u()?"Transcribing...":o()?"Stop recording":"Voice input",o=()=>v()?t.isListening():m();async function y(){var g,p;let k=!1;try{const b=await t.start({lang:r.lang,onInterim:r.interim?I=>{var S;return(S=r.onInterim)==null?void 0:S.call(r,I)}:void 0,onError:(I,S)=>{var M;k=!0,(M=r.onError)==null||M.call(r,{source:"recognition",error:I,message:S})}});b.trim()?c.onTranscription(b.trim()):k||(g=r.onError)==null||g.call(r,{source:"recognition",error:"no-result",message:"Speech recognition ended without capturing any text"})}catch(b){k||(p=r.onError)==null||p.call(r,{source:"recognition",error:b instanceof Error?b.name:"unknown",message:b instanceof Error?b.message:String(b)})}}async function n(){try{const g=await l();a(!0);try{const p=await c.onTranscribe(g);p.trim()&&c.onTranscription(p.trim())}finally{a(!1)}}catch{a(!1)}}function i(){v()?y():n()}function d(){v()?t.stop():e()}async function w(){o()?d():i()}D(U(o,g=>{var p;(p=r.onRecordingChange)==null||p.call(r,g)},{defer:!0})),(s=r.controllerRef)==null||s.call(r,{start:()=>{o()||i()},stop:()=>d()});const E=()=>Q(),R=()=>W(),F=()=>X();return(()=>{var g=Y();return j(g,h(C,{get when(){return o()},get children(){return h($,{each:[0,1,2],children:p=>(()=>{var k=Z();return q(k,"animation-delay",`${p*.3}s`),k})()})}}),null),j(g,h(K,{get content(){return f()},get children(){return h(J,{variant:"ghost",size:"icon-sm",get"aria-label"(){return f()},onClick:w,get disabled(){return c.disabled||u()},get class(){return L("relative z-10 rounded-full transition-all duration-300",o()&&"bg-destructive text-white hover:bg-destructive/80")},get children(){return[h(C,{get when(){return u()},get children(){return h(F,{})}}),h(C,{get when(){return z(()=>!u())()&&o()},get children(){return h(R,{})}}),h(C,{get when(){return z(()=>!u())()&&!o()},get children(){return h(E,{})}})]}})}}),null),A(()=>G(g,L("relative inline-flex items-center justify-center",c.class))),g})()}H("kai-voice-input",{transcribe:void 0,disabled:!1,recognitionLang:void 0,interim:!1},(r,{dispatch:s,flag:c,expose:m})=>{let l;return m({start:()=>l?.start(),stop:()=>l?.stop()}),h(_,{get disabled(){return c("disabled")},get hasTranscribe(){return typeof r.transcribe=="function"},get lang(){return r.recognitionLang},get interim(){return c("interim")},onTranscribe:async e=>(s("kai-audio-captured",{blob:e}),r.transcribe?r.transcribe(e):""),onTranscription:e=>s("kai-transcription",{text:e}),onInterim:e=>s("kai-transcript-interim",{text:e}),onRecordingChange:e=>s("kai-recording-change",{recording:e}),onError:e=>s("kai-voice-error",e),controllerRef:e=>l=e})});
@@ -1 +1 @@
1
- import{s as A,g as k,k as x,x as z,h as q,i as D,c as o,S as w,j as m,a as E,b as F,t as p,f as G}from"./chunks/define-B_tXMYRm.js";import{c as b}from"./chunks/cn-CU7UAWzk.js";import{B as I}from"./chunks/button-B9okqG73.js";import{T as N}from"./chunks/tooltip-BqwnFWhn.js";var P=p('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 010 14.14M15.54 8.46a5 5 0 010 7.07">'),V=p('<svg width=14 height=14 viewBox="0 0 24 24"fill=currentColor><rect x=4 y=4 width=16 height=16 rx=2>'),W=p('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 class=animate-spin><path d="M21 12a9 9 0 11-6.219-8.56">'),_=p("<div>");function h(){return typeof window<"u"&&"speechSynthesis"in window}function $(e){var l;const[r]=A(e,["text","disabled","class"]),[a,t]=k(!1),[n,f]=k(!1);let i,u,d;const R=()=>!!e.onSynthesize||h(),v=()=>n()?"Synthesizing...":a()?"Stop":"Read aloud";function S(){u&&(URL.revokeObjectURL(u),u=void 0)}function C(){!h()||!r.text||(window.speechSynthesis.cancel(),d=new SpeechSynthesisUtterance(r.text),d.onend=()=>t(!1),d.onerror=()=>t(!1),t(!0),window.speechSynthesis.speak(d))}async function j(){var s;if(!(!e.onSynthesize||!r.text)){f(!0);try{const c=await e.onSynthesize(r.text);(s=e.onSynthesized)==null||s.call(e,c),S(),u=URL.createObjectURL(c),i??(i=new Audio),i.src=u,i.onended=()=>t(!1),i.onerror=()=>t(!1),t(!0),await i.play()}catch{t(!1)}finally{f(!1)}}}function g(){e.onSynthesize?j():C()}function y(){e.onSynthesize?i&&(i.pause(),i.currentTime=0):h()&&window.speechSynthesis.cancel(),t(!1)}function U(){e.onSynthesize?i?.pause():h()&&window.speechSynthesis.pause()}function B(){e.onSynthesize?i?.play():h()&&window.speechSynthesis.resume()}function L(){a()?y():g()}x(z(a,s=>{var c;(c=e.onSpeakingChange)==null||c.call(e,s)},{defer:!0})),x(z(()=>r.text,s=>{e.autoplay&&s&&g()},{defer:!0})),(l=e.controllerRef)==null||l.call(e,{speak:g,pause:U,resume:B,stop:y}),q(()=>{y(),S()});const M=()=>P(),O=()=>V(),T=()=>W();return(()=>{var s=_();return D(s,o(N,{get content(){return v()},get children(){return o(I,{part:"button",variant:"ghost",size:"icon-sm",get"aria-label"(){return v()},get"aria-pressed"(){return a()},onClick:L,get disabled(){return r.disabled||!R()||n()},get class(){return b("relative z-10 rounded-full transition-all duration-300")},get children(){return[o(w,{get when(){return n()},get children(){return o(T,{})}}),o(w,{get when(){return m(()=>!n())()&&a()},get children(){return o(O,{})}}),o(w,{get when(){return m(()=>!n())()&&!a()},get children(){return o(M,{})}})]}})}})),E(()=>F(s,b("relative inline-flex items-center justify-center",r.class))),s})()}G("kai-voice-output",{text:"",autoplay:!1,synthesize:void 0,disabled:!1},(e,{dispatch:l,flag:r,expose:a})=>{let t;return a({speak:()=>t?.speak(),pause:()=>t?.pause(),resume:()=>t?.resume(),stop:()=>t?.stop()}),o($,{get text(){return e.text??""},get autoplay(){return r("autoplay")},get disabled(){return r("disabled")},get onSynthesize(){return e.synthesize?n=>e.synthesize(n):void 0},onSpeakingChange:n=>l("kai-speaking-change",{speaking:n}),onSynthesized:n=>l("kai-synthesized",{blob:n}),controllerRef:n=>t=n})});
1
+ import{s as $,g as z,j as x,x as b,h as q,i as D,c as a,S as w,m as R,a as F,b as G,t as y,f as H}from"../define-CGGX-7Vg.js";import{c as C}from"../cn-DN5AWfiS.js";import{B as I}from"../button-BH6rN0U-.js";import{T as J}from"../tooltip-05zI4hjs.js";var K=y('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 010 14.14M15.54 8.46a5 5 0 010 7.07">'),N=y('<svg width=14 height=14 viewBox="0 0 24 24"fill=currentColor><rect x=4 y=4 width=16 height=16 rx=2>'),P=y('<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 class=animate-spin><path d="M21 12a9 9 0 11-6.219-8.56">'),V=y("<div>");function p(){return typeof window<"u"&&"speechSynthesis"in window}function W(e){var c;const[i]=$(e,["text","disabled","class"]),[l,n]=z(!1),[t,v]=z(!1);let r,h,d;const E=()=>!!e.onSynthesize||p(),S=()=>t()?"Synthesizing...":l()?"Stop":"Read aloud";function k(){h&&(URL.revokeObjectURL(h),h=void 0)}function j(){!p()||!i.text||(window.speechSynthesis.cancel(),d=new SpeechSynthesisUtterance(i.text),d.onstart=()=>n(!0),d.onend=()=>n(!1),d.onerror=s=>{var u;n(!1);const o=s?.error??"unknown";o==="canceled"||o==="interrupted"||(u=e.onError)==null||u.call(e,{source:"synthesis",error:o,message:`Speech synthesis error: ${o}`})},window.speechSynthesis.speak(d))}async function U(){var s,u;if(!(!e.onSynthesize||!i.text)){v(!0);try{const o=await e.onSynthesize(i.text);(s=e.onSynthesized)==null||s.call(e,o),k(),h=URL.createObjectURL(o),r??(r=new Audio),r.src=h,r.onended=()=>n(!1),r.onerror=()=>{var m;n(!1),(m=e.onError)==null||m.call(e,{source:"synthesis",error:"playback-failed",message:"The synthesized audio failed to play"})},await r.play(),n(!0)}catch(o){n(!1),(u=e.onError)==null||u.call(e,{source:"synthesis",error:o instanceof Error?o.name:"unknown",message:o instanceof Error?o.message:String(o)})}finally{v(!1)}}}function g(){e.onSynthesize?U():j()}function f(){e.onSynthesize?r&&(r.pause(),r.currentTime=0):p()&&window.speechSynthesis.cancel(),n(!1)}function B(){e.onSynthesize?r?.pause():p()&&window.speechSynthesis.pause()}function L(){e.onSynthesize?r?.play():p()&&window.speechSynthesis.resume()}function M(){l()?f():g()}x(b(l,s=>{var u;(u=e.onSpeakingChange)==null||u.call(e,s)},{defer:!0})),x(b(()=>i.text,s=>{e.autoplay&&s&&g()},{defer:!0})),(c=e.controllerRef)==null||c.call(e,{speak:g,pause:B,resume:L,stop:f}),q(()=>{f(),k()});const T=()=>K(),O=()=>N(),A=()=>P();return(()=>{var s=V();return D(s,a(J,{get content(){return S()},get children(){return a(I,{part:"button",variant:"ghost",size:"icon-sm",get"aria-label"(){return S()},get"aria-pressed"(){return l()},onClick:M,get disabled(){return i.disabled||!E()||t()},get class(){return C("relative z-10 rounded-full transition-all duration-300")},get children(){return[a(w,{get when(){return t()},get children(){return a(A,{})}}),a(w,{get when(){return R(()=>!t())()&&l()},get children(){return a(O,{})}}),a(w,{get when(){return R(()=>!t())()&&!l()},get children(){return a(T,{})}})]}})}})),F(()=>G(s,C("relative inline-flex items-center justify-center",i.class))),s})()}H("kai-voice-output",{text:"",autoplay:!1,synthesize:void 0,disabled:!1},(e,{dispatch:c,flag:i,expose:l})=>{let n;return l({speak:()=>n?.speak(),pause:()=>n?.pause(),resume:()=>n?.resume(),stop:()=>n?.stop()}),a(W,{get text(){return e.text??""},get autoplay(){return i("autoplay")},get disabled(){return i("disabled")},get onSynthesize(){return e.synthesize?t=>e.synthesize(t):void 0},onSpeakingChange:t=>c("kai-speaking-change",{speaking:t}),onSynthesized:t=>c("kai-synthesized",{blob:t}),onError:t=>c("kai-voice-error",t),controllerRef:t=>n=t})});