@flanksource/clicky-ui 0.3.15 → 0.3.17

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 (823) hide show
  1. package/NOTICE.md +10 -0
  2. package/dist/ai.cjs +33 -4
  3. package/dist/ai.cjs.map +1 -1
  4. package/dist/ai.js +31 -2
  5. package/dist/ai.js.map +1 -1
  6. package/dist/chat.cjs +6 -0
  7. package/dist/chat.cjs.map +1 -1
  8. package/dist/chat.js +7 -1
  9. package/dist/chat.js.map +1 -1
  10. package/dist/components/Combobox.cjs +92 -170
  11. package/dist/components/Combobox.cjs.map +1 -1
  12. package/dist/components/Combobox.d.ts +2 -111
  13. package/dist/components/Combobox.d.ts.map +1 -1
  14. package/dist/components/Combobox.js +95 -173
  15. package/dist/components/Combobox.js.map +1 -1
  16. package/dist/components/ComboboxActions.cjs +70 -0
  17. package/dist/components/ComboboxActions.cjs.map +1 -0
  18. package/dist/components/ComboboxActions.d.ts +8 -0
  19. package/dist/components/ComboboxActions.d.ts.map +1 -0
  20. package/dist/components/ComboboxActions.js +70 -0
  21. package/dist/components/ComboboxActions.js.map +1 -0
  22. package/dist/components/ComboboxMenu.cjs +160 -0
  23. package/dist/components/ComboboxMenu.cjs.map +1 -0
  24. package/dist/components/ComboboxMenu.d.ts +22 -0
  25. package/dist/components/ComboboxMenu.d.ts.map +1 -0
  26. package/dist/components/ComboboxMenu.js +160 -0
  27. package/dist/components/ComboboxMenu.js.map +1 -0
  28. package/dist/components/EndpointSelector.cjs +407 -0
  29. package/dist/components/EndpointSelector.cjs.map +1 -0
  30. package/dist/components/EndpointSelector.d.ts +3 -0
  31. package/dist/components/EndpointSelector.d.ts.map +1 -0
  32. package/dist/components/EndpointSelector.js +407 -0
  33. package/dist/components/EndpointSelector.js.map +1 -0
  34. package/dist/components/EndpointSelector.model.d.ts +52 -0
  35. package/dist/components/EndpointSelector.model.d.ts.map +1 -0
  36. package/dist/components/FilterBar.cjs +12 -0
  37. package/dist/components/FilterBar.cjs.map +1 -1
  38. package/dist/components/FilterBar.d.ts +4 -0
  39. package/dist/components/FilterBar.d.ts.map +1 -1
  40. package/dist/components/FilterBar.js +12 -0
  41. package/dist/components/FilterBar.js.map +1 -1
  42. package/dist/components/InputField.cjs +11 -12
  43. package/dist/components/InputField.cjs.map +1 -1
  44. package/dist/components/InputField.d.ts +7 -0
  45. package/dist/components/InputField.d.ts.map +1 -1
  46. package/dist/components/InputField.js +12 -13
  47. package/dist/components/InputField.js.map +1 -1
  48. package/dist/components/JsonSchemaForm.cjs +22 -16
  49. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  50. package/dist/components/JsonSchemaForm.d.ts +1 -1
  51. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  52. package/dist/components/JsonSchemaForm.js +22 -16
  53. package/dist/components/JsonSchemaForm.js.map +1 -1
  54. package/dist/components/MultiSelect.cjs +3 -3
  55. package/dist/components/MultiSelect.cjs.map +1 -1
  56. package/dist/components/MultiSelect.d.ts.map +1 -1
  57. package/dist/components/MultiSelect.js +3 -3
  58. package/dist/components/MultiSelect.js.map +1 -1
  59. package/dist/components/SecretKeySelector.cjs +150 -77
  60. package/dist/components/SecretKeySelector.cjs.map +1 -1
  61. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  62. package/dist/components/SecretKeySelector.js +151 -78
  63. package/dist/components/SecretKeySelector.js.map +1 -1
  64. package/dist/components/WorkloadPicker.cjs +2 -1
  65. package/dist/components/WorkloadPicker.cjs.map +1 -1
  66. package/dist/components/WorkloadPicker.d.ts +6 -1
  67. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  68. package/dist/components/WorkloadPicker.js +2 -1
  69. package/dist/components/WorkloadPicker.js.map +1 -1
  70. package/dist/components/combobox-types.d.ts +107 -0
  71. package/dist/components/combobox-types.d.ts.map +1 -0
  72. package/dist/components/combobox-utils.cjs +21 -0
  73. package/dist/components/combobox-utils.cjs.map +1 -0
  74. package/dist/components/combobox-utils.d.ts +15 -0
  75. package/dist/components/combobox-utils.d.ts.map +1 -0
  76. package/dist/components/combobox-utils.js +21 -0
  77. package/dist/components/combobox-utils.js.map +1 -0
  78. package/dist/components/endpoint-port.cjs +12 -0
  79. package/dist/components/endpoint-port.cjs.map +1 -0
  80. package/dist/components/endpoint-port.d.ts +4 -0
  81. package/dist/components/endpoint-port.d.ts.map +1 -0
  82. package/dist/components/endpoint-port.js +12 -0
  83. package/dist/components/endpoint-port.js.map +1 -0
  84. package/dist/components/json-schema-form-array.cjs +12 -23
  85. package/dist/components/json-schema-form-array.cjs.map +1 -1
  86. package/dist/components/json-schema-form-array.d.ts +1 -1
  87. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  88. package/dist/components/json-schema-form-array.js +12 -23
  89. package/dist/components/json-schema-form-array.js.map +1 -1
  90. package/dist/components/json-schema-form-discriminator.cjs +6 -2
  91. package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
  92. package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
  93. package/dist/components/json-schema-form-discriminator.js +6 -2
  94. package/dist/components/json-schema-form-discriminator.js.map +1 -1
  95. package/dist/components/json-schema-form-error-display.cjs +50 -0
  96. package/dist/components/json-schema-form-error-display.cjs.map +1 -0
  97. package/dist/components/json-schema-form-error-display.d.ts +12 -0
  98. package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
  99. package/dist/components/json-schema-form-error-display.js +50 -0
  100. package/dist/components/json-schema-form-error-display.js.map +1 -0
  101. package/dist/components/json-schema-form-error-types.d.ts +26 -0
  102. package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
  103. package/dist/components/json-schema-form-errors.cjs +169 -0
  104. package/dist/components/json-schema-form-errors.cjs.map +1 -0
  105. package/dist/components/json-schema-form-errors.d.ts +14 -0
  106. package/dist/components/json-schema-form-errors.d.ts.map +1 -0
  107. package/dist/components/json-schema-form-errors.js +169 -0
  108. package/dist/components/json-schema-form-errors.js.map +1 -0
  109. package/dist/components/json-schema-form-object.cjs +12 -2
  110. package/dist/components/json-schema-form-object.cjs.map +1 -1
  111. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-object.js +12 -2
  113. package/dist/components/json-schema-form-object.js.map +1 -1
  114. package/dist/components/json-schema-form-refs.cjs +84 -19
  115. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  116. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  117. package/dist/components/json-schema-form-refs.js +84 -19
  118. package/dist/components/json-schema-form-refs.js.map +1 -1
  119. package/dist/components/json-schema-form-render.cjs +33 -10
  120. package/dist/components/json-schema-form-render.cjs.map +1 -1
  121. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  122. package/dist/components/json-schema-form-render.js +34 -11
  123. package/dist/components/json-schema-form-render.js.map +1 -1
  124. package/dist/components/json-schema-form-resolve.cjs +16 -4
  125. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  126. package/dist/components/json-schema-form-resolve.d.ts +1 -0
  127. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  128. package/dist/components/json-schema-form-resolve.js +17 -5
  129. package/dist/components/json-schema-form-resolve.js.map +1 -1
  130. package/dist/components/json-schema-form-types.d.ts +4 -3
  131. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  132. package/dist/components.cjs +13 -0
  133. package/dist/components.cjs.map +1 -1
  134. package/dist/components.d.ts +8 -1
  135. package/dist/components.d.ts.map +1 -1
  136. package/dist/components.js +15 -2
  137. package/dist/components.js.map +1 -1
  138. package/dist/data/DataTable.cjs +205 -14
  139. package/dist/data/DataTable.cjs.map +1 -1
  140. package/dist/data/DataTable.d.ts +41 -0
  141. package/dist/data/DataTable.d.ts.map +1 -1
  142. package/dist/data/DataTable.grouping.cjs +21 -0
  143. package/dist/data/DataTable.grouping.cjs.map +1 -0
  144. package/dist/data/DataTable.grouping.d.ts +26 -0
  145. package/dist/data/DataTable.grouping.d.ts.map +1 -0
  146. package/dist/data/DataTable.grouping.js +21 -0
  147. package/dist/data/DataTable.grouping.js.map +1 -0
  148. package/dist/data/DataTable.js +205 -14
  149. package/dist/data/DataTable.js.map +1 -1
  150. package/dist/data/Markdown.cjs +45 -1
  151. package/dist/data/Markdown.cjs.map +1 -1
  152. package/dist/data/Markdown.d.ts +3 -2
  153. package/dist/data/Markdown.d.ts.map +1 -1
  154. package/dist/data/Markdown.js +45 -1
  155. package/dist/data/Markdown.js.map +1 -1
  156. package/dist/data/MarkdownEditor.cjs +4 -3
  157. package/dist/data/MarkdownEditor.cjs.map +1 -1
  158. package/dist/data/MarkdownEditor.d.ts +6 -2
  159. package/dist/data/MarkdownEditor.d.ts.map +1 -1
  160. package/dist/data/MarkdownEditor.js +4 -3
  161. package/dist/data/MarkdownEditor.js.map +1 -1
  162. package/dist/data/ServerTimingBadge.cjs +64 -0
  163. package/dist/data/ServerTimingBadge.cjs.map +1 -0
  164. package/dist/data/ServerTimingBadge.d.ts +9 -0
  165. package/dist/data/ServerTimingBadge.d.ts.map +1 -0
  166. package/dist/data/ServerTimingBadge.js +64 -0
  167. package/dist/data/ServerTimingBadge.js.map +1 -0
  168. package/dist/data/StatStrip.cjs +99 -0
  169. package/dist/data/StatStrip.cjs.map +1 -0
  170. package/dist/data/StatStrip.d.ts +41 -0
  171. package/dist/data/StatStrip.d.ts.map +1 -0
  172. package/dist/data/StatStrip.js +99 -0
  173. package/dist/data/StatStrip.js.map +1 -0
  174. package/dist/data/TaskManager.cjs +20 -1
  175. package/dist/data/TaskManager.cjs.map +1 -1
  176. package/dist/data/TaskManager.d.ts +3 -1
  177. package/dist/data/TaskManager.d.ts.map +1 -1
  178. package/dist/data/TaskManager.js +20 -1
  179. package/dist/data/TaskManager.js.map +1 -1
  180. package/dist/data/TaskManagerButton.cjs +49 -0
  181. package/dist/data/TaskManagerButton.cjs.map +1 -0
  182. package/dist/data/TaskManagerButton.d.ts +8 -0
  183. package/dist/data/TaskManagerButton.d.ts.map +1 -0
  184. package/dist/data/TaskManagerButton.js +49 -0
  185. package/dist/data/TaskManagerButton.js.map +1 -0
  186. package/dist/data/TaskProcessDetails.cjs +113 -0
  187. package/dist/data/TaskProcessDetails.cjs.map +1 -0
  188. package/dist/data/TaskProcessDetails.d.ts +6 -0
  189. package/dist/data/TaskProcessDetails.d.ts.map +1 -0
  190. package/dist/data/TaskProcessDetails.js +113 -0
  191. package/dist/data/TaskProcessDetails.js.map +1 -0
  192. package/dist/data/TaskProgress.cjs +106 -19
  193. package/dist/data/TaskProgress.cjs.map +1 -1
  194. package/dist/data/TaskProgress.d.ts +4 -2
  195. package/dist/data/TaskProgress.d.ts.map +1 -1
  196. package/dist/data/TaskProgress.js +107 -20
  197. package/dist/data/TaskProgress.js.map +1 -1
  198. package/dist/data/TaskSnapshot.cjs.map +1 -1
  199. package/dist/data/TaskSnapshot.d.ts +43 -0
  200. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  201. package/dist/data/TaskSnapshot.js.map +1 -1
  202. package/dist/data/Tree.cjs +91 -82
  203. package/dist/data/Tree.cjs.map +1 -1
  204. package/dist/data/Tree.d.ts +3 -1
  205. package/dist/data/Tree.d.ts.map +1 -1
  206. package/dist/data/Tree.js +91 -82
  207. package/dist/data/Tree.js.map +1 -1
  208. package/dist/data/TreeNode.cjs +3 -0
  209. package/dist/data/TreeNode.cjs.map +1 -1
  210. package/dist/data/TreeNode.d.ts +2 -1
  211. package/dist/data/TreeNode.d.ts.map +1 -1
  212. package/dist/data/TreeNode.js +3 -0
  213. package/dist/data/TreeNode.js.map +1 -1
  214. package/dist/data/ai/ChatWindow.cjs +18 -141
  215. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  216. package/dist/data/ai/ChatWindow.d.ts +2 -40
  217. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  218. package/dist/data/ai/ChatWindow.js +15 -138
  219. package/dist/data/ai/ChatWindow.js.map +1 -1
  220. package/dist/data/ai/ChatWindow.models.cjs +11 -0
  221. package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
  222. package/dist/data/ai/ChatWindow.models.d.ts +3 -0
  223. package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
  224. package/dist/data/ai/ChatWindow.models.js +11 -0
  225. package/dist/data/ai/ChatWindow.models.js.map +1 -0
  226. package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
  227. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
  228. package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
  229. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
  230. package/dist/data/ai/ChatWindow.preferences.js +57 -0
  231. package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
  232. package/dist/data/ai/ChatWindow.thread-status.cjs +14 -0
  233. package/dist/data/ai/ChatWindow.thread-status.cjs.map +1 -0
  234. package/dist/data/ai/ChatWindow.thread-status.d.ts +5 -0
  235. package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -0
  236. package/dist/data/ai/ChatWindow.thread-status.js +14 -0
  237. package/dist/data/ai/ChatWindow.thread-status.js.map +1 -0
  238. package/dist/data/ai/ChatWindow.thread.cjs +68 -0
  239. package/dist/data/ai/ChatWindow.thread.cjs.map +1 -0
  240. package/dist/data/ai/ChatWindow.thread.d.ts +16 -0
  241. package/dist/data/ai/ChatWindow.thread.d.ts.map +1 -0
  242. package/dist/data/ai/ChatWindow.thread.js +68 -0
  243. package/dist/data/ai/ChatWindow.thread.js.map +1 -0
  244. package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
  245. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
  246. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
  247. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
  248. package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
  249. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
  250. package/dist/data/ai/ChatWindow.types.d.ts +41 -0
  251. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
  252. package/dist/data/ai/ContextBadges.cjs +76 -46
  253. package/dist/data/ai/ContextBadges.cjs.map +1 -1
  254. package/dist/data/ai/ContextBadges.d.ts.map +1 -1
  255. package/dist/data/ai/ContextBadges.js +77 -47
  256. package/dist/data/ai/ContextBadges.js.map +1 -1
  257. package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
  258. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  259. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
  260. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  261. package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
  262. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  263. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
  264. package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
  265. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
  266. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
  267. package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
  268. package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
  269. package/dist/data/ai/PromptPicker/index.d.ts +2 -1
  270. package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
  271. package/dist/data/ai/PromptPicker/types.cjs +7 -0
  272. package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
  273. package/dist/data/ai/PromptPicker/types.d.ts +18 -2
  274. package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
  275. package/dist/data/ai/PromptPicker/types.js +7 -0
  276. package/dist/data/ai/PromptPicker/types.js.map +1 -0
  277. package/dist/data/ai/PromptRunEditor/index.cjs +171 -91
  278. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  279. package/dist/data/ai/PromptRunEditor/index.d.ts +9 -9
  280. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  281. package/dist/data/ai/PromptRunEditor/index.js +175 -95
  282. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  283. package/dist/data/ai/PromptRunEditor/model.cjs +47 -0
  284. package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -0
  285. package/dist/data/ai/PromptRunEditor/model.d.ts +17 -0
  286. package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -0
  287. package/dist/data/ai/PromptRunEditor/model.js +47 -0
  288. package/dist/data/ai/PromptRunEditor/model.js.map +1 -0
  289. package/dist/data/ai/RuntimeBar.cjs +408 -0
  290. package/dist/data/ai/RuntimeBar.cjs.map +1 -0
  291. package/dist/data/ai/RuntimeBar.d.ts +20 -0
  292. package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
  293. package/dist/data/ai/RuntimeBar.js +408 -0
  294. package/dist/data/ai/RuntimeBar.js.map +1 -0
  295. package/dist/data/ai/RuntimeBar.model.cjs +14 -0
  296. package/dist/data/ai/RuntimeBar.model.cjs.map +1 -0
  297. package/dist/data/ai/RuntimeBar.model.d.ts +10 -0
  298. package/dist/data/ai/RuntimeBar.model.d.ts.map +1 -0
  299. package/dist/data/ai/RuntimeBar.model.js +14 -0
  300. package/dist/data/ai/RuntimeBar.model.js.map +1 -0
  301. package/dist/data/ai/RuntimeBarCombo.cjs +359 -0
  302. package/dist/data/ai/RuntimeBarCombo.cjs.map +1 -0
  303. package/dist/data/ai/RuntimeBarCombo.d.ts +22 -0
  304. package/dist/data/ai/RuntimeBarCombo.d.ts.map +1 -0
  305. package/dist/data/ai/RuntimeBarCombo.js +359 -0
  306. package/dist/data/ai/RuntimeBarCombo.js.map +1 -0
  307. package/dist/data/ai/SessionChatComposer.cjs +56 -0
  308. package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
  309. package/dist/data/ai/SessionChatComposer.d.ts +24 -0
  310. package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
  311. package/dist/data/ai/SessionChatComposer.js +56 -0
  312. package/dist/data/ai/SessionChatComposer.js.map +1 -0
  313. package/dist/data/ai/SessionInspector.cjs +222 -382
  314. package/dist/data/ai/SessionInspector.cjs.map +1 -1
  315. package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
  316. package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
  317. package/dist/data/ai/SessionInspector.collection.cjs +377 -0
  318. package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
  319. package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
  320. package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
  321. package/dist/data/ai/SessionInspector.collection.js +377 -0
  322. package/dist/data/ai/SessionInspector.collection.js.map +1 -0
  323. package/dist/data/ai/SessionInspector.d.ts +9 -4
  324. package/dist/data/ai/SessionInspector.d.ts.map +1 -1
  325. package/dist/data/ai/SessionInspector.files.cjs +162 -0
  326. package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
  327. package/dist/data/ai/SessionInspector.files.d.ts +5 -0
  328. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
  329. package/dist/data/ai/SessionInspector.files.js +162 -0
  330. package/dist/data/ai/SessionInspector.files.js.map +1 -0
  331. package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
  332. package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
  333. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
  334. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
  335. package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
  336. package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
  337. package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
  338. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
  339. package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
  340. package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
  341. package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
  342. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
  343. package/dist/data/ai/SessionInspector.js +224 -384
  344. package/dist/data/ai/SessionInspector.js.map +1 -1
  345. package/dist/data/ai/SessionInspector.model.cjs +125 -0
  346. package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
  347. package/dist/data/ai/SessionInspector.model.d.ts +14 -0
  348. package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
  349. package/dist/data/ai/SessionInspector.model.js +125 -0
  350. package/dist/data/ai/SessionInspector.model.js.map +1 -0
  351. package/dist/data/ai/SessionInspector.panels.cjs +265 -0
  352. package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
  353. package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
  354. package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
  355. package/dist/data/ai/SessionInspector.panels.js +265 -0
  356. package/dist/data/ai/SessionInspector.panels.js.map +1 -0
  357. package/dist/data/ai/SessionInspector.plan.cjs +77 -0
  358. package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
  359. package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
  360. package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
  361. package/dist/data/ai/SessionInspector.plan.js +77 -0
  362. package/dist/data/ai/SessionInspector.plan.js.map +1 -0
  363. package/dist/data/ai/SessionInspector.summary.cjs +182 -0
  364. package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
  365. package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
  366. package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
  367. package/dist/data/ai/SessionInspector.summary.js +182 -0
  368. package/dist/data/ai/SessionInspector.summary.js.map +1 -0
  369. package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
  370. package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
  371. package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
  372. package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
  373. package/dist/data/ai/SessionInspector.transcript.js +94 -0
  374. package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
  375. package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
  376. package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
  377. package/dist/data/ai/SessionViewer.cjs +86 -121
  378. package/dist/data/ai/SessionViewer.cjs.map +1 -1
  379. package/dist/data/ai/SessionViewer.d.ts +8 -1
  380. package/dist/data/ai/SessionViewer.d.ts.map +1 -1
  381. package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
  382. package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
  383. package/dist/data/ai/SessionViewer.header.cjs +118 -0
  384. package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
  385. package/dist/data/ai/SessionViewer.header.d.ts +11 -0
  386. package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
  387. package/dist/data/ai/SessionViewer.header.js +118 -0
  388. package/dist/data/ai/SessionViewer.header.js.map +1 -0
  389. package/dist/data/ai/SessionViewer.js +87 -122
  390. package/dist/data/ai/SessionViewer.js.map +1 -1
  391. package/dist/data/ai/SessionViewer.model.cjs +111 -39
  392. package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
  393. package/dist/data/ai/SessionViewer.model.d.ts +6 -0
  394. package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
  395. package/dist/data/ai/SessionViewer.model.js +111 -39
  396. package/dist/data/ai/SessionViewer.model.js.map +1 -1
  397. package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
  398. package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
  399. package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
  400. package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
  401. package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
  402. package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
  403. package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
  404. package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
  405. package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
  406. package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
  407. package/dist/data/ai/SessionViewer.row-time.js +15 -0
  408. package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
  409. package/dist/data/ai/SessionViewer.rows.cjs +37 -424
  410. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  411. package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
  412. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  413. package/dist/data/ai/SessionViewer.rows.js +31 -418
  414. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  415. package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
  416. package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
  417. package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
  418. package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
  419. package/dist/data/ai/SessionViewer.tool-details.js +65 -0
  420. package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
  421. package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
  422. package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
  423. package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
  424. package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
  425. package/dist/data/ai/SessionViewer.tool-row.js +404 -0
  426. package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
  427. package/dist/data/ai/SessionViewer.unified.d.ts +11 -2
  428. package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
  429. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
  430. package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
  431. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
  432. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
  433. package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
  434. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
  435. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  436. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  437. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
  438. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  439. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
  440. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  441. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
  442. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
  443. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  444. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
  445. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
  446. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
  447. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
  448. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
  449. package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
  450. package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
  451. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
  452. package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
  453. package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
  454. package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
  455. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
  456. package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
  457. package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
  458. package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
  459. package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
  460. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  461. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
  462. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  463. package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
  464. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  465. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  466. package/dist/data/ai/ThreadPicker.d.ts +2 -0
  467. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  468. package/dist/data/ai/ThreadPicker.js.map +1 -1
  469. package/dist/data/ai/ToolPreferences.cjs +2 -1
  470. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  471. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  472. package/dist/data/ai/ToolPreferences.js +2 -1
  473. package/dist/data/ai/ToolPreferences.js.map +1 -1
  474. package/dist/data/ai/agent-action-icons.cjs +7 -10
  475. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  476. package/dist/data/ai/agent-action-icons.d.ts +1 -2
  477. package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
  478. package/dist/data/ai/agent-action-icons.js +8 -11
  479. package/dist/data/ai/agent-action-icons.js.map +1 -1
  480. package/dist/data/ai/context.cjs.map +1 -1
  481. package/dist/data/ai/context.d.ts +4 -0
  482. package/dist/data/ai/context.d.ts.map +1 -1
  483. package/dist/data/ai/context.js.map +1 -1
  484. package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
  485. package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
  486. package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
  487. package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
  488. package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
  489. package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
  490. package/dist/data/ai/examples/sessions/claude.cjs +252 -0
  491. package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
  492. package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
  493. package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
  494. package/dist/data/ai/examples/sessions/claude.js +252 -0
  495. package/dist/data/ai/examples/sessions/claude.js.map +1 -0
  496. package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
  497. package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
  498. package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
  499. package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
  500. package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
  501. package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
  502. package/dist/data/ai/examples/sessions/codex.cjs +236 -0
  503. package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
  504. package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
  505. package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
  506. package/dist/data/ai/examples/sessions/codex.js +236 -0
  507. package/dist/data/ai/examples/sessions/codex.js.map +1 -0
  508. package/dist/data/ai/examples/sessions/index.cjs +21 -0
  509. package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
  510. package/dist/data/ai/examples/sessions/index.d.ts +10 -0
  511. package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
  512. package/dist/data/ai/examples/sessions/index.js +21 -0
  513. package/dist/data/ai/examples/sessions/index.js.map +1 -0
  514. package/dist/data/ai/index.d.ts +9 -3
  515. package/dist/data/ai/index.d.ts.map +1 -1
  516. package/dist/data/ai/model-capabilities.cjs +12 -1
  517. package/dist/data/ai/model-capabilities.cjs.map +1 -1
  518. package/dist/data/ai/model-capabilities.d.ts +2 -6
  519. package/dist/data/ai/model-capabilities.d.ts.map +1 -1
  520. package/dist/data/ai/model-capabilities.js +12 -1
  521. package/dist/data/ai/model-capabilities.js.map +1 -1
  522. package/dist/data/ai/runtime-mode.cjs +72 -1
  523. package/dist/data/ai/runtime-mode.cjs.map +1 -1
  524. package/dist/data/ai/runtime-mode.d.ts +28 -0
  525. package/dist/data/ai/runtime-mode.d.ts.map +1 -1
  526. package/dist/data/ai/runtime-mode.js +73 -2
  527. package/dist/data/ai/runtime-mode.js.map +1 -1
  528. package/dist/data/cells/EntityCell.cjs +64 -0
  529. package/dist/data/cells/EntityCell.cjs.map +1 -0
  530. package/dist/data/cells/EntityCell.d.ts +27 -0
  531. package/dist/data/cells/EntityCell.d.ts.map +1 -0
  532. package/dist/data/cells/EntityCell.js +64 -0
  533. package/dist/data/cells/EntityCell.js.map +1 -0
  534. package/dist/data/chat/Attachment.cjs +53 -13
  535. package/dist/data/chat/Attachment.cjs.map +1 -1
  536. package/dist/data/chat/Attachment.d.ts +9 -3
  537. package/dist/data/chat/Attachment.d.ts.map +1 -1
  538. package/dist/data/chat/Attachment.js +54 -14
  539. package/dist/data/chat/Attachment.js.map +1 -1
  540. package/dist/data/chat/Chat.cjs +113 -36
  541. package/dist/data/chat/Chat.cjs.map +1 -1
  542. package/dist/data/chat/Chat.d.ts +11 -4
  543. package/dist/data/chat/Chat.d.ts.map +1 -1
  544. package/dist/data/chat/Chat.js +111 -34
  545. package/dist/data/chat/Chat.js.map +1 -1
  546. package/dist/data/chat/ContextMeter.cjs +240 -66
  547. package/dist/data/chat/ContextMeter.cjs.map +1 -1
  548. package/dist/data/chat/ContextMeter.d.ts +11 -3
  549. package/dist/data/chat/ContextMeter.d.ts.map +1 -1
  550. package/dist/data/chat/ContextMeter.js +241 -67
  551. package/dist/data/chat/ContextMeter.js.map +1 -1
  552. package/dist/data/chat/Conversation.cjs +55 -3
  553. package/dist/data/chat/Conversation.cjs.map +1 -1
  554. package/dist/data/chat/Conversation.d.ts +5 -1
  555. package/dist/data/chat/Conversation.d.ts.map +1 -1
  556. package/dist/data/chat/Conversation.js +55 -3
  557. package/dist/data/chat/Conversation.js.map +1 -1
  558. package/dist/data/chat/ModelSelector.cjs +8 -10
  559. package/dist/data/chat/ModelSelector.cjs.map +1 -1
  560. package/dist/data/chat/ModelSelector.d.ts.map +1 -1
  561. package/dist/data/chat/ModelSelector.js +9 -11
  562. package/dist/data/chat/ModelSelector.js.map +1 -1
  563. package/dist/data/chat/PromptInput.cjs +56 -5
  564. package/dist/data/chat/PromptInput.cjs.map +1 -1
  565. package/dist/data/chat/PromptInput.d.ts +10 -1
  566. package/dist/data/chat/PromptInput.d.ts.map +1 -1
  567. package/dist/data/chat/PromptInput.js +57 -6
  568. package/dist/data/chat/PromptInput.js.map +1 -1
  569. package/dist/data/chat/approval.cjs +21 -0
  570. package/dist/data/chat/approval.cjs.map +1 -0
  571. package/dist/data/chat/approval.d.ts +11 -0
  572. package/dist/data/chat/approval.d.ts.map +1 -0
  573. package/dist/data/chat/approval.js +21 -0
  574. package/dist/data/chat/approval.js.map +1 -0
  575. package/dist/data/chat/attachment-upload.cjs +33 -0
  576. package/dist/data/chat/attachment-upload.cjs.map +1 -0
  577. package/dist/data/chat/attachment-upload.d.ts +21 -0
  578. package/dist/data/chat/attachment-upload.d.ts.map +1 -0
  579. package/dist/data/chat/attachment-upload.js +33 -0
  580. package/dist/data/chat/attachment-upload.js.map +1 -0
  581. package/dist/data/chat/effort-icons.cjs +36 -6
  582. package/dist/data/chat/effort-icons.cjs.map +1 -1
  583. package/dist/data/chat/effort-icons.d.ts +6 -3
  584. package/dist/data/chat/effort-icons.d.ts.map +1 -1
  585. package/dist/data/chat/effort-icons.js +37 -7
  586. package/dist/data/chat/effort-icons.js.map +1 -1
  587. package/dist/data/chat/index.d.ts +3 -1
  588. package/dist/data/chat/index.d.ts.map +1 -1
  589. package/dist/data/chat/models.cjs +8 -0
  590. package/dist/data/chat/models.cjs.map +1 -0
  591. package/dist/data/chat/models.d.ts +11 -0
  592. package/dist/data/chat/models.d.ts.map +1 -0
  593. package/dist/data/chat/models.js +8 -0
  594. package/dist/data/chat/models.js.map +1 -0
  595. package/dist/data/chat/provider-icons.cjs +49 -16
  596. package/dist/data/chat/provider-icons.cjs.map +1 -1
  597. package/dist/data/chat/provider-icons.d.ts +2 -0
  598. package/dist/data/chat/provider-icons.d.ts.map +1 -1
  599. package/dist/data/chat/provider-icons.js +50 -17
  600. package/dist/data/chat/provider-icons.js.map +1 -1
  601. package/dist/data/chat/types.cjs.map +1 -1
  602. package/dist/data/chat/types.d.ts +21 -0
  603. package/dist/data/chat/types.d.ts.map +1 -1
  604. package/dist/data/chat/types.js.map +1 -1
  605. package/dist/data/examples/markdown-preview-mock.cjs +45 -0
  606. package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
  607. package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
  608. package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
  609. package/dist/data/examples/markdown-preview-mock.js +45 -0
  610. package/dist/data/examples/markdown-preview-mock.js.map +1 -0
  611. package/dist/data/examples/markdown-syntax.cjs +36 -0
  612. package/dist/data/examples/markdown-syntax.cjs.map +1 -0
  613. package/dist/data/examples/markdown-syntax.d.ts +12 -0
  614. package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
  615. package/dist/data/examples/markdown-syntax.js +36 -0
  616. package/dist/data/examples/markdown-syntax.js.map +1 -0
  617. package/dist/data/examples/markdown-syntax.md.cjs +4 -0
  618. package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
  619. package/dist/data/examples/markdown-syntax.md.js +5 -0
  620. package/dist/data/examples/markdown-syntax.md.js.map +1 -0
  621. package/dist/data/server-timing.cjs +120 -0
  622. package/dist/data/server-timing.cjs.map +1 -0
  623. package/dist/data/server-timing.d.ts +11 -0
  624. package/dist/data/server-timing.d.ts.map +1 -0
  625. package/dist/data/server-timing.js +120 -0
  626. package/dist/data/server-timing.js.map +1 -0
  627. package/dist/data/task-process-details.cjs +48 -0
  628. package/dist/data/task-process-details.cjs.map +1 -0
  629. package/dist/data/task-process-details.d.ts +5 -0
  630. package/dist/data/task-process-details.d.ts.map +1 -0
  631. package/dist/data/task-process-details.js +48 -0
  632. package/dist/data/task-process-details.js.map +1 -0
  633. package/dist/data/version-info.cjs +3 -3
  634. package/dist/data/version-info.js +3 -3
  635. package/dist/data.cjs +37 -0
  636. package/dist/data.cjs.map +1 -1
  637. package/dist/data.d.ts +9 -1
  638. package/dist/data.d.ts.map +1 -1
  639. package/dist/data.js +37 -0
  640. package/dist/data.js.map +1 -1
  641. package/dist/hooks/use-hotkey.cjs +98 -0
  642. package/dist/hooks/use-hotkey.cjs.map +1 -0
  643. package/dist/hooks/use-hotkey.d.ts +42 -0
  644. package/dist/hooks/use-hotkey.d.ts.map +1 -0
  645. package/dist/hooks/use-hotkey.js +98 -0
  646. package/dist/hooks/use-hotkey.js.map +1 -0
  647. package/dist/hooks/use-task-run.cjs +23 -1
  648. package/dist/hooks/use-task-run.cjs.map +1 -1
  649. package/dist/hooks/use-task-run.d.ts.map +1 -1
  650. package/dist/hooks/use-task-run.js +23 -1
  651. package/dist/hooks/use-task-run.js.map +1 -1
  652. package/dist/hooks.cjs +4 -0
  653. package/dist/hooks.cjs.map +1 -1
  654. package/dist/hooks.d.ts +1 -0
  655. package/dist/hooks.d.ts.map +1 -1
  656. package/dist/hooks.js +4 -0
  657. package/dist/hooks.js.map +1 -1
  658. package/dist/icons/components/UiBank.cjs +15 -0
  659. package/dist/icons/components/UiBank.cjs.map +1 -0
  660. package/dist/icons/components/UiBank.d.ts +15 -0
  661. package/dist/icons/components/UiBank.d.ts.map +1 -0
  662. package/dist/icons/components/UiBank.js +15 -0
  663. package/dist/icons/components/UiBank.js.map +1 -0
  664. package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
  665. package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
  666. package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
  667. package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
  668. package/dist/icons/components/UiChartOfAccounts.js +15 -0
  669. package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
  670. package/dist/icons/components/UiCloudUpload.cjs +15 -0
  671. package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
  672. package/dist/icons/components/UiCloudUpload.d.ts +15 -0
  673. package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
  674. package/dist/icons/components/UiCloudUpload.js +15 -0
  675. package/dist/icons/components/UiCloudUpload.js.map +1 -0
  676. package/dist/icons/components/UiLedger.cjs +15 -0
  677. package/dist/icons/components/UiLedger.cjs.map +1 -0
  678. package/dist/icons/components/UiLedger.d.ts +15 -0
  679. package/dist/icons/components/UiLedger.d.ts.map +1 -0
  680. package/dist/icons/components/UiLedger.js +15 -0
  681. package/dist/icons/components/UiLedger.js.map +1 -0
  682. package/dist/icons/components/UiReceipt.cjs +15 -0
  683. package/dist/icons/components/UiReceipt.cjs.map +1 -0
  684. package/dist/icons/components/UiReceipt.d.ts +15 -0
  685. package/dist/icons/components/UiReceipt.d.ts.map +1 -0
  686. package/dist/icons/components/UiReceipt.js +15 -0
  687. package/dist/icons/components/UiReceipt.js.map +1 -0
  688. package/dist/icons/index.d.ts +10 -0
  689. package/dist/icons/index.d.ts.map +1 -1
  690. package/dist/icons.cjs +15 -0
  691. package/dist/icons.cjs.map +1 -1
  692. package/dist/icons.js +15 -0
  693. package/dist/icons.js.map +1 -1
  694. package/dist/index.cjs +54 -0
  695. package/dist/index.cjs.map +1 -1
  696. package/dist/index.js +56 -2
  697. package/dist/index.js.map +1 -1
  698. package/dist/layout/AppShell.cjs +270 -238
  699. package/dist/layout/AppShell.cjs.map +1 -1
  700. package/dist/layout/AppShell.d.ts +9 -0
  701. package/dist/layout/AppShell.d.ts.map +1 -1
  702. package/dist/layout/AppShell.debug.cjs +53 -0
  703. package/dist/layout/AppShell.debug.cjs.map +1 -0
  704. package/dist/layout/AppShell.debug.d.ts +6 -0
  705. package/dist/layout/AppShell.debug.d.ts.map +1 -0
  706. package/dist/layout/AppShell.debug.js +53 -0
  707. package/dist/layout/AppShell.debug.js.map +1 -0
  708. package/dist/layout/AppShell.js +269 -237
  709. package/dist/layout/AppShell.js.map +1 -1
  710. package/dist/layout/AppShell.nav.cjs +90 -0
  711. package/dist/layout/AppShell.nav.cjs.map +1 -0
  712. package/dist/layout/AppShell.nav.d.ts +7 -0
  713. package/dist/layout/AppShell.nav.d.ts.map +1 -0
  714. package/dist/layout/AppShell.nav.js +90 -0
  715. package/dist/layout/AppShell.nav.js.map +1 -0
  716. package/dist/layout/AppSidebar.cjs +35 -5
  717. package/dist/layout/AppSidebar.cjs.map +1 -1
  718. package/dist/layout/AppSidebar.d.ts +4 -1
  719. package/dist/layout/AppSidebar.d.ts.map +1 -1
  720. package/dist/layout/AppSidebar.js +35 -5
  721. package/dist/layout/AppSidebar.js.map +1 -1
  722. package/dist/layout/Panel.cjs +25 -41
  723. package/dist/layout/Panel.cjs.map +1 -1
  724. package/dist/layout/Panel.d.ts +2 -1
  725. package/dist/layout/Panel.d.ts.map +1 -1
  726. package/dist/layout/Panel.js +26 -42
  727. package/dist/layout/Panel.js.map +1 -1
  728. package/dist/layout/PanelFrame.cjs +56 -0
  729. package/dist/layout/PanelFrame.cjs.map +1 -0
  730. package/dist/layout/PanelFrame.d.ts +15 -0
  731. package/dist/layout/PanelFrame.d.ts.map +1 -0
  732. package/dist/layout/PanelFrame.js +56 -0
  733. package/dist/layout/PanelFrame.js.map +1 -0
  734. package/dist/layout/Section.cjs +51 -41
  735. package/dist/layout/Section.cjs.map +1 -1
  736. package/dist/layout/Section.d.ts +3 -2
  737. package/dist/layout/Section.d.ts.map +1 -1
  738. package/dist/layout/Section.js +51 -41
  739. package/dist/layout/Section.js.map +1 -1
  740. package/dist/layout/content-width.cjs +8 -0
  741. package/dist/layout/content-width.cjs.map +1 -0
  742. package/dist/layout/content-width.d.ts +3 -0
  743. package/dist/layout/content-width.d.ts.map +1 -0
  744. package/dist/layout/content-width.js +8 -0
  745. package/dist/layout/content-width.js.map +1 -0
  746. package/dist/overlay/CommandPalette.cjs +207 -0
  747. package/dist/overlay/CommandPalette.cjs.map +1 -0
  748. package/dist/overlay/CommandPalette.d.ts +71 -0
  749. package/dist/overlay/CommandPalette.d.ts.map +1 -0
  750. package/dist/overlay/CommandPalette.js +207 -0
  751. package/dist/overlay/CommandPalette.js.map +1 -0
  752. package/dist/overlay/CommandPalette.model.cjs +70 -0
  753. package/dist/overlay/CommandPalette.model.cjs.map +1 -0
  754. package/dist/overlay/CommandPalette.model.d.ts +71 -0
  755. package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
  756. package/dist/overlay/CommandPalette.model.js +70 -0
  757. package/dist/overlay/CommandPalette.model.js.map +1 -0
  758. package/dist/overlay/CommandPaletteList.cjs +88 -0
  759. package/dist/overlay/CommandPaletteList.cjs.map +1 -0
  760. package/dist/overlay/CommandPaletteList.d.ts +23 -0
  761. package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
  762. package/dist/overlay/CommandPaletteList.js +88 -0
  763. package/dist/overlay/CommandPaletteList.js.map +1 -0
  764. package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
  765. package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
  766. package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
  767. package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
  768. package/dist/overlay/CommandPaletteTrigger.js +36 -0
  769. package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
  770. package/dist/overlay/HoverCard.cjs.map +1 -1
  771. package/dist/overlay/HoverCard.d.ts +2 -2
  772. package/dist/overlay/HoverCard.d.ts.map +1 -1
  773. package/dist/overlay/HoverCard.js.map +1 -1
  774. package/dist/overlay/Modal.cjs +12 -5
  775. package/dist/overlay/Modal.cjs.map +1 -1
  776. package/dist/overlay/Modal.d.ts.map +1 -1
  777. package/dist/overlay/Modal.js +12 -5
  778. package/dist/overlay/Modal.js.map +1 -1
  779. package/dist/overlay/modalStack.js +1 -1
  780. package/dist/overlay/zIndex.cjs +2 -0
  781. package/dist/overlay/zIndex.cjs.map +1 -1
  782. package/dist/overlay/zIndex.js +2 -0
  783. package/dist/overlay/zIndex.js.map +1 -1
  784. package/dist/rpc/EntityExplorerApp.cjs +6 -0
  785. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  786. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  787. package/dist/rpc/EntityExplorerApp.js +6 -0
  788. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  789. package/dist/rpc/OperationCatalog.cjs +45 -71
  790. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  791. package/dist/rpc/OperationCatalog.d.ts +12 -2
  792. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  793. package/dist/rpc/OperationCatalog.js +46 -72
  794. package/dist/rpc/OperationCatalog.js.map +1 -1
  795. package/dist/rpc/OperationResultView.cjs +42 -0
  796. package/dist/rpc/OperationResultView.cjs.map +1 -1
  797. package/dist/rpc/OperationResultView.d.ts +2 -1
  798. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  799. package/dist/rpc/OperationResultView.js +42 -0
  800. package/dist/rpc/OperationResultView.js.map +1 -1
  801. package/dist/rpc/clickyMetadata.cjs +2 -1
  802. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  803. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  804. package/dist/rpc/clickyMetadata.js +2 -1
  805. package/dist/rpc/clickyMetadata.js.map +1 -1
  806. package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
  807. package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
  808. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
  809. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
  810. package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
  811. package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
  812. package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
  813. package/dist/rpc/types.cjs.map +1 -1
  814. package/dist/rpc/types.d.ts +1 -0
  815. package/dist/rpc/types.d.ts.map +1 -1
  816. package/dist/rpc/types.js.map +1 -1
  817. package/dist/styles.css +1 -1
  818. package/dist/tailwind-preset.cjs +15 -0
  819. package/dist/tailwind-preset.cjs.map +1 -1
  820. package/dist/tailwind-preset.d.ts.map +1 -1
  821. package/dist/tailwind-preset.js +15 -0
  822. package/dist/tailwind-preset.js.map +1 -1
  823. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
