@kitn.ai/ui 0.25.2 → 0.26.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 (409) hide show
  1. package/README.md +2 -2
  2. package/dist/components/attachment-types.d.ts +46 -1
  3. package/dist/components/attachments.d.ts +31 -0
  4. package/dist/components/audio-visualizer/fit-scale.d.ts +50 -0
  5. package/dist/components/audio-visualizer/index.d.ts +15 -1
  6. package/dist/components/audio-visualizer/variant-bar.d.ts +24 -1
  7. package/dist/components/chat-thread.d.ts +3 -41
  8. package/dist/components/code-block.d.ts +22 -0
  9. package/dist/components/conversation-item.d.ts +54 -1
  10. package/dist/components/conversation-list.d.ts +65 -0
  11. package/dist/components/form.d.ts +42 -0
  12. package/dist/components/message.d.ts +7 -0
  13. package/dist/components/toast.d.ts +2 -1
  14. package/dist/components/voice-input.d.ts +8 -0
  15. package/dist/components/voice-output.d.ts +12 -1
  16. package/dist/components/workspace-shell.d.ts +87 -0
  17. package/dist/{create-tween-B5Y4Im8G.js → create-tween-BFT6c-Y8.js} +1 -1
  18. package/dist/{create-tween-4z1XYLkR.js → create-tween-CJNlzoaO.js} +1 -1
  19. package/dist/{create-tween-CUzOlaMS.js → create-tween-CQED4T0g.js} +1 -1
  20. package/dist/custom-elements.json +2931 -2572
  21. package/dist/diagnostics/hook.d.ts +81 -0
  22. package/dist/diagnostics/index.d.ts +7 -0
  23. package/dist/diagnostics/report-request.d.ts +61 -0
  24. package/dist/diagnostics.d.ts +5 -0
  25. package/dist/diagnostics.js +209 -0
  26. package/dist/elements/agent-card.js +1 -1
  27. package/dist/elements/artifact.js +1 -1
  28. package/dist/elements/attachments.js +1 -1
  29. package/dist/elements/audio-visualizer.js +1 -1
  30. package/dist/elements/autoloader.js +1 -1
  31. package/dist/elements/avatar.js +1 -1
  32. package/dist/elements/badge.js +1 -1
  33. package/dist/elements/button.js +1 -1
  34. package/dist/elements/card.js +1 -1
  35. package/dist/elements/cards.js +1 -1
  36. package/dist/elements/chain-of-thought.js +1 -1
  37. package/dist/elements/chat-scope-picker.js +1 -1
  38. package/dist/elements/chat-workspace.js +1 -1
  39. package/dist/elements/chat.js +1 -1
  40. package/dist/elements/checkpoint.js +1 -1
  41. package/dist/elements/choice.js +1 -1
  42. package/dist/elements/chunks/{Icon-b5A8hlHs.js → Icon--Y8vsFal.js} +1 -1
  43. package/dist/elements/chunks/action-icons-D9u3OzYW.js +1 -0
  44. package/dist/elements/chunks/arrow-left-CVh1TeN7.js +1 -0
  45. package/dist/elements/chunks/{artifact-BSuPYFHY.js → artifact-BkYcfIlZ.js} +1 -1
  46. package/dist/elements/chunks/attachments-DwfNlubq.js +1 -0
  47. package/dist/elements/chunks/audio-visualizer-D7lB6mvR.js +1 -0
  48. package/dist/elements/chunks/{badge-TIMiJFKc.js → badge-Q0-Cmwzz.js} +1 -1
  49. package/dist/elements/chunks/{button-B9okqG73.js → button-flUbeufF.js} +1 -1
  50. package/dist/elements/chunks/{card-renderer-CSoTL_e1.js → card-renderer-3Dyl-FpN.js} +1 -1
  51. package/dist/elements/chunks/check-B5kBPKeo.js +1 -0
  52. package/dist/elements/chunks/chevron-down-DZ1GS39h.js +1 -0
  53. package/dist/elements/chunks/chevron-right-CvP7OUd2.js +1 -0
  54. package/dist/elements/chunks/{choice-card-CGMc3kek.js → choice-card-D4QUIOWZ.js} +1 -1
  55. package/dist/elements/chunks/circle-CDf9g6MQ.js +1 -0
  56. package/dist/elements/chunks/circle-check-CA47Nqbz.js +1 -0
  57. package/dist/elements/chunks/{circle-x-mhH7pOK2.js → circle-x-CJ_HVbC8.js} +1 -1
  58. package/dist/elements/chunks/code-block-BdLiTitd.js +1 -0
  59. package/dist/elements/chunks/collapsible-BzbXpPzr.js +1 -0
  60. package/dist/elements/chunks/{composer-CZZmtYOT.js → composer-Byve-n8K.js} +2 -2
  61. package/dist/elements/chunks/{confirm-card-BWjf2-xo.js → confirm-card-B0flE3MN.js} +1 -1
  62. package/dist/elements/chunks/context-VLIL3sJ-.js +1 -0
  63. package/dist/elements/chunks/controllable-DTwTIlwp.js +1 -0
  64. package/dist/elements/chunks/conversation-item-BDztezOG.js +1 -0
  65. package/dist/elements/chunks/copy-Nf-kqxXH.js +1 -0
  66. package/dist/elements/chunks/{create-tween-CUrM6D_o.js → create-tween-c4Z8TDYz.js} +2 -2
  67. package/dist/elements/chunks/default-input-C2iLFq0b.js +1 -0
  68. package/dist/elements/chunks/define-wjHR1MkU.js +1 -0
  69. package/dist/elements/chunks/disclosure-CcNbyLy0.js +1 -0
  70. package/dist/elements/chunks/{download-DnCyWFJE.js → download-C4V7tBdb.js} +1 -1
  71. package/dist/elements/chunks/dropdown-BgWTthUx.js +1 -0
  72. package/dist/elements/chunks/{ellipsis-CVxqfsDZ.js → ellipsis-7gU33mL2.js} +1 -1
  73. package/dist/elements/chunks/embed-D3KewsIJ.js +1 -0
  74. package/dist/elements/chunks/{external-link-DG2sRdQL.js → external-link-CSOEsNlx.js} +1 -1
  75. package/dist/elements/chunks/{file-text-D0J9F6M7.js → file-text-D1G8khle.js} +1 -1
  76. package/dist/elements/chunks/{file-tree-yGWNK0Js.js → file-tree-zvB2i7P9.js} +1 -1
  77. package/dist/elements/chunks/{folder-NV1pi_ud.js → folder-WW2LGLid.js} +1 -1
  78. package/dist/elements/chunks/form-CQirdC4W.js +1 -0
  79. package/dist/elements/chunks/hover-card-CJJkfHTK.js +1 -0
  80. package/dist/elements/chunks/icon-Cfgmf4fa.js +1 -0
  81. package/dist/elements/chunks/{info-C8r5Q6cc.js → info-DX3YMOt6.js} +1 -1
  82. package/dist/elements/chunks/input-BtW9U6Sq.js +1 -0
  83. package/dist/elements/chunks/{kbd-OGJDUT-O.js → kbd-LGXwuT_V.js} +1 -1
  84. package/dist/elements/chunks/{link-BdsfLB7b.js → link-2My69BqT.js} +1 -1
  85. package/dist/elements/chunks/{link-preview-Cf5KOP-i.js → link-preview-OQ9IEq0f.js} +1 -1
  86. package/dist/elements/chunks/{loader-B5QzK_8_.js → loader-iOxc_Tu-.js} +1 -1
  87. package/dist/elements/chunks/{markdown-DbozyYqa.js → markdown-DgBFaGAz.js} +1 -1
  88. package/dist/elements/chunks/{message-DtXKPqiR.js → message-VMZohrXx.js} +1 -1
  89. package/dist/elements/chunks/message-circle-CpXMM-_n.js +1 -0
  90. package/dist/elements/chunks/message-square-DxcWtETQ.js +1 -0
  91. package/dist/elements/chunks/message-tZmV2A3p.js +1 -0
  92. package/dist/elements/chunks/{minimize-2-SegJ_oku.js → minimize-2-DPIUKTrT.js} +1 -1
  93. package/dist/elements/chunks/{model-switcher-D7JrFFHp.js → model-switcher-DsT8tFB0.js} +1 -1
  94. package/dist/elements/chunks/{overlay-CV7z2YuX.js → overlay-DuiwdXjm.js} +1 -1
  95. package/dist/elements/chunks/{paperclip-Bg0ITU3b.js → paperclip-CRZVp4z_.js} +1 -1
  96. package/dist/elements/chunks/{progress-bar-D1_rzt6N.js → progress-bar-DNy66e_E.js} +1 -1
  97. package/dist/elements/chunks/{prompt-suggestion-D5Sm8xF1.js → prompt-suggestion-Bn64Nl7L.js} +1 -1
  98. package/dist/elements/chunks/reasoning-Emn9N4-T.js +1 -0
  99. package/dist/elements/chunks/{resizable-Dpzjlvp4.js → resizable-D181b4fM.js} +1 -1
  100. package/dist/elements/chunks/{rotate-cw-DzVDJOA1.js → rotate-cw-CPWe37D9.js} +1 -1
  101. package/dist/elements/chunks/{scroll-area-93A1bbeG.js → scroll-area-ClZkZxIk.js} +1 -1
  102. package/dist/elements/chunks/scroll-button-DPE-t3x_.js +1 -0
  103. package/dist/elements/chunks/{separator-DH2r_ZSZ.js → separator-CeJHQqLW.js} +1 -1
  104. package/dist/elements/chunks/{settings-BFMOd6yB.js → settings-CqaHgJF9.js} +1 -1
  105. package/dist/elements/chunks/{settings-group-B3VZKIcz.js → settings-group-CjqjLCOn.js} +1 -1
  106. package/dist/elements/chunks/share-CyfnNEqp.js +1 -0
  107. package/dist/elements/chunks/{skeleton-N8BuWYmf.js → skeleton-D8akBnKS.js} +1 -1
  108. package/dist/elements/chunks/slots-DaNjX0rc.js +1 -0
  109. package/dist/elements/chunks/{source-w9V0NnBn.js → source-UWCvmVak.js} +1 -1
  110. package/dist/elements/chunks/{star-DHvACxtm.js → star-DoHFAikQ.js} +1 -1
  111. package/dist/elements/chunks/store-Cjq0qwYN.js +1 -0
  112. package/dist/elements/chunks/{tasks-card-lPxoodlA.js → tasks-card-CmZ5xh6v.js} +1 -1
  113. package/dist/elements/chunks/{text-shimmer-BY_rI3s5.js → text-shimmer-DYn09zrz.js} +1 -1
  114. package/dist/elements/chunks/textarea-skiGHURM.js +1 -0
  115. package/dist/elements/chunks/{thumbs-up-DQe0hvkZ.js → thumbs-up-DX2Ijk3H.js} +1 -1
  116. package/dist/elements/chunks/{toast-store-VUZZBhzH.js → toast-store-CFnQpThX.js} +1 -1
  117. package/dist/elements/chunks/{tool-C1YtxwPu.js → tool-DKQ2D1DP.js} +1 -1
  118. package/dist/elements/chunks/{tooltip-BqwnFWhn.js → tooltip-B0G99y8w.js} +1 -1
  119. package/dist/elements/chunks/{triangle-alert-B6or7F5u.js → triangle-alert-F9cyUEyy.js} +1 -1
  120. package/dist/elements/chunks/{use-card-resolution-DJg32jGH.js → use-card-resolution-DoA2f_EU.js} +1 -1
  121. package/dist/elements/chunks/{variant-aurora-QXTZPyST.js → variant-aurora-qt6Zct8M.js} +2 -2
  122. package/dist/elements/chunks/variant-custom-tJp22_BQ.js +1 -0
  123. package/dist/{variant-wave-BwzrHD1s.js → elements/chunks/variant-wave-CaQ5ti39.js} +2 -2
  124. package/dist/elements/chunks/x-B6UnOiLw.js +1 -0
  125. package/dist/elements/coachmark.js +1 -1
  126. package/dist/elements/code-block.js +1 -1
  127. package/dist/elements/command.js +1 -1
  128. package/dist/elements/compare.js +1 -1
  129. package/dist/elements/composer.js +1 -1
  130. package/dist/elements/confirm-card.js +1 -1
  131. package/dist/elements/context-meter.js +1 -1
  132. package/dist/elements/conversation-item.d.ts +1 -0
  133. package/dist/elements/conversation-item.js +1 -0
  134. package/dist/elements/conversation-list.js +1 -1
  135. package/dist/elements/default-input.d.ts +3 -3
  136. package/dist/elements/define.d.ts +27 -0
  137. package/dist/elements/diagnostic-events.d.ts +74 -0
  138. package/dist/elements/dialog.js +1 -1
  139. package/dist/elements/dock.d.ts +1 -0
  140. package/dist/elements/dock.js +149 -0
  141. package/dist/elements/dropdown.d.ts +1 -0
  142. package/dist/elements/dropdown.js +1 -0
  143. package/dist/elements/editable-label.js +1 -1
  144. package/dist/elements/element-diagnostics.d.ts +81 -0
  145. package/dist/elements/embed.js +1 -1
  146. package/dist/elements/empty.js +1 -1
  147. package/dist/elements/feedback-bar.js +1 -1
  148. package/dist/elements/file-tree.js +1 -1
  149. package/dist/elements/file-upload.js +1 -1
  150. package/dist/elements/form.js +1 -1
  151. package/dist/elements/hover-card.js +1 -1
  152. package/dist/elements/icon.js +1 -1
  153. package/dist/elements/image.js +1 -1
  154. package/dist/elements/input.js +1 -1
  155. package/dist/elements/kbd.js +1 -1
  156. package/dist/elements/link-preview.js +1 -1
  157. package/dist/elements/loader.js +1 -1
  158. package/dist/elements/markdown.js +1 -1
  159. package/dist/elements/menu.js +1 -1
  160. package/dist/elements/message-skills.js +1 -1
  161. package/dist/elements/message.js +1 -1
  162. package/dist/elements/model-switcher.js +1 -1
  163. package/dist/elements/nav.js +1 -1
  164. package/dist/elements/notice.js +1 -1
  165. package/dist/elements/pane-group.js +1 -1
  166. package/dist/elements/pane.js +1 -1
  167. package/dist/elements/popover.js +1 -1
  168. package/dist/elements/progress-bar.js +1 -1
  169. package/dist/elements/prompt-dock.js +1 -1
  170. package/dist/elements/prompt-input.js +1 -1
  171. package/dist/elements/prompt-suggestions.js +1 -1
  172. package/dist/elements/reasoning.js +1 -1
  173. package/dist/elements/register.d.ts +2 -0
  174. package/dist/elements/remote.js +1 -1
  175. package/dist/elements/resizable.js +1 -1
  176. package/dist/elements/response-stream.js +3 -3
  177. package/dist/elements/screen.js +1 -1
  178. package/dist/elements/scroll-area.js +1 -1
  179. package/dist/elements/scroll-button.js +1 -1
  180. package/dist/elements/search.js +1 -1
  181. package/dist/elements/segmented.js +1 -1
  182. package/dist/elements/separator.js +1 -1
  183. package/dist/elements/setting-item.js +1 -1
  184. package/dist/elements/settings-group.js +1 -1
  185. package/dist/elements/skeleton.js +1 -1
  186. package/dist/elements/slots.d.ts +35 -3
  187. package/dist/elements/source.js +1 -1
  188. package/dist/elements/status.js +1 -1
  189. package/dist/elements/switch.js +1 -1
  190. package/dist/elements/tabs.js +1 -1
  191. package/dist/elements/tasks.js +1 -1
  192. package/dist/elements/text-shimmer.js +1 -1
  193. package/dist/elements/thinking-bar.js +1 -1
  194. package/dist/elements/thread.js +1 -1
  195. package/dist/elements/toast.js +1 -1
  196. package/dist/elements/tool.js +1 -1
  197. package/dist/elements/tooltip.js +1 -1
  198. package/dist/elements/voice-input.js +1 -1
  199. package/dist/elements/voice-output.js +1 -1
  200. package/dist/elements.d.ts +232 -148
  201. package/dist/index.d.ts +2 -0
  202. package/dist/index.js +5456 -4931
  203. package/dist/index.server.js +4142 -3669
  204. package/dist/kai-provider.es.js +40 -40
  205. package/dist/kai.es.js +1 -1
  206. package/dist/llms/llms-full.txt +184 -69
  207. package/dist/llms/llms.txt +3 -3
  208. package/dist/mcp.es.js +2669 -546
  209. package/dist/primitives/use-resize-observer.d.ts +23 -0
  210. package/dist/primitives/use-speech-recognition.d.ts +8 -0
  211. package/dist/primitives/use-text-stream.d.ts +5 -0
  212. package/dist/react/index.d.ts +115 -266
  213. package/dist/react.js +247 -221
  214. package/dist/register-impl-DpE7icIb.js +293 -0
  215. package/dist/schemas/index.d.ts +1 -1
  216. package/dist/schemas/tool-defs.d.ts +35 -0
  217. package/dist/schemas.js +403 -310
  218. package/dist/{solid-BMuDmFo_.js → solid-BtdqNZI7.js} +8435 -7394
  219. package/dist/{solid-CGYNdLRR.js → solid-CnavwBye.js} +5987 -5035
  220. package/dist/solid.d.ts +5 -0
  221. package/dist/solid.js +210 -203
  222. package/dist/solid.server.js +210 -203
  223. package/dist/state/index.d.ts +4 -0
  224. package/dist/state/persistence.d.ts +51 -0
  225. package/dist/state/stream.d.ts +50 -0
  226. package/dist/state/threads.d.ts +71 -0
  227. package/dist/state.js +269 -169
  228. package/dist/types.d.ts +4 -2
  229. package/dist/ui/dock.d.ts +109 -0
  230. package/dist/ui/hover-card.d.ts +44 -0
  231. package/dist/{variant-aurora-DwSOfraQ.js → variant-aurora-B8II3-I1.js} +27 -27
  232. package/dist/{variant-aurora-wKvAQ5wp.js → variant-aurora-CMNWOSJR.js} +28 -28
  233. package/dist/{variant-aurora-XEkPT0_z.js → variant-aurora-CcuDMWwQ.js} +2 -2
  234. package/dist/{variant-custom-eFIg2XWQ.js → variant-custom-BdvYC7af.js} +40 -40
  235. package/dist/{variant-custom-BhS9wIpU.js → variant-custom-C714mqKl.js} +65 -65
  236. package/dist/variant-custom-L16JLLZy.js +1 -0
  237. package/dist/{elements/chunks/variant-wave-DDCwhLas.js → variant-wave-2S4La2Ka.js} +2 -2
  238. package/dist/{variant-wave-CbVsmgwT.js → variant-wave-D7ruiA1W.js} +25 -25
  239. package/dist/{variant-wave-CUWGx9Bn.js → variant-wave-ecwykeyL.js} +21 -21
  240. package/dist/wire/chunk.d.ts +47 -0
  241. package/dist/wire/diagnostics.d.ts +575 -0
  242. package/dist/wire/encode-probe.d.ts +70 -0
  243. package/dist/wire/encode.d.ts +24 -0
  244. package/dist/wire/index.d.ts +2 -0
  245. package/dist/wire/sse.d.ts +10 -2
  246. package/dist/wire.js +917 -480
  247. package/frameworks/react/index.tsx +132 -93
  248. package/llms-full.txt +184 -69
  249. package/llms.txt +3 -3
  250. package/package.json +26 -6
  251. package/src/agent-tooling/archetypes.ts +41 -9
  252. package/src/agent-tooling/catalog/README.md +676 -0
  253. package/src/agent-tooling/catalog/catalog-types.ts +231 -0
  254. package/src/agent-tooling/catalog/fabrications.ts +96 -0
  255. package/src/agent-tooling/catalog/invariants.ts +284 -0
  256. package/src/agent-tooling/catalog/labs-titles.ts +114 -0
  257. package/src/agent-tooling/catalog/scenarios.ts +87 -0
  258. package/src/agent-tooling/catalog/surfaces.ts +275 -0
  259. package/src/agent-tooling/integrations/anthropic.ts +7 -1
  260. package/src/agent-tooling/integrations/cloudflare.ts +43 -2
  261. package/src/agent-tooling/integrations/langgraph.ts +7 -1
  262. package/src/agent-tooling/integrations/mastra.ts +7 -1
  263. package/src/agent-tooling/integrations/mock.ts +92 -17
  264. package/src/agent-tooling/integrations/ollama.ts +7 -1
  265. package/src/agent-tooling/integrations/openai.ts +7 -1
  266. package/src/agent-tooling/integrations/openrouter.ts +7 -1
  267. package/src/agent-tooling/integrations/pi.ts +56 -1
  268. package/src/agent-tooling/integrations/vercel-ai-sdk.ts +7 -1
  269. package/src/agent-tooling/mcp/css-raw.d.ts +12 -0
  270. package/src/agent-tooling/mcp/manifest.ts +100 -1
  271. package/src/agent-tooling/mcp/server.ts +61 -5
  272. package/src/agent-tooling/mcp/tools/reference.ts +440 -4
  273. package/src/agent-tooling/mcp/tools/scaffold.ts +1834 -307
  274. package/src/agent-tooling/mcp/tools/theme.ts +146 -30
  275. package/src/agent-tooling/mcp/validate-args.ts +141 -0
  276. package/src/agent-tooling/registry.ts +19 -7
  277. package/src/agent-tooling/route-emit.ts +26 -2
  278. package/src/components/attachment-types.ts +47 -1
  279. package/src/components/attachments.tsx +169 -22
  280. package/src/components/audio-visualizer/fit-scale.ts +112 -0
  281. package/src/components/audio-visualizer/index.tsx +80 -3
  282. package/src/components/audio-visualizer/variant-aurora.tsx +10 -4
  283. package/src/components/audio-visualizer/variant-bar.tsx +38 -6
  284. package/src/components/audio-visualizer/variant-custom.tsx +8 -2
  285. package/src/components/audio-visualizer/variant-grid.tsx +16 -11
  286. package/src/components/audio-visualizer/variant-radial.tsx +15 -10
  287. package/src/components/audio-visualizer/variant-wave.tsx +7 -2
  288. package/src/components/chat-container.tsx +4 -1
  289. package/src/components/chat-thread.tsx +36 -7
  290. package/src/components/code-block.tsx +79 -3
  291. package/src/components/composer.tsx +8 -1
  292. package/src/components/conversation-item.tsx +114 -4
  293. package/src/components/conversation-list.tsx +212 -12
  294. package/src/components/embed.tsx +4 -0
  295. package/src/components/form.tsx +41 -14
  296. package/src/components/message.tsx +75 -5
  297. package/src/components/response-stream.tsx +13 -7
  298. package/src/components/screen.tsx +5 -0
  299. package/src/components/scroll-button.tsx +7 -0
  300. package/src/components/toast.tsx +11 -5
  301. package/src/components/voice-input.tsx +35 -3
  302. package/src/components/voice-output.tsx +46 -6
  303. package/src/components/workspace-shell.tsx +285 -0
  304. package/src/diagnostics/hook.ts +352 -0
  305. package/src/diagnostics/index.ts +82 -0
  306. package/src/diagnostics/report-request.ts +296 -0
  307. package/src/elements/attachments.tsx +6 -7
  308. package/src/elements/audio-visualizer.tsx +48 -4
  309. package/src/elements/chat-workspace.tsx +159 -287
  310. package/src/elements/chat.tsx +12 -9
  311. package/src/elements/code-block.tsx +19 -1
  312. package/src/elements/command.tsx +4 -1
  313. package/src/elements/compiled.css +1 -1
  314. package/src/elements/conversation-item.tsx +80 -0
  315. package/src/elements/conversation-list.tsx +60 -11
  316. package/src/elements/default-input.tsx +5 -5
  317. package/src/elements/define.tsx +168 -8
  318. package/src/elements/diagnostic-events.ts +114 -0
  319. package/src/elements/dialog.tsx +47 -0
  320. package/src/elements/disclosure.ts +34 -12
  321. package/src/elements/dock.tsx +204 -0
  322. package/src/elements/dropdown.tsx +123 -0
  323. package/src/elements/element-diagnostics.ts +392 -0
  324. package/src/elements/element-manifest.json +12 -0
  325. package/src/elements/element-meta.json +672 -439
  326. package/src/elements/element-nonscalar.json +170 -0
  327. package/src/elements/element-types.d.ts +232 -148
  328. package/src/elements/menu.tsx +13 -0
  329. package/src/elements/prompt-dock.tsx +2 -1
  330. package/src/elements/prompt-input.tsx +8 -8
  331. package/src/elements/register-impl.ts +46 -0
  332. package/src/elements/register.ts +28 -0
  333. package/src/elements/resizable.tsx +52 -25
  334. package/src/elements/scroll-button.tsx +5 -0
  335. package/src/elements/slots.ts +107 -12
  336. package/src/elements/styles.css +30 -6
  337. package/src/elements/thinking-bar.tsx +16 -7
  338. package/src/elements/toast.tsx +3 -0
  339. package/src/elements/tool.tsx +26 -5
  340. package/src/elements/voice-input.tsx +11 -2
  341. package/src/elements/voice-output.tsx +16 -3
  342. package/src/index.ts +2 -0
  343. package/src/primitives/use-resize-observer.ts +33 -0
  344. package/src/primitives/use-speech-recognition.ts +12 -1
  345. package/src/primitives/use-stick-to-bottom.ts +34 -2
  346. package/src/primitives/use-text-stream.ts +33 -2
  347. package/src/remote/provider-runtime.ts +6 -3
  348. package/src/schemas/index.ts +1 -0
  349. package/src/schemas/tool-defs.ts +297 -6
  350. package/src/solid.ts +5 -0
  351. package/src/state/index.ts +12 -0
  352. package/src/state/persistence.ts +180 -0
  353. package/src/state/stream.ts +71 -4
  354. package/src/state/threads.ts +142 -0
  355. package/src/types.ts +4 -2
  356. package/src/ui/dialog.tsx +6 -0
  357. package/src/ui/dock.tsx +445 -0
  358. package/src/ui/dropdown.tsx +67 -23
  359. package/src/ui/hover-card.tsx +156 -6
  360. package/src/ui/input.tsx +29 -10
  361. package/src/ui/resizable.tsx +11 -0
  362. package/src/wire/chunk.ts +47 -0
  363. package/src/wire/consume.ts +185 -26
  364. package/src/wire/diagnostics.ts +727 -0
  365. package/src/wire/encode-probe.ts +214 -0
  366. package/src/wire/encode.ts +267 -14
  367. package/src/wire/formats/anthropic.ts +8 -1
  368. package/src/wire/formats/openai.ts +5 -0
  369. package/src/wire/index.ts +22 -0
  370. package/src/wire/read.ts +250 -6
  371. package/src/wire/sse.ts +16 -3
  372. package/dist/elements/chunks/action-icons-DW9muWrY.js +0 -1
  373. package/dist/elements/chunks/arrow-left-iJVnQmxA.js +0 -1
  374. package/dist/elements/chunks/attachments-CL6TaqIb.js +0 -1
  375. package/dist/elements/chunks/audio-visualizer-BuUqQmaO.js +0 -1
  376. package/dist/elements/chunks/chat-thread-DxoKaStk.js +0 -1
  377. package/dist/elements/chunks/check-MdLzbxrm.js +0 -1
  378. package/dist/elements/chunks/chevron-down-MK7IzDqe.js +0 -1
  379. package/dist/elements/chunks/chevron-right-C5jXhmtV.js +0 -1
  380. package/dist/elements/chunks/circle-BG7VkPep.js +0 -1
  381. package/dist/elements/chunks/circle-check-GqvO2UBs.js +0 -1
  382. package/dist/elements/chunks/code-block-ClhQO9RW.js +0 -1
  383. package/dist/elements/chunks/collapsible-DBcBkFPh.js +0 -1
  384. package/dist/elements/chunks/context-hKjNqiyQ.js +0 -1
  385. package/dist/elements/chunks/conversation-list-CsGJjSKG.js +0 -1
  386. package/dist/elements/chunks/default-input-B1Mem5wu.js +0 -1
  387. package/dist/elements/chunks/define-B_tXMYRm.js +0 -1
  388. package/dist/elements/chunks/disclosure-DAoYOKew.js +0 -1
  389. package/dist/elements/chunks/dropdown-CmNna5lT.js +0 -1
  390. package/dist/elements/chunks/embed-CjAD2jSi.js +0 -1
  391. package/dist/elements/chunks/form-Cp8Y00Wn.js +0 -1
  392. package/dist/elements/chunks/hover-card-6KtXpLwT.js +0 -1
  393. package/dist/elements/chunks/icon-97R8SR2p.js +0 -1
  394. package/dist/elements/chunks/input-DrseEjhp.js +0 -1
  395. package/dist/elements/chunks/message-CE4k-qaj.js +0 -1
  396. package/dist/elements/chunks/message-square-C9ovmtOo.js +0 -1
  397. package/dist/elements/chunks/reasoning-BrxQfpfI.js +0 -1
  398. package/dist/elements/chunks/scroll-button-CrTo7wm4.js +0 -1
  399. package/dist/elements/chunks/share-DgNbkJKY.js +0 -1
  400. package/dist/elements/chunks/slots-CIw9RlAe.js +0 -1
  401. package/dist/elements/chunks/store-HIPGhNz9.js +0 -1
  402. package/dist/elements/chunks/textarea-DPfuhswM.js +0 -1
  403. package/dist/elements/chunks/variant-custom-D5ZlmziF.js +0 -1
  404. package/dist/elements/chunks/video-Bb86fVYI.js +0 -1
  405. package/dist/elements/chunks/x-BOhjBeOd.js +0 -1
  406. package/dist/primitives/card-validate-generator.testlib.d.ts +0 -20
  407. package/dist/register-impl-DGmGzrEM.js +0 -145
  408. package/dist/variant-custom-MkTNTycd.js +0 -1
  409. package/src/primitives/card-validate-generator.testlib.ts +0 -38
