@flanksource/clicky-ui 0.3.17 → 0.3.19

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 (923) hide show
  1. package/dist/ai.cjs +12 -6
  2. package/dist/ai.cjs.map +1 -1
  3. package/dist/ai.js +10 -4
  4. package/dist/ai.js.map +1 -1
  5. package/dist/chat.cjs +36 -0
  6. package/dist/chat.cjs.map +1 -1
  7. package/dist/chat.js +37 -1
  8. package/dist/chat.js.map +1 -1
  9. package/dist/components/Combobox.cjs +122 -153
  10. package/dist/components/Combobox.cjs.map +1 -1
  11. package/dist/components/Combobox.d.ts.map +1 -1
  12. package/dist/components/Combobox.js +124 -155
  13. package/dist/components/Combobox.js.map +1 -1
  14. package/dist/components/ComboboxControl.cjs +145 -0
  15. package/dist/components/ComboboxControl.cjs.map +1 -0
  16. package/dist/components/ComboboxControl.d.ts +37 -0
  17. package/dist/components/ComboboxControl.d.ts.map +1 -0
  18. package/dist/components/ComboboxControl.js +145 -0
  19. package/dist/components/ComboboxControl.js.map +1 -0
  20. package/dist/components/ComboboxMenu.cjs +35 -14
  21. package/dist/components/ComboboxMenu.cjs.map +1 -1
  22. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  23. package/dist/components/ComboboxMenu.js +35 -14
  24. package/dist/components/ComboboxMenu.js.map +1 -1
  25. package/dist/components/ComboboxTags.cjs +40 -0
  26. package/dist/components/ComboboxTags.cjs.map +1 -0
  27. package/dist/components/ComboboxTags.d.ts +8 -0
  28. package/dist/components/ComboboxTags.d.ts.map +1 -0
  29. package/dist/components/ComboboxTags.js +40 -0
  30. package/dist/components/ComboboxTags.js.map +1 -0
  31. package/dist/components/EndpointSelector.model.cjs +96 -0
  32. package/dist/components/EndpointSelector.model.cjs.map +1 -0
  33. package/dist/components/EndpointSelector.model.d.ts +2 -0
  34. package/dist/components/EndpointSelector.model.d.ts.map +1 -1
  35. package/dist/components/EndpointSelector.model.js +96 -0
  36. package/dist/components/EndpointSelector.model.js.map +1 -0
  37. package/dist/components/ErrorWrapper.cjs +168 -0
  38. package/dist/components/ErrorWrapper.cjs.map +1 -0
  39. package/dist/components/ErrorWrapper.d.ts +19 -0
  40. package/dist/components/ErrorWrapper.d.ts.map +1 -0
  41. package/dist/components/ErrorWrapper.js +168 -0
  42. package/dist/components/ErrorWrapper.js.map +1 -0
  43. package/dist/components/FilterBar.cjs +116 -4
  44. package/dist/components/FilterBar.cjs.map +1 -1
  45. package/dist/components/FilterBar.d.ts +37 -2
  46. package/dist/components/FilterBar.d.ts.map +1 -1
  47. package/dist/components/FilterBar.js +116 -4
  48. package/dist/components/FilterBar.js.map +1 -1
  49. package/dist/components/JSONPathField.cjs +112 -0
  50. package/dist/components/JSONPathField.cjs.map +1 -0
  51. package/dist/components/JSONPathField.d.ts +36 -0
  52. package/dist/components/JSONPathField.d.ts.map +1 -0
  53. package/dist/components/JSONPathField.js +112 -0
  54. package/dist/components/JSONPathField.js.map +1 -0
  55. package/dist/components/JSONPathPlayground.cjs +225 -0
  56. package/dist/components/JSONPathPlayground.cjs.map +1 -0
  57. package/dist/components/JSONPathPlayground.d.ts +59 -0
  58. package/dist/components/JSONPathPlayground.d.ts.map +1 -0
  59. package/dist/components/JSONPathPlayground.js +225 -0
  60. package/dist/components/JSONPathPlayground.js.map +1 -0
  61. package/dist/components/JsonSchemaForm.cjs +8 -4
  62. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  63. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  64. package/dist/components/JsonSchemaForm.js +8 -4
  65. package/dist/components/JsonSchemaForm.js.map +1 -1
  66. package/dist/components/OnePasswordSelector.cjs +178 -0
  67. package/dist/components/OnePasswordSelector.cjs.map +1 -0
  68. package/dist/components/OnePasswordSelector.d.ts +8 -0
  69. package/dist/components/OnePasswordSelector.d.ts.map +1 -0
  70. package/dist/components/OnePasswordSelector.js +178 -0
  71. package/dist/components/OnePasswordSelector.js.map +1 -0
  72. package/dist/components/OnePasswordSelector.model.cjs +31 -0
  73. package/dist/components/OnePasswordSelector.model.cjs.map +1 -0
  74. package/dist/components/OnePasswordSelector.model.d.ts +27 -0
  75. package/dist/components/OnePasswordSelector.model.d.ts.map +1 -0
  76. package/dist/components/OnePasswordSelector.model.js +31 -0
  77. package/dist/components/OnePasswordSelector.model.js.map +1 -0
  78. package/dist/components/SecretFormField.cjs +142 -0
  79. package/dist/components/SecretFormField.cjs.map +1 -0
  80. package/dist/components/SecretFormField.d.ts +9 -0
  81. package/dist/components/SecretFormField.d.ts.map +1 -0
  82. package/dist/components/SecretFormField.js +142 -0
  83. package/dist/components/SecretFormField.js.map +1 -0
  84. package/dist/components/SecretKeySelector.cjs +20 -14
  85. package/dist/components/SecretKeySelector.cjs.map +1 -1
  86. package/dist/components/SecretKeySelector.d.ts +4 -1
  87. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  88. package/dist/components/SecretKeySelector.js +20 -14
  89. package/dist/components/SecretKeySelector.js.map +1 -1
  90. package/dist/components/TreePickerField.cjs +71 -27
  91. package/dist/components/TreePickerField.cjs.map +1 -1
  92. package/dist/components/TreePickerField.d.ts +31 -2
  93. package/dist/components/TreePickerField.d.ts.map +1 -1
  94. package/dist/components/TreePickerField.js +72 -28
  95. package/dist/components/TreePickerField.js.map +1 -1
  96. package/dist/components/TriStateToggle.cjs +53 -0
  97. package/dist/components/TriStateToggle.cjs.map +1 -0
  98. package/dist/components/TriStateToggle.d.ts +27 -0
  99. package/dist/components/TriStateToggle.d.ts.map +1 -0
  100. package/dist/components/TriStateToggle.js +53 -0
  101. package/dist/components/TriStateToggle.js.map +1 -0
  102. package/dist/components/combobox-types.d.ts +25 -1
  103. package/dist/components/combobox-types.d.ts.map +1 -1
  104. package/dist/components/combobox-utils.cjs +26 -0
  105. package/dist/components/combobox-utils.cjs.map +1 -1
  106. package/dist/components/combobox-utils.d.ts +10 -0
  107. package/dist/components/combobox-utils.d.ts.map +1 -1
  108. package/dist/components/combobox-utils.js +26 -0
  109. package/dist/components/combobox-utils.js.map +1 -1
  110. package/dist/components/filter-bar-utils.cjs +12 -0
  111. package/dist/components/filter-bar-utils.cjs.map +1 -1
  112. package/dist/components/filter-bar-utils.d.ts.map +1 -1
  113. package/dist/components/filter-bar-utils.js +12 -0
  114. package/dist/components/filter-bar-utils.js.map +1 -1
  115. package/dist/components/jotai-bindings-core.cjs.map +1 -1
  116. package/dist/components/jotai-bindings-core.d.ts +4 -1
  117. package/dist/components/jotai-bindings-core.d.ts.map +1 -1
  118. package/dist/components/jotai-bindings-core.js.map +1 -1
  119. package/dist/components/json-schema-form-accordion-array.cjs +290 -0
  120. package/dist/components/json-schema-form-accordion-array.cjs.map +1 -0
  121. package/dist/components/json-schema-form-accordion-array.d.ts +7 -0
  122. package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -0
  123. package/dist/components/json-schema-form-accordion-array.js +290 -0
  124. package/dist/components/json-schema-form-accordion-array.js.map +1 -0
  125. package/dist/components/json-schema-form-array.cjs +99 -110
  126. package/dist/components/json-schema-form-array.cjs.map +1 -1
  127. package/dist/components/json-schema-form-array.d.ts +1 -1
  128. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  129. package/dist/components/json-schema-form-array.js +98 -109
  130. package/dist/components/json-schema-form-array.js.map +1 -1
  131. package/dist/components/json-schema-form-error-display.cjs +4 -2
  132. package/dist/components/json-schema-form-error-display.cjs.map +1 -1
  133. package/dist/components/json-schema-form-error-display.d.ts +4 -2
  134. package/dist/components/json-schema-form-error-display.d.ts.map +1 -1
  135. package/dist/components/json-schema-form-error-display.js +4 -2
  136. package/dist/components/json-schema-form-error-display.js.map +1 -1
  137. package/dist/components/json-schema-form-extensions.cjs +10 -0
  138. package/dist/components/json-schema-form-extensions.cjs.map +1 -0
  139. package/dist/components/json-schema-form-extensions.d.ts +8 -0
  140. package/dist/components/json-schema-form-extensions.d.ts.map +1 -0
  141. package/dist/components/json-schema-form-extensions.js +10 -0
  142. package/dist/components/json-schema-form-extensions.js.map +1 -0
  143. package/dist/components/json-schema-form-fields.cjs +25 -101
  144. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  145. package/dist/components/json-schema-form-fields.d.ts +1 -32
  146. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  147. package/dist/components/json-schema-form-fields.js +28 -104
  148. package/dist/components/json-schema-form-fields.js.map +1 -1
  149. package/dist/components/json-schema-form-item-summary.cjs +131 -0
  150. package/dist/components/json-schema-form-item-summary.cjs.map +1 -0
  151. package/dist/components/json-schema-form-item-summary.d.ts +13 -0
  152. package/dist/components/json-schema-form-item-summary.d.ts.map +1 -0
  153. package/dist/components/json-schema-form-item-summary.js +131 -0
  154. package/dist/components/json-schema-form-item-summary.js.map +1 -0
  155. package/dist/components/json-schema-form-layout.cjs +156 -0
  156. package/dist/components/json-schema-form-layout.cjs.map +1 -0
  157. package/dist/components/json-schema-form-layout.d.ts +43 -0
  158. package/dist/components/json-schema-form-layout.d.ts.map +1 -0
  159. package/dist/components/json-schema-form-layout.js +156 -0
  160. package/dist/components/json-schema-form-layout.js.map +1 -0
  161. package/dist/components/json-schema-form-lookup-tree.cjs +149 -0
  162. package/dist/components/json-schema-form-lookup-tree.cjs.map +1 -0
  163. package/dist/components/json-schema-form-lookup-tree.d.ts +22 -0
  164. package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -0
  165. package/dist/components/json-schema-form-lookup-tree.js +149 -0
  166. package/dist/components/json-schema-form-lookup-tree.js.map +1 -0
  167. package/dist/components/json-schema-form-object.cjs +11 -4
  168. package/dist/components/json-schema-form-object.cjs.map +1 -1
  169. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  170. package/dist/components/json-schema-form-object.js +11 -4
  171. package/dist/components/json-schema-form-object.js.map +1 -1
  172. package/dist/components/json-schema-form-render.cjs +53 -29
  173. package/dist/components/json-schema-form-render.cjs.map +1 -1
  174. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  175. package/dist/components/json-schema-form-render.js +53 -29
  176. package/dist/components/json-schema-form-render.js.map +1 -1
  177. package/dist/components/json-schema-form-resolve.cjs +62 -13
  178. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  179. package/dist/components/json-schema-form-resolve.d.ts +1 -0
  180. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  181. package/dist/components/json-schema-form-resolve.js +62 -13
  182. package/dist/components/json-schema-form-resolve.js.map +1 -1
  183. package/dist/components/json-schema-form-table-array.cjs +123 -0
  184. package/dist/components/json-schema-form-table-array.cjs.map +1 -0
  185. package/dist/components/json-schema-form-table-array.d.ts +7 -0
  186. package/dist/components/json-schema-form-table-array.d.ts.map +1 -0
  187. package/dist/components/json-schema-form-table-array.js +123 -0
  188. package/dist/components/json-schema-form-table-array.js.map +1 -0
  189. package/dist/components/json-schema-form-tone.cjs +34 -0
  190. package/dist/components/json-schema-form-tone.cjs.map +1 -0
  191. package/dist/components/json-schema-form-tone.d.ts +8 -0
  192. package/dist/components/json-schema-form-tone.d.ts.map +1 -0
  193. package/dist/components/json-schema-form-tone.js +34 -0
  194. package/dist/components/json-schema-form-tone.js.map +1 -0
  195. package/dist/components/json-schema-form-types.d.ts +88 -10
  196. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  197. package/dist/components/json-schema-form-utils.cjs +47 -4
  198. package/dist/components/json-schema-form-utils.cjs.map +1 -1
  199. package/dist/components/json-schema-form-utils.d.ts +19 -4
  200. package/dist/components/json-schema-form-utils.d.ts.map +1 -1
  201. package/dist/components/json-schema-form-utils.js +47 -4
  202. package/dist/components/json-schema-form-utils.js.map +1 -1
  203. package/dist/components/jsonPathTree.cjs +189 -0
  204. package/dist/components/jsonPathTree.cjs.map +1 -0
  205. package/dist/components/jsonPathTree.d.ts +92 -0
  206. package/dist/components/jsonPathTree.d.ts.map +1 -0
  207. package/dist/components/jsonPathTree.js +189 -0
  208. package/dist/components/jsonPathTree.js.map +1 -0
  209. package/dist/components/secret-form-extension.cjs +30 -0
  210. package/dist/components/secret-form-extension.cjs.map +1 -0
  211. package/dist/components/secret-form-extension.d.ts +23 -0
  212. package/dist/components/secret-form-extension.d.ts.map +1 -0
  213. package/dist/components/secret-form-extension.js +30 -0
  214. package/dist/components/secret-form-extension.js.map +1 -0
  215. package/dist/components/tri-state.cjs +8 -0
  216. package/dist/components/tri-state.cjs.map +1 -0
  217. package/dist/components/tri-state.d.ts +5 -0
  218. package/dist/components/tri-state.d.ts.map +1 -0
  219. package/dist/components/tri-state.js +8 -0
  220. package/dist/components/tri-state.js.map +1 -0
  221. package/dist/components/useComboboxLayout.cjs +59 -0
  222. package/dist/components/useComboboxLayout.cjs.map +1 -0
  223. package/dist/components/useComboboxLayout.d.ts +5 -0
  224. package/dist/components/useComboboxLayout.d.ts.map +1 -0
  225. package/dist/components/useComboboxLayout.js +59 -0
  226. package/dist/components/useComboboxLayout.js.map +1 -0
  227. package/dist/components.cjs +37 -0
  228. package/dist/components.cjs.map +1 -1
  229. package/dist/components.d.ts +20 -4
  230. package/dist/components.d.ts.map +1 -1
  231. package/dist/components.js +38 -1
  232. package/dist/components.js.map +1 -1
  233. package/dist/data/Clicky.cjs +51 -2
  234. package/dist/data/Clicky.cjs.map +1 -1
  235. package/dist/data/Clicky.d.ts +10 -1
  236. package/dist/data/Clicky.d.ts.map +1 -1
  237. package/dist/data/Clicky.js +51 -2
  238. package/dist/data/Clicky.js.map +1 -1
  239. package/dist/data/DataTable.cjs +185 -53
  240. package/dist/data/DataTable.cjs.map +1 -1
  241. package/dist/data/DataTable.d.ts +63 -3
  242. package/dist/data/DataTable.d.ts.map +1 -1
  243. package/dist/data/DataTable.js +185 -53
  244. package/dist/data/DataTable.js.map +1 -1
  245. package/dist/data/LogsTable.cjs +10 -1
  246. package/dist/data/LogsTable.cjs.map +1 -1
  247. package/dist/data/LogsTable.d.ts +3 -1
  248. package/dist/data/LogsTable.d.ts.map +1 -1
  249. package/dist/data/LogsTable.js +10 -1
  250. package/dist/data/LogsTable.js.map +1 -1
  251. package/dist/data/TaskExecDetails.cjs +40 -0
  252. package/dist/data/TaskExecDetails.cjs.map +1 -0
  253. package/dist/data/TaskExecDetails.d.ts +5 -0
  254. package/dist/data/TaskExecDetails.d.ts.map +1 -0
  255. package/dist/data/TaskExecDetails.js +40 -0
  256. package/dist/data/TaskExecDetails.js.map +1 -0
  257. package/dist/data/TaskManager.cjs +99 -14
  258. package/dist/data/TaskManager.cjs.map +1 -1
  259. package/dist/data/TaskManager.d.ts.map +1 -1
  260. package/dist/data/TaskManager.js +100 -15
  261. package/dist/data/TaskManager.js.map +1 -1
  262. package/dist/data/TaskProgress.cjs +59 -14
  263. package/dist/data/TaskProgress.cjs.map +1 -1
  264. package/dist/data/TaskProgress.d.ts +2 -1
  265. package/dist/data/TaskProgress.d.ts.map +1 -1
  266. package/dist/data/TaskProgress.js +59 -14
  267. package/dist/data/TaskProgress.js.map +1 -1
  268. package/dist/data/TaskSnapshot.cjs.map +1 -1
  269. package/dist/data/TaskSnapshot.d.ts +12 -1
  270. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  271. package/dist/data/TaskSnapshot.js.map +1 -1
  272. package/dist/data/TreeNode.cjs +3 -0
  273. package/dist/data/TreeNode.cjs.map +1 -1
  274. package/dist/data/TreeNode.d.ts.map +1 -1
  275. package/dist/data/TreeNode.js +3 -0
  276. package/dist/data/TreeNode.js.map +1 -1
  277. package/dist/data/ai/AdvancedChatConfig.cjs +289 -0
  278. package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -0
  279. package/dist/data/ai/AdvancedChatConfig.d.ts +21 -0
  280. package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -0
  281. package/dist/data/ai/AdvancedChatConfig.js +289 -0
  282. package/dist/data/ai/AdvancedChatConfig.js.map +1 -0
  283. package/dist/data/ai/AdvancedCostsPanel.cjs +120 -0
  284. package/dist/data/ai/AdvancedCostsPanel.cjs.map +1 -0
  285. package/dist/data/ai/AdvancedCostsPanel.d.ts +16 -0
  286. package/dist/data/ai/AdvancedCostsPanel.d.ts.map +1 -0
  287. package/dist/data/ai/AdvancedCostsPanel.js +120 -0
  288. package/dist/data/ai/AdvancedCostsPanel.js.map +1 -0
  289. package/dist/data/ai/ChatWindow.catalogs.cjs +74 -0
  290. package/dist/data/ai/ChatWindow.catalogs.cjs.map +1 -0
  291. package/dist/data/ai/ChatWindow.catalogs.d.ts +16 -0
  292. package/dist/data/ai/ChatWindow.catalogs.d.ts.map +1 -0
  293. package/dist/data/ai/ChatWindow.catalogs.js +74 -0
  294. package/dist/data/ai/ChatWindow.catalogs.js.map +1 -0
  295. package/dist/data/ai/ChatWindow.cjs +78 -100
  296. package/dist/data/ai/ChatWindow.cjs.map +1 -1
  297. package/dist/data/ai/ChatWindow.d.ts +1 -1
  298. package/dist/data/ai/ChatWindow.d.ts.map +1 -1
  299. package/dist/data/ai/ChatWindow.js +80 -102
  300. package/dist/data/ai/ChatWindow.js.map +1 -1
  301. package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
  302. package/dist/data/ai/ChatWindow.preferences.d.ts +2 -4
  303. package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
  304. package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
  305. package/dist/data/ai/ChatWindow.runtime.cjs +120 -0
  306. package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -0
  307. package/dist/data/ai/ChatWindow.runtime.d.ts +20 -0
  308. package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -0
  309. package/dist/data/ai/ChatWindow.runtime.js +120 -0
  310. package/dist/data/ai/ChatWindow.runtime.js.map +1 -0
  311. package/dist/data/ai/ChatWindow.thread.cjs +1 -1
  312. package/dist/data/ai/ChatWindow.thread.cjs.map +1 -1
  313. package/dist/data/ai/ChatWindow.thread.js +1 -1
  314. package/dist/data/ai/ChatWindow.thread.js.map +1 -1
  315. package/dist/data/ai/ChatWindow.tool-catalog.cjs +20 -0
  316. package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
  317. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +17 -1
  318. package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
  319. package/dist/data/ai/ChatWindow.tool-catalog.js +20 -0
  320. package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
  321. package/dist/data/ai/ChatWindow.types.d.ts +13 -5
  322. package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
  323. package/dist/data/ai/ChatWindowManager.cjs +3 -1
  324. package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
  325. package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
  326. package/dist/data/ai/ChatWindowManager.js +3 -1
  327. package/dist/data/ai/ChatWindowManager.js.map +1 -1
  328. package/dist/data/ai/PromptPicker/PromptPicker.cjs +1 -1
  329. package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
  330. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +1 -1
  331. package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
  332. package/dist/data/ai/PromptPicker/PromptPicker.js +1 -1
  333. package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
  334. package/dist/data/ai/PromptRunEditor/index.cjs +2 -2
  335. package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
  336. package/dist/data/ai/PromptRunEditor/index.d.ts +1 -1
  337. package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
  338. package/dist/data/ai/PromptRunEditor/index.js +2 -2
  339. package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
  340. package/dist/data/ai/RuntimeModePicker.cjs +1 -1
  341. package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
  342. package/dist/data/ai/RuntimeModePicker.d.ts +1 -1
  343. package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
  344. package/dist/data/ai/RuntimeModePicker.js +1 -1
  345. package/dist/data/ai/RuntimeModePicker.js.map +1 -1
  346. package/dist/data/ai/SessionInspector.files.cjs +26 -43
  347. package/dist/data/ai/SessionInspector.files.cjs.map +1 -1
  348. package/dist/data/ai/SessionInspector.files.d.ts.map +1 -1
  349. package/dist/data/ai/SessionInspector.files.js +26 -43
  350. package/dist/data/ai/SessionInspector.files.js.map +1 -1
  351. package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
  352. package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
  353. package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
  354. package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
  355. package/dist/data/ai/SessionInspector.model.cjs +1 -1
  356. package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
  357. package/dist/data/ai/SessionInspector.model.js +1 -1
  358. package/dist/data/ai/SessionInspector.model.js.map +1 -1
  359. package/dist/data/ai/SessionViewer.rows.cjs +4 -16
  360. package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
  361. package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
  362. package/dist/data/ai/SessionViewer.rows.js +4 -16
  363. package/dist/data/ai/SessionViewer.rows.js.map +1 -1
  364. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +12 -3
  365. package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
  366. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +1 -1
  367. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
  368. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +12 -3
  369. package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
  370. package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
  371. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +1 -1
  372. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
  373. package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
  374. package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
  375. package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
  376. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +2 -2
  377. package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
  378. package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
  379. package/dist/data/ai/ThreadPicker.cjs +65 -3
  380. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  381. package/dist/data/ai/ThreadPicker.d.ts +11 -5
  382. package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
  383. package/dist/data/ai/ThreadPicker.js +65 -3
  384. package/dist/data/ai/ThreadPicker.js.map +1 -1
  385. package/dist/data/ai/ToolPreferences.cjs +65 -685
  386. package/dist/data/ai/ToolPreferences.cjs.map +1 -1
  387. package/dist/data/ai/ToolPreferences.d.ts +15 -17
  388. package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
  389. package/dist/data/ai/ToolPreferences.js +64 -683
  390. package/dist/data/ai/ToolPreferences.js.map +1 -1
  391. package/dist/data/ai/ToolPreferences.model.cjs +148 -0
  392. package/dist/data/ai/ToolPreferences.model.cjs.map +1 -0
  393. package/dist/data/ai/ToolPreferences.model.d.ts +31 -0
  394. package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -0
  395. package/dist/data/ai/ToolPreferences.model.js +148 -0
  396. package/dist/data/ai/ToolPreferences.model.js.map +1 -0
  397. package/dist/data/ai/ToolPreferencesList.cjs +270 -0
  398. package/dist/data/ai/ToolPreferencesList.cjs.map +1 -0
  399. package/dist/data/ai/ToolPreferencesList.d.ts +18 -0
  400. package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -0
  401. package/dist/data/ai/ToolPreferencesList.js +270 -0
  402. package/dist/data/ai/ToolPreferencesList.js.map +1 -0
  403. package/dist/data/ai/agent-action-icons.cjs.map +1 -1
  404. package/dist/data/ai/agent-action-icons.js.map +1 -1
  405. package/dist/data/ai/chat-window-context.cjs +4 -1
  406. package/dist/data/ai/chat-window-context.cjs.map +1 -1
  407. package/dist/data/ai/chat-window-context.d.ts +7 -0
  408. package/dist/data/ai/chat-window-context.d.ts.map +1 -1
  409. package/dist/data/ai/chat-window-context.js +4 -1
  410. package/dist/data/ai/chat-window-context.js.map +1 -1
  411. package/dist/data/ai/index.d.ts +6 -3
  412. package/dist/data/ai/index.d.ts.map +1 -1
  413. package/dist/data/ai/session-tones.cjs +67 -0
  414. package/dist/data/ai/session-tones.cjs.map +1 -0
  415. package/dist/data/ai/session-tones.d.ts +34 -0
  416. package/dist/data/ai/session-tones.d.ts.map +1 -0
  417. package/dist/data/ai/session-tones.js +67 -0
  418. package/dist/data/ai/session-tones.js.map +1 -0
  419. package/dist/data/ai/thread-costs.cjs +39 -0
  420. package/dist/data/ai/thread-costs.cjs.map +1 -0
  421. package/dist/data/ai/thread-costs.d.ts +62 -0
  422. package/dist/data/ai/thread-costs.d.ts.map +1 -0
  423. package/dist/data/ai/thread-costs.js +39 -0
  424. package/dist/data/ai/thread-costs.js.map +1 -0
  425. package/dist/data/cells/CellFilterActions.cjs +68 -0
  426. package/dist/data/cells/CellFilterActions.cjs.map +1 -0
  427. package/dist/data/cells/CellFilterActions.d.ts +15 -0
  428. package/dist/data/cells/CellFilterActions.d.ts.map +1 -0
  429. package/dist/data/cells/CellFilterActions.js +68 -0
  430. package/dist/data/cells/CellFilterActions.js.map +1 -0
  431. package/dist/data/chat/Chat.cjs +156 -113
  432. package/dist/data/chat/Chat.cjs.map +1 -1
  433. package/dist/data/chat/Chat.d.ts +24 -7
  434. package/dist/data/chat/Chat.d.ts.map +1 -1
  435. package/dist/data/chat/Chat.fixtures.cjs +48 -3
  436. package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
  437. package/dist/data/chat/Chat.fixtures.d.ts +1 -1
  438. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -1
  439. package/dist/data/chat/Chat.fixtures.js +48 -3
  440. package/dist/data/chat/Chat.fixtures.js.map +1 -1
  441. package/dist/data/chat/Chat.js +160 -117
  442. package/dist/data/chat/Chat.js.map +1 -1
  443. package/dist/data/chat/Chat.runtime.cjs +63 -0
  444. package/dist/data/chat/Chat.runtime.cjs.map +1 -0
  445. package/dist/data/chat/Chat.runtime.d.ts +16 -0
  446. package/dist/data/chat/Chat.runtime.d.ts.map +1 -0
  447. package/dist/data/chat/Chat.runtime.js +63 -0
  448. package/dist/data/chat/Chat.runtime.js.map +1 -0
  449. package/dist/data/chat/ChatRuntimeToolbar.cjs +62 -0
  450. package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -0
  451. package/dist/data/chat/ChatRuntimeToolbar.d.ts +14 -0
  452. package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -0
  453. package/dist/data/chat/ChatRuntimeToolbar.js +62 -0
  454. package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -0
  455. package/dist/data/chat/ToolCall.cjs +86 -24
  456. package/dist/data/chat/ToolCall.cjs.map +1 -1
  457. package/dist/data/chat/ToolCall.d.ts +12 -5
  458. package/dist/data/chat/ToolCall.d.ts.map +1 -1
  459. package/dist/data/chat/ToolCall.js +86 -24
  460. package/dist/data/chat/ToolCall.js.map +1 -1
  461. package/dist/data/chat/approval.cjs +49 -6
  462. package/dist/data/chat/approval.cjs.map +1 -1
  463. package/dist/data/chat/approval.d.ts +11 -4
  464. package/dist/data/chat/approval.d.ts.map +1 -1
  465. package/dist/data/chat/approval.js +49 -6
  466. package/dist/data/chat/approval.js.map +1 -1
  467. package/dist/data/chat/index.d.ts +5 -3
  468. package/dist/data/chat/index.d.ts.map +1 -1
  469. package/dist/data/chat/tool-render/ToolArgs.cjs +50 -0
  470. package/dist/data/chat/tool-render/ToolArgs.cjs.map +1 -0
  471. package/dist/data/chat/tool-render/ToolArgs.d.ts +7 -0
  472. package/dist/data/chat/tool-render/ToolArgs.d.ts.map +1 -0
  473. package/dist/data/chat/tool-render/ToolArgs.js +50 -0
  474. package/dist/data/chat/tool-render/ToolArgs.js.map +1 -0
  475. package/dist/data/chat/tool-render/ToolParams.cjs +155 -0
  476. package/dist/data/chat/tool-render/ToolParams.cjs.map +1 -0
  477. package/dist/data/chat/tool-render/ToolParams.d.ts +20 -0
  478. package/dist/data/chat/tool-render/ToolParams.d.ts.map +1 -0
  479. package/dist/data/chat/tool-render/ToolParams.js +155 -0
  480. package/dist/data/chat/tool-render/ToolParams.js.map +1 -0
  481. package/dist/data/chat/tool-render/ToolValue.cjs +140 -0
  482. package/dist/data/chat/tool-render/ToolValue.cjs.map +1 -0
  483. package/dist/data/chat/tool-render/ToolValue.d.ts +16 -0
  484. package/dist/data/chat/tool-render/ToolValue.d.ts.map +1 -0
  485. package/dist/data/chat/tool-render/ToolValue.js +140 -0
  486. package/dist/data/chat/tool-render/ToolValue.js.map +1 -0
  487. package/dist/data/chat/tool-render/adapter.cjs +48 -0
  488. package/dist/data/chat/tool-render/adapter.cjs.map +1 -0
  489. package/dist/data/chat/tool-render/adapter.d.ts +57 -0
  490. package/dist/data/chat/tool-render/adapter.d.ts.map +1 -0
  491. package/dist/data/chat/tool-render/adapter.js +48 -0
  492. package/dist/data/chat/tool-render/adapter.js.map +1 -0
  493. package/dist/data/chat/tool-render/context.cjs +16 -0
  494. package/dist/data/chat/tool-render/context.cjs.map +1 -0
  495. package/dist/data/chat/tool-render/context.d.ts +6 -0
  496. package/dist/data/chat/tool-render/context.d.ts.map +1 -0
  497. package/dist/data/chat/tool-render/context.js +16 -0
  498. package/dist/data/chat/tool-render/context.js.map +1 -0
  499. package/dist/data/chat/tool-render/defaults.cjs +45 -0
  500. package/dist/data/chat/tool-render/defaults.cjs.map +1 -0
  501. package/dist/data/chat/tool-render/defaults.d.ts +11 -0
  502. package/dist/data/chat/tool-render/defaults.d.ts.map +1 -0
  503. package/dist/data/chat/tool-render/defaults.js +45 -0
  504. package/dist/data/chat/tool-render/defaults.js.map +1 -0
  505. package/dist/data/chat/tool-render/index.d.ts +13 -0
  506. package/dist/data/chat/tool-render/index.d.ts.map +1 -0
  507. package/dist/data/chat/tool-render/known-tool-views.cjs +208 -0
  508. package/dist/data/chat/tool-render/known-tool-views.cjs.map +1 -0
  509. package/dist/data/chat/tool-render/known-tool-views.d.ts +10 -0
  510. package/dist/data/chat/tool-render/known-tool-views.d.ts.map +1 -0
  511. package/dist/data/chat/tool-render/known-tool-views.js +208 -0
  512. package/dist/data/chat/tool-render/known-tool-views.js.map +1 -0
  513. package/dist/data/chat/tool-render/known-tools.cjs +58 -0
  514. package/dist/data/chat/tool-render/known-tools.cjs.map +1 -0
  515. package/dist/data/chat/tool-render/known-tools.d.ts +4 -0
  516. package/dist/data/chat/tool-render/known-tools.d.ts.map +1 -0
  517. package/dist/data/chat/tool-render/known-tools.js +58 -0
  518. package/dist/data/chat/tool-render/known-tools.js.map +1 -0
  519. package/dist/data/chat/tool-render/normalize.cjs +42 -0
  520. package/dist/data/chat/tool-render/normalize.cjs.map +1 -0
  521. package/dist/data/chat/tool-render/normalize.d.ts +13 -0
  522. package/dist/data/chat/tool-render/normalize.d.ts.map +1 -0
  523. package/dist/data/chat/tool-render/normalize.js +42 -0
  524. package/dist/data/chat/tool-render/normalize.js.map +1 -0
  525. package/dist/data/chat/tool-render/registry.cjs +14 -0
  526. package/dist/data/chat/tool-render/registry.cjs.map +1 -0
  527. package/dist/data/chat/tool-render/registry.d.ts +7 -0
  528. package/dist/data/chat/tool-render/registry.d.ts.map +1 -0
  529. package/dist/data/chat/tool-render/registry.js +14 -0
  530. package/dist/data/chat/tool-render/registry.js.map +1 -0
  531. package/dist/data/chat/tool-render/schema.cjs +57 -0
  532. package/dist/data/chat/tool-render/schema.cjs.map +1 -0
  533. package/dist/data/chat/tool-render/schema.d.ts +28 -0
  534. package/dist/data/chat/tool-render/schema.d.ts.map +1 -0
  535. package/dist/data/chat/tool-render/schema.js +57 -0
  536. package/dist/data/chat/tool-render/schema.js.map +1 -0
  537. package/dist/data/chat/tool-render/shape.cjs +94 -0
  538. package/dist/data/chat/tool-render/shape.cjs.map +1 -0
  539. package/dist/data/chat/tool-render/shape.d.ts +39 -0
  540. package/dist/data/chat/tool-render/shape.d.ts.map +1 -0
  541. package/dist/data/chat/tool-render/shape.js +94 -0
  542. package/dist/data/chat/tool-render/shape.js.map +1 -0
  543. package/dist/data/chat/tool-render/summary.cjs +34 -0
  544. package/dist/data/chat/tool-render/summary.cjs.map +1 -0
  545. package/dist/data/chat/tool-render/summary.d.ts +8 -0
  546. package/dist/data/chat/tool-render/summary.d.ts.map +1 -0
  547. package/dist/data/chat/tool-render/summary.js +34 -0
  548. package/dist/data/chat/tool-render/summary.js.map +1 -0
  549. package/dist/data/chat/types.cjs.map +1 -1
  550. package/dist/data/chat/types.d.ts +7 -0
  551. package/dist/data/chat/types.d.ts.map +1 -1
  552. package/dist/data/chat/types.js.map +1 -1
  553. package/dist/data/chat/usage-snapshot.cjs +17 -0
  554. package/dist/data/chat/usage-snapshot.cjs.map +1 -0
  555. package/dist/data/chat/usage-snapshot.d.ts +21 -0
  556. package/dist/data/chat/usage-snapshot.d.ts.map +1 -0
  557. package/dist/data/chat/usage-snapshot.js +17 -0
  558. package/dist/data/chat/usage-snapshot.js.map +1 -0
  559. package/dist/data/data-table-filter-values.cjs +103 -0
  560. package/dist/data/data-table-filter-values.cjs.map +1 -0
  561. package/dist/data/data-table-filter-values.d.ts +34 -0
  562. package/dist/data/data-table-filter-values.d.ts.map +1 -0
  563. package/dist/data/data-table-filter-values.js +103 -0
  564. package/dist/data/data-table-filter-values.js.map +1 -0
  565. package/dist/data/data-table-server-filters.cjs +165 -0
  566. package/dist/data/data-table-server-filters.cjs.map +1 -0
  567. package/dist/data/data-table-server-filters.d.ts +128 -0
  568. package/dist/data/data-table-server-filters.d.ts.map +1 -0
  569. package/dist/data/data-table-server-filters.js +165 -0
  570. package/dist/data/data-table-server-filters.js.map +1 -0
  571. package/dist/data/query-browser/QueryBrowser.cjs +204 -155
  572. package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
  573. package/dist/data/query-browser/QueryBrowser.d.ts +2 -41
  574. package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
  575. package/dist/data/query-browser/QueryBrowser.editor.cjs +88 -0
  576. package/dist/data/query-browser/QueryBrowser.editor.cjs.map +1 -0
  577. package/dist/data/query-browser/QueryBrowser.editor.d.ts +12 -0
  578. package/dist/data/query-browser/QueryBrowser.editor.d.ts.map +1 -0
  579. package/dist/data/query-browser/QueryBrowser.editor.js +88 -0
  580. package/dist/data/query-browser/QueryBrowser.editor.js.map +1 -0
  581. package/dist/data/query-browser/QueryBrowser.js +205 -156
  582. package/dist/data/query-browser/QueryBrowser.js.map +1 -1
  583. package/dist/data/query-browser/QueryBrowser.types.cjs +11 -0
  584. package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -0
  585. package/dist/data/query-browser/QueryBrowser.types.d.ts +92 -0
  586. package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -0
  587. package/dist/data/query-browser/QueryBrowser.types.js +11 -0
  588. package/dist/data/query-browser/QueryBrowser.types.js.map +1 -0
  589. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +56 -0
  590. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -0
  591. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +5 -0
  592. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -0
  593. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +56 -0
  594. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -0
  595. package/dist/data/query-browser/QueryBrowserResults.cjs +80 -0
  596. package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -0
  597. package/dist/data/query-browser/QueryBrowserResults.d.ts +16 -0
  598. package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -0
  599. package/dist/data/query-browser/QueryBrowserResults.js +80 -0
  600. package/dist/data/query-browser/QueryBrowserResults.js.map +1 -0
  601. package/dist/data/query-browser/index.d.ts +2 -1
  602. package/dist/data/query-browser/index.d.ts.map +1 -1
  603. package/dist/data/runtime/ProviderStatusPanel.cjs +187 -0
  604. package/dist/data/runtime/ProviderStatusPanel.cjs.map +1 -0
  605. package/dist/data/runtime/ProviderStatusPanel.d.ts +10 -0
  606. package/dist/data/runtime/ProviderStatusPanel.d.ts.map +1 -0
  607. package/dist/data/runtime/ProviderStatusPanel.js +187 -0
  608. package/dist/data/runtime/ProviderStatusPanel.js.map +1 -0
  609. package/dist/data/runtime/RuntimeBar.cjs +147 -0
  610. package/dist/data/runtime/RuntimeBar.cjs.map +1 -0
  611. package/dist/data/{ai → runtime}/RuntimeBar.d.ts +8 -6
  612. package/dist/data/runtime/RuntimeBar.d.ts.map +1 -0
  613. package/dist/data/runtime/RuntimeBar.js +147 -0
  614. package/dist/data/runtime/RuntimeBar.js.map +1 -0
  615. package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -0
  616. package/dist/data/{ai → runtime}/RuntimeBar.model.d.ts +2 -2
  617. package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -0
  618. package/dist/data/runtime/RuntimeBar.model.js.map +1 -0
  619. package/dist/data/{ai → runtime}/RuntimeBarCombo.cjs +25 -30
  620. package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -0
  621. package/dist/data/{ai → runtime}/RuntimeBarCombo.d.ts +4 -3
  622. package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -0
  623. package/dist/data/{ai → runtime}/RuntimeBarCombo.js +25 -30
  624. package/dist/data/runtime/RuntimeBarCombo.js.map +1 -0
  625. package/dist/data/{ai/RuntimeBar.cjs → runtime/RuntimeBarSegments.cjs} +54 -120
  626. package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -0
  627. package/dist/data/runtime/RuntimeBarSegments.d.ts +25 -0
  628. package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -0
  629. package/dist/data/{ai/RuntimeBar.js → runtime/RuntimeBarSegments.js} +58 -124
  630. package/dist/data/runtime/RuntimeBarSegments.js.map +1 -0
  631. package/dist/data/runtime/availability.cjs +11 -0
  632. package/dist/data/runtime/availability.cjs.map +1 -0
  633. package/dist/data/runtime/availability.d.ts +6 -0
  634. package/dist/data/runtime/availability.d.ts.map +1 -0
  635. package/dist/data/runtime/availability.js +11 -0
  636. package/dist/data/runtime/availability.js.map +1 -0
  637. package/dist/data/runtime/model-capabilities.cjs.map +1 -0
  638. package/dist/data/runtime/model-capabilities.d.ts.map +1 -0
  639. package/dist/data/runtime/model-capabilities.js.map +1 -0
  640. package/dist/data/runtime/provider-status.cjs +106 -0
  641. package/dist/data/runtime/provider-status.cjs.map +1 -0
  642. package/dist/data/runtime/provider-status.d.ts +24 -0
  643. package/dist/data/runtime/provider-status.d.ts.map +1 -0
  644. package/dist/data/runtime/provider-status.js +106 -0
  645. package/dist/data/runtime/provider-status.js.map +1 -0
  646. package/dist/data/{ai → runtime}/runtime-mode.cjs +119 -27
  647. package/dist/data/runtime/runtime-mode.cjs.map +1 -0
  648. package/dist/data/{ai → runtime}/runtime-mode.d.ts +7 -1
  649. package/dist/data/runtime/runtime-mode.d.ts.map +1 -0
  650. package/dist/data/{ai → runtime}/runtime-mode.js +120 -28
  651. package/dist/data/runtime/runtime-mode.js.map +1 -0
  652. package/dist/data/task-exec-details.cjs +9 -0
  653. package/dist/data/task-exec-details.cjs.map +1 -0
  654. package/dist/data/task-exec-details.d.ts +3 -0
  655. package/dist/data/task-exec-details.d.ts.map +1 -0
  656. package/dist/data/task-exec-details.js +9 -0
  657. package/dist/data/task-exec-details.js.map +1 -0
  658. package/dist/data/task-query-keys.cjs +26 -0
  659. package/dist/data/task-query-keys.cjs.map +1 -0
  660. package/dist/data/task-query-keys.d.ts +27 -0
  661. package/dist/data/task-query-keys.d.ts.map +1 -0
  662. package/dist/data/task-query-keys.js +26 -0
  663. package/dist/data/task-query-keys.js.map +1 -0
  664. package/dist/data/version-info.cjs +3 -3
  665. package/dist/data/version-info.js +3 -3
  666. package/dist/data.cjs +18 -0
  667. package/dist/data.cjs.map +1 -1
  668. package/dist/data.d.ts +6 -2
  669. package/dist/data.d.ts.map +1 -1
  670. package/dist/data.js +18 -0
  671. package/dist/data.js.map +1 -1
  672. package/dist/hooks/use-hotkey.cjs +6 -1
  673. package/dist/hooks/use-hotkey.cjs.map +1 -1
  674. package/dist/hooks/use-hotkey.d.ts.map +1 -1
  675. package/dist/hooks/use-hotkey.js +6 -1
  676. package/dist/hooks/use-hotkey.js.map +1 -1
  677. package/dist/hooks/use-task-run.cjs +7 -4
  678. package/dist/hooks/use-task-run.cjs.map +1 -1
  679. package/dist/hooks/use-task-run.d.ts +12 -0
  680. package/dist/hooks/use-task-run.d.ts.map +1 -1
  681. package/dist/hooks/use-task-run.js +7 -4
  682. package/dist/hooks/use-task-run.js.map +1 -1
  683. package/dist/icons/index.d.ts +1 -0
  684. package/dist/icons/index.d.ts.map +1 -1
  685. package/dist/icons/registry.cjs +692 -0
  686. package/dist/icons/registry.cjs.map +1 -0
  687. package/dist/icons/registry.d.ts +21 -0
  688. package/dist/icons/registry.d.ts.map +1 -0
  689. package/dist/icons/registry.js +692 -0
  690. package/dist/icons/registry.js.map +1 -0
  691. package/dist/icons.cjs +3 -0
  692. package/dist/icons.cjs.map +1 -1
  693. package/dist/icons.js +4 -1
  694. package/dist/icons.js.map +1 -1
  695. package/dist/index.cjs +65 -0
  696. package/dist/index.cjs.map +1 -1
  697. package/dist/index.js +67 -2
  698. package/dist/index.js.map +1 -1
  699. package/dist/layout/AppShell.cjs +92 -56
  700. package/dist/layout/AppShell.cjs.map +1 -1
  701. package/dist/layout/AppShell.d.ts +49 -1
  702. package/dist/layout/AppShell.d.ts.map +1 -1
  703. package/dist/layout/AppShell.js +92 -56
  704. package/dist/layout/AppShell.js.map +1 -1
  705. package/dist/layout/AppShell.nav.cjs +144 -19
  706. package/dist/layout/AppShell.nav.cjs.map +1 -1
  707. package/dist/layout/AppShell.nav.d.ts +6 -1
  708. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  709. package/dist/layout/AppShell.nav.js +144 -19
  710. package/dist/layout/AppShell.nav.js.map +1 -1
  711. package/dist/layout/SplitPane.cjs +23 -7
  712. package/dist/layout/SplitPane.cjs.map +1 -1
  713. package/dist/layout/SplitPane.d.ts +3 -1
  714. package/dist/layout/SplitPane.d.ts.map +1 -1
  715. package/dist/layout/SplitPane.js +23 -7
  716. package/dist/layout/SplitPane.js.map +1 -1
  717. package/dist/lib/format.cjs +86 -4
  718. package/dist/lib/format.cjs.map +1 -1
  719. package/dist/lib/format.d.ts +69 -0
  720. package/dist/lib/format.d.ts.map +1 -1
  721. package/dist/lib/format.js +86 -4
  722. package/dist/lib/format.js.map +1 -1
  723. package/dist/lib/path-tree.cjs +69 -0
  724. package/dist/lib/path-tree.cjs.map +1 -0
  725. package/dist/lib/path-tree.d.ts +54 -0
  726. package/dist/lib/path-tree.d.ts.map +1 -0
  727. package/dist/lib/path-tree.js +69 -0
  728. package/dist/lib/path-tree.js.map +1 -0
  729. package/dist/monaco.d.ts +1 -0
  730. package/dist/monaco.d.ts.map +1 -1
  731. package/dist/overlay/DropdownMenuSubmenu.cjs +13 -7
  732. package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
  733. package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
  734. package/dist/overlay/DropdownMenuSubmenu.js +13 -7
  735. package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
  736. package/dist/overlay/Tour.cjs +173 -0
  737. package/dist/overlay/Tour.cjs.map +1 -0
  738. package/dist/overlay/Tour.d.ts +61 -0
  739. package/dist/overlay/Tour.d.ts.map +1 -0
  740. package/dist/overlay/Tour.js +173 -0
  741. package/dist/overlay/Tour.js.map +1 -0
  742. package/dist/overlay/TourCard.cjs +108 -0
  743. package/dist/overlay/TourCard.cjs.map +1 -0
  744. package/dist/overlay/TourCard.d.ts +23 -0
  745. package/dist/overlay/TourCard.d.ts.map +1 -0
  746. package/dist/overlay/TourCard.js +108 -0
  747. package/dist/overlay/TourCard.js.map +1 -0
  748. package/dist/overlay/TourProvider.cjs +160 -0
  749. package/dist/overlay/TourProvider.cjs.map +1 -0
  750. package/dist/overlay/TourProvider.d.ts +31 -0
  751. package/dist/overlay/TourProvider.d.ts.map +1 -0
  752. package/dist/overlay/TourProvider.js +160 -0
  753. package/dist/overlay/TourProvider.js.map +1 -0
  754. package/dist/overlay/TourSpotlight.cjs +47 -0
  755. package/dist/overlay/TourSpotlight.cjs.map +1 -0
  756. package/dist/overlay/TourSpotlight.d.ts +12 -0
  757. package/dist/overlay/TourSpotlight.d.ts.map +1 -0
  758. package/dist/overlay/TourSpotlight.js +47 -0
  759. package/dist/overlay/TourSpotlight.js.map +1 -0
  760. package/dist/overlay/modalStack.cjs +18 -4
  761. package/dist/overlay/modalStack.cjs.map +1 -1
  762. package/dist/overlay/modalStack.d.ts +10 -2
  763. package/dist/overlay/modalStack.d.ts.map +1 -1
  764. package/dist/overlay/modalStack.js +19 -5
  765. package/dist/overlay/modalStack.js.map +1 -1
  766. package/dist/overlay/tour-anchor.cjs +114 -0
  767. package/dist/overlay/tour-anchor.cjs.map +1 -0
  768. package/dist/overlay/tour-anchor.d.ts +30 -0
  769. package/dist/overlay/tour-anchor.d.ts.map +1 -0
  770. package/dist/overlay/tour-anchor.js +114 -0
  771. package/dist/overlay/tour-anchor.js.map +1 -0
  772. package/dist/overlay/tour-context.cjs +12 -0
  773. package/dist/overlay/tour-context.cjs.map +1 -0
  774. package/dist/overlay/tour-context.d.ts +40 -0
  775. package/dist/overlay/tour-context.d.ts.map +1 -0
  776. package/dist/overlay/tour-context.js +12 -0
  777. package/dist/overlay/tour-context.js.map +1 -0
  778. package/dist/overlay/tour-geometry.cjs +65 -0
  779. package/dist/overlay/tour-geometry.cjs.map +1 -0
  780. package/dist/overlay/tour-geometry.d.ts +47 -0
  781. package/dist/overlay/tour-geometry.d.ts.map +1 -0
  782. package/dist/overlay/tour-geometry.js +65 -0
  783. package/dist/overlay/tour-geometry.js.map +1 -0
  784. package/dist/overlay/tour-model.cjs +79 -0
  785. package/dist/overlay/tour-model.cjs.map +1 -0
  786. package/dist/overlay/tour-model.d.ts +29 -0
  787. package/dist/overlay/tour-model.d.ts.map +1 -0
  788. package/dist/overlay/tour-model.js +79 -0
  789. package/dist/overlay/tour-model.js.map +1 -0
  790. package/dist/overlay/tour-progress.cjs +54 -0
  791. package/dist/overlay/tour-progress.cjs.map +1 -0
  792. package/dist/overlay/tour-progress.d.ts +40 -0
  793. package/dist/overlay/tour-progress.d.ts.map +1 -0
  794. package/dist/overlay/tour-progress.js +54 -0
  795. package/dist/overlay/tour-progress.js.map +1 -0
  796. package/dist/overlay/tour-types.d.ts +144 -0
  797. package/dist/overlay/tour-types.d.ts.map +1 -0
  798. package/dist/overlay/use-tour-anchor.cjs +43 -0
  799. package/dist/overlay/use-tour-anchor.cjs.map +1 -0
  800. package/dist/overlay/use-tour-anchor.d.ts +23 -0
  801. package/dist/overlay/use-tour-anchor.d.ts.map +1 -0
  802. package/dist/overlay/use-tour-anchor.js +43 -0
  803. package/dist/overlay/use-tour-anchor.js.map +1 -0
  804. package/dist/overlay/use-tour-rect.cjs +33 -0
  805. package/dist/overlay/use-tour-rect.cjs.map +1 -0
  806. package/dist/overlay/use-tour-rect.d.ts +12 -0
  807. package/dist/overlay/use-tour-rect.d.ts.map +1 -0
  808. package/dist/overlay/use-tour-rect.js +33 -0
  809. package/dist/overlay/use-tour-rect.js.map +1 -0
  810. package/dist/overlay/use-tour-step.cjs +66 -0
  811. package/dist/overlay/use-tour-step.cjs.map +1 -0
  812. package/dist/overlay/use-tour-step.d.ts +45 -0
  813. package/dist/overlay/use-tour-step.d.ts.map +1 -0
  814. package/dist/overlay/use-tour-step.js +66 -0
  815. package/dist/overlay/use-tour-step.js.map +1 -0
  816. package/dist/overlay/zIndex.cjs +8 -0
  817. package/dist/overlay/zIndex.cjs.map +1 -1
  818. package/dist/overlay/zIndex.d.ts +8 -0
  819. package/dist/overlay/zIndex.d.ts.map +1 -1
  820. package/dist/overlay/zIndex.js +8 -0
  821. package/dist/overlay/zIndex.js.map +1 -1
  822. package/dist/rpc/CommandOutput.cjs +8 -0
  823. package/dist/rpc/CommandOutput.cjs.map +1 -1
  824. package/dist/rpc/CommandOutput.d.ts +4 -1
  825. package/dist/rpc/CommandOutput.d.ts.map +1 -1
  826. package/dist/rpc/CommandOutput.js +8 -0
  827. package/dist/rpc/CommandOutput.js.map +1 -1
  828. package/dist/rpc/EntityExplorerApp.cjs +10 -16
  829. package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
  830. package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
  831. package/dist/rpc/EntityExplorerApp.js +10 -16
  832. package/dist/rpc/EntityExplorerApp.js.map +1 -1
  833. package/dist/rpc/FilterForm.cjs +20 -0
  834. package/dist/rpc/FilterForm.cjs.map +1 -1
  835. package/dist/rpc/FilterForm.js +20 -0
  836. package/dist/rpc/FilterForm.js.map +1 -1
  837. package/dist/rpc/OperationActionBar.cjs +1 -1
  838. package/dist/rpc/OperationActionBar.cjs.map +1 -1
  839. package/dist/rpc/OperationActionBar.js +1 -1
  840. package/dist/rpc/OperationActionBar.js.map +1 -1
  841. package/dist/rpc/OperationCatalog.cjs +83 -7
  842. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  843. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  844. package/dist/rpc/OperationCatalog.js +84 -8
  845. package/dist/rpc/OperationCatalog.js.map +1 -1
  846. package/dist/rpc/OperationResultView.cjs +2 -0
  847. package/dist/rpc/OperationResultView.cjs.map +1 -1
  848. package/dist/rpc/OperationResultView.d.ts +6 -0
  849. package/dist/rpc/OperationResultView.d.ts.map +1 -1
  850. package/dist/rpc/OperationResultView.js +2 -0
  851. package/dist/rpc/OperationResultView.js.map +1 -1
  852. package/dist/rpc/SchemaActionForm.cjs +2 -21
  853. package/dist/rpc/SchemaActionForm.cjs.map +1 -1
  854. package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
  855. package/dist/rpc/SchemaActionForm.js +3 -22
  856. package/dist/rpc/SchemaActionForm.js.map +1 -1
  857. package/dist/rpc/apiClient.cjs +16 -2
  858. package/dist/rpc/apiClient.cjs.map +1 -1
  859. package/dist/rpc/apiClient.d.ts.map +1 -1
  860. package/dist/rpc/apiClient.js +16 -2
  861. package/dist/rpc/apiClient.js.map +1 -1
  862. package/dist/rpc/formMetadata.cjs +123 -49
  863. package/dist/rpc/formMetadata.cjs.map +1 -1
  864. package/dist/rpc/formMetadata.d.ts +14 -6
  865. package/dist/rpc/formMetadata.d.ts.map +1 -1
  866. package/dist/rpc/formMetadata.js +121 -47
  867. package/dist/rpc/formMetadata.js.map +1 -1
  868. package/dist/rpc/operationFilterSearch.cjs +23 -0
  869. package/dist/rpc/operationFilterSearch.cjs.map +1 -0
  870. package/dist/rpc/operationFilterSearch.d.ts +22 -0
  871. package/dist/rpc/operationFilterSearch.d.ts.map +1 -0
  872. package/dist/rpc/operationFilterSearch.js +23 -0
  873. package/dist/rpc/operationFilterSearch.js.map +1 -0
  874. package/dist/rpc/operationLookupFetcher.cjs +28 -0
  875. package/dist/rpc/operationLookupFetcher.cjs.map +1 -0
  876. package/dist/rpc/operationLookupFetcher.d.ts +17 -0
  877. package/dist/rpc/operationLookupFetcher.d.ts.map +1 -0
  878. package/dist/rpc/operationLookupFetcher.js +28 -0
  879. package/dist/rpc/operationLookupFetcher.js.map +1 -0
  880. package/dist/rpc/surfaceNav.cjs +77 -0
  881. package/dist/rpc/surfaceNav.cjs.map +1 -0
  882. package/dist/rpc/surfaceNav.d.ts +19 -0
  883. package/dist/rpc/surfaceNav.d.ts.map +1 -0
  884. package/dist/rpc/surfaceNav.js +77 -0
  885. package/dist/rpc/surfaceNav.js.map +1 -0
  886. package/dist/rpc/types.cjs.map +1 -1
  887. package/dist/rpc/types.d.ts +21 -2
  888. package/dist/rpc/types.d.ts.map +1 -1
  889. package/dist/rpc/types.js.map +1 -1
  890. package/dist/rpc.cjs +2 -0
  891. package/dist/rpc.cjs.map +1 -1
  892. package/dist/rpc.d.ts +1 -0
  893. package/dist/rpc.d.ts.map +1 -1
  894. package/dist/rpc.js +2 -0
  895. package/dist/rpc.js.map +1 -1
  896. package/dist/styles.css +1 -1
  897. package/dist/utils.cjs +8 -0
  898. package/dist/utils.cjs.map +1 -1
  899. package/dist/utils.d.ts +2 -1
  900. package/dist/utils.d.ts.map +1 -1
  901. package/dist/utils.js +10 -2
  902. package/dist/utils.js.map +1 -1
  903. package/package.json +1 -1
  904. package/dist/data/ai/RuntimeBar.cjs.map +0 -1
  905. package/dist/data/ai/RuntimeBar.d.ts.map +0 -1
  906. package/dist/data/ai/RuntimeBar.js.map +0 -1
  907. package/dist/data/ai/RuntimeBar.model.cjs.map +0 -1
  908. package/dist/data/ai/RuntimeBar.model.d.ts.map +0 -1
  909. package/dist/data/ai/RuntimeBar.model.js.map +0 -1
  910. package/dist/data/ai/RuntimeBarCombo.cjs.map +0 -1
  911. package/dist/data/ai/RuntimeBarCombo.d.ts.map +0 -1
  912. package/dist/data/ai/RuntimeBarCombo.js.map +0 -1
  913. package/dist/data/ai/model-capabilities.cjs.map +0 -1
  914. package/dist/data/ai/model-capabilities.d.ts.map +0 -1
  915. package/dist/data/ai/model-capabilities.js.map +0 -1
  916. package/dist/data/ai/runtime-mode.cjs.map +0 -1
  917. package/dist/data/ai/runtime-mode.d.ts.map +0 -1
  918. package/dist/data/ai/runtime-mode.js.map +0 -1
  919. /package/dist/data/{ai → runtime}/RuntimeBar.model.cjs +0 -0
  920. /package/dist/data/{ai → runtime}/RuntimeBar.model.js +0 -0
  921. /package/dist/data/{ai → runtime}/model-capabilities.cjs +0 -0
  922. /package/dist/data/{ai → runtime}/model-capabilities.d.ts +0 -0
  923. /package/dist/data/{ai → runtime}/model-capabilities.js +0 -0