3
  import { cn } from "../../lib/utils.js";
4
4
  import { Button } from "../../components/button.js";
@@ -10,17 +10,26 @@ function PromptInput({
10
10
  onSubmit,
11
11
  onStop,
12
12
  status,
13
+ allowSubmitWhileStreaming = false,
14
+ disabled = false,
15
+ stopLabel = "Stop",
13
16
  placeholder = "What would you like to know?",
14
17
  enableAttachments = false,
18
+ attachmentUpload,
19
+ acceptedMediaTypes,
20
+ attachmentLimits,
15
21
  toolbar,
22
+ inputAccessory,
16
23
  className
17
24
  }) {
18
25
  const [value, setValue] = useState("");
19
26
  const [files, setFiles] = useState([]);
27
+ const [attachmentError, setAttachmentError] = useState("");
20
28
  const isGenerating = status === "submitted" || status === "streaming";
21
29
  const submit = () => {
22
30
  const text = value.trim();
23
- if (!text && files.length === 0 || isGenerating) return;
31
+ if (!text && files.length === 0 || disabled || isGenerating && !allowSubmitWhileStreaming)
32
+ return;
24
33
  onSubmit(text, files);
25
34
  setValue("");
26
35
  setFiles([]);
@@ -35,7 +44,7 @@ function PromptInput({
35
44
  submit();
36
45
  }
37
46
  };
38
- const canSubmit = value.trim().length > 0 || files.length > 0;
47
+ const canSubmit = !disabled && (!isGenerating || allowSubmitWhileStreaming) && (value.trim().length > 0 || files.length > 0);
39
48
  return /* @__PURE__ */ jsxs(
40
49
  "form",
41
50
  {
@@ -45,7 +54,16 @@ function PromptInput({
45
54
  className
46
55
  ),
47
56
  children: [
48
- enableAttachments && /* @__PURE__ */ jsx(AttachmentList, { files, onRemove: (i) => setFiles((f) => f.filter((_, j) => j !== i)) }),
57
+ enableAttachments && /* @__PURE__ */ jsxs(Fragment, { children: [
58
+ /* @__PURE__ */ jsx(
59
+ AttachmentList,
60
+ {
61
+ files,
62
+ onRemove: (i) => setFiles((f) => f.filter((_, j) => j !== i))
63
+ }
64
+ ),
65
+ attachmentError && /* @__PURE__ */ jsx("p", { className: "px-1 text-xs text-destructive", children: attachmentError })
66
+ ] }),
49
67
  /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-2", children: [
50
68
  /* @__PURE__ */ jsx(
51
69
  "textarea",
@@ -54,14 +72,47 @@ function PromptInput({
54
72
  onChange: (e) => setValue(e.target.value),
55
73
  onKeyDown: handleKeyDown,
56
74
  placeholder,
75
+ disabled,
57
76
  rows: 1,
58
77
  className: "max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground"
59
78
  }
60
79
  ),
61
- isGenerating && onStop ? /* @__PURE__ */ jsx(Button, { type: "button", size: "icon", variant: "secondary", "aria-label": "Stop", onClick: onStop, children: /* @__PURE__ */ jsx(Icon, { icon: UiStop, className: "size-4" }) }) : /* @__PURE__ */ jsx(Button, { type: "submit", size: "icon", "aria-label": "Send", disabled: !canSubmit, children: /* @__PURE__ */ jsx(Icon, { icon: UiArrowUp, className: "size-4" }) })
80
+ inputAccessory,
81
+ isGenerating && onStop && /* @__PURE__ */ jsx(
82
+ Button,
83
+ {
84
+ type: "button",
85
+ size: "icon",
86
+ variant: "secondary",
87
+ "aria-label": stopLabel,
88
+ onClick: onStop,
89
+ children: /* @__PURE__ */ jsx(Icon, { icon: UiStop, className: "size-4" })
90
+ }
91
+ ),
92
+ (!isGenerating || allowSubmitWhileStreaming) && /* @__PURE__ */ jsx(
93
+ Button,
94
+ {
95
+ type: "submit",
96
+ size: "icon",
97
+ "aria-label": "Send",
98
+ disabled: !canSubmit,
99
+ children: /* @__PURE__ */ jsx(Icon, { icon: UiArrowUp, className: "size-4" })
100
+ }
101
+ )
62
102
  ] }),
63
103
  (toolbar || enableAttachments) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
64
- enableAttachments && /* @__PURE__ */ jsx(AttachmentButton, { onAdd: (p) => setFiles((f) => [...f, ...p]), disabled: isGenerating }),
104
+ enableAttachments && /* @__PURE__ */ jsx(
105
+ AttachmentButton,
106
+ {
107
+ onAdd: (p) => setFiles((f) => [...f, ...p]),
108
+ disabled: disabled || isGenerating,
109
+ files,
110
+ onError: setAttachmentError,
111
+ ...attachmentUpload ? { upload: attachmentUpload } : {},
112
+ ...acceptedMediaTypes ? { acceptedMediaTypes } : {},
113
+ ...attachmentLimits ? { limits: attachmentLimits } : {}
114
+ }
115
+ ),
65
116
  toolbar
66
117
  ] })
67
118
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"PromptInput.js","sources":["../../../src/data/chat/PromptInput.tsx"],"sourcesContent":["import { useState, type FormEvent, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiArrowUp, UiStop } from \"../../icons\";\nimport { AttachmentButton, AttachmentList } from \"./Attachment\";\nimport type { ChatStatus, FileUIPart } from \"./types\";\n\nexport type PromptInputProps = {\n /** Called with the trimmed text and any attachments when the user submits. */\n onSubmit: (text: string, files: FileUIPart[]) => void;\n /** Called when the user stops an in-flight generation. */\n onStop?: (() => void) | undefined;\n /** Current chat status; drives the submit/stop button affordance. */\n status?: ChatStatus | undefined;\n placeholder?: string | undefined;\n /** Enables the attachment button and chips. */\n enableAttachments?: boolean | undefined;\n /** Toolbar content (e.g. model/effort selectors) rendered in the footer. */\n toolbar?: ReactNode;\n className?: string | undefined;\n};\n\n/** Auto-growing prompt textarea with a submit/stop button, optional attachment\n * controls, and a toolbar slot (model/effort selectors). Enter submits;\n * Shift+Enter inserts a newline; while streaming the button becomes a stop\n * control. */\nexport function PromptInput({\n onSubmit,\n onStop,\n status,\n placeholder = \"What would you like to know?\",\n enableAttachments = false,\n toolbar,\n className,\n}: PromptInputProps) {\n const [value, setValue] = useState(\"\");\n const [files, setFiles] = useState<FileUIPart[]>([]);\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n const submit = () => {\n const text = value.trim();\n if ((!text && files.length === 0) || isGenerating) return;\n onSubmit(text, files);\n setValue(\"\");\n setFiles([]);\n };\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n submit();\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n submit();\n }\n };\n\n const canSubmit = value.trim().length > 0 || files.length > 0;\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\n \"flex flex-col gap-2 rounded-lg border border-input bg-background p-2\",\n className,\n )}\n >\n {enableAttachments && (\n <AttachmentList files={files} onRemove={(i) => setFiles((f) => f.filter((_, j) => j !== i))} />\n )}\n\n <div className=\"flex items-end gap-2\">\n <textarea\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n rows={1}\n className=\"max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n />\n {isGenerating && onStop ? (\n <Button type=\"button\" size=\"icon\" variant=\"secondary\" aria-label=\"Stop\" onClick={onStop}>\n <Icon icon={UiStop} className=\"size-4\" />\n </Button>\n ) : (\n <Button type=\"submit\" size=\"icon\" aria-label=\"Send\" disabled={!canSubmit}>\n <Icon icon={UiArrowUp} className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {(toolbar || enableAttachments) && (\n <div className=\"flex items-center gap-2\">\n {enableAttachments && (\n <AttachmentButton onAdd={(p) => setFiles((f) => [...f, ...p])} disabled={isGenerating} />\n )}\n {toolbar}\n </div>\n )}\n </form>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AA2BO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,CAAA,CAAE;AACnD,QAAM,eAAe,WAAW,eAAe,WAAW;AAE1D,QAAM,SAAS,MAAM;AACnB,UAAM,OAAO,MAAM,KAAA;AACnB,QAAK,CAAC,QAAQ,MAAM,WAAW,KAAM,aAAc;AACnD,aAAS,MAAM,KAAK;AACpB,aAAS,EAAE;AACX,aAAS,CAAA,CAAE;AAAA,EACb;AAEA,QAAM,eAAe,CAAC,MAAiB;AACrC,MAAE,eAAA;AACF,WAAA;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,MAA0C;AAC/D,QAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,aAAa;AAClE,QAAE,eAAA;AACF,aAAA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,KAAA,EAAO,SAAS,KAAK,MAAM,SAAS;AAE5D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,yCACE,gBAAA,EAAe,OAAc,UAAU,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC,GAAG;AAAA,QAG/F,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,cACxC,WAAW;AAAA,cACX;AAAA,cACA,MAAM;AAAA,cACN,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEX,gBAAgB,SACf,oBAAC,QAAA,EAAO,MAAK,UAAS,MAAK,QAAO,SAAQ,aAAY,cAAW,QAAO,SAAS,QAC/E,UAAA,oBAAC,MAAA,EAAK,MAAM,QAAQ,WAAU,SAAA,CAAS,GACzC,IAEA,oBAAC,QAAA,EAAO,MAAK,UAAS,MAAK,QAAO,cAAW,QAAO,UAAU,CAAC,WAC7D,UAAA,oBAAC,MAAA,EAAK,MAAM,WAAW,WAAU,UAAS,EAAA,CAC5C;AAAA,QAAA,GAEJ;AAAA,SAEE,WAAW,sBACX,qBAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,UAAA,yCACE,kBAAA,EAAiB,OAAO,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,cAAc;AAAA,UAExF;AAAA,QAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"PromptInput.js","sources":["../../../src/data/chat/PromptInput.tsx"],"sourcesContent":["import {\n useState,\n type FormEvent,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiArrowUp, UiStop } from \"../../icons\";\nimport {\n AttachmentButton,\n AttachmentList,\n} from \"./Attachment\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"./attachment-upload\";\nimport type { ChatStatus, FileUIPart } from \"./types\";\n\nexport type PromptInputProps = {\n /** Called with the trimmed text and any attachments when the user submits. */\n onSubmit: (text: string, files: FileUIPart[]) => void;\n /** Called when the user stops an in-flight generation. */\n onStop?: (() => void) | undefined;\n /** Current chat status; drives the submit/stop button affordance. */\n status?: ChatStatus | undefined;\n allowSubmitWhileStreaming?: boolean | undefined;\n disabled?: boolean | undefined;\n stopLabel?: string | undefined;\n placeholder?: string | undefined;\n /** Enables the attachment button and chips. */\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n acceptedMediaTypes?: string[] | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n /** Toolbar content (e.g. model/effort selectors) rendered in the footer. */\n toolbar?: ReactNode;\n /** Compact host control rendered beside the textarea and submit button. */\n inputAccessory?: ReactNode;\n className?: string | undefined;\n};\n\n/** Auto-growing prompt textarea with a submit/stop button, optional attachment\n * controls, and a toolbar slot (model/effort selectors). Enter submits;\n * Shift+Enter inserts a newline; while streaming the button becomes a stop\n * control. */\nexport function PromptInput({\n onSubmit,\n onStop,\n status,\n allowSubmitWhileStreaming = false,\n disabled = false,\n stopLabel = \"Stop\",\n placeholder = \"What would you like to know?\",\n enableAttachments = false,\n attachmentUpload,\n acceptedMediaTypes,\n attachmentLimits,\n toolbar,\n inputAccessory,\n className,\n}: PromptInputProps) {\n const [value, setValue] = useState(\"\");\n const [files, setFiles] = useState<FileUIPart[]>([]);\n const [attachmentError, setAttachmentError] = useState(\"\");\n const isGenerating = status === \"submitted\" || status === \"streaming\";\n\n const submit = () => {\n const text = value.trim();\n if (\n (!text && files.length === 0) ||\n disabled ||\n (isGenerating && !allowSubmitWhileStreaming)\n )\n return;\n onSubmit(text, files);\n setValue(\"\");\n setFiles([]);\n };\n\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n submit();\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !e.nativeEvent.isComposing) {\n e.preventDefault();\n submit();\n }\n };\n\n const canSubmit =\n !disabled &&\n (!isGenerating || allowSubmitWhileStreaming) &&\n (value.trim().length > 0 || files.length > 0);\n\n return (\n <form\n onSubmit={handleSubmit}\n className={cn(\n \"flex flex-col gap-2 rounded-lg border border-input bg-background p-2\",\n className,\n )}\n >\n {enableAttachments && (\n <>\n <AttachmentList\n files={files}\n onRemove={(i) => setFiles((f) => f.filter((_, j) => j !== i))}\n />\n {attachmentError && (\n <p className=\"px-1 text-xs text-destructive\">{attachmentError}</p>\n )}\n </>\n )}\n\n <div className=\"flex items-end gap-2\">\n <textarea\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={1}\n className=\"max-h-48 min-h-9 flex-1 resize-none bg-transparent px-1 py-1.5 text-sm outline-none placeholder:text-muted-foreground\"\n />\n {inputAccessory}\n {isGenerating && onStop && (\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"secondary\"\n aria-label={stopLabel}\n onClick={onStop}\n >\n <Icon icon={UiStop} className=\"size-4\" />\n </Button>\n )}\n {(!isGenerating || allowSubmitWhileStreaming) && (\n <Button\n type=\"submit\"\n size=\"icon\"\n aria-label=\"Send\"\n disabled={!canSubmit}\n >\n <Icon icon={UiArrowUp} className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {(toolbar || enableAttachments) && (\n <div className=\"flex items-center gap-2\">\n {enableAttachments && (\n <AttachmentButton\n onAdd={(p) => setFiles((f) => [...f, ...p])}\n disabled={disabled || isGenerating}\n files={files}\n onError={setAttachmentError}\n {...(attachmentUpload ? { upload: attachmentUpload } : {})}\n {...(acceptedMediaTypes ? { acceptedMediaTypes } : {})}\n {...(attachmentLimits ? { limits: attachmentLimits } : {})}\n />\n )}\n {toolbar}\n </div>\n )}\n </form>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AA+CO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAA4B;AAAA,EAC5B,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AACnB,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,CAAA,CAAE;AACnD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,EAAE;AACzD,QAAM,eAAe,WAAW,eAAe,WAAW;AAE1D,QAAM,SAAS,MAAM;AACnB,UAAM,OAAO,MAAM,KAAA;AACnB,QACG,CAAC,QAAQ,MAAM,WAAW,KAC3B,YACC,gBAAgB,CAAC;AAElB;AACF,aAAS,MAAM,KAAK;AACpB,aAAS,EAAE;AACX,aAAS,CAAA,CAAE;AAAA,EACb;AAEA,QAAM,eAAe,CAAC,MAAiB;AACrC,MAAE,eAAA;AACF,WAAA;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,MAA0C;AAC/D,QAAI,EAAE,QAAQ,WAAW,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,aAAa;AAClE,QAAE,eAAA;AACF,aAAA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YACJ,CAAC,aACA,CAAC,gBAAgB,+BACjB,MAAM,KAAA,EAAO,SAAS,KAAK,MAAM,SAAS;AAE7C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,qBACC,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,UAAU,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,UAE7D,mBACC,oBAAC,KAAA,EAAE,WAAU,iCAAiC,UAAA,gBAAA,CAAgB;AAAA,QAAA,GAElE;AAAA,QAGF,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,UAAU,CAAC,MAAM,SAAS,EAAE,OAAO,KAAK;AAAA,cACxC,WAAW;AAAA,cACX;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAEX;AAAA,UACA,gBAAgB,UACf;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAY;AAAA,cACZ,SAAS;AAAA,cAET,UAAA,oBAAC,MAAA,EAAK,MAAM,QAAQ,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,WAGzC,CAAC,gBAAgB,8BACjB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,MAAK;AAAA,cACL,cAAW;AAAA,cACX,UAAU,CAAC;AAAA,cAEX,UAAA,oBAAC,MAAA,EAAK,MAAM,WAAW,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAC5C,GAEJ;AAAA,SAEE,WAAW,sBACX,qBAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,UAAA,qBACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,cAC1C,UAAU,YAAY;AAAA,cACtB;AAAA,cACA,SAAS;AAAA,cACR,GAAI,mBAAmB,EAAE,QAAQ,iBAAA,IAAqB,CAAA;AAAA,cACtD,GAAI,qBAAqB,EAAE,mBAAA,IAAuB,CAAA;AAAA,cAClD,GAAI,mBAAmB,EAAE,QAAQ,qBAAqB,CAAA;AAAA,YAAC;AAAA,UAAA;AAAA,UAG3D;AAAA,QAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ async function postToolApproval(decision, fetcher = fetch) {
4
+ if (!decision.threadId.trim()) {
5
+ throw new Error("A thread id is required to resolve this tool approval.");
6
+ }
7
+ const base = decision.approvalApi.replace(/\/+$/, "");
8
+ const endpoint = `${base}/${encodeURIComponent(decision.threadId)}/approvals/${encodeURIComponent(decision.approvalId)}`;
9
+ const response = await fetcher(endpoint, {
10
+ method: "POST",
11
+ headers: { "Content-Type": "application/json" },
12
+ body: JSON.stringify(
13
+ decision.reason ? { approved: decision.approved, reason: decision.reason } : { approved: decision.approved }
14
+ )
15
+ });
16
+ if (!response.ok) {
17
+ throw new Error(`Tool approval failed with status ${response.status}.`);
18
+ }
19
+ }
20
+ exports.postToolApproval = postToolApproval;
21
+ //# sourceMappingURL=approval.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.cjs","sources":["../../../src/data/chat/approval.ts"],"sourcesContent":["export type ToolApprovalDecision = {\n approvalApi: string;\n threadId: string;\n approvalId: string;\n approved: boolean;\n reason?: string;\n};\n\ntype ApprovalFetch = (\n input: RequestInfo | URL,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport async function postToolApproval(\n decision: ToolApprovalDecision,\n fetcher: ApprovalFetch = fetch,\n): Promise<void> {\n if (!decision.threadId.trim()) {\n throw new Error(\"A thread id is required to resolve this tool approval.\");\n }\n const base = decision.approvalApi.replace(/\\/+$/, \"\");\n const endpoint = `${base}/${encodeURIComponent(decision.threadId)}/approvals/${encodeURIComponent(decision.approvalId)}`;\n const response = await fetcher(endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(\n decision.reason\n ? { approved: decision.approved, reason: decision.reason }\n : { approved: decision.approved },\n ),\n });\n if (!response.ok) {\n throw new Error(`Tool approval failed with status ${response.status}.`);\n }\n}\n"],"names":[],"mappings":";;AAaA,eAAsB,iBACpB,UACA,UAAyB,OACV;AACf,MAAI,CAAC,SAAS,SAAS,QAAQ;AAC7B,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,QAAM,OAAO,SAAS,YAAY,QAAQ,QAAQ,EAAE;AACpD,QAAM,WAAW,GAAG,IAAI,IAAI,mBAAmB,SAAS,QAAQ,CAAC,cAAc,mBAAmB,SAAS,UAAU,CAAC;AACtH,QAAM,WAAW,MAAM,QAAQ,UAAU;AAAA,IACvC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,KAAK;AAAA,MACT,SAAS,SACL,EAAE,UAAU,SAAS,UAAU,QAAQ,SAAS,OAAA,IAChD,EAAE,UAAU,SAAS,SAAA;AAAA,IAAS;AAAA,EACpC,CACD;AACD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,oCAAoC,SAAS,MAAM,GAAG;AAAA,EACxE;AACF;;"}
@@ -0,0 +1,11 @@
1
+ export type ToolApprovalDecision = {
2
+ approvalApi: string;
3
+ threadId: string;
4
+ approvalId: string;
5
+ approved: boolean;
6
+ reason?: string;
7
+ };
8
+ type ApprovalFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
9
+ export declare function postToolApproval(decision: ToolApprovalDecision, fetcher?: ApprovalFetch): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/data/chat/approval.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,aAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,21 @@
1
+ async function postToolApproval(decision, fetcher = fetch) {
2
+ if (!decision.threadId.trim()) {
3
+ throw new Error("A thread id is required to resolve this tool approval.");
4
+ }
5
+ const base = decision.approvalApi.replace(/\/+$/, "");
6
+ const endpoint = `${base}/${encodeURIComponent(decision.threadId)}/approvals/${encodeURIComponent(decision.approvalId)}`;
7
+ const response = await fetcher(endpoint, {
8
+ method: "POST",
9
+ headers: { "Content-Type": "application/json" },
10
+ body: JSON.stringify(
11
+ decision.reason ? { approved: decision.approved, reason: decision.reason } : { approved: decision.approved }
12
+ )
13
+ });
14
+ if (!response.ok) {
15
+ throw new Error(`Tool approval failed with status ${response.status}.`);
16
+ }
17
+ }
18
+ export {
19
+ postToolApproval
20
+ };
21
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sources":["../../../src/data/chat/approval.ts"],"sourcesContent":["export type ToolApprovalDecision = {\n approvalApi: string;\n threadId: string;\n approvalId: string;\n approved: boolean;\n reason?: string;\n};\n\ntype ApprovalFetch = (\n input: RequestInfo | URL,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport async function postToolApproval(\n decision: ToolApprovalDecision,\n fetcher: ApprovalFetch = fetch,\n): Promise<void> {\n if (!decision.threadId.trim()) {\n throw new Error(\"A thread id is required to resolve this tool approval.\");\n }\n const base = decision.approvalApi.replace(/\\/+$/, \"\");\n const endpoint = `${base}/${encodeURIComponent(decision.threadId)}/approvals/${encodeURIComponent(decision.approvalId)}`;\n const response = await fetcher(endpoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(\n decision.reason\n ? { approved: decision.approved, reason: decision.reason }\n : { approved: decision.approved },\n ),\n });\n if (!response.ok) {\n throw new Error(`Tool approval failed with status ${response.status}.`);\n }\n}\n"],"names":[],"mappings":"AAaA,eAAsB,iBACpB,UACA,UAAyB,OACV;AACf,MAAI,CAAC,SAAS,SAAS,QAAQ;AAC7B,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,QAAM,OAAO,SAAS,YAAY,QAAQ,QAAQ,EAAE;AACpD,QAAM,WAAW,GAAG,IAAI,IAAI,mBAAmB,SAAS,QAAQ,CAAC,cAAc,mBAAmB,SAAS,UAAU,CAAC;AACtH,QAAM,WAAW,MAAM,QAAQ,UAAU;AAAA,IACvC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,KAAK;AAAA,MACT,SAAS,SACL,EAAE,UAAU,SAAS,UAAU,QAAQ,SAAS,OAAA,IAChD,EAAE,UAAU,SAAS,SAAA;AAAA,IAAS;AAAA,EACpC,CACD;AACD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,oCAAoC,SAAS,MAAM,GAAG;AAAA,EACxE;AACF;"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const DEFAULT_ATTACHMENT_LIMITS = {
4
+ maxFileBytes: 20 * 1024 * 1024,
5
+ maxRequestBytes: 50 * 1024 * 1024,
6
+ maxFiles: 10
7
+ };
8
+ function createAttachmentUploadAdapter(options = {}) {
9
+ const endpoint = options.endpoint ?? "/api/attachments";
10
+ const fetcher = options.fetch ?? globalThis.fetch;
11
+ return async (file) => {
12
+ const body = new FormData();
13
+ body.append("file", file, file.name);
14
+ const response = await fetcher(endpoint, { method: "POST", body });
15
+ const payload = await response.json();
16
+ if (!response.ok) {
17
+ throw new Error(
18
+ payload.error ?? `attachment upload failed (${response.status})`
19
+ );
20
+ }
21
+ return {
22
+ type: "file",
23
+ filename: payload.filename,
24
+ mediaType: payload.mediaType,
25
+ url: `${endpoint.replace(/\/$/, "")}/${payload.id}`,
26
+ attachmentId: payload.id,
27
+ size: payload.size
28
+ };
29
+ };
30
+ }
31
+ exports.DEFAULT_ATTACHMENT_LIMITS = DEFAULT_ATTACHMENT_LIMITS;
32
+ exports.createAttachmentUploadAdapter = createAttachmentUploadAdapter;
33
+ //# sourceMappingURL=attachment-upload.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-upload.cjs","sources":["../../../src/data/chat/attachment-upload.ts"],"sourcesContent":["import type { FileUIPart } from \"./types\";\n\nexport const DEFAULT_ATTACHMENT_LIMITS = {\n maxFileBytes: 20 * 1024 * 1024,\n maxRequestBytes: 50 * 1024 * 1024,\n maxFiles: 10,\n} as const;\n\nexport type AttachmentLimits = {\n maxFileBytes?: number;\n maxRequestBytes?: number;\n maxFiles?: number;\n};\n\nexport type AttachmentFilePart = FileUIPart & {\n attachmentId: string;\n size: number;\n};\n\nexport type AttachmentUploadAdapter = (file: File) => Promise<AttachmentFilePart>;\n\ntype AttachmentDescriptor = {\n id: string;\n filename: string;\n mediaType: string;\n size: number;\n};\n\nexport function createAttachmentUploadAdapter(\n options: {\n endpoint?: string;\n fetch?: typeof fetch;\n } = {},\n): AttachmentUploadAdapter {\n const endpoint = options.endpoint ?? \"/api/attachments\";\n const fetcher = options.fetch ?? globalThis.fetch;\n return async (file) => {\n const body = new FormData();\n body.append(\"file\", file, file.name);\n const response = await fetcher(endpoint, { method: \"POST\", body });\n const payload = (await response.json()) as AttachmentDescriptor & {\n error?: string;\n };\n if (!response.ok) {\n throw new Error(\n payload.error ?? `attachment upload failed (${response.status})`,\n );\n }\n return {\n type: \"file\",\n filename: payload.filename,\n mediaType: payload.mediaType,\n url: `${endpoint.replace(/\\/$/, \"\")}/${payload.id}`,\n attachmentId: payload.id,\n size: payload.size,\n };\n };\n}\n"],"names":[],"mappings":";;AAEO,MAAM,4BAA4B;AAAA,EACvC,cAAc,KAAK,OAAO;AAAA,EAC1B,iBAAiB,KAAK,OAAO;AAAA,EAC7B,UAAU;AACZ;AAsBO,SAAS,8BACd,UAGI,IACqB;AACzB,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,UAAU,QAAQ,SAAS,WAAW;AAC5C,SAAO,OAAO,SAAS;AACrB,UAAM,OAAO,IAAI,SAAA;AACjB,SAAK,OAAO,QAAQ,MAAM,KAAK,IAAI;AACnC,UAAM,WAAW,MAAM,QAAQ,UAAU,EAAE,QAAQ,QAAQ,MAAM;AACjE,UAAM,UAAW,MAAM,SAAS,KAAA;AAGhC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,QAAQ,SAAS,6BAA6B,SAAS,MAAM;AAAA,MAAA;AAAA,IAEjE;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,KAAK,GAAG,SAAS,QAAQ,OAAO,EAAE,CAAC,IAAI,QAAQ,EAAE;AAAA,MACjD,cAAc,QAAQ;AAAA,MACtB,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AACF;;;"}
@@ -0,0 +1,21 @@
1
+ import { FileUIPart } from './types';
2
+ export declare const DEFAULT_ATTACHMENT_LIMITS: {
3
+ readonly maxFileBytes: number;
4
+ readonly maxRequestBytes: number;
5
+ readonly maxFiles: 10;
6
+ };
7
+ export type AttachmentLimits = {
8
+ maxFileBytes?: number;
9
+ maxRequestBytes?: number;
10
+ maxFiles?: number;
11
+ };
12
+ export type AttachmentFilePart = FileUIPart & {
13
+ attachmentId: string;
14
+ size: number;
15
+ };
16
+ export type AttachmentUploadAdapter = (file: File) => Promise<AttachmentFilePart>;
17
+ export declare function createAttachmentUploadAdapter(options?: {
18
+ endpoint?: string;
19
+ fetch?: typeof fetch;
20
+ }): AttachmentUploadAdapter;
21
+ //# sourceMappingURL=attachment-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-upload.d.ts","sourceRoot":"","sources":["../../../src/data/chat/attachment-upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AASlF,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACjB,GACL,uBAAuB,CAwBzB"}
@@ -0,0 +1,33 @@
1
+ const DEFAULT_ATTACHMENT_LIMITS = {
2
+ maxFileBytes: 20 * 1024 * 1024,
3
+ maxRequestBytes: 50 * 1024 * 1024,
4
+ maxFiles: 10
5
+ };
6
+ function createAttachmentUploadAdapter(options = {}) {
7
+ const endpoint = options.endpoint ?? "/api/attachments";
8
+ const fetcher = options.fetch ?? globalThis.fetch;
9
+ return async (file) => {
10
+ const body = new FormData();
11
+ body.append("file", file, file.name);
12
+ const response = await fetcher(endpoint, { method: "POST", body });
13
+ const payload = await response.json();
14
+ if (!response.ok) {
15
+ throw new Error(
16
+ payload.error ?? `attachment upload failed (${response.status})`
17
+ );
18
+ }
19
+ return {
20
+ type: "file",
21
+ filename: payload.filename,
22
+ mediaType: payload.mediaType,
23
+ url: `${endpoint.replace(/\/$/, "")}/${payload.id}`,
24
+ attachmentId: payload.id,
25
+ size: payload.size
26
+ };
27
+ };
28
+ }
29
+ export {
30
+ DEFAULT_ATTACHMENT_LIMITS,
31
+ createAttachmentUploadAdapter
32
+ };
33
+ //# sourceMappingURL=attachment-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-upload.js","sources":["../../../src/data/chat/attachment-upload.ts"],"sourcesContent":["import type { FileUIPart } from \"./types\";\n\nexport const DEFAULT_ATTACHMENT_LIMITS = {\n maxFileBytes: 20 * 1024 * 1024,\n maxRequestBytes: 50 * 1024 * 1024,\n maxFiles: 10,\n} as const;\n\nexport type AttachmentLimits = {\n maxFileBytes?: number;\n maxRequestBytes?: number;\n maxFiles?: number;\n};\n\nexport type AttachmentFilePart = FileUIPart & {\n attachmentId: string;\n size: number;\n};\n\nexport type AttachmentUploadAdapter = (file: File) => Promise<AttachmentFilePart>;\n\ntype AttachmentDescriptor = {\n id: string;\n filename: string;\n mediaType: string;\n size: number;\n};\n\nexport function createAttachmentUploadAdapter(\n options: {\n endpoint?: string;\n fetch?: typeof fetch;\n } = {},\n): AttachmentUploadAdapter {\n const endpoint = options.endpoint ?? \"/api/attachments\";\n const fetcher = options.fetch ?? globalThis.fetch;\n return async (file) => {\n const body = new FormData();\n body.append(\"file\", file, file.name);\n const response = await fetcher(endpoint, { method: \"POST\", body });\n const payload = (await response.json()) as AttachmentDescriptor & {\n error?: string;\n };\n if (!response.ok) {\n throw new Error(\n payload.error ?? `attachment upload failed (${response.status})`,\n );\n }\n return {\n type: \"file\",\n filename: payload.filename,\n mediaType: payload.mediaType,\n url: `${endpoint.replace(/\\/$/, \"\")}/${payload.id}`,\n attachmentId: payload.id,\n size: payload.size,\n };\n };\n}\n"],"names":[],"mappings":"AAEO,MAAM,4BAA4B;AAAA,EACvC,cAAc,KAAK,OAAO;AAAA,EAC1B,iBAAiB,KAAK,OAAO;AAAA,EAC7B,UAAU;AACZ;AAsBO,SAAS,8BACd,UAGI,IACqB;AACzB,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,UAAU,QAAQ,SAAS,WAAW;AAC5C,SAAO,OAAO,SAAS;AACrB,UAAM,OAAO,IAAI,SAAA;AACjB,SAAK,OAAO,QAAQ,MAAM,KAAK,IAAI;AACnC,UAAM,WAAW,MAAM,QAAQ,UAAU,EAAE,QAAQ,QAAQ,MAAM;AACjE,UAAM,UAAW,MAAM,SAAS,KAAA;AAGhC,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,QAAQ,SAAS,6BAA6B,SAAS,MAAM;AAAA,MAAA;AAAA,IAEjE;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,KAAK,GAAG,SAAS,QAAQ,OAAO,EAAE,CAAC,IAAI,QAAQ,EAAE;AAAA,MACjD,cAAc,QAAQ;AAAA,MACtB,MAAM,QAAQ;AAAA,IAAA;AAAA,EAElB;AACF;"}
@@ -6,26 +6,47 @@ const UiBatteryVerticalHigh = require("../../icons/components/UiBatteryVerticalH
6
6
  const UiBatteryVerticalMedium = require("../../icons/components/UiBatteryVerticalMedium.cjs");
7
7
  const UiBatteryVerticalLow = require("../../icons/components/UiBatteryVerticalLow.cjs");
8
8
  const UiBatteryVerticalEmpty = require("../../icons/components/UiBatteryVerticalEmpty.cjs");
9
+ const DEFAULT_REASONING_EFFORTS = [
10
+ "low",
11
+ "medium",
12
+ "high",
13
+ "xhigh",
14
+ "max",
15
+ "ultra"
16
+ ];
9
17
  const EFFORT_LEVEL_ICONS = {
10
18
  minimal: UiBatteryVerticalEmpty.UiBatteryVerticalEmpty,
11
19
  low: UiBatteryVerticalLow.UiBatteryVerticalLow,
12
20
  medium: UiBatteryVerticalMedium.UiBatteryVerticalMedium,
13
21
  high: UiBatteryVerticalHigh.UiBatteryVerticalHigh,
22
+ xhigh: UiBatteryVerticalHigh.UiBatteryVerticalHigh,
14
23
  max: UiBatteryVerticalFull.UiBatteryVerticalFull,
24
+ ultra: UiBatteryVerticalFull.UiBatteryVerticalFull,
15
25
  adaptive: UiBatteryChargingVertical.UiBatteryChargingVertical
16
26
  };
27
+ const EFFORT_LEVEL_LABELS = {
28
+ minimal: "Minimal",
29
+ low: "Low",
30
+ medium: "Medium",
31
+ high: "High",
32
+ xhigh: "XHigh",
33
+ max: "Max",
34
+ ultra: "Ultra",
35
+ adaptive: "Adaptive"
36
+ };
17
37
  const EFFORT_LEVEL_COLOR = {
18
38
  minimal: "text-slate-500 [[data-theme=dark]_&]:text-slate-400",
19
- low: "text-sky-500 [[data-theme=dark]_&]:text-sky-400",
20
- medium: "text-amber-500 [[data-theme=dark]_&]:text-amber-400",
21
- high: "text-orange-500 [[data-theme=dark]_&]:text-orange-400",
22
- max: "text-red-500 [[data-theme=dark]_&]:text-red-400",
23
- adaptive: "text-indigo-500 [[data-theme=dark]_&]:text-indigo-400"
39
+ low: "text-sky-700 [[data-theme=dark]_&]:text-sky-400",
40
+ medium: "text-amber-700 [[data-theme=dark]_&]:text-amber-400",
41
+ high: "text-orange-700 [[data-theme=dark]_&]:text-orange-400",
42
+ xhigh: "text-orange-700 [[data-theme=dark]_&]:text-orange-400",
43
+ max: "text-red-700 [[data-theme=dark]_&]:text-red-400",
44
+ ultra: "text-fuchsia-700 [[data-theme=dark]_&]:text-fuchsia-400",
45
+ adaptive: "text-indigo-700 [[data-theme=dark]_&]:text-indigo-400"
24
46
  };
25
47
  function effortKey(value) {
26
48
  const key = value.trim().toLowerCase();
27
49
  if (key in EFFORT_LEVEL_ICONS) return key;
28
- if (key === "xhigh") return "high";
29
50
  return void 0;
30
51
  }
31
52
  function effortLevelIcon(value) {
@@ -36,8 +57,17 @@ function effortLevelColor(value) {
36
57
  const key = effortKey(value);
37
58
  return key ? EFFORT_LEVEL_COLOR[key] : void 0;
38
59
  }
60
+ function effortLevelLabel(value) {
61
+ const normalized = value.trim();
62
+ const key = effortKey(normalized);
63
+ if (key) return EFFORT_LEVEL_LABELS[key];
64
+ return `${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}`;
65
+ }
66
+ exports.DEFAULT_REASONING_EFFORTS = DEFAULT_REASONING_EFFORTS;
39
67
  exports.EFFORT_LEVEL_COLOR = EFFORT_LEVEL_COLOR;
40
68
  exports.EFFORT_LEVEL_ICONS = EFFORT_LEVEL_ICONS;
69
+ exports.EFFORT_LEVEL_LABELS = EFFORT_LEVEL_LABELS;
41
70
  exports.effortLevelColor = effortLevelColor;
42
71
  exports.effortLevelIcon = effortLevelIcon;
72
+ exports.effortLevelLabel = effortLevelLabel;
43
73
  //# sourceMappingURL=effort-icons.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"effort-icons.cjs","sources":["../../../src/data/chat/effort-icons.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBatteryChargingVertical,\n UiBatteryVerticalEmpty,\n UiBatteryVerticalFull,\n UiBatteryVerticalHigh,\n UiBatteryVerticalLow,\n UiBatteryVerticalMedium,\n} from \"../../icons\";\n\n// Reasoning / token-budget levels drawn as a filling vertical battery — the\n// glyph reads as \"budget filled\", adaptive charges up or down per step. The\n// icon map is the source of truth (chat layer); the AI session layer composes\n// semantic tone + label on top in agent-action-icons.ts.\n\nexport type EffortLevel =\n | \"minimal\"\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"max\"\n | \"adaptive\";\n\nexport const EFFORT_LEVEL_ICONS: Record<EffortLevel, StaticIconComponent> = {\n minimal: UiBatteryVerticalEmpty,\n low: UiBatteryVerticalLow,\n medium: UiBatteryVerticalMedium,\n high: UiBatteryVerticalHigh,\n max: UiBatteryVerticalFull,\n adaptive: UiBatteryChargingVertical,\n};\n\n// Text-color class per level, climbing the issue-severity ramp (slate sky →\n// amber → orange → red) with adaptive on indigo. Mirrors the tones the AI layer\n// assigns in agent-action-icons.ts; kept as literal classes so Tailwind scans\n// them and dark mode keys off the `data-theme` attribute (not `dark:`).\nexport const EFFORT_LEVEL_COLOR: Record<EffortLevel, string> = {\n minimal: \"text-slate-500 [[data-theme=dark]_&]:text-slate-400\",\n low: \"text-sky-500 [[data-theme=dark]_&]:text-sky-400\",\n medium: \"text-amber-500 [[data-theme=dark]_&]:text-amber-400\",\n high: \"text-orange-500 [[data-theme=dark]_&]:text-orange-400\",\n max: \"text-red-500 [[data-theme=dark]_&]:text-red-400\",\n adaptive: \"text-indigo-500 [[data-theme=dark]_&]:text-indigo-400\",\n};\n\nfunction effortKey(value: string): EffortLevel | undefined {\n const key = value.trim().toLowerCase();\n if (key in EFFORT_LEVEL_ICONS) return key as EffortLevel;\n if (key === \"xhigh\") return \"high\";\n return undefined;\n}\n\n/** Battery glyph for an effort value, tolerating aliases (`xhigh` → high).\n * Returns undefined when the value isn't a known effort level. */\nexport function effortLevelIcon(value: string): StaticIconComponent | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_ICONS[key] : undefined;\n}\n\n/** Tone text-color class for an effort value, or undefined when unknown. */\nexport function effortLevelColor(value: string): string | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_COLOR[key] : undefined;\n}\n"],"names":["UiBatteryVerticalEmpty","UiBatteryVerticalLow","UiBatteryVerticalMedium","UiBatteryVerticalHigh","UiBatteryVerticalFull","UiBatteryChargingVertical"],"mappings":";;;;;;;;AAuBO,MAAM,qBAA+D;AAAA,EAC1E,SAASA,uBAAAA;AAAAA,EACT,KAAKC,qBAAAA;AAAAA,EACL,QAAQC,wBAAAA;AAAAA,EACR,MAAMC,sBAAAA;AAAAA,EACN,KAAKC,sBAAAA;AAAAA,EACL,UAAUC,0BAAAA;AACZ;AAMO,MAAM,qBAAkD;AAAA,EAC7D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AACZ;AAEA,SAAS,UAAU,OAAwC;AACzD,QAAM,MAAM,MAAM,KAAA,EAAO,YAAA;AACzB,MAAI,OAAO,mBAAoB,QAAO;AACtC,MAAI,QAAQ,QAAS,QAAO;AAC5B,SAAO;AACT;AAIO,SAAS,gBAAgB,OAAgD;AAC9E,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAmC;AAClE,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;;;;;"}
1
+ {"version":3,"file":"effort-icons.cjs","sources":["../../../src/data/chat/effort-icons.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBatteryChargingVertical,\n UiBatteryVerticalEmpty,\n UiBatteryVerticalFull,\n UiBatteryVerticalHigh,\n UiBatteryVerticalLow,\n UiBatteryVerticalMedium,\n} from \"../../icons\";\n\n// Reasoning / token-budget levels drawn as a filling vertical battery — the\n// glyph reads as \"budget filled\", adaptive charges up or down per step. The\n// icon map is the source of truth (chat layer); the AI session layer composes\n// semantic tone + label on top in agent-action-icons.ts.\n\nexport type EffortLevel =\n | \"minimal\"\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"xhigh\"\n | \"max\"\n | \"ultra\"\n | \"adaptive\";\n\nexport const DEFAULT_REASONING_EFFORTS: string[] = [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n \"ultra\",\n];\n\nexport const EFFORT_LEVEL_ICONS: Record<EffortLevel, StaticIconComponent> = {\n minimal: UiBatteryVerticalEmpty,\n low: UiBatteryVerticalLow,\n medium: UiBatteryVerticalMedium,\n high: UiBatteryVerticalHigh,\n xhigh: UiBatteryVerticalHigh,\n max: UiBatteryVerticalFull,\n ultra: UiBatteryVerticalFull,\n adaptive: UiBatteryChargingVertical,\n};\n\nexport const EFFORT_LEVEL_LABELS: Record<EffortLevel, string> = {\n minimal: \"Minimal\",\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n xhigh: \"XHigh\",\n max: \"Max\",\n ultra: \"Ultra\",\n adaptive: \"Adaptive\",\n};\n\n// Text-color class per level, with adaptive and ultra distinct from the fixed\n// effort ramp. Mirrors the tones the AI layer assigns in\n// agent-action-icons.ts; kept as literal classes so Tailwind scans them and dark\n// mode keys off the `data-theme` attribute (not `dark:`).\nexport const EFFORT_LEVEL_COLOR: Record<EffortLevel, string> = {\n minimal: \"text-slate-500 [[data-theme=dark]_&]:text-slate-400\",\n low: \"text-sky-700 [[data-theme=dark]_&]:text-sky-400\",\n medium: \"text-amber-700 [[data-theme=dark]_&]:text-amber-400\",\n high: \"text-orange-700 [[data-theme=dark]_&]:text-orange-400\",\n xhigh: \"text-orange-700 [[data-theme=dark]_&]:text-orange-400\",\n max: \"text-red-700 [[data-theme=dark]_&]:text-red-400\",\n ultra: \"text-fuchsia-700 [[data-theme=dark]_&]:text-fuchsia-400\",\n adaptive: \"text-indigo-700 [[data-theme=dark]_&]:text-indigo-400\",\n};\n\nfunction effortKey(value: string): EffortLevel | undefined {\n const key = value.trim().toLowerCase();\n if (key in EFFORT_LEVEL_ICONS) return key as EffortLevel;\n return undefined;\n}\n\n/** Battery glyph for a known effort value. */\nexport function effortLevelIcon(value: string): StaticIconComponent | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_ICONS[key] : undefined;\n}\n\n/** Tone text-color class for an effort value, or undefined when unknown. */\nexport function effortLevelColor(value: string): string | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_COLOR[key] : undefined;\n}\n\n/** Display label for known and future effort values. */\nexport function effortLevelLabel(value: string): string {\n const normalized = value.trim();\n const key = effortKey(normalized);\n if (key) return EFFORT_LEVEL_LABELS[key];\n return `${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}`;\n}\n"],"names":["UiBatteryVerticalEmpty","UiBatteryVerticalLow","UiBatteryVerticalMedium","UiBatteryVerticalHigh","UiBatteryVerticalFull","UiBatteryChargingVertical"],"mappings":";;;;;;;;AAyBO,MAAM,4BAAsC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,qBAA+D;AAAA,EAC1E,SAASA,uBAAAA;AAAAA,EACT,KAAKC,qBAAAA;AAAAA,EACL,QAAQC,wBAAAA;AAAAA,EACR,MAAMC,sBAAAA;AAAAA,EACN,OAAOA,sBAAAA;AAAAA,EACP,KAAKC,sBAAAA;AAAAA,EACL,OAAOA,sBAAAA;AAAAA,EACP,UAAUC,0BAAAA;AACZ;AAEO,MAAM,sBAAmD;AAAA,EAC9D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AACZ;AAMO,MAAM,qBAAkD;AAAA,EAC7D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AACZ;AAEA,SAAS,UAAU,OAAwC;AACzD,QAAM,MAAM,MAAM,KAAA,EAAO,YAAA;AACzB,MAAI,OAAO,mBAAoB,QAAO;AACtC,SAAO;AACT;AAGO,SAAS,gBAAgB,OAAgD;AAC9E,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAmC;AAClE,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAuB;AACtD,QAAM,aAAa,MAAM,KAAA;AACzB,QAAM,MAAM,UAAU,UAAU;AAChC,MAAI,IAAK,QAAO,oBAAoB,GAAG;AACvC,SAAO,GAAG,WAAW,OAAO,CAAC,EAAE,YAAA,CAAa,GAAG,WAAW,MAAM,CAAC,CAAC;AACpE;;;;;;;;"}
@@ -1,10 +1,13 @@
1
1
  import { StaticIconComponent } from '../Icon';
2
- export type EffortLevel = "minimal" | "low" | "medium" | "high" | "max" | "adaptive";
2
+ export type EffortLevel = "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | "ultra" | "adaptive";
3
+ export declare const DEFAULT_REASONING_EFFORTS: string[];
3
4
  export declare const EFFORT_LEVEL_ICONS: Record<EffortLevel, StaticIconComponent>;
5
+ export declare const EFFORT_LEVEL_LABELS: Record<EffortLevel, string>;
4
6
  export declare const EFFORT_LEVEL_COLOR: Record<EffortLevel, string>;
5
- /** Battery glyph for an effort value, tolerating aliases (`xhigh` → high).
6
- * Returns undefined when the value isn't a known effort level. */
7
+ /** Battery glyph for a known effort value. */
7
8
  export declare function effortLevelIcon(value: string): StaticIconComponent | undefined;
8
9
  /** Tone text-color class for an effort value, or undefined when unknown. */
9
10
  export declare function effortLevelColor(value: string): string | undefined;
11
+ /** Display label for known and future effort values. */
12
+ export declare function effortLevelLabel(value: string): string;
10
13
  //# sourceMappingURL=effort-icons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"effort-icons.d.ts","sourceRoot":"","sources":["../../../src/data/chat/effort-icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAenD,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,KAAK,GACL,QAAQ,GACR,MAAM,GACN,KAAK,GACL,UAAU,CAAC;AAEf,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAOvE,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAO1D,CAAC;AASF;mEACmE;AACnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAG9E;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE"}
1
+ {"version":3,"file":"effort-icons.d.ts","sourceRoot":"","sources":["../../../src/data/chat/effort-icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAenD,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,KAAK,GACL,OAAO,GACP,UAAU,CAAC;AAEf,eAAO,MAAM,yBAAyB,EAAE,MAAM,EAO7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,mBAAmB,CASvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAS3D,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAS1D,CAAC;AAQF,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAG9E;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtD"}
@@ -4,26 +4,47 @@ import { UiBatteryVerticalHigh } from "../../icons/components/UiBatteryVerticalH
4
4
  import { UiBatteryVerticalMedium } from "../../icons/components/UiBatteryVerticalMedium.js";
5
5
  import { UiBatteryVerticalLow } from "../../icons/components/UiBatteryVerticalLow.js";
6
6
  import { UiBatteryVerticalEmpty } from "../../icons/components/UiBatteryVerticalEmpty.js";
7
+ const DEFAULT_REASONING_EFFORTS = [
8
+ "low",
9
+ "medium",
10
+ "high",
11
+ "xhigh",
12
+ "max",
13
+ "ultra"
14
+ ];
7
15
  const EFFORT_LEVEL_ICONS = {
8
16
  minimal: UiBatteryVerticalEmpty,
9
17
  low: UiBatteryVerticalLow,
10
18
  medium: UiBatteryVerticalMedium,
11
19
  high: UiBatteryVerticalHigh,
20
+ xhigh: UiBatteryVerticalHigh,
12
21
  max: UiBatteryVerticalFull,
22
+ ultra: UiBatteryVerticalFull,
13
23
  adaptive: UiBatteryChargingVertical
14
24
  };
25
+ const EFFORT_LEVEL_LABELS = {
26
+ minimal: "Minimal",
27
+ low: "Low",
28
+ medium: "Medium",
29
+ high: "High",
30
+ xhigh: "XHigh",
31
+ max: "Max",
32
+ ultra: "Ultra",
33
+ adaptive: "Adaptive"
34
+ };
15
35
  const EFFORT_LEVEL_COLOR = {
16
36
  minimal: "text-slate-500 [[data-theme=dark]_&]:text-slate-400",
17
- low: "text-sky-500 [[data-theme=dark]_&]:text-sky-400",
18
- medium: "text-amber-500 [[data-theme=dark]_&]:text-amber-400",
19
- high: "text-orange-500 [[data-theme=dark]_&]:text-orange-400",
20
- max: "text-red-500 [[data-theme=dark]_&]:text-red-400",
21
- adaptive: "text-indigo-500 [[data-theme=dark]_&]:text-indigo-400"
37
+ low: "text-sky-700 [[data-theme=dark]_&]:text-sky-400",
38
+ medium: "text-amber-700 [[data-theme=dark]_&]:text-amber-400",
39
+ high: "text-orange-700 [[data-theme=dark]_&]:text-orange-400",
40
+ xhigh: "text-orange-700 [[data-theme=dark]_&]:text-orange-400",
41
+ max: "text-red-700 [[data-theme=dark]_&]:text-red-400",
42
+ ultra: "text-fuchsia-700 [[data-theme=dark]_&]:text-fuchsia-400",
43
+ adaptive: "text-indigo-700 [[data-theme=dark]_&]:text-indigo-400"
22
44
  };
23
45
  function effortKey(value) {
24
46
  const key = value.trim().toLowerCase();
25
47
  if (key in EFFORT_LEVEL_ICONS) return key;
26
- if (key === "xhigh") return "high";
27
48
  return void 0;
28
49
  }
29
50
  function effortLevelIcon(value) {
@@ -34,10 +55,19 @@ function effortLevelColor(value) {
34
55
  const key = effortKey(value);
35
56
  return key ? EFFORT_LEVEL_COLOR[key] : void 0;
36
57
  }
58
+ function effortLevelLabel(value) {
59
+ const normalized = value.trim();
60
+ const key = effortKey(normalized);
61
+ if (key) return EFFORT_LEVEL_LABELS[key];
62
+ return `${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}`;
63
+ }
37
64
  export {
65
+ DEFAULT_REASONING_EFFORTS,
38
66
  EFFORT_LEVEL_COLOR,
39
67
  EFFORT_LEVEL_ICONS,
68
+ EFFORT_LEVEL_LABELS,
40
69
  effortLevelColor,
41
- effortLevelIcon
70
+ effortLevelIcon,
71
+ effortLevelLabel
42
72
  };
43
73
  //# sourceMappingURL=effort-icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"effort-icons.js","sources":["../../../src/data/chat/effort-icons.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBatteryChargingVertical,\n UiBatteryVerticalEmpty,\n UiBatteryVerticalFull,\n UiBatteryVerticalHigh,\n UiBatteryVerticalLow,\n UiBatteryVerticalMedium,\n} from \"../../icons\";\n\n// Reasoning / token-budget levels drawn as a filling vertical battery — the\n// glyph reads as \"budget filled\", adaptive charges up or down per step. The\n// icon map is the source of truth (chat layer); the AI session layer composes\n// semantic tone + label on top in agent-action-icons.ts.\n\nexport type EffortLevel =\n | \"minimal\"\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"max\"\n | \"adaptive\";\n\nexport const EFFORT_LEVEL_ICONS: Record<EffortLevel, StaticIconComponent> = {\n minimal: UiBatteryVerticalEmpty,\n low: UiBatteryVerticalLow,\n medium: UiBatteryVerticalMedium,\n high: UiBatteryVerticalHigh,\n max: UiBatteryVerticalFull,\n adaptive: UiBatteryChargingVertical,\n};\n\n// Text-color class per level, climbing the issue-severity ramp (slate sky →\n// amber → orange → red) with adaptive on indigo. Mirrors the tones the AI layer\n// assigns in agent-action-icons.ts; kept as literal classes so Tailwind scans\n// them and dark mode keys off the `data-theme` attribute (not `dark:`).\nexport const EFFORT_LEVEL_COLOR: Record<EffortLevel, string> = {\n minimal: \"text-slate-500 [[data-theme=dark]_&]:text-slate-400\",\n low: \"text-sky-500 [[data-theme=dark]_&]:text-sky-400\",\n medium: \"text-amber-500 [[data-theme=dark]_&]:text-amber-400\",\n high: \"text-orange-500 [[data-theme=dark]_&]:text-orange-400\",\n max: \"text-red-500 [[data-theme=dark]_&]:text-red-400\",\n adaptive: \"text-indigo-500 [[data-theme=dark]_&]:text-indigo-400\",\n};\n\nfunction effortKey(value: string): EffortLevel | undefined {\n const key = value.trim().toLowerCase();\n if (key in EFFORT_LEVEL_ICONS) return key as EffortLevel;\n if (key === \"xhigh\") return \"high\";\n return undefined;\n}\n\n/** Battery glyph for an effort value, tolerating aliases (`xhigh` → high).\n * Returns undefined when the value isn't a known effort level. */\nexport function effortLevelIcon(value: string): StaticIconComponent | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_ICONS[key] : undefined;\n}\n\n/** Tone text-color class for an effort value, or undefined when unknown. */\nexport function effortLevelColor(value: string): string | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_COLOR[key] : undefined;\n}\n"],"names":[],"mappings":";;;;;;AAuBO,MAAM,qBAA+D;AAAA,EAC1E,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AACZ;AAMO,MAAM,qBAAkD;AAAA,EAC7D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AACZ;AAEA,SAAS,UAAU,OAAwC;AACzD,QAAM,MAAM,MAAM,KAAA,EAAO,YAAA;AACzB,MAAI,OAAO,mBAAoB,QAAO;AACtC,MAAI,QAAQ,QAAS,QAAO;AAC5B,SAAO;AACT;AAIO,SAAS,gBAAgB,OAAgD;AAC9E,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAmC;AAClE,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;"}
1
+ {"version":3,"file":"effort-icons.js","sources":["../../../src/data/chat/effort-icons.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBatteryChargingVertical,\n UiBatteryVerticalEmpty,\n UiBatteryVerticalFull,\n UiBatteryVerticalHigh,\n UiBatteryVerticalLow,\n UiBatteryVerticalMedium,\n} from \"../../icons\";\n\n// Reasoning / token-budget levels drawn as a filling vertical battery — the\n// glyph reads as \"budget filled\", adaptive charges up or down per step. The\n// icon map is the source of truth (chat layer); the AI session layer composes\n// semantic tone + label on top in agent-action-icons.ts.\n\nexport type EffortLevel =\n | \"minimal\"\n | \"low\"\n | \"medium\"\n | \"high\"\n | \"xhigh\"\n | \"max\"\n | \"ultra\"\n | \"adaptive\";\n\nexport const DEFAULT_REASONING_EFFORTS: string[] = [\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n \"ultra\",\n];\n\nexport const EFFORT_LEVEL_ICONS: Record<EffortLevel, StaticIconComponent> = {\n minimal: UiBatteryVerticalEmpty,\n low: UiBatteryVerticalLow,\n medium: UiBatteryVerticalMedium,\n high: UiBatteryVerticalHigh,\n xhigh: UiBatteryVerticalHigh,\n max: UiBatteryVerticalFull,\n ultra: UiBatteryVerticalFull,\n adaptive: UiBatteryChargingVertical,\n};\n\nexport const EFFORT_LEVEL_LABELS: Record<EffortLevel, string> = {\n minimal: \"Minimal\",\n low: \"Low\",\n medium: \"Medium\",\n high: \"High\",\n xhigh: \"XHigh\",\n max: \"Max\",\n ultra: \"Ultra\",\n adaptive: \"Adaptive\",\n};\n\n// Text-color class per level, with adaptive and ultra distinct from the fixed\n// effort ramp. Mirrors the tones the AI layer assigns in\n// agent-action-icons.ts; kept as literal classes so Tailwind scans them and dark\n// mode keys off the `data-theme` attribute (not `dark:`).\nexport const EFFORT_LEVEL_COLOR: Record<EffortLevel, string> = {\n minimal: \"text-slate-500 [[data-theme=dark]_&]:text-slate-400\",\n low: \"text-sky-700 [[data-theme=dark]_&]:text-sky-400\",\n medium: \"text-amber-700 [[data-theme=dark]_&]:text-amber-400\",\n high: \"text-orange-700 [[data-theme=dark]_&]:text-orange-400\",\n xhigh: \"text-orange-700 [[data-theme=dark]_&]:text-orange-400\",\n max: \"text-red-700 [[data-theme=dark]_&]:text-red-400\",\n ultra: \"text-fuchsia-700 [[data-theme=dark]_&]:text-fuchsia-400\",\n adaptive: \"text-indigo-700 [[data-theme=dark]_&]:text-indigo-400\",\n};\n\nfunction effortKey(value: string): EffortLevel | undefined {\n const key = value.trim().toLowerCase();\n if (key in EFFORT_LEVEL_ICONS) return key as EffortLevel;\n return undefined;\n}\n\n/** Battery glyph for a known effort value. */\nexport function effortLevelIcon(value: string): StaticIconComponent | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_ICONS[key] : undefined;\n}\n\n/** Tone text-color class for an effort value, or undefined when unknown. */\nexport function effortLevelColor(value: string): string | undefined {\n const key = effortKey(value);\n return key ? EFFORT_LEVEL_COLOR[key] : undefined;\n}\n\n/** Display label for known and future effort values. */\nexport function effortLevelLabel(value: string): string {\n const normalized = value.trim();\n const key = effortKey(normalized);\n if (key) return EFFORT_LEVEL_LABELS[key];\n return `${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}`;\n}\n"],"names":[],"mappings":";;;;;;AAyBO,MAAM,4BAAsC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,qBAA+D;AAAA,EAC1E,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AACZ;AAEO,MAAM,sBAAmD;AAAA,EAC9D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AACZ;AAMO,MAAM,qBAAkD;AAAA,EAC7D,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AACZ;AAEA,SAAS,UAAU,OAAwC;AACzD,QAAM,MAAM,MAAM,KAAA,EAAO,YAAA;AACzB,MAAI,OAAO,mBAAoB,QAAO;AACtC,SAAO;AACT;AAGO,SAAS,gBAAgB,OAAgD;AAC9E,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAmC;AAClE,QAAM,MAAM,UAAU,KAAK;AAC3B,SAAO,MAAM,mBAAmB,GAAG,IAAI;AACzC;AAGO,SAAS,iBAAiB,OAAuB;AACtD,QAAM,aAAa,MAAM,KAAA;AACzB,QAAM,MAAM,UAAU,UAAU;AAChC,MAAI,IAAK,QAAO,oBAAoB,GAAG;AACvC,SAAO,GAAG,WAAW,OAAO,CAAC,EAAE,YAAA,CAAa,GAAG,WAAW,MAAM,CAAC,CAAC;AACpE;"}
@@ -7,9 +7,11 @@ export { PromptInput, type PromptInputProps } from './PromptInput';
7
7
  export { ToolCall, type ToolCallProps } from './ToolCall';
8
8
  export { Suggestions, type SuggestionsProps } from './Suggestion';
9
9
  export { ModelSelector, type ModelSelectorProps, EffortSelector, type EffortSelectorProps, ProviderSelector, type ProviderSelectorOption, type ProviderSelectorProps, BudgetSelector, type BudgetSelectorProps, } from './ModelSelector';
10
- export { providerIcon, type ProviderGlyph } from './provider-icons';
10
+ export { providerIcon, providerIconColor, type ProviderGlyph } from './provider-icons';
11
+ export { defaultChatModelId } from './models';
11
12
  export { ContextMeter, type ContextMeterProps, type ContextMeterMode, type ContextMeterTokens, type ContextMeterCost, type ContextMeterBudget, } from './ContextMeter';
12
13
  export { AttachmentButton, type AttachmentButtonProps, AttachmentList, type AttachmentListProps, } from './Attachment';
14
+ export { createAttachmentUploadAdapter, DEFAULT_ATTACHMENT_LIMITS, type AttachmentFilePart, type AttachmentLimits, type AttachmentUploadAdapter, } from './attachment-upload';
13
15
  export { clickyOperationsToTools, operationToTool, } from './clickyOperationsToTools';
14
16
  export { mockChatTransport, MOCK_MODELS } from './Chat.fixtures';
15
17
  export { isDynamicToolPart, isTypedToolPart, isReasoningPart, isFilePart, toolPartName, suggestionLabel, suggestionPrompt, CLAUDE_PERMISSION_MODES, CLAUDE_PERMISSION_MODE_OPTIONS, type AnyToolPart, type ChatModel, type ChatMessageMetadata, type ChatUsageSummary, type ChatBudgetConfig, type ChatUsageBreakdown, type ChatCostBreakdown, type ChatStatus, type ChatToolInputSchema, type ClaudePermissionMode, type ClaudePermissionModeOption, type ToolResultRenderArgs, type ToolResultRenderer, type ToolAnnotations, type ToolMeta, type ToolMode, type DynamicToolUIPart, type FileUIPart, type JSONSchemaProperty, type ReasoningUIPart, type Suggestion, type ToolUIPart, type UIMessage, } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/chat/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/chat/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,cAAc,EACd,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function defaultChatModelId(models) {
4
+ var _a, _b;
5
+ return ((_a = models.find((model) => model.default && model.configured !== false)) == null ? void 0 : _a.id) ?? ((_b = models.find((model) => model.configured !== false)) == null ? void 0 : _b.id);
6
+ }
7
+ exports.defaultChatModelId = defaultChatModelId;
8
+ //# sourceMappingURL=models.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.cjs","sources":["../../../src/data/chat/models.ts"],"sourcesContent":["import type { ChatModel } from \"./types\";\n\n/**\n * The id a picker seeds with when the caller names no model: the row the served\n * catalog declared as its default, else the first row that is configured.\n *\n * Deriving it from the menu is what keeps an app from hardcoding a model id that\n * rots on the next release — or that names a model the catalog no longer offers\n * because the user switched it off.\n */\nexport function defaultChatModelId(models: ChatModel[]): string | undefined {\n return (\n models.find((model) => model.default && model.configured !== false)?.id ??\n models.find((model) => model.configured !== false)?.id\n );\n}\n"],"names":[],"mappings":";;AAUO,SAAS,mBAAmB,QAAyC;;AAC1E,WACE,YAAO,KAAK,CAAC,UAAU,MAAM,WAAW,MAAM,eAAe,KAAK,MAAlE,mBAAqE,SACrE,YAAO,KAAK,CAAC,UAAU,MAAM,eAAe,KAAK,MAAjD,mBAAoD;AAExD;;"}
@@ -0,0 +1,11 @@
1
+ import { ChatModel } from './types';
2
+ /**
3
+ * The id a picker seeds with when the caller names no model: the row the served
4
+ * catalog declared as its default, else the first row that is configured.
5
+ *
6
+ * Deriving it from the menu is what keeps an app from hardcoding a model id that
7
+ * rots on the next release — or that names a model the catalog no longer offers
8
+ * because the user switched it off.
9
+ */
10
+ export declare function defaultChatModelId(models: ChatModel[]): string | undefined;
11
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/data/chat/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,8 @@
1
+ function defaultChatModelId(models) {
2
+ var _a, _b;
3
+ return ((_a = models.find((model) => model.default && model.configured !== false)) == null ? void 0 : _a.id) ?? ((_b = models.find((model) => model.configured !== false)) == null ? void 0 : _b.id);
4
+ }
5
+ export {
6
+ defaultChatModelId
7
+ };
8
+ //# sourceMappingURL=models.js.map