@@ -1,9 +1,9 @@
1
- import { createComponent as d, insert as A, effect as m, setAttribute as c, className as y, style as b, template as C } from "solid-js/web";
2
- import { createEffect as g, createMemo as E, Show as x } from "solid-js";
3
- import { c as S, D as N, S as k, h as w } from "./create-tween-4z1XYLkR.js";
4
- import { s as M, C as T } from "./solid-BMuDmFo_.js";
5
- var h = /* @__PURE__ */ C("<div>");
6
- const O = {
1
+ import { createComponent as m, insert as C, effect as c, setAttribute as y, className as b, style as h, template as E } from "solid-js/web";
2
+ import { createEffect as x, createMemo as N, Show as S } from "solid-js";
3
+ import { c as z, D as k, S as w, h as M } from "./create-tween-CJNlzoaO.js";
4
+ import { s as R, a as T, C as O } from "./solid-BtdqNZI7.js";
5
+ var g = /* @__PURE__ */ E("<div>");
6
+ const $ = {
7
7
  "1f": !0,
8
8
  "1i": !0,
9
9
  "1fv": !0,
@@ -15,7 +15,7 @@ const O = {
15
15
  Matrix2fv: !0,
16
16
  Matrix3fv: !0,
17
17
  Matrix4fv: !0
18
- }, R = /* @__PURE__ */ new Set(["1f", "1i"]), $ = {
18
+ }, I = /* @__PURE__ */ new Set(["1f", "1i"]), F = {
19
19
  "2f": 2,
20
20
  "3f": 3,
21
21
  "4f": 4,
@@ -23,24 +23,24 @@ const O = {
23
23
  Matrix3fv: 9,
24
24
  Matrix4fv: 16
25
25
  };
26
- function I(e, t) {
26
+ function U(e, t) {
27
27
  if (t == null || typeof t != "object")
28
28
  return `uniform "${e}" is not a valid declaration (expected an object with "type" and "value").`;
29
- if (O[t.type] !== !0)
29
+ if ($[t.type] !== !0)
30
30
  return `uniform "${e}" has an unrecognized type "${String(t.type)}".`;
31
- if (R.has(t.type))
31
+ if (I.has(t.type))
32
32
  return typeof t.value != "number" || !Number.isFinite(t.value) ? `uniform "${e}" is declared "${t.type}" (a number) but its value is not a finite number.` : void 0;
33
33
  if (!Array.isArray(t.value) || t.value.some((u) => typeof u != "number" || !Number.isFinite(u)))
34
34
  return `uniform "${e}" is declared "${t.type}" (an array) but its value is not an array of finite numbers.`;
35
- const o = $[t.type];
35
+ const o = F[t.type];
36
36
  if (o !== void 0 && t.value.length !== o)
37
37
  return `uniform "${e}" is declared "${t.type}", which takes exactly ${o} numbers, but its value has ${t.value.length}.`;
38
38
  }
39
- function F(e, t) {
39
+ function D(e, t) {
40
40
  const o = e.bands.length ? e.bands : [0], u = {
41
41
  uColor: {
42
42
  type: "3fv",
43
- value: w(e.color)
43
+ value: M(e.color)
44
44
  },
45
45
  uIntensity: {
46
46
  type: "1f",
@@ -65,116 +65,116 @@ function F(e, t) {
65
65
  }
66
66
  };
67
67
  if (!t) return u;
68
- for (const [l, f] of Object.entries(t)) {
69
- const r = I(l, f);
70
- if (r) throw new Error(r);
68
+ for (const [v, f] of Object.entries(t)) {
69
+ const l = U(v, f);
70
+ if (l) throw new Error(l);
71
71
  }
72
72
  return {
73
73
  ...u,
74
74
  ...t
75
75
  };
76
76
  }
77
- function H(e) {
78
- const t = S(0.3), o = S(1);
79
- g(() => {
80
- const r = M(e.state);
81
- if (e.state === "speaking")
77
+ function P(e) {
78
+ const t = z(0.3), o = z(1), u = () => T(e.state, e.listeningAmplitude);
79
+ x(() => {
80
+ const a = R(u());
81
+ if (u() === "speaking")
82
82
  t.to(0.3 + 0.7 * e.volume, {
83
83
  duration: 0
84
84
  });
85
85
  else {
86
- const a = e.frozen ? {
86
+ const r = e.frozen ? {
87
87
  duration: 0
88
88
  } : {
89
89
  duration: 0.5,
90
90
  ease: "easeOut"
91
91
  };
92
- t.to(Array.isArray(r.intensity) && e.frozen ? r.intensity[0] : r.intensity, a);
92
+ t.to(Array.isArray(a.intensity) && e.frozen ? a.intensity[0] : a.intensity, r);
93
93
  }
94
- o.to(e.frozen ? 0 : r.speed, {
94
+ o.to(e.frozen ? 0 : a.speed, {
95
95
  duration: 0
96
96
  });
97
97
  });
98
- const u = E(() => {
99
- var r;
98
+ const v = N(() => {
99
+ var a;
100
100
  try {
101
101
  return {
102
- uniforms: F({
103
- color: e.color ?? N,
102
+ uniforms: D({
103
+ color: e.color ?? k,
104
104
  intensity: t.value(),
105
105
  speed: o.value(),
106
106
  complexity: e.complexity ?? 0.5,
107
107
  volume: e.volume,
108
108
  bands: e.bands
109
- }, (r = e.shader) == null ? void 0 : r.uniforms)
109
+ }, (a = e.shader) == null ? void 0 : a.uniforms)
110
110
  };
111
- } catch (a) {
111
+ } catch (r) {
112
112
  return {
113
- error: a instanceof Error ? a.message : String(a)
113
+ error: r instanceof Error ? r.message : String(r)
114
114
  };
115
115
  }
116
116
  });
117
- let l = !1;
118
- g(() => {
117
+ let f = !1;
118
+ x(() => {
119
119
  const {
120
- error: r
121
- } = u();
122
- if (!r) {
123
- l = !1;
120
+ error: a
121
+ } = v();
122
+ if (!a) {
123
+ f = !1;
124
124
  return;
125
125
  }
126
- l || (l = !0, console.error(`<kai-audio-visualizer variant="custom">: ${r}`), e.onUnavailable());
126
+ f || (f = !0, console.error(`<kai-audio-visualizer variant="custom">: ${a}`), e.onUnavailable());
127
127
  });
128
- const f = () => ({
129
- height: `${T[e.size]}px`,
128
+ const l = () => ({
129
+ height: `${O[e.size]}px`,
130
130
  "aspect-ratio": "1"
131
131
  });
132
- return d(x, {
132
+ return m(S, {
133
133
  get when() {
134
- var r;
135
- return (r = e.shader) == null ? void 0 : r.fragment;
134
+ var a;
135
+ return (a = e.shader) == null ? void 0 : a.fragment;
136
136
  },
137
137
  get fallback() {
138
138
  return (() => {
139
- var r = h();
140
- return m((a) => {
141
- var i = e.state, n = e.class, s = f();
142
- return i !== a.e && c(r, "data-kai-state", a.e = i), n !== a.t && y(r, a.t = n), a.a = b(r, s, a.a), a;
139
+ var a = g();
140
+ return c((r) => {
141
+ var i = e.state, n = e.class, s = l();
142
+ return i !== r.e && y(a, "data-kai-state", r.e = i), n !== r.t && b(a, r.t = n), r.a = h(a, s, r.a), r;
143
143
  }, {
144
144
  e: void 0,
145
145
  t: void 0,
146
146
  a: void 0
147
- }), r;
147
+ }), a;
148
148
  })();
149
149
  },
150
- children: (r) => d(x, {
150
+ children: (a) => m(S, {
151
151
  get when() {
152
- return u().uniforms;
152
+ return v().uniforms;
153
153
  },
154
154
  get fallback() {
155
155
  return (() => {
156
- var a = h();
157
- return m((i) => {
158
- var n = e.state, s = e.class, v = f();
159
- return n !== i.e && c(a, "data-kai-state", i.e = n), s !== i.t && y(a, i.t = s), i.a = b(a, v, i.a), i;
156
+ var r = g();
157
+ return c((i) => {
158
+ var n = e.state, s = e.class, d = l();
159
+ return n !== i.e && y(r, "data-kai-state", i.e = n), s !== i.t && b(r, i.t = s), i.a = h(r, d, i.a), i;
160
160
  }, {
161
161
  e: void 0,
162
162
  t: void 0,
163
163
  a: void 0
164
- }), a;
164
+ }), r;
165
165
  })();
166
166
  },
167
- children: (a) => (() => {
168
- var i = h();
169
- return A(i, d(k, {
167
+ children: (r) => (() => {
168
+ var i = g();
169
+ return C(i, m(w, {
170
170
  get fragment() {
171
- return r();
171
+ return a();
172
172
  },
173
173
  get precision() {
174
174
  return e.size === "icon" || e.size === "sm" ? "mediump" : "highp";
175
175
  },
176
176
  get uniforms() {
177
- return a();
177
+ return r();
178
178
  },
179
179
  get animateWhenNotVisible() {
180
180
  return e.animateWhenNotVisible;
@@ -182,9 +182,9 @@ function H(e) {
182
182
  onError: (n) => {
183
183
  /not available/i.test(n) ? console.warn('<kai-audio-visualizer variant="custom">: shader unavailable', n) : console.error('<kai-audio-visualizer variant="custom">: shader error', n), e.onUnavailable();
184
184
  }
185
- })), m((n) => {
186
- var s = e.state, v = e.class, z = f();
187
- return s !== n.e && c(i, "data-kai-state", n.e = s), v !== n.t && y(i, n.t = v), n.a = b(i, z, n.a), n;
185
+ })), c((n) => {
186
+ var s = e.state, d = e.class, A = l();
187
+ return s !== n.e && y(i, "data-kai-state", n.e = s), d !== n.t && b(i, n.t = d), n.a = h(i, A, n.a), n;
188
188
  }, {
189
189
  e: void 0,
190
190
  t: void 0,
@@ -195,6 +195,6 @@ function H(e) {
195
195
  });
196
196
  }
197
197
  export {
198
- F as customUniforms,
199
- H as default
198
+ D as customUniforms,
199
+ P as default
200
200
  };
@@ -0,0 +1 @@
1
+ import{d as w,i as S,s as c,c as m,e as p,t as M,b as A,C as N}from"./register-impl-DpE7icIb.js";import{h as g,c as C,l as y,S as x,d as h}from"./kai.es.js";import{c as $,S as E,h as U,D as j}from"./create-tween-CQED4T0g.js";var b=M("<div>");const F={"1f":!0,"1i":!0,"1fv":!0,"2f":!0,"3f":!0,"3fv":!0,"4f":!0,"4fv":!0,Matrix2fv:!0,Matrix3fv:!0,Matrix4fv:!0},O=new Set(["1f","1i"]),V={"2f":2,"3f":3,"4f":4,Matrix2fv:4,Matrix3fv:9,Matrix4fv:16};function D(a,e){if(e==null||typeof e!="object")return`uniform "${a}" is not a valid declaration (expected an object with "type" and "value").`;if(F[e.type]!==!0)return`uniform "${a}" has an unrecognized type "${String(e.type)}".`;if(O.has(e.type))return typeof e.value!="number"||!Number.isFinite(e.value)?`uniform "${a}" is declared "${e.type}" (a number) but its value is not a finite number.`:void 0;if(!Array.isArray(e.value)||e.value.some(s=>typeof s!="number"||!Number.isFinite(s)))return`uniform "${a}" is declared "${e.type}" (an array) but its value is not an array of finite numbers.`;const o=V[e.type];if(o!==void 0&&e.value.length!==o)return`uniform "${a}" is declared "${e.type}", which takes exactly ${o} numbers, but its value has ${e.value.length}.`}function z(a,e){const o=a.bands.length?a.bands:[0],s={uColor:{type:"3fv",value:U(a.color)},uIntensity:{type:"1f",value:a.intensity},uSpeed:{type:"1f",value:a.speed},uComplexity:{type:"1f",value:a.complexity},uVolume:{type:"1f",value:a.volume},uBands:{type:"1fv",value:o,arraySize:o.length}};if(!e)return s;for(const[f,v]of Object.entries(e)){const l=D(f,v);if(l)throw new Error(l)}return{...s,...e}}function I(a){const e=$(.3),o=$(1),s=()=>A(a.state,a.listeningAmplitude);g(()=>{const t=w(s());if(s()==="speaking")e.to(.3+.7*a.volume,{duration:0});else{const r=a.frozen?{duration:0}:{duration:.5,ease:"easeOut"};e.to(Array.isArray(t.intensity)&&a.frozen?t.intensity[0]:t.intensity,r)}o.to(a.frozen?0:t.speed,{duration:0})});const f=C(()=>{var t;try{return{uniforms:z({color:a.color??j,intensity:e.value(),speed:o.value(),complexity:a.complexity??.5,volume:a.volume,bands:a.bands},(t=a.shader)==null?void 0:t.uniforms)}}catch(r){return{error:r instanceof Error?r.message:String(r)}}});let v=!1;g(()=>{const{error:t}=f();if(!t){v=!1;return}v||(v=!0,console.error(`<kai-audio-visualizer variant="custom">: ${t}`),a.onUnavailable())});const l=()=>({height:`${N[a.size]}px`,"aspect-ratio":"1"});return y(x,{get when(){var t;return(t=a.shader)==null?void 0:t.fragment},get fallback(){return(()=>{var t=b();return h(r=>{var n=a.state,i=a.class,u=l();return n!==r.e&&c(t,"data-kai-state",r.e=n),i!==r.t&&m(t,r.t=i),r.a=p(t,u,r.a),r},{e:void 0,t:void 0,a:void 0}),t})()},children:t=>y(x,{get when(){return f().uniforms},get fallback(){return(()=>{var r=b();return h(n=>{var i=a.state,u=a.class,d=l();return i!==n.e&&c(r,"data-kai-state",n.e=i),u!==n.t&&m(r,n.t=u),n.a=p(r,d,n.a),n},{e:void 0,t:void 0,a:void 0}),r})()},children:r=>(()=>{var n=b();return S(n,y(E,{get fragment(){return t()},get precision(){return a.size==="icon"||a.size==="sm"?"mediump":"highp"},get uniforms(){return r()},get animateWhenNotVisible(){return a.animateWhenNotVisible},onError:i=>{/not available/i.test(i)?console.warn('<kai-audio-visualizer variant="custom">: shader unavailable',i):console.error('<kai-audio-visualizer variant="custom">: shader error',i),a.onUnavailable()}})),h(i=>{var u=a.state,d=a.class,k=l();return u!==i.e&&c(n,"data-kai-state",i.e=u),d!==i.t&&m(n,i.t=d),i.a=p(n,k,i.a),i},{e:void 0,t:void 0,a:void 0}),n})()})})}export{z as customUniforms,I as default};
@@ -1,4 +1,4 @@
1
- import{k as v,i as p,c as m,a as h,d as x,b as g,n as y,t as b}from"./define-B_tXMYRm.js";import{c as r,h as w,D as C,S as z}from"./create-tween-CUrM6D_o.js";import{C as S,w as U}from"./audio-visualizer-BuUqQmaO.js";const F=`
1
+ import{i as m,s as h,c as x,a as g,C as y,t as b,b as w,w as C}from"./register-impl-DpE7icIb.js";import{h as v,l as z,d as S}from"./kai.es.js";import{c as r,h as U,S as q,D as F}from"./create-tween-CQED4T0g.js";const W=`
2
2
  const float TAU = 6.28318530718;
3
3
 
4
4
  // Noise for dithering
@@ -113,4 +113,4 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
113
113
  float alpha = line * uMix;
114
114
 
115
115
  fragColor = vec4(color * uMix, alpha);
116
- }`;var W=b('<div style="aspect-ratio:1;mask-image:linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)">');const q=.5,A=.05;function D(e){const o=r(0),i=r(0),l=r(1),n=()=>U(e.state),s=()=>e.frozen?{duration:0}:{duration:.2,ease:"easeOut"};v(()=>{const a=n(),t=Array.isArray(a.opacity)&&e.frozen?a.opacity[0]:a.opacity;l.to(t,e.frozen?{duration:0}:{duration:a.pulseDuration||.2})}),v(()=>{if(e.state==="speaking"){const t=e.volume;o.to(.015+.4*t,{duration:0}),i.to(20+60*t,{duration:0});return}const a=n();o.to(a.amplitude,s()),i.to(a.frequency,s())});const d=()=>e.size==="icon"||e.size==="sm"?2:1;return(()=>{var a=W();return p(a,m(z,{fragment:F,get precision(){return e.size==="icon"||e.size==="sm"?"mediump":"highp"},get uniforms(){return{uSpeed:{type:"1f",value:e.frozen?0:n().speed},uAmplitude:{type:"1f",value:o.value()},uFrequency:{type:"1f",value:i.value()},uMix:{type:"1f",value:l.value()},uLineWidth:{type:"1f",value:d()},uSmoothing:{type:"1f",value:q},uColor:{type:"3fv",value:w(e.color??C)},uColorShift:{type:"1f",value:A}}},get animateWhenNotVisible(){return e.animateWhenNotVisible},onError:t=>{console.warn('<kai-audio-visualizer variant="wave">: shader error',t),e.onUnavailable()}})),h(t=>{var c=e.state,u=e.class,f=`${S[e.size]}px`;return c!==t.e&&x(a,"data-kai-state",t.e=c),u!==t.t&&g(a,t.t=u),f!==t.a&&y(a,"height",t.a=f),t},{e:void 0,t:void 0,a:void 0}),a})()}export{D as default};
116
+ }`;var A=b('<div style="aspect-ratio:1;mask-image:linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)">');const D=.5,X=.05;function V(e){const o=r(0),i=r(0),l=r(1),s=()=>w(e.state,e.listeningAmplitude),n=()=>C(s()),c=()=>e.frozen?{duration:0}:{duration:.2,ease:"easeOut"};v(()=>{const a=n(),t=Array.isArray(a.opacity)&&e.frozen?a.opacity[0]:a.opacity;l.to(t,e.frozen?{duration:0}:{duration:a.pulseDuration||.2})}),v(()=>{if(s()==="speaking"){const t=e.volume;o.to(.015+.4*t,{duration:0}),i.to(20+60*t,{duration:0});return}const a=n();o.to(a.amplitude,c()),i.to(a.frequency,c())});const p=()=>e.size==="icon"||e.size==="sm"?2:1;return(()=>{var a=A();return m(a,z(q,{fragment:W,get precision(){return e.size==="icon"||e.size==="sm"?"mediump":"highp"},get uniforms(){return{uSpeed:{type:"1f",value:e.frozen?0:n().speed},uAmplitude:{type:"1f",value:o.value()},uFrequency:{type:"1f",value:i.value()},uMix:{type:"1f",value:l.value()},uLineWidth:{type:"1f",value:p()},uSmoothing:{type:"1f",value:D},uColor:{type:"3fv",value:U(e.color??F)},uColorShift:{type:"1f",value:X}}},get animateWhenNotVisible(){return e.animateWhenNotVisible},onError:t=>{console.warn('<kai-audio-visualizer variant="wave">: shader error',t),e.onUnavailable()}})),S(t=>{var u=e.state,f=e.class,d=`${y[e.size]}px`;return u!==t.e&&h(a,"data-kai-state",t.e=u),f!==t.t&&x(a,t.t=f),d!==t.a&&g(a,"height",t.a=d),t},{e:void 0,t:void 0,a:void 0}),a})()}export{V as default};
@@ -1,8 +1,8 @@
1
- import { insert as m, createComponent as h, effect as p, setAttribute as x, className as g, setStyleProperty as y, template as b } from "solid-js/web";
2
- import { createEffect as v } from "solid-js";
3
- import { c as r, S as w, h as C, D as S } from "./create-tween-4z1XYLkR.js";
4
- import { C as z, w as U } from "./solid-BMuDmFo_.js";
5
- const A = `
1
+ import { insert as h, createComponent as p, effect as g, setAttribute as x, className as y, setStyleProperty as b, template as w } from "solid-js/web";
2
+ import { createEffect as d } from "solid-js";
3
+ import { c as r, S as C, h as S, D as z } from "./create-tween-CJNlzoaO.js";
4
+ import { C as A, a as U, w as F } from "./solid-BtdqNZI7.js";
5
+ const R = `
6
6
  const float TAU = 6.28318530718;
7
7
 
8
8
  // Noise for dithering
@@ -118,24 +118,24 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
118
118
 
119
119
  fragColor = vec4(color * uMix, alpha);
120
120
  }`;
121
- var F = /* @__PURE__ */ b('<div style="aspect-ratio:1;mask-image:linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)">');
122
- const W = 0.5, q = 0.05;
123
- function X(e) {
124
- const o = r(0), i = r(0), l = r(1), n = () => U(e.state), c = () => e.frozen ? {
121
+ var W = /* @__PURE__ */ w('<div style="aspect-ratio:1;mask-image:linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)">');
122
+ const q = 0.5, D = 0.05;
123
+ function T(e) {
124
+ const o = r(0), i = r(0), l = r(1), c = () => U(e.state, e.listeningAmplitude), n = () => F(c()), s = () => e.frozen ? {
125
125
  duration: 0
126
126
  } : {
127
127
  duration: 0.2,
128
128
  ease: "easeOut"
129
129
  };
130
- v(() => {
130
+ d(() => {
131
131
  const a = n(), t = Array.isArray(a.opacity) && e.frozen ? a.opacity[0] : a.opacity;
132
132
  l.to(t, e.frozen ? {
133
133
  duration: 0
134
134
  } : {
135
135
  duration: a.pulseDuration || 0.2
136
136
  });
137
- }), v(() => {
138
- if (e.state === "speaking") {
137
+ }), d(() => {
138
+ if (c() === "speaking") {
139
139
  const t = e.volume;
140
140
  o.to(0.015 + 0.4 * t, {
141
141
  duration: 0
@@ -145,13 +145,13 @@ function X(e) {
145
145
  return;
146
146
  }
147
147
  const a = n();
148
- o.to(a.amplitude, c()), i.to(a.frequency, c());
148
+ o.to(a.amplitude, s()), i.to(a.frequency, s());
149
149
  });
150
- const d = () => e.size === "icon" || e.size === "sm" ? 2 : 1;
150
+ const m = () => e.size === "icon" || e.size === "sm" ? 2 : 1;
151
151
  return (() => {
152
- var a = F();
153
- return m(a, h(w, {
154
- fragment: A,
152
+ var a = W();
153
+ return h(a, p(C, {
154
+ fragment: R,
155
155
  get precision() {
156
156
  return e.size === "icon" || e.size === "sm" ? "mediump" : "highp";
157
157
  },
@@ -181,19 +181,19 @@ function X(e) {
181
181
  },
182
182
  uLineWidth: {
183
183
  type: "1f",
184
- value: d()
184
+ value: m()
185
185
  },
186
186
  uSmoothing: {
187
187
  type: "1f",
188
- value: W
188
+ value: q
189
189
  },
190
190
  uColor: {
191
191
  type: "3fv",
192
- value: C(e.color ?? S)
192
+ value: S(e.color ?? z)
193
193
  },
194
194
  uColorShift: {
195
195
  type: "1f",
196
- value: q
196
+ value: D
197
197
  }
198
198
  };
199
199
  },
@@ -203,9 +203,9 @@ function X(e) {
203
203
  onError: (t) => {
204
204
  console.warn('<kai-audio-visualizer variant="wave">: shader error', t), e.onUnavailable();
205
205
  }
206
- })), p((t) => {
207
- var s = e.state, u = e.class, f = `${z[e.size]}px`;
208
- return s !== t.e && x(a, "data-kai-state", t.e = s), u !== t.t && g(a, t.t = u), f !== t.a && y(a, "height", t.a = f), t;
206
+ })), g((t) => {
207
+ var u = e.state, f = e.class, v = `${A[e.size]}px`;
208
+ return u !== t.e && x(a, "data-kai-state", t.e = u), f !== t.t && y(a, t.t = f), v !== t.a && b(a, "height", t.a = v), t;
209
209
  }, {
210
210
  e: void 0,
211
211
  t: void 0,
@@ -214,5 +214,5 @@ function X(e) {
214
214
  })();
215
215
  }
216
216
  export {
217
- X as default
217
+ T as default
218
218
  };
@@ -1,8 +1,8 @@
1
- import { ssr as m, ssrAttribute as f, escape as o, ssrStyleProperty as l, createComponent as h } from "solid-js/web";
2
- import { createEffect as d } from "solid-js";
3
- import { c, S as p, h as x, D as g } from "./create-tween-B5Y4Im8G.js";
4
- import { C as y, w as b } from "./solid-CGYNdLRR.js";
5
- const w = `
1
+ import { ssr as h, ssrAttribute as d, escape as o, ssrStyleProperty as l, createComponent as p } from "solid-js/web";
2
+ import { createEffect as v } from "solid-js";
3
+ import { c, S as g, h as x, D as y } from "./create-tween-BFT6c-Y8.js";
4
+ import { C as b, a as w, w as C } from "./solid-CnavwBye.js";
5
+ const S = `
6
6
  const float TAU = 6.28318530718;
7
7
 
8
8
  // Noise for dithering
@@ -118,24 +118,24 @@ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
118
118
 
119
119
  fragColor = vec4(color * uMix, alpha);
120
120
  }`;
121
- var C = ["<div", ' style="', '">', "</div>"];
122
- const S = 0.5, z = 0.05;
123
- function q(e) {
124
- const i = c(0), n = c(0), s = c(1), r = () => b(e.state), u = () => e.frozen ? {
121
+ var z = ["<div", ' style="', '">', "</div>"];
122
+ const A = 0.5, U = 0.05;
123
+ function D(e) {
124
+ const i = c(0), n = c(0), s = c(1), u = () => w(e.state, e.listeningAmplitude), r = () => C(u()), f = () => e.frozen ? {
125
125
  duration: 0
126
126
  } : {
127
127
  duration: 0.2,
128
128
  ease: "easeOut"
129
129
  };
130
- d(() => {
130
+ v(() => {
131
131
  const t = r(), a = Array.isArray(t.opacity) && e.frozen ? t.opacity[0] : t.opacity;
132
132
  s.to(a, e.frozen ? {
133
133
  duration: 0
134
134
  } : {
135
135
  duration: t.pulseDuration || 0.2
136
136
  });
137
- }), d(() => {
138
- if (e.state === "speaking") {
137
+ }), v(() => {
138
+ if (u() === "speaking") {
139
139
  const a = e.volume;
140
140
  i.to(0.015 + 0.4 * a, {
141
141
  duration: 0
@@ -145,11 +145,11 @@ function q(e) {
145
145
  return;
146
146
  }
147
147
  const t = r();
148
- i.to(t.amplitude, u()), n.to(t.frequency, u());
148
+ i.to(t.amplitude, f()), n.to(t.frequency, f());
149
149
  });
150
- const v = () => e.size === "icon" || e.size === "sm" ? 2 : 1;
151
- return m(C, f("data-kai-state", o(e.state, !0), !1) + f("class", o(e.class, !0), !1), l("height:", `${o(y[e.size], !0)}px`) + l(";aspect-ratio:", "1") + l(";mask-image:", "linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)"), o(h(p, {
152
- fragment: w,
150
+ const m = () => e.size === "icon" || e.size === "sm" ? 2 : 1;
151
+ return h(z, d("data-kai-state", o(e.state, !0), !1) + d("class", o(e.class, !0), !1), l("height:", `${o(b[e.size], !0)}px`) + l(";aspect-ratio:", "1") + l(";mask-image:", "linear-gradient(90deg, transparent 0%, black 20%, black 80%, transparent 100%)"), o(p(g, {
152
+ fragment: S,
153
153
  get precision() {
154
154
  return e.size === "icon" || e.size === "sm" ? "mediump" : "highp";
155
155
  },
@@ -179,19 +179,19 @@ function q(e) {
179
179
  },
180
180
  uLineWidth: {
181
181
  type: "1f",
182
- value: v()
182
+ value: m()
183
183
  },
184
184
  uSmoothing: {
185
185
  type: "1f",
186
- value: S
186
+ value: A
187
187
  },
188
188
  uColor: {
189
189
  type: "3fv",
190
- value: x(e.color ?? g)
190
+ value: x(e.color ?? y)
191
191
  },
192
192
  uColorShift: {
193
193
  type: "1f",
194
- value: z
194
+ value: U
195
195
  }
196
196
  };
197
197
  },
@@ -204,5 +204,5 @@ function q(e) {
204
204
  })));
205
205
  }
206
206
  export {
207
- q as default
207
+ D as default
208
208
  };
@@ -36,6 +36,21 @@ export interface ModelUsage {
36
36
  }
37
37
  export interface ModelStreamChunk {
38
38
  text?: string;
39
+ /**
40
+ * The model id the RESPONSE stated, verbatim; REPORT, NEVER INFER.
41
+ *
42
+ * Read from the response rather than the request, which is what makes it work
43
+ * at all when the app builds its own fetch and the kit never sees what was
44
+ * asked for. Providers commonly resolve an alias (ask for `gpt-4o`, get
45
+ * `gpt-4o-2024-08-06`); through a gateway the value is the gateway's own id.
46
+ * Both are reasons to pass the string through untouched.
47
+ *
48
+ * It is NOT guaranteed. A proxy can strip or rewrite it and a custom endpoint
49
+ * may omit it, so a consumer renders it as ABSENT when it is absent. Filling
50
+ * the gap with the requested id would lie in exactly the requested-vs-served
51
+ * mismatch this field exists to catch.
52
+ */
53
+ model?: string;
39
54
  /**
40
55
  * Reasoning delta. `''` is MEANINGFUL, not a no-op: a redacted block has no
41
56
  * readable text but still carries a payload that must round-trip, and a format
@@ -142,6 +157,38 @@ export interface ModelTurn {
142
157
  export interface ConsumeOptions {
143
158
  /** Label for the reasoning disclosure. Defaults to 'Thinking'. */
144
159
  reasoningLabel?: string;
160
+ /**
161
+ * Correlates diagnostics and namespaces reasoning parts for this consume call;
162
+ * assigned automatically when absent.
163
+ *
164
+ * Supply one only to tie a read to an id you already hold. Two reads into the
165
+ * SAME sink must not share a value: the id is what keeps a second round's
166
+ * block 0 from merging into the first round's reasoning part.
167
+ */
168
+ streamId?: string;
169
+ /**
170
+ * The app's own grouping of several reads into ONE logical turn, carried onto
171
+ * every diagnostic event this read emits.
172
+ *
173
+ * THE KIT REPORTS WHAT THE APP DECLARES AND GROUPS NOTHING ON ITS OWN. A chat
174
+ * app running a tool loop, or fanning out to sub-agents, makes several model
175
+ * calls that belong to one turn; the kit sees one Response at a time and has
176
+ * no way to know which ones those are. So it does not guess:
177
+ *
178
+ * readOpenAIStream(res, sink, { traceId: 'turn-42', label: 'planner' })
179
+ *
180
+ * Absent when not supplied -- the key is not present on the events at all,
181
+ * rather than present and undefined. Purely diagnostic: nothing in the parse
182
+ * branches on it and it never reaches a provider.
183
+ */
184
+ traceId?: string;
185
+ /** The app's name for THIS read inside its trace (`'planner'`,
186
+ * `'executor'`, `'retry-2'`). Carried onto every diagnostic event, and
187
+ * absent when not supplied. Never derived from the format or the model.
188
+ *
189
+ * Not to be confused with `reasoningLabel`, which is UI copy for the
190
+ * reasoning disclosure; this one is never rendered to an end user. */
191
+ label?: string;
145
192
  /** Fires once per tool call the moment its arguments parse cleanly. This is
146
193
  * the hook a host's tool loop waits on. There is deliberately no
147
194
  * per-fragment callback: `ToolPart.rawInput` is written on every fragment,