@@ -1,18 +1,18 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { useState, useEffect, useCallback } from "react";
2
+ import { useState, useEffect, useMemo, useCallback } from "react";
3
3
  import { cn } from "../../lib/utils.js";
4
4
  import { Button } from "../../components/button.js";
5
5
  import { Icon } from "../Icon.js";
6
6
  import { Chat } from "../chat/Chat.js";
7
- import { DEFAULT_REASONING_EFFORTS } from "../chat/effort-icons.js";
8
7
  import { useChatWindowManager } from "./chat-window-context.js";
9
8
  import { ThreadPicker } from "./ThreadPicker.js";
10
9
  import { ContextBadges } from "./ContextBadges.js";
11
10
  import { ToolPreferences } from "./ToolPreferences.js";
12
11
  import { chatWindowRequestBody } from "./ChatWindowRequestBody.js";
13
- import { selectConfiguredChatModel } from "./ChatWindow.models.js";
14
12
  import { loadChatPreferences, saveChatPreferences } from "./ChatWindow.preferences.js";
15
- import { normalizeToolCatalog } from "./ChatWindow.tool-catalog.js";
13
+ import { useChatWindowRuntime } from "./ChatWindow.runtime.js";
14
+ import { useChatWindowCatalogs } from "./ChatWindow.catalogs.js";
15
+ import { normalizeToolCatalog, effectiveToolPreferences } from "./ChatWindow.tool-catalog.js";
16
16
  import { useChatThreadSetup } from "./ChatWindow.thread.js";
