@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-mode.cjs","sources":["../../../src/data/runtime/runtime-mode.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport { UiCloud, UiColumns, UiRobotAi, UiTerminal } from \"../../icons\";\nimport type { ChatModel, RuntimeAvailability } from \"../chat/types\";\nimport {\n availabilityText,\n isSelectableModel,\n isUnavailable,\n unsupportedAvailability,\n} from \"./availability\";\n\n// A backend runtime is factored into two UI axes — a provider\n// **family** (Claude, OpenAI, …) and a **mode** within it (Agent, CLI, cmux,\n// API) — that together resolve to a single `spec.backend` string. This is the\n// only place that mapping lives; both the inline PromptRunEditor and the modal\n// SpecRuntimeEditor drive their Mode pickers from it.\n\nexport type SpecRuntimeModeOption = {\n /** UI mode id within a family (e.g. \"agent\", \"cli\", \"cmux\", \"api\"). */\n id: string;\n label: string;\n /** The concrete `spec.backend` this (family, mode) resolves to. */\n backend: string;\n icon?: StaticIconComponent | undefined;\n title?: string | undefined;\n provider?: string | undefined;\n availability?: RuntimeAvailability | undefined;\n};\n\nexport type SpecRuntimeFamily = {\n id: string;\n label: string;\n /** The model-catalog provider (`ChatModel.provider`) whose models this family runs. */\n provider: string;\n modes: SpecRuntimeModeOption[];\n};\n\n// Default catalog covering the captain/gavel backend set. Hosts may pass their\n// own via the `families` prop when their catalog differs.\nexport const SPEC_RUNTIME_FAMILIES: SpecRuntimeFamily[] = [\n {\n id: \"claude\",\n label: \"Claude\",\n provider: \"claude-agent\",\n modes: [\n {\n id: \"agent\",\n label: \"Agent\",\n backend: \"claude-agent\",\n icon: UiRobotAi,\n title: \"Claude Agent SDK\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"claude-cli\",\n icon: UiTerminal,\n title: \"Claude Code CLI\",\n },\n {\n id: \"cmux\",\n label: \"cmux\",\n backend: \"claude-cmux\",\n icon: UiColumns,\n title: \"Claude multiplexer\",\n },\n ],\n },\n {\n id: \"codex\",\n label: \"Codex\",\n provider: \"codex-cli\",\n modes: [\n {\n id: \"agent\",\n label: \"Agent\",\n backend: \"codex-agent\",\n icon: UiRobotAi,\n title: \"Codex agent\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"codex-cli\",\n icon: UiTerminal,\n title: \"Codex CLI\",\n },\n {\n id: \"cmux\",\n label: \"cmux\",\n backend: \"codex-cmux\",\n icon: UiColumns,\n title: \"Codex multiplexer\",\n },\n ],\n },\n {\n id: \"openai\",\n label: \"OpenAI\",\n provider: \"openai\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"openai\",\n icon: UiCloud,\n title: \"OpenAI API\",\n },\n ],\n },\n {\n id: \"anthropic\",\n label: \"Anthropic\",\n provider: \"anthropic\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"anthropic\",\n icon: UiCloud,\n title: \"Anthropic API\",\n },\n ],\n },\n {\n id: \"gemini\",\n label: \"Gemini\",\n provider: \"googleai\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"gemini\",\n icon: UiCloud,\n title: \"Gemini API\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"gemini-cli\",\n icon: UiTerminal,\n title: \"Gemini CLI\",\n },\n ],\n },\n {\n id: \"deepseek\",\n label: \"DeepSeek\",\n provider: \"deepseek\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"deepseek\",\n icon: UiCloud,\n title: \"DeepSeek API\",\n },\n ],\n },\n];\n\n// One provider×mode cell as captain serves it (`/whoami`.runtimes and the prompt\n// schema document's `runtimes`), projected from its model registry. It carries\n// ids, not display text: `claude`/`api` are enough to render both, and a served\n// label would be a second place for presentation to drift.\nexport type RuntimeCatalogMode = {\n /** api | agent | cli | cmux */\n mode: string;\n /** The concrete `spec.backend`, e.g. \"claude-cmux\". */\n backend: string;\n /** \"api\" (remote, in-process) or \"cli\" (supervised local binary). */\n kind?: string | undefined;\n /** Rides the local CLI's own login; never consults an API key. */\n keyless?: boolean | undefined;\n /** The model id a picker should seed this mode with. */\n defaultModel?: string | undefined;\n /** The user switched this off in `~/.captain.yaml`. */\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n /** Model-catalog provider used by this exact mode. */\n catalogProvider?: string | undefined;\n availability?: RuntimeAvailability | undefined;\n};\n\nexport type RuntimeCatalogFamily = {\n /** The coding-agent name: claude | codex | gemini | deepseek. */\n family: string;\n /** The canonical provider key: anthropic | openai | google | deepseek. */\n provider: string;\n /** The namespace this provider's model ids carry (`ChatModel.provider`). */\n catalogPrefix: string;\n modes: RuntimeCatalogMode[];\n};\n\nconst MODE_ICONS: Record<string, StaticIconComponent> = {\n api: UiCloud,\n agent: UiRobotAi,\n cli: UiTerminal,\n cmux: UiColumns,\n};\n\n// Mode ids are lowercase tokens; only the acronyms and the lowercase brand\n// \"cmux\" need spelling out. `agent` falls through to plain title case.\nconst MODE_LABELS: Record<string, string> = {\n api: \"API\",\n cli: \"CLI\",\n cmux: \"cmux\",\n};\n\n// Tooltip text, so \"Claude cmux\" reads as \"Claude multiplexer\".\nconst MODE_TITLES: Record<string, string> = {\n api: \"API\",\n agent: \"Agent SDK\",\n cli: \"CLI\",\n cmux: \"multiplexer\",\n};\n\n// The one brand whose title case is not just an initial capital.\nconst FAMILY_LABELS: Record<string, string> = { deepseek: \"DeepSeek\" };\n\nfunction titleCase(token: string): string {\n return token ? token.charAt(0).toUpperCase() + token.slice(1) : token;\n}\n\n// Turns the served catalog into the shared family list. Unavailable entries\n// stay present for Provider Status while runtime controls filter them out.\n//\n// The registry has one provider per family, so Claude's API mode sits beside its\n// Agent/CLI/cmux modes here rather than in a separate \"Anthropic\" family the way\n// SPEC_RUNTIME_FAMILIES splits them.\nexport function familiesFromRuntimeCatalog(\n catalog: RuntimeCatalogFamily[] | undefined\n): SpecRuntimeFamily[] {\n if (!catalog?.length) return SPEC_RUNTIME_FAMILIES;\n const families: SpecRuntimeFamily[] = [];\n for (const entry of catalog) {\n const label = FAMILY_LABELS[entry.family] ?? titleCase(entry.family);\n const modes = entry.modes.map((mode) => ({\n id: mode.mode,\n label: MODE_LABELS[mode.mode] ?? titleCase(mode.mode),\n backend: mode.backend,\n icon: MODE_ICONS[mode.mode],\n title: `${label} ${MODE_TITLES[mode.mode] ?? titleCase(mode.mode)}`,\n provider: mode.catalogProvider ?? entry.catalogPrefix,\n ...(mode.availability\n ? { availability: mode.availability }\n : mode.disabled\n ? {\n availability: {\n state: \"disabled\" as const,\n reason: `Disabled by ${\n mode.disabledReason ?? mode.backend\n } in Captain configuration.`,\n remediation: `Enable ${\n mode.disabledReason ?? mode.backend\n } on the Whoami page, then refresh.`,\n },\n }\n : {}),\n }));\n families.push({\n id: entry.family,\n label,\n provider: entry.catalogPrefix,\n modes,\n });\n }\n return families.length ? families : SPEC_RUNTIME_FAMILIES;\n}\n\nexport function familyById(\n families: SpecRuntimeFamily[],\n id: string\n): SpecRuntimeFamily {\n const match = families.find((family) => family.id === id);\n if (match) return match;\n const first = families[0];\n if (!first) throw new Error(\"SpecRuntimeFamily catalog must not be empty\");\n return first;\n}\n\nexport function firstMode(family: SpecRuntimeFamily): SpecRuntimeModeOption {\n const mode =\n family.modes.find((candidate) => !isUnavailable(candidate.availability)) ??\n family.modes[0];\n if (!mode) {\n throw new Error(\n `SpecRuntimeFamily \"${family.id}\" must have at least one mode`\n );\n }\n return mode;\n}\n\n// Every mode id in the catalog, first-seen order. The returned `backend` belongs\n// to the family that declared the mode first — resolve the real one with\n// `backendForFamilyMode`.\nexport function runtimeModeOptions(\n families: SpecRuntimeFamily[]\n): SpecRuntimeModeOption[] {\n const modes = new Map<string, SpecRuntimeModeOption>();\n for (const family of families) {\n for (const mode of family.modes) {\n if (!modes.has(mode.id)) modes.set(mode.id, mode);\n }\n }\n return [...modes.values()];\n}\n\n// One phrasing for \"this family does not offer that mode\", shared by every\n// runtime presentation so the same state never reads two ways.\nexport function unsupportedModeTitle(family: SpecRuntimeFamily): string {\n return availabilityText(\n unsupportedAvailability(\n family.label,\n \"this\",\n family.modes\n .filter((mode) => !isUnavailable(mode.availability))\n .map((mode) => mode.label)\n )\n )!;\n}\n\nexport function unsupportedModeAvailability(\n family: SpecRuntimeFamily,\n mode: SpecRuntimeModeOption\n): RuntimeAvailability {\n return unsupportedAvailability(\n family.label,\n mode.label,\n family.modes\n .filter((candidate) => !isUnavailable(candidate.availability))\n .map((candidate) => candidate.label)\n );\n}\n\nexport function backendForFamilyMode(\n families: SpecRuntimeFamily[],\n familyId: string,\n modeId: string\n): string {\n const family = familyById(families, familyId);\n const requested = family.modes.find((candidate) => candidate.id === modeId);\n const mode =\n requested && !isUnavailable(requested.availability)\n ? requested\n : firstMode(family);\n if (isUnavailable(mode.availability)) {\n throw new Error(\n `SpecRuntimeFamily \"${family.id}\" has no available runtime modes`\n );\n }\n return mode.backend;\n}\n\nexport function selectionForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): { family: string; mode: string } {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return { family: family.id, mode: mode.id };\n }\n }\n }\n const first = familyById(families, \"\");\n return { family: first.id, mode: firstMode(first).id };\n}\n\nexport function familyForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): SpecRuntimeFamily | undefined {\n const target = (backend ?? \"\").toLowerCase();\n return families.find((family) =>\n family.modes.some((mode) => mode.backend.toLowerCase() === target)\n );\n}\n\n// The mode a backend id names, or undefined when the catalog does not declare\n// it. Unlike `selectionForBackend` this does not fall back to the first family,\n// so a summary can stay silent about a runtime it cannot identify.\nexport function modeForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): SpecRuntimeModeOption | undefined {\n const target = (backend ?? \"\").toLowerCase();\n if (!target) return undefined;\n for (const family of families) {\n const mode = family.modes.find(\n (entry) => entry.backend.toLowerCase() === target\n );\n if (mode) return mode;\n }\n return undefined;\n}\n\n// \"claude-agent\" -> \"Claude Agent\"; unknown/empty -> \"Prompt default\".\nexport function labelForBackend(\n backend: string | undefined,\n families: SpecRuntimeFamily[] = SPEC_RUNTIME_FAMILIES\n): string {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return `${family.label} ${mode.label}`;\n }\n }\n }\n return \"Prompt default\";\n}\n\nexport function modelsForFamily(\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined\n): ChatModel[] {\n if (!family) return models.filter(isSelectableModel);\n const provider =\n family.modes.find((mode) => mode.backend === backend)?.provider ??\n family.provider;\n return models.filter(\n (model) =>\n isSelectableModel(model) &&\n model.provider === provider &&\n modelMatchesBackend(model, backend)\n );\n}\n\nexport function modelBelongsToFamily(\n modelId: string | undefined,\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined\n): boolean {\n if (!modelId) return true;\n const selected = models.find(\n (model) =>\n isSelectableModel(model) &&\n (model.id === modelId ||\n model.runtime?.model === modelId ||\n model.runtime?.id === modelId)\n );\n if (!selected) return false;\n const provider =\n family?.modes.find((mode) => mode.backend === backend)?.provider ??\n family?.provider;\n const providerMatches = !provider || selected.provider === provider;\n return providerMatches && modelMatchesBackend(selected, backend);\n}\n\nfunction modelMatchesBackend(\n model: ChatModel,\n backend: string | undefined\n): boolean {\n if (!backend) return true;\n const backends = model.backends?.filter(Boolean);\n if (!backends || backends.length === 0) return true;\n return backends.includes(backend);\n}\n"],"names":["UiRobotAi","UiTerminal","UiColumns","UiCloud","isUnavailable","isSelectableModel","_a"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { StaticIconComponent } from '../Icon';
2
- import { ChatModel } from '../chat/types';
2
+ import { ChatModel, RuntimeAvailability } from '../chat/types';
3
3
  export type SpecRuntimeModeOption = {
4
4
  /** UI mode id within a family (e.g. "agent", "cli", "cmux", "api"). */
5
5
  id: string;
@@ -8,6 +8,8 @@ export type SpecRuntimeModeOption = {
8
8
  backend: string;
9
9
  icon?: StaticIconComponent | undefined;
10
10
  title?: string | undefined;
11
+ provider?: string | undefined;
12
+ availability?: RuntimeAvailability | undefined;
11
13
  };
12
14
  export type SpecRuntimeFamily = {
13
15
  id: string;
@@ -31,6 +33,9 @@ export type RuntimeCatalogMode = {
31
33
  /** The user switched this off in `~/.captain.yaml`. */
32
34
  disabled?: boolean | undefined;
33
35
  disabledReason?: string | undefined;
36
+ /** Model-catalog provider used by this exact mode. */
37
+ catalogProvider?: string | undefined;
38
+ availability?: RuntimeAvailability | undefined;
34
39
  };
35
40
  export type RuntimeCatalogFamily = {
36
41
  /** The coding-agent name: claude | codex | gemini | deepseek. */
@@ -46,6 +51,7 @@ export declare function familyById(families: SpecRuntimeFamily[], id: string): S
46
51
  export declare function firstMode(family: SpecRuntimeFamily): SpecRuntimeModeOption;
47
52
  export declare function runtimeModeOptions(families: SpecRuntimeFamily[]): SpecRuntimeModeOption[];
48
53
  export declare function unsupportedModeTitle(family: SpecRuntimeFamily): string;
54
+ export declare function unsupportedModeAvailability(family: SpecRuntimeFamily, mode: SpecRuntimeModeOption): RuntimeAvailability;
49
55
  export declare function backendForFamilyMode(families: SpecRuntimeFamily[], familyId: string, modeId: string): string;
50
56
  export declare function selectionForBackend(families: SpecRuntimeFamily[], backend: string | undefined): {
51
57
  family: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-mode.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/runtime-mode.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { isUnavailable, isSelectableModel } from "./availability.js";
1
2
  import { UiRobotAi } from "../../icons/components/UiRobotAi.js";
2
3
  import { UiTerminal } from "../../icons/components/UiTerminal.js";
3
4
  import { UiColumns } from "../../icons/components/UiColumns.js";
@@ -8,9 +9,27 @@ const SPEC_RUNTIME_FAMILIES = [
8
9
  label: "Claude",
9
10
  provider: "claude-agent",
10
11
  modes: [
11
- { id: "agent", label: "Agent", backend: "claude-agent", icon: UiRobotAi, title: "Claude Agent SDK" },
12
- { id: "cli", label: "CLI", backend: "claude-cli", icon: UiTerminal, title: "Claude Code CLI" },
13
- { id: "cmux", label: "cmux", backend: "claude-cmux", icon: UiColumns, title: "Claude multiplexer" }
12
+ {
13
+ id: "agent",
14
+ label: "Agent",
15
+ backend: "claude-agent",
16
+ icon: UiRobotAi,
17
+ title: "Claude Agent SDK"
18
+ },
19
+ {
20
+ id: "cli",
21
+ label: "CLI",
22
+ backend: "claude-cli",
23
+ icon: UiTerminal,
24
+ title: "Claude Code CLI"
25
+ },
26
+ {
27
+ id: "cmux",
28
+ label: "cmux",
29
+ backend: "claude-cmux",
30
+ icon: UiColumns,
31
+ title: "Claude multiplexer"
32
+ }
14
33
  ]
15
34
  },
16
35
  {
@@ -18,37 +37,91 @@ const SPEC_RUNTIME_FAMILIES = [
18
37
  label: "Codex",
19
38
  provider: "codex-cli",
20
39
  modes: [
21
- { id: "agent", label: "Agent", backend: "codex-agent", icon: UiRobotAi, title: "Codex agent" },
22
- { id: "cli", label: "CLI", backend: "codex-cli", icon: UiTerminal, title: "Codex CLI" },
23
- { id: "cmux", label: "cmux", backend: "codex-cmux", icon: UiColumns, title: "Codex multiplexer" }
40
+ {
41
+ id: "agent",
42
+ label: "Agent",
43
+ backend: "codex-agent",
44
+ icon: UiRobotAi,
45
+ title: "Codex agent"
46
+ },
47
+ {
48
+ id: "cli",
49
+ label: "CLI",
50
+ backend: "codex-cli",
51
+ icon: UiTerminal,
52
+ title: "Codex CLI"
53
+ },
54
+ {
55
+ id: "cmux",
56
+ label: "cmux",
57
+ backend: "codex-cmux",
58
+ icon: UiColumns,
59
+ title: "Codex multiplexer"
60
+ }
24
61
  ]
25
62
  },
26
63
  {
27
64
  id: "openai",
28
65
  label: "OpenAI",
29
66
  provider: "openai",
30
- modes: [{ id: "api", label: "API", backend: "openai", icon: UiCloud, title: "OpenAI API" }]
67
+ modes: [
68
+ {
69
+ id: "api",
70
+ label: "API",
71
+ backend: "openai",
72
+ icon: UiCloud,
73
+ title: "OpenAI API"
74
+ }
75
+ ]
31
76
  },
32
77
  {
33
78
  id: "anthropic",
34
79
  label: "Anthropic",
35
80
  provider: "anthropic",
36
- modes: [{ id: "api", label: "API", backend: "anthropic", icon: UiCloud, title: "Anthropic API" }]
81
+ modes: [
82
+ {
83
+ id: "api",
84
+ label: "API",
85
+ backend: "anthropic",
86
+ icon: UiCloud,
87
+ title: "Anthropic API"
88
+ }
89
+ ]
37
90
  },
38
91
  {
39
92
  id: "gemini",
40
93
  label: "Gemini",
41
94
  provider: "googleai",
42
95
  modes: [
43
- { id: "api", label: "API", backend: "gemini", icon: UiCloud, title: "Gemini API" },
44
- { id: "cli", label: "CLI", backend: "gemini-cli", icon: UiTerminal, title: "Gemini CLI" }
96
+ {
97
+ id: "api",
98
+ label: "API",
99
+ backend: "gemini",
100
+ icon: UiCloud,
101
+ title: "Gemini API"
102
+ },
103
+ {
104
+ id: "cli",
105
+ label: "CLI",
106
+ backend: "gemini-cli",
107
+ icon: UiTerminal,
108
+ title: "Gemini CLI"
109
+ }
45
110
  ]
46
111
  },
47
112
  {
48
113
  id: "deepseek",
49
114
  label: "DeepSeek",
50
115
  provider: "deepseek",
51
- modes: [{ id: "api", label: "API", backend: "deepseek", icon: UiCloud, title: "DeepSeek API" }]
116
+ modes: [
117
+ {
118
+ id: "api",
119
+ label: "API",
120
+ backend: "deepseek",
121
+ icon: UiCloud,
122
+ title: "DeepSeek API"
123
+ }
124
+ ]
52
125
  }
53
126
  ];
54
127
  const MODE_ICONS = {
@@ -57,7 +130,11 @@ const MODE_ICONS = {
57
130
  cli: UiTerminal,
58
131
  cmux: UiColumns
59
132
  };
60
- const MODE_LABELS = { api: "API", cli: "CLI", cmux: "cmux" };
133
+ const MODE_LABELS = {
134
+ api: "API",
135
+ cli: "CLI",
136
+ cmux: "cmux"
137
+ };
61
138
  const MODE_TITLES = {
62
139
  api: "API",
63
140
  agent: "Agent SDK",
@@ -73,14 +150,21 @@ function familiesFromRuntimeCatalog(catalog) {
73
150
  const families = [];
74
151
  for (const entry of catalog) {
75
152
  const label = FAMILY_LABELS[entry.family] ?? titleCase(entry.family);
76
- const modes = entry.modes.filter((mode) => !mode.disabled).map((mode) => ({
153
+ const modes = entry.modes.map((mode) => ({
77
154
  id: mode.mode,
78
155
  label: MODE_LABELS[mode.mode] ?? titleCase(mode.mode),
79
156
  backend: mode.backend,
80
157
  icon: MODE_ICONS[mode.mode],
81
- title: `${label} ${MODE_TITLES[mode.mode] ?? titleCase(mode.mode)}`
158
+ title: `${label} ${MODE_TITLES[mode.mode] ?? titleCase(mode.mode)}`,
159
+ provider: mode.catalogProvider ?? entry.catalogPrefix,
160
+ ...mode.availability ? { availability: mode.availability } : mode.disabled ? {
161
+ availability: {
162
+ state: "disabled",
163
+ reason: `Disabled by ${mode.disabledReason ?? mode.backend} in Captain configuration.`,
164
+ remediation: `Enable ${mode.disabledReason ?? mode.backend} on the Whoami page, then refresh.`
165
+ }
166
+ } : {}
82
167
  }));
83
- if (!modes.length) continue;
84
168
  families.push({
85
169
  id: entry.family,
86
170
  label,
@@ -98,9 +182,11 @@ function familyById(families, id) {
98
182
  return first;
99
183
  }
100
184
  function firstMode(family) {
101
- const mode = family.modes[0];
185
+ const mode = family.modes.find((candidate) => !isUnavailable(candidate.availability)) ?? family.modes[0];
102
186
  if (!mode) {
103
- throw new Error(`SpecRuntimeFamily "${family.id}" must have at least one mode`);
187
+ throw new Error(
188
+ `SpecRuntimeFamily "${family.id}" must have at least one mode`
189
+ );
104
190
  }
105
191
  return mode;
106
192
  }
@@ -113,12 +199,15 @@ function runtimeModeOptions(families) {
113
199
  }
114
200
  return [...modes.values()];
115
201
  }
116
- function unsupportedModeTitle(family) {
117
- return `not on ${family.label}`;
118
- }
119
202
  function backendForFamilyMode(families, familyId, modeId) {
120
203
  const family = familyById(families, familyId);
121
- const mode = family.modes.find((candidate) => candidate.id === modeId) ?? firstMode(family);
204
+ const requested = family.modes.find((candidate) => candidate.id === modeId);
205
+ const mode = requested && !isUnavailable(requested.availability) ? requested : firstMode(family);
206
+ if (isUnavailable(mode.availability)) {
207
+ throw new Error(
208
+ `SpecRuntimeFamily "${family.id}" has no available runtime modes`
209
+ );
210
+ }
122
211
  return mode.backend;
123
212
  }
124
213
  function selectionForBackend(families, backend) {
@@ -162,21 +251,25 @@ function labelForBackend(backend, families = SPEC_RUNTIME_FAMILIES) {
162
251
  return "Prompt default";
163
252
  }
164
253
  function modelsForFamily(models, family, backend) {
165
- if (!family) return models;
254
+ var _a;
255
+ if (!family) return models.filter(isSelectableModel);
256
+ const provider = ((_a = family.modes.find((mode) => mode.backend === backend)) == null ? void 0 : _a.provider) ?? family.provider;
166
257
  return models.filter(
167
- (model) => model.provider === family.provider && modelMatchesBackend(model, backend)
258
+ (model) => isSelectableModel(model) && model.provider === provider && modelMatchesBackend(model, backend)
168
259
  );
169
260
  }
170
261
  function modelBelongsToFamily(modelId, models, family, backend) {
262
+ var _a;
171
263
  if (!modelId) return true;
172
264
  const selected = models.find(
173
265
  (model) => {
174
- var _a, _b;
175
- return model.id === modelId || ((_a = model.runtime) == null ? void 0 : _a.model) === modelId || ((_b = model.runtime) == null ? void 0 : _b.id) === modelId;
266
+ var _a2, _b;
267
+ return isSelectableModel(model) && (model.id === modelId || ((_a2 = model.runtime) == null ? void 0 : _a2.model) === modelId || ((_b = model.runtime) == null ? void 0 : _b.id) === modelId);
176
268
  }
177
269
  );
178
270
  if (!selected) return false;
179
- const providerMatches = !family || selected.provider === family.provider;
271
+ const provider = ((_a = family == null ? void 0 : family.modes.find((mode) => mode.backend === backend)) == null ? void 0 : _a.provider) ?? (family == null ? void 0 : family.provider);
272
+ const providerMatches = !provider || selected.provider === provider;
180
273
  return providerMatches && modelMatchesBackend(selected, backend);
181
274
  }
182
275
  function modelMatchesBackend(model, backend) {
@@ -198,7 +291,6 @@ export {
198
291
  modelBelongsToFamily,
199
292
  modelsForFamily,
200
293
  runtimeModeOptions,
201
- selectionForBackend,
202
- unsupportedModeTitle
294
+ selectionForBackend
203
295
  };
204
296
  //# sourceMappingURL=runtime-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-mode.js","sources":["../../../src/data/runtime/runtime-mode.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport { UiCloud, UiColumns, UiRobotAi, UiTerminal } from \"../../icons\";\nimport type { ChatModel, RuntimeAvailability } from \"../chat/types\";\nimport {\n availabilityText,\n isSelectableModel,\n isUnavailable,\n unsupportedAvailability,\n} from \"./availability\";\n\n// A backend runtime is factored into two UI axes — a provider\n// **family** (Claude, OpenAI, …) and a **mode** within it (Agent, CLI, cmux,\n// API) — that together resolve to a single `spec.backend` string. This is the\n// only place that mapping lives; both the inline PromptRunEditor and the modal\n// SpecRuntimeEditor drive their Mode pickers from it.\n\nexport type SpecRuntimeModeOption = {\n /** UI mode id within a family (e.g. \"agent\", \"cli\", \"cmux\", \"api\"). */\n id: string;\n label: string;\n /** The concrete `spec.backend` this (family, mode) resolves to. */\n backend: string;\n icon?: StaticIconComponent | undefined;\n title?: string | undefined;\n provider?: string | undefined;\n availability?: RuntimeAvailability | undefined;\n};\n\nexport type SpecRuntimeFamily = {\n id: string;\n label: string;\n /** The model-catalog provider (`ChatModel.provider`) whose models this family runs. */\n provider: string;\n modes: SpecRuntimeModeOption[];\n};\n\n// Default catalog covering the captain/gavel backend set. Hosts may pass their\n// own via the `families` prop when their catalog differs.\nexport const SPEC_RUNTIME_FAMILIES: SpecRuntimeFamily[] = [\n {\n id: \"claude\",\n label: \"Claude\",\n provider: \"claude-agent\",\n modes: [\n {\n id: \"agent\",\n label: \"Agent\",\n backend: \"claude-agent\",\n icon: UiRobotAi,\n title: \"Claude Agent SDK\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"claude-cli\",\n icon: UiTerminal,\n title: \"Claude Code CLI\",\n },\n {\n id: \"cmux\",\n label: \"cmux\",\n backend: \"claude-cmux\",\n icon: UiColumns,\n title: \"Claude multiplexer\",\n },\n ],\n },\n {\n id: \"codex\",\n label: \"Codex\",\n provider: \"codex-cli\",\n modes: [\n {\n id: \"agent\",\n label: \"Agent\",\n backend: \"codex-agent\",\n icon: UiRobotAi,\n title: \"Codex agent\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"codex-cli\",\n icon: UiTerminal,\n title: \"Codex CLI\",\n },\n {\n id: \"cmux\",\n label: \"cmux\",\n backend: \"codex-cmux\",\n icon: UiColumns,\n title: \"Codex multiplexer\",\n },\n ],\n },\n {\n id: \"openai\",\n label: \"OpenAI\",\n provider: \"openai\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"openai\",\n icon: UiCloud,\n title: \"OpenAI API\",\n },\n ],\n },\n {\n id: \"anthropic\",\n label: \"Anthropic\",\n provider: \"anthropic\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"anthropic\",\n icon: UiCloud,\n title: \"Anthropic API\",\n },\n ],\n },\n {\n id: \"gemini\",\n label: \"Gemini\",\n provider: \"googleai\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"gemini\",\n icon: UiCloud,\n title: \"Gemini API\",\n },\n {\n id: \"cli\",\n label: \"CLI\",\n backend: \"gemini-cli\",\n icon: UiTerminal,\n title: \"Gemini CLI\",\n },\n ],\n },\n {\n id: \"deepseek\",\n label: \"DeepSeek\",\n provider: \"deepseek\",\n modes: [\n {\n id: \"api\",\n label: \"API\",\n backend: \"deepseek\",\n icon: UiCloud,\n title: \"DeepSeek API\",\n },\n ],\n },\n];\n\n// One provider×mode cell as captain serves it (`/whoami`.runtimes and the prompt\n// schema document's `runtimes`), projected from its model registry. It carries\n// ids, not display text: `claude`/`api` are enough to render both, and a served\n// label would be a second place for presentation to drift.\nexport type RuntimeCatalogMode = {\n /** api | agent | cli | cmux */\n mode: string;\n /** The concrete `spec.backend`, e.g. \"claude-cmux\". */\n backend: string;\n /** \"api\" (remote, in-process) or \"cli\" (supervised local binary). */\n kind?: string | undefined;\n /** Rides the local CLI's own login; never consults an API key. */\n keyless?: boolean | undefined;\n /** The model id a picker should seed this mode with. */\n defaultModel?: string | undefined;\n /** The user switched this off in `~/.captain.yaml`. */\n disabled?: boolean | undefined;\n disabledReason?: string | undefined;\n /** Model-catalog provider used by this exact mode. */\n catalogProvider?: string | undefined;\n availability?: RuntimeAvailability | undefined;\n};\n\nexport type RuntimeCatalogFamily = {\n /** The coding-agent name: claude | codex | gemini | deepseek. */\n family: string;\n /** The canonical provider key: anthropic | openai | google | deepseek. */\n provider: string;\n /** The namespace this provider's model ids carry (`ChatModel.provider`). */\n catalogPrefix: string;\n modes: RuntimeCatalogMode[];\n};\n\nconst MODE_ICONS: Record<string, StaticIconComponent> = {\n api: UiCloud,\n agent: UiRobotAi,\n cli: UiTerminal,\n cmux: UiColumns,\n};\n\n// Mode ids are lowercase tokens; only the acronyms and the lowercase brand\n// \"cmux\" need spelling out. `agent` falls through to plain title case.\nconst MODE_LABELS: Record<string, string> = {\n api: \"API\",\n cli: \"CLI\",\n cmux: \"cmux\",\n};\n\n// Tooltip text, so \"Claude cmux\" reads as \"Claude multiplexer\".\nconst MODE_TITLES: Record<string, string> = {\n api: \"API\",\n agent: \"Agent SDK\",\n cli: \"CLI\",\n cmux: \"multiplexer\",\n};\n\n// The one brand whose title case is not just an initial capital.\nconst FAMILY_LABELS: Record<string, string> = { deepseek: \"DeepSeek\" };\n\nfunction titleCase(token: string): string {\n return token ? token.charAt(0).toUpperCase() + token.slice(1) : token;\n}\n\n// Turns the served catalog into the shared family list. Unavailable entries\n// stay present for Provider Status while runtime controls filter them out.\n//\n// The registry has one provider per family, so Claude's API mode sits beside its\n// Agent/CLI/cmux modes here rather than in a separate \"Anthropic\" family the way\n// SPEC_RUNTIME_FAMILIES splits them.\nexport function familiesFromRuntimeCatalog(\n catalog: RuntimeCatalogFamily[] | undefined\n): SpecRuntimeFamily[] {\n if (!catalog?.length) return SPEC_RUNTIME_FAMILIES;\n const families: SpecRuntimeFamily[] = [];\n for (const entry of catalog) {\n const label = FAMILY_LABELS[entry.family] ?? titleCase(entry.family);\n const modes = entry.modes.map((mode) => ({\n id: mode.mode,\n label: MODE_LABELS[mode.mode] ?? titleCase(mode.mode),\n backend: mode.backend,\n icon: MODE_ICONS[mode.mode],\n title: `${label} ${MODE_TITLES[mode.mode] ?? titleCase(mode.mode)}`,\n provider: mode.catalogProvider ?? entry.catalogPrefix,\n ...(mode.availability\n ? { availability: mode.availability }\n : mode.disabled\n ? {\n availability: {\n state: \"disabled\" as const,\n reason: `Disabled by ${\n mode.disabledReason ?? mode.backend\n } in Captain configuration.`,\n remediation: `Enable ${\n mode.disabledReason ?? mode.backend\n } on the Whoami page, then refresh.`,\n },\n }\n : {}),\n }));\n families.push({\n id: entry.family,\n label,\n provider: entry.catalogPrefix,\n modes,\n });\n }\n return families.length ? families : SPEC_RUNTIME_FAMILIES;\n}\n\nexport function familyById(\n families: SpecRuntimeFamily[],\n id: string\n): SpecRuntimeFamily {\n const match = families.find((family) => family.id === id);\n if (match) return match;\n const first = families[0];\n if (!first) throw new Error(\"SpecRuntimeFamily catalog must not be empty\");\n return first;\n}\n\nexport function firstMode(family: SpecRuntimeFamily): SpecRuntimeModeOption {\n const mode =\n family.modes.find((candidate) => !isUnavailable(candidate.availability)) ??\n family.modes[0];\n if (!mode) {\n throw new Error(\n `SpecRuntimeFamily \"${family.id}\" must have at least one mode`\n );\n }\n return mode;\n}\n\n// Every mode id in the catalog, first-seen order. The returned `backend` belongs\n// to the family that declared the mode first — resolve the real one with\n// `backendForFamilyMode`.\nexport function runtimeModeOptions(\n families: SpecRuntimeFamily[]\n): SpecRuntimeModeOption[] {\n const modes = new Map<string, SpecRuntimeModeOption>();\n for (const family of families) {\n for (const mode of family.modes) {\n if (!modes.has(mode.id)) modes.set(mode.id, mode);\n }\n }\n return [...modes.values()];\n}\n\n// One phrasing for \"this family does not offer that mode\", shared by every\n// runtime presentation so the same state never reads two ways.\nexport function unsupportedModeTitle(family: SpecRuntimeFamily): string {\n return availabilityText(\n unsupportedAvailability(\n family.label,\n \"this\",\n family.modes\n .filter((mode) => !isUnavailable(mode.availability))\n .map((mode) => mode.label)\n )\n )!;\n}\n\nexport function unsupportedModeAvailability(\n family: SpecRuntimeFamily,\n mode: SpecRuntimeModeOption\n): RuntimeAvailability {\n return unsupportedAvailability(\n family.label,\n mode.label,\n family.modes\n .filter((candidate) => !isUnavailable(candidate.availability))\n .map((candidate) => candidate.label)\n );\n}\n\nexport function backendForFamilyMode(\n families: SpecRuntimeFamily[],\n familyId: string,\n modeId: string\n): string {\n const family = familyById(families, familyId);\n const requested = family.modes.find((candidate) => candidate.id === modeId);\n const mode =\n requested && !isUnavailable(requested.availability)\n ? requested\n : firstMode(family);\n if (isUnavailable(mode.availability)) {\n throw new Error(\n `SpecRuntimeFamily \"${family.id}\" has no available runtime modes`\n );\n }\n return mode.backend;\n}\n\nexport function selectionForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): { family: string; mode: string } {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return { family: family.id, mode: mode.id };\n }\n }\n }\n const first = familyById(families, \"\");\n return { family: first.id, mode: firstMode(first).id };\n}\n\nexport function familyForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): SpecRuntimeFamily | undefined {\n const target = (backend ?? \"\").toLowerCase();\n return families.find((family) =>\n family.modes.some((mode) => mode.backend.toLowerCase() === target)\n );\n}\n\n// The mode a backend id names, or undefined when the catalog does not declare\n// it. Unlike `selectionForBackend` this does not fall back to the first family,\n// so a summary can stay silent about a runtime it cannot identify.\nexport function modeForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined\n): SpecRuntimeModeOption | undefined {\n const target = (backend ?? \"\").toLowerCase();\n if (!target) return undefined;\n for (const family of families) {\n const mode = family.modes.find(\n (entry) => entry.backend.toLowerCase() === target\n );\n if (mode) return mode;\n }\n return undefined;\n}\n\n// \"claude-agent\" -> \"Claude Agent\"; unknown/empty -> \"Prompt default\".\nexport function labelForBackend(\n backend: string | undefined,\n families: SpecRuntimeFamily[] = SPEC_RUNTIME_FAMILIES\n): string {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return `${family.label} ${mode.label}`;\n }\n }\n }\n return \"Prompt default\";\n}\n\nexport function modelsForFamily(\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined\n): ChatModel[] {\n if (!family) return models.filter(isSelectableModel);\n const provider =\n family.modes.find((mode) => mode.backend === backend)?.provider ??\n family.provider;\n return models.filter(\n (model) =>\n isSelectableModel(model) &&\n model.provider === provider &&\n modelMatchesBackend(model, backend)\n );\n}\n\nexport function modelBelongsToFamily(\n modelId: string | undefined,\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined\n): boolean {\n if (!modelId) return true;\n const selected = models.find(\n (model) =>\n isSelectableModel(model) &&\n (model.id === modelId ||\n model.runtime?.model === modelId ||\n model.runtime?.id === modelId)\n );\n if (!selected) return false;\n const provider =\n family?.modes.find((mode) => mode.backend === backend)?.provider ??\n family?.provider;\n const providerMatches = !provider || selected.provider === provider;\n return providerMatches && modelMatchesBackend(selected, backend);\n}\n\nfunction modelMatchesBackend(\n model: ChatModel,\n backend: string | undefined\n): boolean {\n if (!backend) return true;\n const backends = model.backends?.filter(Boolean);\n if (!backends || backends.length === 0) return true;\n return backends.includes(backend);\n}\n"],"names":["_a"],"mappings":";;;;;AAsCO,MAAM,wBAA6C;AAAA,EACxD;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAEJ;AAmCA,MAAM,aAAkD;AAAA,EACtD,KAAK;AAAA,EACL,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AACR;AAIA,MAAM,cAAsC;AAAA,EAC1C,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AACR;AAGA,MAAM,cAAsC;AAAA,EAC1C,KAAK;AAAA,EACL,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AACR;AAGA,MAAM,gBAAwC,EAAE,UAAU,WAAA;AAE1D,SAAS,UAAU,OAAuB;AACxC,SAAO,QAAQ,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC,IAAI;AAClE;AAQO,SAAS,2BACd,SACqB;AACrB,MAAI,EAAC,mCAAS,QAAQ,QAAO;AAC7B,QAAM,WAAgC,CAAA;AACtC,aAAW,SAAS,SAAS;AAC3B,UAAM,QAAQ,cAAc,MAAM,MAAM,KAAK,UAAU,MAAM,MAAM;AACnE,UAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,UAAU;AAAA,MACvC,IAAI,KAAK;AAAA,MACT,OAAO,YAAY,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AAAA,MACpD,SAAS,KAAK;AAAA,MACd,MAAM,WAAW,KAAK,IAAI;AAAA,MAC1B,OAAO,GAAG,KAAK,IAAI,YAAY,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MACjE,UAAU,KAAK,mBAAmB,MAAM;AAAA,MACxC,GAAI,KAAK,eACL,EAAE,cAAc,KAAK,aAAA,IACrB,KAAK,WACL;AAAA,QACE,cAAc;AAAA,UACZ,OAAO;AAAA,UACP,QAAQ,eACN,KAAK,kBAAkB,KAAK,OAC9B;AAAA,UACA,aAAa,UACX,KAAK,kBAAkB,KAAK,OAC9B;AAAA,QAAA;AAAA,MACF,IAEF,CAAA;AAAA,IAAC,EACL;AACF,aAAS,KAAK;AAAA,MACZ,IAAI,MAAM;AAAA,MACV;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,IAAA,CACD;AAAA,EACH;AACA,SAAO,SAAS,SAAS,WAAW;AACtC;AAEO,SAAS,WACd,UACA,IACmB;AACnB,QAAM,QAAQ,SAAS,KAAK,CAAC,WAAW,OAAO,OAAO,EAAE;AACxD,MAAI,MAAO,QAAO;AAClB,QAAM,QAAQ,SAAS,CAAC;AACxB,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,6CAA6C;AACzE,SAAO;AACT;AAEO,SAAS,UAAU,QAAkD;AAC1E,QAAM,OACJ,OAAO,MAAM,KAAK,CAAC,cAAc,CAAC,cAAc,UAAU,YAAY,CAAC,KACvE,OAAO,MAAM,CAAC;AAChB,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,sBAAsB,OAAO,EAAE;AAAA,IAAA;AAAA,EAEnC;AACA,SAAO;AACT;AAKO,SAAS,mBACd,UACyB;AACzB,QAAM,4BAAY,IAAA;AAClB,aAAW,UAAU,UAAU;AAC7B,eAAW,QAAQ,OAAO,OAAO;AAC/B,UAAI,CAAC,MAAM,IAAI,KAAK,EAAE,EAAG,OAAM,IAAI,KAAK,IAAI,IAAI;AAAA,IAClD;AAAA,EACF;AACA,SAAO,CAAC,GAAG,MAAM,QAAQ;AAC3B;AA6BO,SAAS,qBACd,UACA,UACA,QACQ;AACR,QAAM,SAAS,WAAW,UAAU,QAAQ;AAC5C,QAAM,YAAY,OAAO,MAAM,KAAK,CAAC,cAAc,UAAU,OAAO,MAAM;AAC1E,QAAM,OACJ,aAAa,CAAC,cAAc,UAAU,YAAY,IAC9C,YACA,UAAU,MAAM;AACtB,MAAI,cAAc,KAAK,YAAY,GAAG;AACpC,UAAM,IAAI;AAAA,MACR,sBAAsB,OAAO,EAAE;AAAA,IAAA;AAAA,EAEnC;AACA,SAAO,KAAK;AACd;AAEO,SAAS,oBACd,UACA,SACkC;AAClC,QAAM,UAAU,WAAW,IAAI,YAAA;AAC/B,aAAW,UAAU,UAAU;AAC7B,eAAW,QAAQ,OAAO,OAAO;AAC/B,UAAI,KAAK,QAAQ,YAAA,MAAkB,QAAQ;AACzC,eAAO,EAAE,QAAQ,OAAO,IAAI,MAAM,KAAK,GAAA;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQ,WAAW,UAAU,EAAE;AACrC,SAAO,EAAE,QAAQ,MAAM,IAAI,MAAM,UAAU,KAAK,EAAE,GAAA;AACpD;AAEO,SAAS,iBACd,UACA,SAC+B;AAC/B,QAAM,UAAU,WAAW,IAAI,YAAA;AAC/B,SAAO,SAAS;AAAA,IAAK,CAAC,WACpB,OAAO,MAAM,KAAK,CAAC,SAAS,KAAK,QAAQ,YAAA,MAAkB,MAAM;AAAA,EAAA;AAErE;AAKO,SAAS,eACd,UACA,SACmC;AACnC,QAAM,UAAU,WAAW,IAAI,YAAA;AAC/B,MAAI,CAAC,OAAQ,QAAO;AACpB,aAAW,UAAU,UAAU;AAC7B,UAAM,OAAO,OAAO,MAAM;AAAA,MACxB,CAAC,UAAU,MAAM,QAAQ,kBAAkB;AAAA,IAAA;AAE7C,QAAI,KAAM,QAAO;AAAA,EACnB;AACA,SAAO;AACT;AAGO,SAAS,gBACd,SACA,WAAgC,uBACxB;AACR,QAAM,UAAU,WAAW,IAAI,YAAA;AAC/B,aAAW,UAAU,UAAU;AAC7B,eAAW,QAAQ,OAAO,OAAO;AAC/B,UAAI,KAAK,QAAQ,YAAA,MAAkB,QAAQ;AACzC,eAAO,GAAG,OAAO,KAAK,IAAI,KAAK,KAAK;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,gBACd,QACA,QACA,SACa;;AACb,MAAI,CAAC,OAAQ,QAAO,OAAO,OAAO,iBAAiB;AACnD,QAAM,aACJ,YAAO,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,OAAO,MAApD,mBAAuD,aACvD,OAAO;AACT,SAAO,OAAO;AAAA,IACZ,CAAC,UACC,kBAAkB,KAAK,KACvB,MAAM,aAAa,YACnB,oBAAoB,OAAO,OAAO;AAAA,EAAA;AAExC;AAEO,SAAS,qBACd,SACA,QACA,QACA,SACS;;AACT,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,WAAW,OAAO;AAAA,IACtB,CAAC,UAAA;;AACC,+BAAkB,KAAK,MACtB,MAAM,OAAO,aACZA,MAAA,MAAM,YAAN,gBAAAA,IAAe,WAAU,aACzB,WAAM,YAAN,mBAAe,QAAO;AAAA;AAAA,EAAA;AAE5B,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,aACJ,sCAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY,aAA9C,mBAAwD,cACxD,iCAAQ;AACV,QAAM,kBAAkB,CAAC,YAAY,SAAS,aAAa;AAC3D,SAAO,mBAAmB,oBAAoB,UAAU,OAAO;AACjE;AAEA,SAAS,oBACP,OACA,SACS;;AACT,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,YAAW,WAAM,aAAN,mBAAgB,OAAO;AACxC,MAAI,CAAC,YAAY,SAAS,WAAW,EAAG,QAAO;AAC/C,SAAO,SAAS,SAAS,OAAO;AAClC;"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function isTaskExecDetails(value) {
4
+ if (!value || typeof value !== "object") return false;
5
+ const candidate = value;
6
+ return typeof candidate.command === "string" && typeof candidate.status === "string" && typeof candidate.exitCode === "number" && (candidate.args === void 0 || Array.isArray(candidate.args) && candidate.args.every((arg) => typeof arg === "string"));
7
+ }
8
+ exports.isTaskExecDetails = isTaskExecDetails;
9
+ //# sourceMappingURL=task-exec-details.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-exec-details.cjs","sources":["../../src/data/task-exec-details.ts"],"sourcesContent":["import type { TaskExecDetails } from \"./TaskSnapshot\";\n\nexport function isTaskExecDetails(value: unknown): value is TaskExecDetails {\n if (!value || typeof value !== \"object\") return false;\n const candidate = value as Partial<TaskExecDetails>;\n return (\n typeof candidate.command === \"string\" &&\n typeof candidate.status === \"string\" &&\n typeof candidate.exitCode === \"number\" &&\n (candidate.args === undefined ||\n (Array.isArray(candidate.args) && candidate.args.every((arg) => typeof arg === \"string\")))\n );\n}\n"],"names":[],"mappings":";;AAEO,SAAS,kBAAkB,OAA0C;AAC1E,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,YAAY;AAClB,SACE,OAAO,UAAU,YAAY,YAC7B,OAAO,UAAU,WAAW,YAC5B,OAAO,UAAU,aAAa,aAC7B,UAAU,SAAS,UACjB,MAAM,QAAQ,UAAU,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,QAAQ,OAAO,QAAQ,QAAQ;AAE7F;;"}
@@ -0,0 +1,3 @@
1
+ import { TaskExecDetails } from './TaskSnapshot';
2
+ export declare function isTaskExecDetails(value: unknown): value is TaskExecDetails;
3
+ //# sourceMappingURL=task-exec-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-exec-details.d.ts","sourceRoot":"","sources":["../../src/data/task-exec-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAU1E"}
@@ -0,0 +1,9 @@
1
+ function isTaskExecDetails(value) {
2
+ if (!value || typeof value !== "object") return false;
3
+ const candidate = value;
4
+ return typeof candidate.command === "string" && typeof candidate.status === "string" && typeof candidate.exitCode === "number" && (candidate.args === void 0 || Array.isArray(candidate.args) && candidate.args.every((arg) => typeof arg === "string"));
5
+ }
6
+ export {
7
+ isTaskExecDetails
8
+ };
9
+ //# sourceMappingURL=task-exec-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-exec-details.js","sources":["../../src/data/task-exec-details.ts"],"sourcesContent":["import type { TaskExecDetails } from \"./TaskSnapshot\";\n\nexport function isTaskExecDetails(value: unknown): value is TaskExecDetails {\n if (!value || typeof value !== \"object\") return false;\n const candidate = value as Partial<TaskExecDetails>;\n return (\n typeof candidate.command === \"string\" &&\n typeof candidate.status === \"string\" &&\n typeof candidate.exitCode === \"number\" &&\n (candidate.args === undefined ||\n (Array.isArray(candidate.args) && candidate.args.every((arg) => typeof arg === \"string\")))\n );\n}\n"],"names":[],"mappings":"AAEO,SAAS,kBAAkB,OAA0C;AAC1E,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,YAAY;AAClB,SACE,OAAO,UAAU,YAAY,YAC7B,OAAO,UAAU,WAAW,YAC5B,OAAO,UAAU,aAAa,aAC7B,UAAU,SAAS,UACjB,MAAM,QAAQ,UAAU,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,QAAQ,OAAO,QAAQ,QAAQ;AAE7F;"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const taskQueryKeys = {
4
+ runs: ({ basePath, kind, status, labels }) => [
5
+ "tasks",
6
+ "runs",
7
+ {
8
+ basePath: basePath ?? "/api/v1",
9
+ kind: kind ?? "",
10
+ status: status ?? "",
11
+ labels: Object.entries(labels ?? {}).sort(([left], [right]) => left.localeCompare(right))
12
+ }
13
+ ],
14
+ run: ({ basePath, runId }) => [
15
+ "tasks",
16
+ "run",
17
+ { basePath: basePath ?? "/api/v1", runId }
18
+ ],
19
+ control: ({ basePath, runId }) => [
20
+ "tasks",
21
+ "control",
22
+ { basePath: basePath ?? "/api/v1", runId }
23
+ ]
24
+ };
25
+ exports.taskQueryKeys = taskQueryKeys;
26
+ //# sourceMappingURL=task-query-keys.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-query-keys.cjs","sources":["../../src/data/task-query-keys.ts"],"sourcesContent":["export interface TaskRunsQueryKeyOptions {\n basePath?: string | undefined;\n kind?: string | undefined;\n status?: string | undefined;\n labels?: Record<string, string> | undefined;\n}\n\nexport interface TaskRunQueryKeyOptions {\n basePath?: string | undefined;\n runId: string;\n}\n\nexport const taskQueryKeys = {\n runs: ({ basePath, kind, status, labels }: TaskRunsQueryKeyOptions) => [\n \"tasks\",\n \"runs\",\n {\n basePath: basePath ?? \"/api/v1\",\n kind: kind ?? \"\",\n status: status ?? \"\",\n labels: Object.entries(labels ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n },\n ] as const,\n run: ({ basePath, runId }: TaskRunQueryKeyOptions) => [\n \"tasks\",\n \"run\",\n { basePath: basePath ?? \"/api/v1\", runId },\n ] as const,\n control: ({ basePath, runId }: TaskRunQueryKeyOptions) => [\n \"tasks\",\n \"control\",\n { basePath: basePath ?? \"/api/v1\", runId },\n ] as const,\n};\n"],"names":[],"mappings":";;AAYO,MAAM,gBAAgB;AAAA,EAC3B,MAAM,CAAC,EAAE,UAAU,MAAM,QAAQ,aAAsC;AAAA,IACrE;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU,YAAY;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,QAAQ,UAAU;AAAA,MAClB,QAAQ,OAAO,QAAQ,UAAU,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAAA,IAAA;AAAA,EAC1F;AAAA,EAEF,KAAK,CAAC,EAAE,UAAU,YAAoC;AAAA,IACpD;AAAA,IACA;AAAA,IACA,EAAE,UAAU,YAAY,WAAW,MAAA;AAAA,EAAM;AAAA,EAE3C,SAAS,CAAC,EAAE,UAAU,YAAoC;AAAA,IACxD;AAAA,IACA;AAAA,IACA,EAAE,UAAU,YAAY,WAAW,MAAA;AAAA,EAAM;AAE7C;;"}
@@ -0,0 +1,27 @@
1
+ export interface TaskRunsQueryKeyOptions {
2
+ basePath?: string | undefined;
3
+ kind?: string | undefined;
4
+ status?: string | undefined;
5
+ labels?: Record<string, string> | undefined;
6
+ }
7
+ export interface TaskRunQueryKeyOptions {
8
+ basePath?: string | undefined;
9
+ runId: string;
10
+ }
11
+ export declare const taskQueryKeys: {
12
+ runs: ({ basePath, kind, status, labels }: TaskRunsQueryKeyOptions) => readonly ["tasks", "runs", {
13
+ readonly basePath: string;
14
+ readonly kind: string;
15
+ readonly status: string;
16
+ readonly labels: [string, string][];
17
+ }];
18
+ run: ({ basePath, runId }: TaskRunQueryKeyOptions) => readonly ["tasks", "run", {
19
+ readonly basePath: string;
20
+ readonly runId: string;
21
+ }];
22
+ control: ({ basePath, runId }: TaskRunQueryKeyOptions) => readonly ["tasks", "control", {
23
+ readonly basePath: string;
24
+ readonly runId: string;
25
+ }];
26
+ };
27
+ //# sourceMappingURL=task-query-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-query-keys.d.ts","sourceRoot":"","sources":["../../src/data/task-query-keys.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa;+CACmB,uBAAuB;;;;;;+BAUvC,sBAAsB;;;;mCAKlB,sBAAsB;;;;CAKtD,CAAC"}
@@ -0,0 +1,26 @@
1
+ const taskQueryKeys = {
2
+ runs: ({ basePath, kind, status, labels }) => [
3
+ "tasks",
4
+ "runs",
5
+ {
6
+ basePath: basePath ?? "/api/v1",
7
+ kind: kind ?? "",
8
+ status: status ?? "",
9
+ labels: Object.entries(labels ?? {}).sort(([left], [right]) => left.localeCompare(right))
10
+ }
11
+ ],
12
+ run: ({ basePath, runId }) => [
13
+ "tasks",
14
+ "run",
15
+ { basePath: basePath ?? "/api/v1", runId }
16
+ ],
17
+ control: ({ basePath, runId }) => [
18
+ "tasks",
19
+ "control",
20
+ { basePath: basePath ?? "/api/v1", runId }
21
+ ]
22
+ };
23
+ export {
24
+ taskQueryKeys
25
+ };
26
+ //# sourceMappingURL=task-query-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-query-keys.js","sources":["../../src/data/task-query-keys.ts"],"sourcesContent":["export interface TaskRunsQueryKeyOptions {\n basePath?: string | undefined;\n kind?: string | undefined;\n status?: string | undefined;\n labels?: Record<string, string> | undefined;\n}\n\nexport interface TaskRunQueryKeyOptions {\n basePath?: string | undefined;\n runId: string;\n}\n\nexport const taskQueryKeys = {\n runs: ({ basePath, kind, status, labels }: TaskRunsQueryKeyOptions) => [\n \"tasks\",\n \"runs\",\n {\n basePath: basePath ?? \"/api/v1\",\n kind: kind ?? \"\",\n status: status ?? \"\",\n labels: Object.entries(labels ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n },\n ] as const,\n run: ({ basePath, runId }: TaskRunQueryKeyOptions) => [\n \"tasks\",\n \"run\",\n { basePath: basePath ?? \"/api/v1\", runId },\n ] as const,\n control: ({ basePath, runId }: TaskRunQueryKeyOptions) => [\n \"tasks\",\n \"control\",\n { basePath: basePath ?? \"/api/v1\", runId },\n ] as const,\n};\n"],"names":[],"mappings":"AAYO,MAAM,gBAAgB;AAAA,EAC3B,MAAM,CAAC,EAAE,UAAU,MAAM,QAAQ,aAAsC;AAAA,IACrE;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU,YAAY;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,QAAQ,UAAU;AAAA,MAClB,QAAQ,OAAO,QAAQ,UAAU,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC;AAAA,IAAA;AAAA,EAC1F;AAAA,EAEF,KAAK,CAAC,EAAE,UAAU,YAAoC;AAAA,IACpD;AAAA,IACA;AAAA,IACA,EAAE,UAAU,YAAY,WAAW,MAAA;AAAA,EAAM;AAAA,EAE3C,SAAS,CAAC,EAAE,UAAU,YAAoC;AAAA,IACxD;AAAA,IACA;AAAA,IACA,EAAE,UAAU,YAAY,WAAW,MAAA;AAAA,EAAM;AAE7C;"}
@@ -15,9 +15,9 @@ function detectMode() {
15
15
  }
16
16
  function getVersionInfo() {
17
17
  return {
18
- commit: read(() => "98f0a684", ""),
19
- tag: read(() => "clicky-ui@0.3.16", ""),
20
- date: read(() => "2026-07-31T11:11:36.897Z", ""),
18
+ commit: read(() => "250b70f5", ""),
19
+ tag: read(() => "clicky-ui@0.3.18", ""),
20
+ date: read(() => "2026-08-10T12:21:43.001Z", ""),
21
21
  dirty: read(() => true, false),
22
22
  mode: detectMode()
23
23
  };
@@ -13,9 +13,9 @@ function detectMode() {
13
13
  }
14
14
  function getVersionInfo() {
15
15
  return {
16
- commit: read(() => "98f0a684", ""),
17
- tag: read(() => "clicky-ui@0.3.16", ""),
18
- date: read(() => "2026-07-31T11:11:17.917Z", ""),
16
+ commit: read(() => "250b70f5", ""),
17
+ tag: read(() => "clicky-ui@0.3.18", ""),
18
+ date: read(() => "2026-08-10T12:21:22.772Z", ""),
19
19
  dirty: read(() => true, false),
20
20
  mode: detectMode()
21
21
  };