17
17
  import { ChatThreadSetupStatus } from "./ChatWindow.thread-status.js";
18
18
  import { UiAdd } from "../../icons/components/UiAdd.js";
@@ -31,19 +31,21 @@ function ChatWindow({
31
31
  panel,
32
32
  chat,
33
33
  title = "Assistant",
34
- threadsApi = "/api/chat/threads",
34
+ sessionsApi = "/api/chat/sessions",
35
35
  threadsSource,
36
36
  contextTypeConfig,
37
37
  tools,
38
38
  defaultToolMode = "ask",
39
39
  toolsApi = "/api/chat/tools",
40
+ runtimesApi = null,
41
+ toolRenderers,
40
42
  headerExtras,
41
43
  renderContextPicker
42
44
  }) {
43
45
  const { updatePanel, closePanel, bringToFront, maximizePanel, openPanel } = useChatWindowManager();
44
46
  const threadSetup = useChatThreadSetup({
45
47
  threadId: panel.threadId,
46
- api: threadsApi,
48
+ api: sessionsApi,
47
49
  source: threadsSource,
48
50
  onCreated: (threadId) => updatePanel(panel.id, { threadId })
49
51
  });
@@ -51,14 +53,6 @@ function ChatWindow({
51
53
  const [storedPrefs] = useState(
52
54
  () => loadChatPreferences()
53
55
  );
54
- const initialModel = panel.initialModel ?? (chat == null ? void 0 : chat.model) ?? (chat == null ? void 0 : chat.defaultModel) ?? storedPrefs.model;
55
- const [model, setModel] = useState(initialModel);
56
- const [reasoningEffort, setReasoningEffort] = useState(
57
- (chat == null ? void 0 : chat.reasoningEffort) ?? (chat == null ? void 0 : chat.defaultReasoningEffort) ?? storedPrefs.reasoningEffort ?? ""
58
- );
59
- const [temperature, setTemperature] = useState(
60
- (chat == null ? void 0 : chat.temperature) ?? storedPrefs.temperature
61
- );
62
56
  const [budget, setBudget] = useState(
63
57
  (chat == null ? void 0 : chat.budget) ?? storedPrefs.budget ?? {}
64
58
  );
@@ -66,32 +60,40 @@ function ChatWindow({
66
60
  (chat == null ? void 0 : chat.permissionMode) ?? storedPrefs.permissionMode ?? "default"
67
61
  );
68
62
  const [usage, setUsage] = useState(null);
69
- const [toolPrefs, setToolPrefs] = useState(
70
- storedPrefs.toolPrefs ?? {}
71
- );
63
+ const [titleRefresh, setTitleRefresh] = useState(0);
64
+ const [explicitToolPrefs, setExplicitToolPrefs] = useState(storedPrefs.toolPrefs ?? {});
72
65
  const [fetchedTools, setFetchedTools] = useState(
73
66
  void 0
74
67
  );
75
68
  const [toolsLoading, setToolsLoading] = useState(false);
76
69
  const [toolsError, setToolsError] = useState(null);
77
- const [fetchedModels, setFetchedModels] = useState([]);
78
70
  const resolvedTools = tools ?? fetchedTools ?? EMPTY_TOOLS;
79
71
  const modelsApi = (chat == null ? void 0 : chat.modelsApi) === void 0 ? "/api/chat/models" : chat.modelsApi;
80
- const resolvedModels = (chat == null ? void 0 : chat.models) ?? fetchedModels;
81
- useEffect(() => {
82
- if ((chat == null ? void 0 : chat.model) !== void 0) setModel(chat.model);
83
- }, [chat == null ? void 0 : chat.model]);
84
- useEffect(() => {
85
- if ((chat == null ? void 0 : chat.model) !== void 0 || panel.initialModel) return;
86
- if (chat == null ? void 0 : chat.defaultModel) setModel(chat.defaultModel);
87
- }, [chat == null ? void 0 : chat.defaultModel, chat == null ? void 0 : chat.model, panel.initialModel]);
88
- useEffect(() => {
89
- if ((chat == null ? void 0 : chat.reasoningEffort) !== void 0)
90
- setReasoningEffort(chat.reasoningEffort);
91
- }, [chat == null ? void 0 : chat.reasoningEffort]);
92
- useEffect(() => {
93
- if ((chat == null ? void 0 : chat.temperature) !== void 0) setTemperature(chat.temperature);
94
- }, [chat == null ? void 0 : chat.temperature]);
72
+ const {
73
+ models: resolvedModels,
74
+ runtimeFamilies,
75
+ loading: catalogLoading,
76
+ error: catalogError,
77
+ retry: retryCatalogs
78
+ } = useChatWindowCatalogs({
79
+ models: chat == null ? void 0 : chat.models,
80
+ modelsApi,
81
+ runtimesApi
82
+ });
83
+ const {
84
+ runtime,
85
+ temperature,
86
+ reasoningEfforts,
87
+ handleRuntimeChange,
88
+ handleModelChange,
89
+ handleReasoningEffortChange,
90
+ handleTemperatureChange
91
+ } = useChatWindowRuntime({
92
+ chat,
93
+ initialModel: panel.initialModel,
94
+ models: resolvedModels,
95
+ storedRuntime: storedPrefs.runtime
96
+ });
95
97
  useEffect(() => {
96
98
  if ((chat == null ? void 0 : chat.budget) !== void 0) setBudget(chat.budget);
97
99
  }, [chat == null ? void 0 : chat.budget]);
@@ -99,9 +101,6 @@ function ChatWindow({
99
101
  if ((chat == null ? void 0 : chat.permissionMode) !== void 0)
100
102
  setPermissionMode(chat.permissionMode);
101
103
  }, [chat == null ? void 0 : chat.permissionMode]);
102
- useEffect(() => {
103
- if (panel.initialModel) setModel(panel.initialModel);
104
- }, [panel.initialModel]);
105
104
  useEffect(() => {
106
105
  if (tools || toolsApi === null) return;
107
106
  let active = true;
@@ -122,47 +121,35 @@ function ChatWindow({
122
121
  active = false;
123
122
  };
124
123
  }, [tools, toolsApi]);
125
- useEffect(() => {
126
- if ((chat == null ? void 0 : chat.models) || !modelsApi) return;
127
- let active = true;
128
- fetch(modelsApi).then(
129
- (r) => r.ok ? r.json() : Promise.reject(new Error(`models ${r.status}`))
130
- ).then((data) => {
131
- if (!active) return;
132
- setFetchedModels(data);
133
- setModel((current) => selectConfiguredChatModel(current, data));
134
- }).catch(
135
- (err) => console.warn("clicky-ui: failed to load chat models", err)
136
- );
137
- return () => {
138
- active = false;
139
- };
140
- }, [chat == null ? void 0 : chat.models, modelsApi]);
141
124
  useEffect(() => {
142
125
  saveChatPreferences({
143
- ...model ? { model } : {},
144
- ...reasoningEffort ? { reasoningEffort } : {},
145
- ...temperature !== void 0 ? { temperature } : {},
126
+ runtime,
146
127
  ...budget.cost !== void 0 || budget.maxTokens !== void 0 ? { budget } : {},
147
128
  permissionMode,
148
- toolPrefs
129
+ toolPrefs: explicitToolPrefs
149
130
  });
150
- }, [budget, model, permissionMode, reasoningEffort, temperature, toolPrefs]);
151
- useEffect(() => {
152
- if (!resolvedTools.length) return;
153
- setToolPrefs((prev) => {
154
- const next = { ...prev };
155
- let changed = false;
156
- for (const t of resolvedTools) {
157
- const key = t.name;
158
- if (next[key] === void 0) {
159
- next[key] = t.defaultPermission ?? defaultToolMode;
160
- changed = true;
131
+ }, [budget, permissionMode, runtime, explicitToolPrefs]);
132
+ const toolPrefs = useMemo(
133
+ () => effectiveToolPreferences({
134
+ tools: resolvedTools,
135
+ explicit: explicitToolPrefs,
136
+ surfaceDefaults: panel.toolDefaults,
137
+ fallback: defaultToolMode
138
+ }),
139
+ [defaultToolMode, explicitToolPrefs, panel.toolDefaults, resolvedTools]
140
+ );
141
+ const handleToolPrefsChange = useCallback(
142
+ (next) => {
143
+ setExplicitToolPrefs((prev) => {
144
+ const updated = { ...prev };
145
+ for (const [name, mode] of Object.entries(next)) {
146
+ if (toolPrefs[name] !== mode) updated[name] = mode;
161
147
  }
162
- }
163
- return changed ? next : prev;
164
- });
165
- }, [defaultToolMode, resolvedTools]);
148
+ return updated;
149
+ });
150
+ },
151
+ [toolPrefs]
152
+ );
166
153
  useEffect(() => {
167
154
  let active = true;
168
155
  import("react-rnd").then((m) => {
@@ -200,7 +187,6 @@ function ChatWindow({
200
187
  toolPrefs
201
188
  });
202
189
  const initialPrompt = panel.initialPrompt ?? (chat == null ? void 0 : chat.initialPrompt) ?? null;
203
- const defaultModel = panel.initialModel ?? (chat == null ? void 0 : chat.defaultModel);
204
190
  const handleInitialPromptSent = useCallback(() => {
205
191
  var _a;
206
192
  if (panel.initialPrompt) updatePanel(panel.id, { initialPrompt: null });
@@ -210,26 +196,11 @@ function ChatWindow({
210
196
  (snapshot) => {
211
197
  var _a;
212
198
  setUsage(snapshot);
199
+ setTitleRefresh((value) => value + 1);
213
200
  (_a = chat == null ? void 0 : chat.onUsage) == null ? void 0 : _a.call(chat, snapshot);
214
201
  },
215
202
  [chat]
216
203
  );
217
- const handleModelChange = useCallback(
218
- (next) => {
219
- var _a;
220
- setModel(next);
221
- (_a = chat == null ? void 0 : chat.onModelChange) == null ? void 0 : _a.call(chat, next);
222
- },
223
- [chat]
224
- );
225
- const handleReasoningEffortChange = useCallback(
226
- (next) => {
227
- var _a;
228
- setReasoningEffort(next);
229
- (_a = chat == null ? void 0 : chat.onReasoningEffortChange) == null ? void 0 : _a.call(chat, next);
230
- },
231
- [chat]
232
- );
233
204
  const handlePermissionModeChange = useCallback(
234
205
  (next) => {
235
206
  var _a;
@@ -239,13 +210,14 @@ function ChatWindow({
239
210
  [chat]
240
211
  );
241
212
  const header = /* @__PURE__ */ jsxs("div", { className: "chat-drag-handle flex cursor-move items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5", children: [
242
- threadsSource != null || threadsApi !== null ? /* @__PURE__ */ jsx(
213
+ threadsSource != null || sessionsApi !== null ? /* @__PURE__ */ jsx(
243
214
  ThreadPicker,
244
215
  {
245
216
  threadId: panel.threadId,
246
217
  onSelect: (tid) => updatePanel(panel.id, { threadId: tid }),
247
218
  onNew: () => updatePanel(panel.id, { threadId: null }),
248
- ...threadsSource ? { source: threadsSource } : threadsApi !== null ? { api: threadsApi } : {}
219
+ refreshToken: titleRefresh,
220
+ ...threadsSource ? { source: threadsSource } : sessionsApi !== null ? { api: sessionsApi } : {}
249
221
  }
250
222
  ) : /* @__PURE__ */ jsx("span", { className: "px-1 text-sm font-medium", children: title }),
251
223
  /* @__PURE__ */ jsx("div", { className: "flex-1" }),
@@ -255,22 +227,26 @@ function ChatWindow({
255
227
  {
256
228
  tools: resolvedTools,
257
229
  value: toolPrefs,
258
- onChange: setToolPrefs,
230
+ onChange: handleToolPrefsChange,
259
231
  models: resolvedModels,
260
- model,
261
- onModelChange: handleModelChange,
262
- reasoningEfforts: (chat == null ? void 0 : chat.reasoningEfforts) ?? DEFAULT_REASONING_EFFORTS,
263
- reasoningEffort,
264
- onReasoningEffortChange: handleReasoningEffortChange,
232
+ runtime,
233
+ onRuntimeChange: handleRuntimeChange,
234
+ runtimeFamilies,
235
+ reasoningEfforts,
265
236
  permissionMode,
266
237
  onPermissionModeChange: handlePermissionModeChange,
267
238
  temperature,
268
- onTemperatureChange: setTemperature,
239
+ onTemperatureChange: handleTemperatureChange,
269
240
  budget,
270
241
  onBudgetChange: setBudget,
271
242
  usage,
243
+ ...sessionsApi ? { costsApi: sessionsApi } : {},
244
+ ...panel.threadId ? { threadId: panel.threadId } : {},
272
245
  toolsLoading,
273
- toolsError
246
+ toolsError,
247
+ catalogLoading,
248
+ catalogError,
249
+ onCatalogRetry: retryCatalogs
274
250
  }
275
251
  ),
276
252
  /* @__PURE__ */ jsx(
@@ -327,16 +303,18 @@ function ChatWindow({
327
303
  {
328
304
  ...chat,
329
305
  ...resolvedModels.length ? { models: resolvedModels, modelsApi: null } : {},
330
- ...defaultModel ? { defaultModel } : {},
331
- ...model ? { model } : {},
332
- reasoningEffort,
306
+ runtime,
307
+ ...runtimeFamilies ? { runtimeFamilies } : {},
333
308
  permissionMode,
309
+ onRuntimeChange: handleRuntimeChange,
334
310
  onModelChange: handleModelChange,
335
311
  onReasoningEffortChange: handleReasoningEffortChange,
336
- ...temperature !== void 0 ? { temperature } : {},
337
312
  budget,
338
313
  onUsage: handleUsage,
339
314
  ...panel.threadId ? { threadId: panel.threadId } : {},
315
+ sessionsApi,
316
+ tools: resolvedTools,
317
+ ...toolRenderers ? { toolRenderers } : {},
340
318
  body: mergedBody,
341
319
  initialPrompt,
342
320
  onInitialPromptSent: handleInitialPromptSent
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWindow.js","sources":["../../../src/data/ai/ChatWindow.tsx"],"sourcesContent":["import { useCallback, useEffect, useState, type ComponentType } from \"react\";\nimport type { Props as RndProps } from \"react-rnd\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiAdd, UiClose, UiFullscreen } from \"../../icons\";\nimport { Chat } from \"../chat/Chat\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatUsageSummary,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport { ThreadPicker } from \"./ThreadPicker\";\nimport { ContextBadges } from \"./ContextBadges\";\nimport {\n ToolPreferences,\n type ToolMeta,\n type ToolMode,\n} from \"./ToolPreferences\";\nimport type { ChatContextItem } from \"./context\";\nimport { chatWindowRequestBody } from \"./ChatWindowRequestBody\";\nimport { selectConfiguredChatModel } from \"./ChatWindow.models\";\nimport {\n loadChatPreferences,\n saveChatPreferences,\n type StoredChatPreferences,\n} from \"./ChatWindow.preferences\";\nimport { normalizeToolCatalog } from \"./ChatWindow.tool-catalog\";\nimport { useChatThreadSetup } from \"./ChatWindow.thread\";\nimport { ChatThreadSetupStatus } from \"./ChatWindow.thread-status\";\nimport type { ChatWindowProps } from \"./ChatWindow.types\";\nexport type {\n ChatContextPickerRenderProps,\n ChatWindowProps,\n} from \"./ChatWindow.types\";\n\nconst EMPTY_TOOLS: ToolMeta[] = [];\n\nconst MAXIMIZE_CSS = `\n.chat-maximized .react-draggable {\n transform: none !important;\n width: auto !important;\n height: auto !important;\n inset: 0 !important;\n position: absolute !important;\n}`;\n\n/** A draggable, resizable floating chat window. It lazy-loads `react-rnd` (an\n * optional dependency, so consumers of just the inner <Chat> never pull it)\n * and renders the existing <Chat> beneath a drag-handle header with thread\n * switching, a context-badge row and optional tool preferences. */\nexport function ChatWindow({\n panel,\n chat,\n title = \"Assistant\",\n threadsApi = \"/api/chat/threads\",\n threadsSource,\n contextTypeConfig,\n tools,\n defaultToolMode = \"ask\",\n toolsApi = \"/api/chat/tools\",\n headerExtras,\n renderContextPicker,\n}: ChatWindowProps) {\n const { updatePanel, closePanel, bringToFront, maximizePanel, openPanel } =\n useChatWindowManager();\n const threadSetup = useChatThreadSetup({\n threadId: panel.threadId,\n api: threadsApi,\n source: threadsSource,\n onCreated: (threadId) => updatePanel(panel.id, { threadId }),\n });\n const [Rnd, setRnd] = useState<ComponentType<RndProps> | null>(null);\n const [storedPrefs] = useState<StoredChatPreferences>(() =>\n loadChatPreferences(),\n );\n const initialModel =\n panel.initialModel ??\n chat?.model ??\n chat?.defaultModel ??\n storedPrefs.model;\n const [model, setModel] = useState<string | undefined>(initialModel);\n const [reasoningEffort, setReasoningEffort] = useState(\n chat?.reasoningEffort ??\n chat?.defaultReasoningEffort ??\n storedPrefs.reasoningEffort ??\n \"\",\n );\n const [temperature, setTemperature] = useState<number | undefined>(\n chat?.temperature ?? storedPrefs.temperature,\n );\n const [budget, setBudget] = useState<ChatBudgetConfig>(\n chat?.budget ?? storedPrefs.budget ?? {},\n );\n const [permissionMode, setPermissionMode] = useState<ClaudePermissionMode>(\n chat?.permissionMode ?? storedPrefs.permissionMode ?? \"default\",\n );\n const [usage, setUsage] = useState<ChatUsageSummary | null>(null);\n const [toolPrefs, setToolPrefs] = useState<Record<string, ToolMode>>(\n storedPrefs.toolPrefs ?? {},\n );\n const [fetchedTools, setFetchedTools] = useState<ToolMeta[] | undefined>(\n undefined,\n );\n const [toolsLoading, setToolsLoading] = useState(false);\n const [toolsError, setToolsError] = useState<string | null>(null);\n const [fetchedModels, setFetchedModels] = useState<ChatModel[]>([]);\n\n const resolvedTools = tools ?? fetchedTools ?? EMPTY_TOOLS;\n const modelsApi =\n chat?.modelsApi === undefined ? \"/api/chat/models\" : chat.modelsApi;\n const resolvedModels = chat?.models ?? fetchedModels;\n\n useEffect(() => {\n if (chat?.model !== undefined) setModel(chat.model);\n }, [chat?.model]);\n\n useEffect(() => {\n if (chat?.model !== undefined || panel.initialModel) return;\n if (chat?.defaultModel) setModel(chat.defaultModel);\n }, [chat?.defaultModel, chat?.model, panel.initialModel]);\n\n useEffect(() => {\n if (chat?.reasoningEffort !== undefined)\n setReasoningEffort(chat.reasoningEffort);\n }, [chat?.reasoningEffort]);\n\n useEffect(() => {\n if (chat?.temperature !== undefined) setTemperature(chat.temperature);\n }, [chat?.temperature]);\n\n useEffect(() => {\n if (chat?.budget !== undefined) setBudget(chat.budget);\n }, [chat?.budget]);\n\n useEffect(() => {\n if (chat?.permissionMode !== undefined)\n setPermissionMode(chat.permissionMode);\n }, [chat?.permissionMode]);\n\n useEffect(() => {\n if (panel.initialModel) setModel(panel.initialModel);\n }, [panel.initialModel]);\n\n useEffect(() => {\n if (tools || toolsApi === null) return;\n let active = true;\n setToolsLoading(true);\n setToolsError(null);\n fetch(toolsApi)\n .then((r) =>\n r.ok ? r.json() : Promise.reject(new Error(`tools ${r.status}`)),\n )\n .then((data) => {\n if (!active) return;\n setFetchedTools(normalizeToolCatalog(data));\n })\n .catch((err) => {\n if (!active) return;\n setToolsError(err instanceof Error ? err.message : String(err));\n })\n .finally(() => {\n if (active) setToolsLoading(false);\n });\n return () => {\n active = false;\n };\n }, [tools, toolsApi]);\n\n useEffect(() => {\n if (chat?.models || !modelsApi) return;\n let active = true;\n fetch(modelsApi)\n .then((r) =>\n r.ok ? r.json() : Promise.reject(new Error(`models ${r.status}`)),\n )\n .then((data: ChatModel[]) => {\n if (!active) return;\n setFetchedModels(data);\n setModel((current) => selectConfiguredChatModel(current, data));\n })\n .catch((err) =>\n console.warn(\"clicky-ui: failed to load chat models\", err),\n );\n return () => {\n active = false;\n };\n }, [chat?.models, modelsApi]);\n\n useEffect(() => {\n saveChatPreferences({\n ...(model ? { model } : {}),\n ...(reasoningEffort ? { reasoningEffort } : {}),\n ...(temperature !== undefined ? { temperature } : {}),\n ...(budget.cost !== undefined || budget.maxTokens !== undefined\n ? { budget }\n : {}),\n permissionMode,\n toolPrefs,\n });\n }, [budget, model, permissionMode, reasoningEffort, temperature, toolPrefs]);\n\n // Seed any tool the user hasn't configured yet from the backend default\n // permission; existing choices are preserved. Handles async catalog loads.\n useEffect(() => {\n if (!resolvedTools.length) return;\n setToolPrefs((prev) => {\n const next = { ...prev };\n let changed = false;\n for (const t of resolvedTools) {\n const key = t.name;\n if (next[key] === undefined) {\n next[key] = t.defaultPermission ?? defaultToolMode;\n changed = true;\n }\n }\n return changed ? next : prev;\n });\n }, [defaultToolMode, resolvedTools]);\n\n useEffect(() => {\n let active = true;\n import(\"react-rnd\").then((m) => {\n if (active) setRnd(() => m.Rnd as unknown as ComponentType<RndProps>);\n });\n return () => {\n active = false;\n };\n }, []);\n\n const removeContext = useCallback(\n (id: string) =>\n updatePanel(panel.id, {\n contextItems: panel.contextItems.filter((c) => c.id !== id),\n }),\n [updatePanel, panel.id, panel.contextItems],\n );\n\n const addContextItems = useCallback(\n (items: ChatContextItem[]) =>\n updatePanel(panel.id, {\n contextItems: [\n ...panel.contextItems,\n ...items.filter(\n (item, index) =>\n !panel.contextItems.some((existing) => existing.id === item.id) &&\n items.findIndex((candidate) => candidate.id === item.id) ===\n index,\n ),\n ],\n }),\n [panel.contextItems, panel.id, updatePanel],\n );\n const addContext = useCallback(\n (item: ChatContextItem) => addContextItems([item]),\n [addContextItems],\n );\n\n const mergedBody = chatWindowRequestBody({\n base: chat?.body,\n contextItems: panel.contextItems,\n tools: resolvedTools,\n toolPrefs,\n });\n\n const initialPrompt = panel.initialPrompt ?? chat?.initialPrompt ?? null;\n const defaultModel = panel.initialModel ?? chat?.defaultModel;\n const handleInitialPromptSent = useCallback(() => {\n if (panel.initialPrompt) updatePanel(panel.id, { initialPrompt: null });\n chat?.onInitialPromptSent?.();\n }, [chat, panel.id, panel.initialPrompt, updatePanel]);\n const handleUsage = useCallback(\n (snapshot: ChatUsageSummary) => {\n setUsage(snapshot);\n chat?.onUsage?.(snapshot);\n },\n [chat],\n );\n const handleModelChange = useCallback(\n (next: string) => {\n setModel(next);\n chat?.onModelChange?.(next);\n },\n [chat],\n );\n const handleReasoningEffortChange = useCallback(\n (next: string) => {\n setReasoningEffort(next);\n chat?.onReasoningEffortChange?.(next);\n },\n [chat],\n );\n const handlePermissionModeChange = useCallback(\n (next: ClaudePermissionMode) => {\n setPermissionMode(next);\n chat?.onPermissionModeChange?.(next);\n },\n [chat],\n );\n\n const header = (\n <div className=\"chat-drag-handle flex cursor-move items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5\">\n {threadsSource != null || threadsApi !== null ? (\n <ThreadPicker\n threadId={panel.threadId}\n onSelect={(tid) => updatePanel(panel.id, { threadId: tid })}\n onNew={() => updatePanel(panel.id, { threadId: null })}\n {...(threadsSource\n ? { source: threadsSource }\n : threadsApi !== null\n ? { api: threadsApi }\n : {})}\n />\n ) : (\n <span className=\"px-1 text-sm font-medium\">{title}</span>\n )}\n <div className=\"flex-1\" />\n {headerExtras}\n <ToolPreferences\n tools={resolvedTools}\n value={toolPrefs}\n onChange={setToolPrefs}\n models={resolvedModels}\n model={model}\n onModelChange={handleModelChange}\n reasoningEfforts={chat?.reasoningEfforts ?? DEFAULT_REASONING_EFFORTS}\n reasoningEffort={reasoningEffort}\n onReasoningEffortChange={handleReasoningEffortChange}\n permissionMode={permissionMode}\n onPermissionModeChange={handlePermissionModeChange}\n temperature={temperature}\n onTemperatureChange={setTemperature}\n budget={budget}\n onBudgetChange={setBudget}\n usage={usage}\n toolsLoading={toolsLoading}\n toolsError={toolsError}\n />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"New window\"\n onClick={() => openPanel()}\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={panel.maximized ? \"Restore\" : \"Maximize\"}\n onClick={() => maximizePanel(panel.id)}\n >\n <Icon icon={UiFullscreen} className=\"size-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Close\"\n onClick={() => closePanel(panel.id)}\n >\n <Icon icon={UiClose} className=\"size-4\" />\n </Button>\n </div>\n );\n\n const frame = (\n <div className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-background shadow-xl\">\n {header}\n {(renderContextPicker || panel.contextItems.length > 0) && (\n <div className=\"flex flex-wrap items-center gap-1.5 border-b border-border px-2 py-1.5\">\n {renderContextPicker?.({\n items: panel.contextItems,\n onAdd: addContext,\n onAddMany: addContextItems,\n })}\n <ContextBadges\n items={panel.contextItems}\n onRemove={removeContext}\n className=\"px-0 py-0\"\n {...(contextTypeConfig ? { typeConfig: contextTypeConfig } : {})}\n />\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n {threadSetup.blocked ? (\n <ChatThreadSetupStatus setup={threadSetup} />\n ) : (\n <Chat\n {...chat}\n {...(resolvedModels.length\n ? { models: resolvedModels, modelsApi: null }\n : {})}\n {...(defaultModel ? { defaultModel } : {})}\n {...(model ? { model } : {})}\n reasoningEffort={reasoningEffort}\n permissionMode={permissionMode}\n onModelChange={handleModelChange}\n onReasoningEffortChange={handleReasoningEffortChange}\n {...(temperature !== undefined ? { temperature } : {})}\n budget={budget}\n onUsage={handleUsage}\n {...(panel.threadId ? { threadId: panel.threadId } : {})}\n body={mergedBody}\n initialPrompt={initialPrompt}\n onInitialPromptSent={handleInitialPromptSent}\n />\n )}\n </div>\n </div>\n );\n\n const outerClass = cn(\n \"fixed pointer-events-none\",\n panel.maximized ? \"inset-4 chat-maximized\" : \"inset-0\",\n );\n\n // Until react-rnd loads (and as a graceful fallback if it never does) the\n // window is statically positioned — still usable, just not draggable.\n if (!Rnd) {\n return (\n <div className={outerClass} style={{ zIndex: panel.zIndex }}>\n <div\n className=\"pointer-events-auto h-full\"\n style={\n panel.maximized\n ? { position: \"relative\", width: \"100%\", height: \"100%\" }\n : {\n position: \"absolute\",\n left: panel.x,\n top: panel.y,\n width: panel.width,\n height: panel.height,\n }\n }\n >\n {frame}\n </div>\n </div>\n );\n }\n\n return (\n <div className={outerClass} style={{ zIndex: panel.zIndex }}>\n <style>{MAXIMIZE_CSS}</style>\n <Rnd\n default={{\n x: panel.x,\n y: panel.y,\n width: panel.width,\n height: panel.height,\n }}\n style={{ pointerEvents: \"auto\" }}\n minWidth={360}\n minHeight={400}\n bounds=\"parent\"\n dragHandleClassName=\"chat-drag-handle\"\n disableDragging={panel.maximized}\n enableResizing={!panel.maximized}\n onDragStart={() => bringToFront(panel.id)}\n onDragStop={(_e, d) => updatePanel(panel.id, { x: d.x, y: d.y })}\n onResizeStop={(_e, _dir, ref, _delta, pos) =>\n updatePanel(panel.id, {\n width: ref.offsetWidth,\n height: ref.offsetHeight,\n x: pos.x,\n y: pos.y,\n })\n }\n >\n {frame}\n </Rnd>\n </div>\n );\n}\n\n/** Renders every open window for the current {@link useChatWindowManager}.\n * Drop one of these near the root alongside a <ChatFab/>. */\nexport function ChatWindowLayer(props: Omit<ChatWindowProps, \"panel\">) {\n const { panels } = useChatWindowManager();\n return (\n <>\n {panels.map((panel) => (\n <ChatWindow key={panel.id} panel={panel} {...props} />\n ))}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatWindow.js","sources":["../../../src/data/ai/ChatWindow.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ComponentType,\n} from \"react\";\nimport type { Props as RndProps } from \"react-rnd\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../Icon\";\nimport { UiAdd, UiClose, UiFullscreen } from \"../../icons\";\nimport { Chat } from \"../chat/Chat\";\nimport type {\n ChatBudgetConfig,\n ChatUsageSummary,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport { ThreadPicker } from \"./ThreadPicker\";\nimport { ContextBadges } from \"./ContextBadges\";\nimport {\n ToolPreferences,\n type ToolMeta,\n type ToolMode,\n} from \"./ToolPreferences\";\nimport type { ChatContextItem } from \"./context\";\nimport { chatWindowRequestBody } from \"./ChatWindowRequestBody\";\nimport {\n loadChatPreferences,\n saveChatPreferences,\n type StoredChatPreferences,\n} from \"./ChatWindow.preferences\";\nimport { useChatWindowRuntime } from \"./ChatWindow.runtime\";\nimport { useChatWindowCatalogs } from \"./ChatWindow.catalogs\";\nimport {\n effectiveToolPreferences,\n normalizeToolCatalog,\n} from \"./ChatWindow.tool-catalog\";\nimport { useChatThreadSetup } from \"./ChatWindow.thread\";\nimport { ChatThreadSetupStatus } from \"./ChatWindow.thread-status\";\nimport type { ChatWindowProps } from \"./ChatWindow.types\";\nexport type {\n ChatContextPickerRenderProps,\n ChatWindowProps,\n} from \"./ChatWindow.types\";\n\nconst EMPTY_TOOLS: ToolMeta[] = [];\n\nconst MAXIMIZE_CSS = `\n.chat-maximized .react-draggable {\n transform: none !important;\n width: auto !important;\n height: auto !important;\n inset: 0 !important;\n position: absolute !important;\n}`;\n\n/** A draggable, resizable floating chat window. It lazy-loads `react-rnd` (an\n * optional dependency, so consumers of just the inner <Chat> never pull it)\n * and renders the existing <Chat> beneath a drag-handle header with thread\n * switching, a context-badge row and optional tool preferences. */\nexport function ChatWindow({\n panel,\n chat,\n title = \"Assistant\",\n sessionsApi = \"/api/chat/sessions\",\n threadsSource,\n contextTypeConfig,\n tools,\n defaultToolMode = \"ask\",\n toolsApi = \"/api/chat/tools\",\n runtimesApi = null,\n toolRenderers,\n headerExtras,\n renderContextPicker,\n}: ChatWindowProps) {\n const { updatePanel, closePanel, bringToFront, maximizePanel, openPanel } =\n useChatWindowManager();\n const threadSetup = useChatThreadSetup({\n threadId: panel.threadId,\n api: sessionsApi,\n source: threadsSource,\n onCreated: (threadId) => updatePanel(panel.id, { threadId }),\n });\n const [Rnd, setRnd] = useState<ComponentType<RndProps> | null>(null);\n const [storedPrefs] = useState<StoredChatPreferences>(() =>\n loadChatPreferences(),\n );\n const [budget, setBudget] = useState<ChatBudgetConfig>(\n chat?.budget ?? storedPrefs.budget ?? {},\n );\n const [permissionMode, setPermissionMode] = useState<ClaudePermissionMode>(\n chat?.permissionMode ?? storedPrefs.permissionMode ?? \"default\",\n );\n const [usage, setUsage] = useState<ChatUsageSummary | null>(null);\n const [titleRefresh, setTitleRefresh] = useState(0);\n // Only the modes the user picked in the popover are stored. Everything else\n // is derived, so a surface's declared defaults still reach tools the user has\n // never touched (see effectiveToolPreferences).\n const [explicitToolPrefs, setExplicitToolPrefs] = useState<\n Record<string, ToolMode>\n >(storedPrefs.toolPrefs ?? {});\n const [fetchedTools, setFetchedTools] = useState<ToolMeta[] | undefined>(\n undefined,\n );\n const [toolsLoading, setToolsLoading] = useState(false);\n const [toolsError, setToolsError] = useState<string | null>(null);\n const resolvedTools = tools ?? fetchedTools ?? EMPTY_TOOLS;\n const modelsApi =\n chat?.modelsApi === undefined ? \"/api/chat/models\" : chat.modelsApi;\n const {\n models: resolvedModels,\n runtimeFamilies,\n loading: catalogLoading,\n error: catalogError,\n retry: retryCatalogs,\n } = useChatWindowCatalogs({\n models: chat?.models,\n modelsApi,\n runtimesApi,\n });\n const {\n runtime,\n temperature,\n reasoningEfforts,\n handleRuntimeChange,\n handleModelChange,\n handleReasoningEffortChange,\n handleTemperatureChange,\n } = useChatWindowRuntime({\n chat,\n initialModel: panel.initialModel,\n models: resolvedModels,\n storedRuntime: storedPrefs.runtime,\n });\n\n useEffect(() => {\n if (chat?.budget !== undefined) setBudget(chat.budget);\n }, [chat?.budget]);\n\n useEffect(() => {\n if (chat?.permissionMode !== undefined)\n setPermissionMode(chat.permissionMode);\n }, [chat?.permissionMode]);\n\n useEffect(() => {\n if (tools || toolsApi === null) return;\n let active = true;\n setToolsLoading(true);\n setToolsError(null);\n fetch(toolsApi)\n .then((r) =>\n r.ok ? r.json() : Promise.reject(new Error(`tools ${r.status}`)),\n )\n .then((data) => {\n if (!active) return;\n setFetchedTools(normalizeToolCatalog(data));\n })\n .catch((err) => {\n if (!active) return;\n setToolsError(err instanceof Error ? err.message : String(err));\n })\n .finally(() => {\n if (active) setToolsLoading(false);\n });\n return () => {\n active = false;\n };\n }, [tools, toolsApi]);\n\n useEffect(() => {\n saveChatPreferences({\n runtime,\n ...(budget.cost !== undefined || budget.maxTokens !== undefined\n ? { budget }\n : {}),\n permissionMode,\n toolPrefs: explicitToolPrefs,\n });\n }, [budget, permissionMode, runtime, explicitToolPrefs]);\n\n const toolPrefs = useMemo(\n () =>\n effectiveToolPreferences({\n tools: resolvedTools,\n explicit: explicitToolPrefs,\n surfaceDefaults: panel.toolDefaults,\n fallback: defaultToolMode,\n }),\n [defaultToolMode, explicitToolPrefs, panel.toolDefaults, resolvedTools],\n );\n\n // The popover hands back the whole map, so the keys that differ from the\n // currently effective modes are exactly what the user just changed.\n const handleToolPrefsChange = useCallback(\n (next: Record<string, ToolMode>) => {\n setExplicitToolPrefs((prev) => {\n const updated = { ...prev };\n for (const [name, mode] of Object.entries(next)) {\n if (toolPrefs[name] !== mode) updated[name] = mode;\n }\n return updated;\n });\n },\n [toolPrefs],\n );\n\n useEffect(() => {\n let active = true;\n import(\"react-rnd\").then((m) => {\n if (active) setRnd(() => m.Rnd as unknown as ComponentType<RndProps>);\n });\n return () => {\n active = false;\n };\n }, []);\n\n const removeContext = useCallback(\n (id: string) =>\n updatePanel(panel.id, {\n contextItems: panel.contextItems.filter((c) => c.id !== id),\n }),\n [updatePanel, panel.id, panel.contextItems],\n );\n\n const addContextItems = useCallback(\n (items: ChatContextItem[]) =>\n updatePanel(panel.id, {\n contextItems: [\n ...panel.contextItems,\n ...items.filter(\n (item, index) =>\n !panel.contextItems.some((existing) => existing.id === item.id) &&\n items.findIndex((candidate) => candidate.id === item.id) ===\n index,\n ),\n ],\n }),\n [panel.contextItems, panel.id, updatePanel],\n );\n const addContext = useCallback(\n (item: ChatContextItem) => addContextItems([item]),\n [addContextItems],\n );\n\n const mergedBody = chatWindowRequestBody({\n base: chat?.body,\n contextItems: panel.contextItems,\n tools: resolvedTools,\n toolPrefs,\n });\n\n const initialPrompt = panel.initialPrompt ?? chat?.initialPrompt ?? null;\n const handleInitialPromptSent = useCallback(() => {\n if (panel.initialPrompt) updatePanel(panel.id, { initialPrompt: null });\n chat?.onInitialPromptSent?.();\n }, [chat, panel.id, panel.initialPrompt, updatePanel]);\n const handleUsage = useCallback(\n (snapshot: ChatUsageSummary) => {\n setUsage(snapshot);\n // A settled turn is also when the backend has named the conversation, so\n // this is what refreshes the picker's label.\n setTitleRefresh((value) => value + 1);\n chat?.onUsage?.(snapshot);\n },\n [chat],\n );\n const handlePermissionModeChange = useCallback(\n (next: ClaudePermissionMode) => {\n setPermissionMode(next);\n chat?.onPermissionModeChange?.(next);\n },\n [chat],\n );\n\n const header = (\n <div className=\"chat-drag-handle flex cursor-move items-center gap-1 border-b border-border bg-muted/40 px-2 py-1.5\">\n {threadsSource != null || sessionsApi !== null ? (\n <ThreadPicker\n threadId={panel.threadId}\n onSelect={(tid) => updatePanel(panel.id, { threadId: tid })}\n onNew={() => updatePanel(panel.id, { threadId: null })}\n refreshToken={titleRefresh}\n {...(threadsSource\n ? { source: threadsSource }\n : sessionsApi !== null\n ? { api: sessionsApi }\n : {})}\n />\n ) : (\n <span className=\"px-1 text-sm font-medium\">{title}</span>\n )}\n <div className=\"flex-1\" />\n {headerExtras}\n <ToolPreferences\n tools={resolvedTools}\n value={toolPrefs}\n onChange={handleToolPrefsChange}\n models={resolvedModels}\n runtime={runtime}\n onRuntimeChange={handleRuntimeChange}\n runtimeFamilies={runtimeFamilies}\n reasoningEfforts={reasoningEfforts}\n permissionMode={permissionMode}\n onPermissionModeChange={handlePermissionModeChange}\n temperature={temperature}\n onTemperatureChange={handleTemperatureChange}\n budget={budget}\n onBudgetChange={setBudget}\n usage={usage}\n {...(sessionsApi ? { costsApi: sessionsApi } : {})}\n {...(panel.threadId ? { threadId: panel.threadId } : {})}\n toolsLoading={toolsLoading}\n toolsError={toolsError}\n catalogLoading={catalogLoading}\n catalogError={catalogError}\n onCatalogRetry={retryCatalogs}\n />\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"New window\"\n onClick={() => openPanel()}\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title={panel.maximized ? \"Restore\" : \"Maximize\"}\n onClick={() => maximizePanel(panel.id)}\n >\n <Icon icon={UiFullscreen} className=\"size-4\" />\n </Button>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n title=\"Close\"\n onClick={() => closePanel(panel.id)}\n >\n <Icon icon={UiClose} className=\"size-4\" />\n </Button>\n </div>\n );\n\n const frame = (\n <div className=\"flex h-full flex-col overflow-hidden rounded-lg border border-border bg-background shadow-xl\">\n {header}\n {(renderContextPicker || panel.contextItems.length > 0) && (\n <div className=\"flex flex-wrap items-center gap-1.5 border-b border-border px-2 py-1.5\">\n {renderContextPicker?.({\n items: panel.contextItems,\n onAdd: addContext,\n onAddMany: addContextItems,\n })}\n <ContextBadges\n items={panel.contextItems}\n onRemove={removeContext}\n className=\"px-0 py-0\"\n {...(contextTypeConfig ? { typeConfig: contextTypeConfig } : {})}\n />\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n {threadSetup.blocked ? (\n <ChatThreadSetupStatus setup={threadSetup} />\n ) : (\n <Chat\n {...chat}\n {...(resolvedModels.length\n ? { models: resolvedModels, modelsApi: null }\n : {})}\n runtime={runtime}\n {...(runtimeFamilies ? { runtimeFamilies } : {})}\n permissionMode={permissionMode}\n onRuntimeChange={handleRuntimeChange}\n onModelChange={handleModelChange}\n onReasoningEffortChange={handleReasoningEffortChange}\n budget={budget}\n onUsage={handleUsage}\n {...(panel.threadId ? { threadId: panel.threadId } : {})}\n sessionsApi={sessionsApi}\n tools={resolvedTools}\n {...(toolRenderers ? { toolRenderers } : {})}\n body={mergedBody}\n initialPrompt={initialPrompt}\n onInitialPromptSent={handleInitialPromptSent}\n />\n )}\n </div>\n </div>\n );\n\n const outerClass = cn(\n \"fixed pointer-events-none\",\n panel.maximized ? \"inset-4 chat-maximized\" : \"inset-0\",\n );\n\n // Until react-rnd loads (and as a graceful fallback if it never does) the\n // window is statically positioned — still usable, just not draggable.\n if (!Rnd) {\n return (\n <div className={outerClass} style={{ zIndex: panel.zIndex }}>\n <div\n className=\"pointer-events-auto h-full\"\n style={\n panel.maximized\n ? { position: \"relative\", width: \"100%\", height: \"100%\" }\n : {\n position: \"absolute\",\n left: panel.x,\n top: panel.y,\n width: panel.width,\n height: panel.height,\n }\n }\n >\n {frame}\n </div>\n </div>\n );\n }\n\n return (\n <div className={outerClass} style={{ zIndex: panel.zIndex }}>\n <style>{MAXIMIZE_CSS}</style>\n <Rnd\n default={{\n x: panel.x,\n y: panel.y,\n width: panel.width,\n height: panel.height,\n }}\n style={{ pointerEvents: \"auto\" }}\n minWidth={360}\n minHeight={400}\n bounds=\"parent\"\n dragHandleClassName=\"chat-drag-handle\"\n disableDragging={panel.maximized}\n enableResizing={!panel.maximized}\n onDragStart={() => bringToFront(panel.id)}\n onDragStop={(_e, d) => updatePanel(panel.id, { x: d.x, y: d.y })}\n onResizeStop={(_e, _dir, ref, _delta, pos) =>\n updatePanel(panel.id, {\n width: ref.offsetWidth,\n height: ref.offsetHeight,\n x: pos.x,\n y: pos.y,\n })\n }\n >\n {frame}\n </Rnd>\n </div>\n );\n}\n\n/** Renders every open window for the current {@link useChatWindowManager}.\n * Drop one of these near the root alongside a <ChatFab/>. */\nexport function ChatWindowLayer(props: Omit<ChatWindowProps, \"panel\">) {\n const { panels } = useChatWindowManager();\n return (\n <>\n {panels.map((panel) => (\n <ChatWindow key={panel.id} panel={panel} {...props} />\n ))}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWindow.preferences.cjs","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"sourcesContent":["import type { ChatBudgetConfig, ClaudePermissionMode } from \"../chat/types\";\nimport type { ToolMode } from \"./ToolPreferences\";\n\nexport type StoredChatPreferences = {\n model?: string;\n reasoningEffort?: string;\n temperature?: number;\n budget?: ChatBudgetConfig;\n permissionMode?: ClaudePermissionMode;\n toolPrefs?: Record<string, ToolMode>;\n};\n\nconst CHAT_PREFS_STORAGE_KEY = \"clicky-ui.chat-window.preferences\";\n\nexport function loadChatPreferences(): StoredChatPreferences {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(CHAT_PREFS_STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as StoredChatPreferences;\n if (!parsed || typeof parsed !== \"object\") return {};\n const { toolPrefs: rawToolPrefs, ...rest } = parsed;\n const toolPrefs = normalizeToolPreferences(rawToolPrefs);\n return {\n ...rest,\n ...(toolPrefs ? { toolPrefs } : {}),\n };\n } catch {\n return {};\n }\n}\n\nexport function saveChatPreferences(prefs: StoredChatPreferences): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(CHAT_PREFS_STORAGE_KEY, JSON.stringify(prefs));\n } catch {\n // Ignore storage quota/privacy failures; chat stays functional.\n }\n}\n\nfunction normalizeToolPreferences(\n value: unknown\n): Record<string, ToolMode> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return undefined;\n const prefs: Record<string, ToolMode> = {};\n for (const [key, rawMode] of Object.entries(value)) {\n const mode = normalizeToolModeValue(rawMode);\n if (key && mode) prefs[key] = mode;\n }\n return Object.keys(prefs).length ? prefs : undefined;\n}\n\nfunction normalizeToolModeValue(value: unknown): ToolMode | undefined {\n if (typeof value !== \"string\") return undefined;\n switch (value.trim().toLowerCase()) {\n case \"on\":\n case \"enabled\":\n return \"on\";\n case \"ask\":\n return \"ask\";\n case \"off\":\n case \"disabled\":\n return \"off\";\n case \"auto\":\n return \"auto\";\n default:\n return undefined;\n }\n}\n"],"names":[],"mappings":";;AAYA,MAAM,yBAAyB;AAExB,SAAS,sBAA6C;AAC3D,MAAI,OAAO,WAAW,YAAa,QAAO,CAAA;AAC1C,MAAI;AACF,UAAM,MAAM,OAAO,aAAa,QAAQ,sBAAsB;AAC9D,QAAI,CAAC,IAAK,QAAO,CAAA;AACjB,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,QAAI,CAAC,UAAU,OAAO,WAAW,iBAAiB,CAAA;AAClD,UAAM,EAAE,WAAW,cAAc,GAAG,SAAS;AAC7C,UAAM,YAAY,yBAAyB,YAAY;AACvD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,cAAc,CAAA;AAAA,IAAC;AAAA,EAErC,QAAQ;AACN,WAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,OAAoC;AACtE,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,WAAO,aAAa,QAAQ,wBAAwB,KAAK,UAAU,KAAK,CAAC;AAAA,EAC3E,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,yBACP,OACsC;AACtC,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAC5D,WAAO;AACT,QAAM,QAAkC,CAAA;AACxC,aAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,UAAM,OAAO,uBAAuB,OAAO;AAC3C,QAAI,OAAO,KAAM,OAAM,GAAG,IAAI;AAAA,EAChC;AACA,SAAO,OAAO,KAAK,KAAK,EAAE,SAAS,QAAQ;AAC7C;AAEA,SAAS,uBAAuB,OAAsC;AACpE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAQ,MAAM,KAAA,EAAO,YAAA,GAAY;AAAA,IAC/B,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;;;"}
1
+ {"version":3,"file":"ChatWindow.preferences.cjs","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"sourcesContent":["import type {\n ChatBudgetConfig,\n ChatModelRuntime,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport type { ToolMode } from \"./ToolPreferences\";\n\nexport type StoredChatPreferences = {\n runtime?: ChatModelRuntime;\n budget?: ChatBudgetConfig;\n permissionMode?: ClaudePermissionMode;\n toolPrefs?: Record<string, ToolMode>;\n};\n\nconst CHAT_PREFS_STORAGE_KEY = \"clicky-ui.chat-window.preferences\";\n\nexport function loadChatPreferences(): StoredChatPreferences {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(CHAT_PREFS_STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as StoredChatPreferences;\n if (!parsed || typeof parsed !== \"object\") return {};\n const { toolPrefs: rawToolPrefs, ...rest } = parsed;\n const toolPrefs = normalizeToolPreferences(rawToolPrefs);\n return {\n ...rest,\n ...(toolPrefs ? { toolPrefs } : {}),\n };\n } catch {\n return {};\n }\n}\n\nexport function saveChatPreferences(prefs: StoredChatPreferences): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(CHAT_PREFS_STORAGE_KEY, JSON.stringify(prefs));\n } catch {\n // Ignore storage quota/privacy failures; chat stays functional.\n }\n}\n\nfunction normalizeToolPreferences(\n value: unknown\n): Record<string, ToolMode> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return undefined;\n const prefs: Record<string, ToolMode> = {};\n for (const [key, rawMode] of Object.entries(value)) {\n const mode = normalizeToolModeValue(rawMode);\n if (key && mode) prefs[key] = mode;\n }\n return Object.keys(prefs).length ? prefs : undefined;\n}\n\nfunction normalizeToolModeValue(value: unknown): ToolMode | undefined {\n if (typeof value !== \"string\") return undefined;\n switch (value.trim().toLowerCase()) {\n case \"on\":\n case \"enabled\":\n return \"on\";\n case \"ask\":\n return \"ask\";\n case \"off\":\n case \"disabled\":\n return \"off\";\n case \"auto\":\n return \"auto\";\n default:\n return undefined;\n }\n}\n"],"names":[],"mappings":";;AAcA,MAAM,yBAAyB;AAExB,SAAS,sBAA6C;AAC3D,MAAI,OAAO,WAAW,YAAa,QAAO,CAAA;AAC1C,MAAI;AACF,UAAM,MAAM,OAAO,aAAa,QAAQ,sBAAsB;AAC9D,QAAI,CAAC,IAAK,QAAO,CAAA;AACjB,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,QAAI,CAAC,UAAU,OAAO,WAAW,iBAAiB,CAAA;AAClD,UAAM,EAAE,WAAW,cAAc,GAAG,SAAS;AAC7C,UAAM,YAAY,yBAAyB,YAAY;AACvD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,cAAc,CAAA;AAAA,IAAC;AAAA,EAErC,QAAQ;AACN,WAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,OAAoC;AACtE,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,WAAO,aAAa,QAAQ,wBAAwB,KAAK,UAAU,KAAK,CAAC;AAAA,EAC3E,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,yBACP,OACsC;AACtC,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAC5D,WAAO;AACT,QAAM,QAAkC,CAAA;AACxC,aAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,UAAM,OAAO,uBAAuB,OAAO;AAC3C,QAAI,OAAO,KAAM,OAAM,GAAG,IAAI;AAAA,EAChC;AACA,SAAO,OAAO,KAAK,KAAK,EAAE,SAAS,QAAQ;AAC7C;AAEA,SAAS,uBAAuB,OAAsC;AACpE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAQ,MAAM,KAAA,EAAO,YAAA,GAAY;AAAA,IAC/B,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;;;"}
@@ -1,9 +1,7 @@
1
- import { ChatBudgetConfig, ClaudePermissionMode } from '../chat/types';
1
+ import { ChatBudgetConfig, ChatModelRuntime, ClaudePermissionMode } from '../chat/types';
2
2
  import { ToolMode } from './ToolPreferences';
3
3
  export type StoredChatPreferences = {
4
- model?: string;
5
- reasoningEffort?: string;
6
- temperature?: number;
4
+ runtime?: ChatModelRuntime;
7
5
  budget?: ChatBudgetConfig;
8
6
  permissionMode?: ClaudePermissionMode;
9
7
  toolPrefs?: Record<string, ToolMode>;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWindow.preferences.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACtC,CAAC;AAIF,wBAAgB,mBAAmB,IAAI,qBAAqB,CAgB3D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAOtE"}
1
+ {"version":3,"file":"ChatWindow.preferences.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACtC,CAAC;AAIF,wBAAgB,mBAAmB,IAAI,qBAAqB,CAgB3D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAOtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWindow.preferences.js","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"sourcesContent":["import type { ChatBudgetConfig, ClaudePermissionMode } from \"../chat/types\";\nimport type { ToolMode } from \"./ToolPreferences\";\n\nexport type StoredChatPreferences = {\n model?: string;\n reasoningEffort?: string;\n temperature?: number;\n budget?: ChatBudgetConfig;\n permissionMode?: ClaudePermissionMode;\n toolPrefs?: Record<string, ToolMode>;\n};\n\nconst CHAT_PREFS_STORAGE_KEY = \"clicky-ui.chat-window.preferences\";\n\nexport function loadChatPreferences(): StoredChatPreferences {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(CHAT_PREFS_STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as StoredChatPreferences;\n if (!parsed || typeof parsed !== \"object\") return {};\n const { toolPrefs: rawToolPrefs, ...rest } = parsed;\n const toolPrefs = normalizeToolPreferences(rawToolPrefs);\n return {\n ...rest,\n ...(toolPrefs ? { toolPrefs } : {}),\n };\n } catch {\n return {};\n }\n}\n\nexport function saveChatPreferences(prefs: StoredChatPreferences): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(CHAT_PREFS_STORAGE_KEY, JSON.stringify(prefs));\n } catch {\n // Ignore storage quota/privacy failures; chat stays functional.\n }\n}\n\nfunction normalizeToolPreferences(\n value: unknown\n): Record<string, ToolMode> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return undefined;\n const prefs: Record<string, ToolMode> = {};\n for (const [key, rawMode] of Object.entries(value)) {\n const mode = normalizeToolModeValue(rawMode);\n if (key && mode) prefs[key] = mode;\n }\n return Object.keys(prefs).length ? prefs : undefined;\n}\n\nfunction normalizeToolModeValue(value: unknown): ToolMode | undefined {\n if (typeof value !== \"string\") return undefined;\n switch (value.trim().toLowerCase()) {\n case \"on\":\n case \"enabled\":\n return \"on\";\n case \"ask\":\n return \"ask\";\n case \"off\":\n case \"disabled\":\n return \"off\";\n case \"auto\":\n return \"auto\";\n default:\n return undefined;\n }\n}\n"],"names":[],"mappings":"AAYA,MAAM,yBAAyB;AAExB,SAAS,sBAA6C;AAC3D,MAAI,OAAO,WAAW,YAAa,QAAO,CAAA;AAC1C,MAAI;AACF,UAAM,MAAM,OAAO,aAAa,QAAQ,sBAAsB;AAC9D,QAAI,CAAC,IAAK,QAAO,CAAA;AACjB,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,QAAI,CAAC,UAAU,OAAO,WAAW,iBAAiB,CAAA;AAClD,UAAM,EAAE,WAAW,cAAc,GAAG,SAAS;AAC7C,UAAM,YAAY,yBAAyB,YAAY;AACvD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,cAAc,CAAA;AAAA,IAAC;AAAA,EAErC,QAAQ;AACN,WAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,OAAoC;AACtE,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,WAAO,aAAa,QAAQ,wBAAwB,KAAK,UAAU,KAAK,CAAC;AAAA,EAC3E,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,yBACP,OACsC;AACtC,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAC5D,WAAO;AACT,QAAM,QAAkC,CAAA;AACxC,aAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,UAAM,OAAO,uBAAuB,OAAO;AAC3C,QAAI,OAAO,KAAM,OAAM,GAAG,IAAI;AAAA,EAChC;AACA,SAAO,OAAO,KAAK,KAAK,EAAE,SAAS,QAAQ;AAC7C;AAEA,SAAS,uBAAuB,OAAsC;AACpE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAQ,MAAM,KAAA,EAAO,YAAA,GAAY;AAAA,IAC/B,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"ChatWindow.preferences.js","sources":["../../../src/data/ai/ChatWindow.preferences.ts"],"sourcesContent":["import type {\n ChatBudgetConfig,\n ChatModelRuntime,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport type { ToolMode } from \"./ToolPreferences\";\n\nexport type StoredChatPreferences = {\n runtime?: ChatModelRuntime;\n budget?: ChatBudgetConfig;\n permissionMode?: ClaudePermissionMode;\n toolPrefs?: Record<string, ToolMode>;\n};\n\nconst CHAT_PREFS_STORAGE_KEY = \"clicky-ui.chat-window.preferences\";\n\nexport function loadChatPreferences(): StoredChatPreferences {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(CHAT_PREFS_STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as StoredChatPreferences;\n if (!parsed || typeof parsed !== \"object\") return {};\n const { toolPrefs: rawToolPrefs, ...rest } = parsed;\n const toolPrefs = normalizeToolPreferences(rawToolPrefs);\n return {\n ...rest,\n ...(toolPrefs ? { toolPrefs } : {}),\n };\n } catch {\n return {};\n }\n}\n\nexport function saveChatPreferences(prefs: StoredChatPreferences): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(CHAT_PREFS_STORAGE_KEY, JSON.stringify(prefs));\n } catch {\n // Ignore storage quota/privacy failures; chat stays functional.\n }\n}\n\nfunction normalizeToolPreferences(\n value: unknown\n): Record<string, ToolMode> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n return undefined;\n const prefs: Record<string, ToolMode> = {};\n for (const [key, rawMode] of Object.entries(value)) {\n const mode = normalizeToolModeValue(rawMode);\n if (key && mode) prefs[key] = mode;\n }\n return Object.keys(prefs).length ? prefs : undefined;\n}\n\nfunction normalizeToolModeValue(value: unknown): ToolMode | undefined {\n if (typeof value !== \"string\") return undefined;\n switch (value.trim().toLowerCase()) {\n case \"on\":\n case \"enabled\":\n return \"on\";\n case \"ask\":\n return \"ask\";\n case \"off\":\n case \"disabled\":\n return \"off\";\n case \"auto\":\n return \"auto\";\n default:\n return undefined;\n }\n}\n"],"names":[],"mappings":"AAcA,MAAM,yBAAyB;AAExB,SAAS,sBAA6C;AAC3D,MAAI,OAAO,WAAW,YAAa,QAAO,CAAA;AAC1C,MAAI;AACF,UAAM,MAAM,OAAO,aAAa,QAAQ,sBAAsB;AAC9D,QAAI,CAAC,IAAK,QAAO,CAAA;AACjB,UAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,QAAI,CAAC,UAAU,OAAO,WAAW,iBAAiB,CAAA;AAClD,UAAM,EAAE,WAAW,cAAc,GAAG,SAAS;AAC7C,UAAM,YAAY,yBAAyB,YAAY;AACvD,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,cAAc,CAAA;AAAA,IAAC;AAAA,EAErC,QAAQ;AACN,WAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,OAAoC;AACtE,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,WAAO,aAAa,QAAQ,wBAAwB,KAAK,UAAU,KAAK,CAAC;AAAA,EAC3E,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,yBACP,OACsC;AACtC,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK;AAC5D,WAAO;AACT,QAAM,QAAkC,CAAA;AACxC,aAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,UAAM,OAAO,uBAAuB,OAAO;AAC3C,QAAI,OAAO,KAAM,OAAM,GAAG,IAAI;AAAA,EAChC;AACA,SAAO,OAAO,KAAK,KAAK,EAAE,SAAS,QAAQ;AAC7C;AAEA,SAAS,uBAAuB,OAAsC;AACpE,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,UAAQ,MAAM,KAAA,EAAO,YAAA,GAAY;AAAA,IAC/B,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const react = require("react");
4
+ const Chat_runtime = require("../chat/Chat.runtime.cjs");
5
+ const effortIcons = require("../chat/effort-icons.cjs");
6
+ const ChatWindow_models = require("./ChatWindow.models.cjs");
7
+ function useChatWindowRuntime({
8
+ chat,
9
+ initialModel,
10
+ models,
11
+ storedRuntime
12
+ }) {
13
+ const reasoningEfforts = (chat == null ? void 0 : chat.reasoningEfforts) ?? effortIcons.DEFAULT_REASONING_EFFORTS;
14
+ const [runtime, setRuntime] = react.useState(
15
+ () => Chat_runtime.resolveChatRuntime({
16
+ models,
17
+ current: (chat == null ? void 0 : chat.runtime) ?? (chat == null ? void 0 : chat.defaultRuntime) ?? storedRuntime,
18
+ preferredModel: initialModel ?? (chat == null ? void 0 : chat.model) ?? ((chat == null ? void 0 : chat.runtime) || (chat == null ? void 0 : chat.defaultRuntime) || storedRuntime ? void 0 : chat == null ? void 0 : chat.defaultModel),
19
+ effort: (chat == null ? void 0 : chat.reasoningEffort) ?? (chat == null ? void 0 : chat.defaultReasoningEffort),
20
+ temperature: chat == null ? void 0 : chat.temperature,
21
+ reasoningEfforts
22
+ })
23
+ );
24
+ react.useEffect(() => {
25
+ if (chat == null ? void 0 : chat.runtime) {
26
+ setRuntime(chat.runtime);
27
+ return;
28
+ }
29
+ setRuntime((current) => {
30
+ var _a;
31
+ const currentModel = (_a = Chat_runtime.selectedChatModel(models, current)) == null ? void 0 : _a.id;
32
+ const preferred = initialModel ?? (chat == null ? void 0 : chat.model) ?? currentModel ?? current.id ?? current.model ?? (chat == null ? void 0 : chat.defaultModel);
33
+ const configured = models.length ? ChatWindow_models.selectConfiguredChatModel(preferred, models) : preferred;
34
+ return Chat_runtime.resolveChatRuntime({
35
+ models,
36
+ current,
37
+ preferredModel: configured,
38
+ effort: chat == null ? void 0 : chat.reasoningEffort,
39
+ temperature: chat == null ? void 0 : chat.temperature,
40
+ reasoningEfforts
41
+ });
42
+ });
43
+ }, [
44
+ chat == null ? void 0 : chat.defaultModel,
45
+ chat == null ? void 0 : chat.model,
46
+ chat == null ? void 0 : chat.reasoningEffort,
47
+ chat == null ? void 0 : chat.runtime,
48
+ chat == null ? void 0 : chat.temperature,
49
+ initialModel,
50
+ models,
51
+ reasoningEfforts
52
+ ]);
53
+ const selectedModel = Chat_runtime.selectedChatModel(models, runtime);
54
+ const model = (selectedModel == null ? void 0 : selectedModel.id) ?? runtime.id ?? runtime.model;
55
+ const reasoningEffort = runtime.effort ?? "";
56
+ const handleRuntimeChange = react.useCallback(
57
+ (next) => {
58
+ var _a;
59
+ setRuntime(next);
60
+ (_a = chat == null ? void 0 : chat.onRuntimeChange) == null ? void 0 : _a.call(chat, next);
61
+ },
62
+ [chat]
63
+ );
64
+ const handleModelChange = react.useCallback(
65
+ (next) => {
66
+ var _a;
67
+ setRuntime((current) => {
68
+ if (!next) {
69
+ return Chat_runtime.withRuntimeField(
70
+ Chat_runtime.withRuntimeField(current, "id", void 0),
71
+ "model",
72
+ void 0
73
+ );
74
+ }
75
+ const selected = models.find((candidate) => candidate.id === next);
76
+ if (!selected) {
77
+ return Chat_runtime.withRuntimeField(
78
+ Chat_runtime.withRuntimeField(current, "id", void 0),
79
+ "model",
80
+ next
81
+ );
82
+ }
83
+ return Chat_runtime.resolveChatRuntime({
84
+ models,
85
+ current,
86
+ preferredModel: selected.id,
87
+ reasoningEfforts
88
+ });
89
+ });
90
+ (_a = chat == null ? void 0 : chat.onModelChange) == null ? void 0 : _a.call(chat, next);
91
+ },
92
+ [chat, models, reasoningEfforts]
93
+ );
94
+ const handleReasoningEffortChange = react.useCallback(
95
+ (next) => {
96
+ var _a;
97
+ setRuntime((current) => Chat_runtime.withRuntimeField(current, "effort", next));
98
+ (_a = chat == null ? void 0 : chat.onReasoningEffortChange) == null ? void 0 : _a.call(chat, next);
99
+ },
100
+ [chat]
101
+ );
102
+ const handleTemperatureChange = react.useCallback((next) => {
103
+ setRuntime(
104
+ (current) => Chat_runtime.withRuntimeField(current, "temperature", next)
105
+ );
106
+ }, []);
107
+ return {
108
+ runtime,
109
+ model,
110
+ reasoningEffort,
111
+ temperature: runtime.temperature,
112
+ reasoningEfforts,
113
+ handleRuntimeChange,
114
+ handleModelChange,
115
+ handleReasoningEffortChange,
116
+ handleTemperatureChange
117
+ };
118
+ }
119
+ exports.useChatWindowRuntime = useChatWindowRuntime;
120
+ //# sourceMappingURL=ChatWindow.runtime.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatWindow.runtime.cjs","sources":["../../../src/data/ai/ChatWindow.runtime.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport type { ChatProps } from \"../chat/Chat\";\nimport {\n resolveChatRuntime,\n selectedChatModel,\n withRuntimeField,\n} from \"../chat/Chat.runtime\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport type { ChatModel, ChatModelRuntime } from \"../chat/types\";\nimport { selectConfiguredChatModel } from \"./ChatWindow.models\";\n\nexport type ChatWindowRuntimeOptions = {\n chat?: Partial<ChatProps> | undefined;\n initialModel?: string | null | undefined;\n models: ChatModel[];\n storedRuntime?: ChatModelRuntime | undefined;\n};\n\nexport function useChatWindowRuntime({\n chat,\n initialModel,\n models,\n storedRuntime,\n}: ChatWindowRuntimeOptions) {\n const reasoningEfforts =\n chat?.reasoningEfforts ?? DEFAULT_REASONING_EFFORTS;\n const [runtime, setRuntime] = useState<ChatModelRuntime>(() =>\n resolveChatRuntime({\n models,\n current: chat?.runtime ?? chat?.defaultRuntime ?? storedRuntime,\n preferredModel:\n initialModel ??\n chat?.model ??\n (chat?.runtime || chat?.defaultRuntime || storedRuntime\n ? undefined\n : chat?.defaultModel),\n effort: chat?.reasoningEffort ?? chat?.defaultReasoningEffort,\n temperature: chat?.temperature,\n reasoningEfforts,\n }),\n );\n\n useEffect(() => {\n if (chat?.runtime) {\n setRuntime(chat.runtime);\n return;\n }\n setRuntime((current) => {\n const currentModel = selectedChatModel(models, current)?.id;\n const preferred =\n initialModel ??\n chat?.model ??\n currentModel ??\n current.id ??\n current.model ??\n chat?.defaultModel;\n const configured = models.length\n ? selectConfiguredChatModel(preferred, models)\n : preferred;\n return resolveChatRuntime({\n models,\n current,\n preferredModel: configured,\n effort: chat?.reasoningEffort,\n temperature: chat?.temperature,\n reasoningEfforts,\n });\n });\n }, [\n chat?.defaultModel,\n chat?.model,\n chat?.reasoningEffort,\n chat?.runtime,\n chat?.temperature,\n initialModel,\n models,\n reasoningEfforts,\n ]);\n\n const selectedModel = selectedChatModel(models, runtime);\n const model = selectedModel?.id ?? runtime.id ?? runtime.model;\n const reasoningEffort = runtime.effort ?? \"\";\n\n const handleRuntimeChange = useCallback(\n (next: ChatModelRuntime) => {\n setRuntime(next);\n chat?.onRuntimeChange?.(next);\n },\n [chat],\n );\n const handleModelChange = useCallback(\n (next: string) => {\n setRuntime((current) => {\n if (!next) {\n return withRuntimeField(\n withRuntimeField(current, \"id\", undefined),\n \"model\",\n undefined,\n );\n }\n const selected = models.find((candidate) => candidate.id === next);\n if (!selected) {\n return withRuntimeField(\n withRuntimeField(current, \"id\", undefined),\n \"model\",\n next,\n );\n }\n return resolveChatRuntime({\n models,\n current,\n preferredModel: selected.id,\n reasoningEfforts,\n });\n });\n chat?.onModelChange?.(next);\n },\n [chat, models, reasoningEfforts],\n );\n const handleReasoningEffortChange = useCallback(\n (next: string) => {\n setRuntime((current) => withRuntimeField(current, \"effort\", next));\n chat?.onReasoningEffortChange?.(next);\n },\n [chat],\n );\n const handleTemperatureChange = useCallback((next: number | undefined) => {\n setRuntime((current) =>\n withRuntimeField(current, \"temperature\", next),\n );\n }, []);\n\n return {\n runtime,\n model,\n reasoningEffort,\n temperature: runtime.temperature,\n reasoningEfforts,\n handleRuntimeChange,\n handleModelChange,\n handleReasoningEffortChange,\n handleTemperatureChange,\n };\n}\n"],"names":["DEFAULT_REASONING_EFFORTS","useState","resolveChatRuntime","useEffect","selectedChatModel","selectConfiguredChatModel","useCallback","withRuntimeField"],"mappings":"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"}