@flanksource/clicky-ui 0.3.55 → 0.3.57

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 (1118) hide show
  1. package/NOTICE.md +6 -0
  2. package/dist/ai.cjs +6 -0
  3. package/dist/ai.js +3 -1
  4. package/dist/chat.cjs +2 -0
  5. package/dist/chat.d.ts +1 -0
  6. package/dist/chat.d.ts.map +1 -1
  7. package/dist/chat.js +2 -1
  8. package/dist/comments/CommentCard.cjs +37 -7
  9. package/dist/comments/CommentCard.cjs.map +1 -1
  10. package/dist/comments/CommentCard.d.ts +11 -1
  11. package/dist/comments/CommentCard.d.ts.map +1 -1
  12. package/dist/comments/CommentCard.js +37 -7
  13. package/dist/comments/CommentCard.js.map +1 -1
  14. package/dist/comments/CommentCardParts.cjs +9 -4
  15. package/dist/comments/CommentCardParts.cjs.map +1 -1
  16. package/dist/comments/CommentCardParts.d.ts.map +1 -1
  17. package/dist/comments/CommentCardParts.js +9 -4
  18. package/dist/comments/CommentCardParts.js.map +1 -1
  19. package/dist/comments/CommentComposer.cjs +8 -8
  20. package/dist/comments/CommentComposer.cjs.map +1 -1
  21. package/dist/comments/CommentComposer.d.ts.map +1 -1
  22. package/dist/comments/CommentComposer.js +8 -8
  23. package/dist/comments/CommentComposer.js.map +1 -1
  24. package/dist/comments/CommentProvider.cjs +5 -1
  25. package/dist/comments/CommentProvider.cjs.map +1 -1
  26. package/dist/comments/CommentProvider.d.ts +1 -1
  27. package/dist/comments/CommentProvider.d.ts.map +1 -1
  28. package/dist/comments/CommentProvider.js +5 -1
  29. package/dist/comments/CommentProvider.js.map +1 -1
  30. package/dist/comments/CommentSidePanel.cjs +17 -11
  31. package/dist/comments/CommentSidePanel.cjs.map +1 -1
  32. package/dist/comments/CommentSidePanel.d.ts +6 -0
  33. package/dist/comments/CommentSidePanel.d.ts.map +1 -1
  34. package/dist/comments/CommentSidePanel.js +17 -11
  35. package/dist/comments/CommentSidePanel.js.map +1 -1
  36. package/dist/comments/CommentThread.cjs +4 -1
  37. package/dist/comments/CommentThread.cjs.map +1 -1
  38. package/dist/comments/CommentThread.d.ts +4 -1
  39. package/dist/comments/CommentThread.d.ts.map +1 -1
  40. package/dist/comments/CommentThread.js +4 -1
  41. package/dist/comments/CommentThread.js.map +1 -1
  42. package/dist/comments/CommentThreadList.cjs +6 -3
  43. package/dist/comments/CommentThreadList.cjs.map +1 -1
  44. package/dist/comments/CommentThreadList.d.ts +7 -2
  45. package/dist/comments/CommentThreadList.d.ts.map +1 -1
  46. package/dist/comments/CommentThreadList.js +6 -3
  47. package/dist/comments/CommentThreadList.js.map +1 -1
  48. package/dist/comments/MentionTextarea.cjs +1 -1
  49. package/dist/comments/MentionTextarea.cjs.map +1 -1
  50. package/dist/comments/MentionTextarea.d.ts.map +1 -1
  51. package/dist/comments/MentionTextarea.js +1 -1
  52. package/dist/comments/MentionTextarea.js.map +1 -1
  53. package/dist/comments/comment-assign.cjs +68 -0
  54. package/dist/comments/comment-assign.cjs.map +1 -0
  55. package/dist/comments/comment-assign.d.ts +31 -0
  56. package/dist/comments/comment-assign.d.ts.map +1 -0
  57. package/dist/comments/comment-assign.js +67 -0
  58. package/dist/comments/comment-assign.js.map +1 -0
  59. package/dist/comments/comment-types.cjs.map +1 -1
  60. package/dist/comments/comment-types.d.ts +39 -0
  61. package/dist/comments/comment-types.d.ts.map +1 -1
  62. package/dist/comments/comment-types.js.map +1 -1
  63. package/dist/comments/comment-utils.cjs +2 -0
  64. package/dist/comments/comment-utils.cjs.map +1 -1
  65. package/dist/comments/comment-utils.d.ts +2 -0
  66. package/dist/comments/comment-utils.d.ts.map +1 -1
  67. package/dist/comments/comment-utils.js +2 -0
  68. package/dist/comments/comment-utils.js.map +1 -1
  69. package/dist/comments.cjs +3 -0
  70. package/dist/comments.d.ts +1 -0
  71. package/dist/comments.d.ts.map +1 -1
  72. package/dist/comments.js +2 -1
  73. package/dist/components/ComboboxMenu.cjs +23 -13
  74. package/dist/components/ComboboxMenu.cjs.map +1 -1
  75. package/dist/components/ComboboxMenu.d.ts.map +1 -1
  76. package/dist/components/ComboboxMenu.js +23 -13
  77. package/dist/components/ComboboxMenu.js.map +1 -1
  78. package/dist/components/ErrorWrapper.cjs +15 -4
  79. package/dist/components/ErrorWrapper.cjs.map +1 -1
  80. package/dist/components/ErrorWrapper.d.ts +7 -0
  81. package/dist/components/ErrorWrapper.d.ts.map +1 -1
  82. package/dist/components/ErrorWrapper.js +15 -4
  83. package/dist/components/ErrorWrapper.js.map +1 -1
  84. package/dist/components/FilterBar.cjs +29 -6
  85. package/dist/components/FilterBar.cjs.map +1 -1
  86. package/dist/components/FilterBar.d.ts +3 -1
  87. package/dist/components/FilterBar.d.ts.map +1 -1
  88. package/dist/components/FilterBar.js +29 -6
  89. package/dist/components/FilterBar.js.map +1 -1
  90. package/dist/components/ItemActions.cjs +1 -1
  91. package/dist/components/ItemActions.cjs.map +1 -1
  92. package/dist/components/ItemActions.js +1 -1
  93. package/dist/components/ItemActions.js.map +1 -1
  94. package/dist/components/ListMenu.cjs +33 -3
  95. package/dist/components/ListMenu.cjs.map +1 -1
  96. package/dist/components/ListMenu.d.ts +4 -1
  97. package/dist/components/ListMenu.d.ts.map +1 -1
  98. package/dist/components/ListMenu.js +33 -3
  99. package/dist/components/ListMenu.js.map +1 -1
  100. package/dist/components/ListMenuItems.cjs +80 -0
  101. package/dist/components/ListMenuItems.cjs.map +1 -0
  102. package/dist/components/ListMenuItems.d.ts +8 -0
  103. package/dist/components/ListMenuItems.d.ts.map +1 -0
  104. package/dist/components/ListMenuItems.js +80 -0
  105. package/dist/components/ListMenuItems.js.map +1 -0
  106. package/dist/components/LocalPathPicker.cjs +182 -0
  107. package/dist/components/LocalPathPicker.cjs.map +1 -0
  108. package/dist/components/LocalPathPicker.d.ts +11 -0
  109. package/dist/components/LocalPathPicker.d.ts.map +1 -0
  110. package/dist/components/LocalPathPicker.js +182 -0
  111. package/dist/components/LocalPathPicker.js.map +1 -0
  112. package/dist/components/LocalPathTree.cjs +89 -0
  113. package/dist/components/LocalPathTree.cjs.map +1 -0
  114. package/dist/components/LocalPathTree.d.ts +9 -0
  115. package/dist/components/LocalPathTree.d.ts.map +1 -0
  116. package/dist/components/LocalPathTree.js +89 -0
  117. package/dist/components/LocalPathTree.js.map +1 -0
  118. package/dist/components/RangeSlider.cjs +10 -30
  119. package/dist/components/RangeSlider.cjs.map +1 -1
  120. package/dist/components/RangeSlider.d.ts.map +1 -1
  121. package/dist/components/RangeSlider.js +4 -24
  122. package/dist/components/RangeSlider.js.map +1 -1
  123. package/dist/components/Slider.cjs +79 -0
  124. package/dist/components/Slider.cjs.map +1 -0
  125. package/dist/components/Slider.d.ts +23 -0
  126. package/dist/components/Slider.d.ts.map +1 -0
  127. package/dist/components/Slider.js +79 -0
  128. package/dist/components/Slider.js.map +1 -0
  129. package/dist/components/combobox-types.d.ts +4 -1
  130. package/dist/components/combobox-types.d.ts.map +1 -1
  131. package/dist/components/filter-bar-field-utils.cjs +3 -5
  132. package/dist/components/filter-bar-field-utils.cjs.map +1 -1
  133. package/dist/components/filter-bar-field-utils.d.ts.map +1 -1
  134. package/dist/components/filter-bar-field-utils.js +3 -5
  135. package/dist/components/filter-bar-field-utils.js.map +1 -1
  136. package/dist/components/filter-bar-tree-model.cjs +22 -0
  137. package/dist/components/filter-bar-tree-model.cjs.map +1 -0
  138. package/dist/components/filter-bar-tree-model.d.ts +33 -0
  139. package/dist/components/filter-bar-tree-model.d.ts.map +1 -0
  140. package/dist/components/filter-bar-tree-model.js +21 -0
  141. package/dist/components/filter-bar-tree-model.js.map +1 -0
  142. package/dist/components/filter-bar-tree.cjs +84 -0
  143. package/dist/components/filter-bar-tree.cjs.map +1 -0
  144. package/dist/components/filter-bar-tree.d.ts +7 -0
  145. package/dist/components/filter-bar-tree.d.ts.map +1 -0
  146. package/dist/components/filter-bar-tree.js +84 -0
  147. package/dist/components/filter-bar-tree.js.map +1 -0
  148. package/dist/components/json-schema-form-debug-glyph-map.cjs +2 -0
  149. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -1
  150. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -1
  151. package/dist/components/json-schema-form-debug-glyph-map.js +2 -0
  152. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -1
  153. package/dist/components/json-schema-form-help-links.cjs +18 -0
  154. package/dist/components/json-schema-form-help-links.cjs.map +1 -0
  155. package/dist/components/json-schema-form-help-links.d.ts +5 -0
  156. package/dist/components/json-schema-form-help-links.d.ts.map +1 -0
  157. package/dist/components/json-schema-form-help-links.js +18 -0
  158. package/dist/components/json-schema-form-help-links.js.map +1 -0
  159. package/dist/components/json-schema-form-help-model.cjs +7 -0
  160. package/dist/components/json-schema-form-help-model.cjs.map +1 -0
  161. package/dist/components/json-schema-form-help-model.d.ts +3 -0
  162. package/dist/components/json-schema-form-help-model.d.ts.map +1 -0
  163. package/dist/components/json-schema-form-help-model.js +7 -0
  164. package/dist/components/json-schema-form-help-model.js.map +1 -0
  165. package/dist/components/json-schema-form-json.cjs +48 -0
  166. package/dist/components/json-schema-form-json.cjs.map +1 -0
  167. package/dist/components/json-schema-form-json.d.ts +7 -0
  168. package/dist/components/json-schema-form-json.d.ts.map +1 -0
  169. package/dist/components/json-schema-form-json.js +48 -0
  170. package/dist/components/json-schema-form-json.js.map +1 -0
  171. package/dist/components/json-schema-form-layout.cjs +7 -5
  172. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  173. package/dist/components/json-schema-form-layout.d.ts +2 -2
  174. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  175. package/dist/components/json-schema-form-layout.js +7 -5
  176. package/dist/components/json-schema-form-layout.js.map +1 -1
  177. package/dist/components/json-schema-form-object.cjs +2 -13
  178. package/dist/components/json-schema-form-object.cjs.map +1 -1
  179. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  180. package/dist/components/json-schema-form-object.js +2 -13
  181. package/dist/components/json-schema-form-object.js.map +1 -1
  182. package/dist/components/json-schema-form-refs.cjs +1 -1
  183. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  184. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  185. package/dist/components/json-schema-form-refs.js +1 -1
  186. package/dist/components/json-schema-form-refs.js.map +1 -1
  187. package/dist/components/json-schema-form-render.cjs +20 -6
  188. package/dist/components/json-schema-form-render.cjs.map +1 -1
  189. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  190. package/dist/components/json-schema-form-render.js +20 -6
  191. package/dist/components/json-schema-form-render.js.map +1 -1
  192. package/dist/components/json-schema-form-resolve.cjs +22 -2
  193. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  194. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  195. package/dist/components/json-schema-form-resolve.js +22 -2
  196. package/dist/components/json-schema-form-resolve.js.map +1 -1
  197. package/dist/components/json-schema-form-types.d.ts +5 -1
  198. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  199. package/dist/components/json-schema-form-union-model.cjs +46 -0
  200. package/dist/components/json-schema-form-union-model.cjs.map +1 -0
  201. package/dist/components/json-schema-form-union-model.d.ts +6 -0
  202. package/dist/components/json-schema-form-union-model.d.ts.map +1 -0
  203. package/dist/components/json-schema-form-union-model.js +43 -0
  204. package/dist/components/json-schema-form-union-model.js.map +1 -0
  205. package/dist/components/json-schema-form-union.cjs +52 -0
  206. package/dist/components/json-schema-form-union.cjs.map +1 -0
  207. package/dist/components/json-schema-form-union.d.ts +7 -0
  208. package/dist/components/json-schema-form-union.d.ts.map +1 -0
  209. package/dist/components/json-schema-form-union.js +52 -0
  210. package/dist/components/json-schema-form-union.js.map +1 -0
  211. package/dist/components/list-menu-virtual.cjs +5 -0
  212. package/dist/components/list-menu-virtual.cjs.map +1 -0
  213. package/dist/components/list-menu-virtual.d.ts +12 -0
  214. package/dist/components/list-menu-virtual.d.ts.map +1 -0
  215. package/dist/components/list-menu-virtual.js +6 -0
  216. package/dist/components/list-menu-virtual.js.map +1 -0
  217. package/dist/components/local-path.cjs +12 -0
  218. package/dist/components/local-path.cjs.map +1 -0
  219. package/dist/components/local-path.d.ts +14 -0
  220. package/dist/components/local-path.d.ts.map +1 -0
  221. package/dist/components/local-path.js +12 -0
  222. package/dist/components/local-path.js.map +1 -0
  223. package/dist/components/slider-shared.cjs +32 -0
  224. package/dist/components/slider-shared.cjs.map +1 -0
  225. package/dist/components/slider-shared.d.ts +18 -0
  226. package/dist/components/slider-shared.d.ts.map +1 -0
  227. package/dist/components/slider-shared.js +27 -0
  228. package/dist/components/slider-shared.js.map +1 -0
  229. package/dist/components.cjs +8 -0
  230. package/dist/components.d.ts +6 -1
  231. package/dist/components.d.ts.map +1 -1
  232. package/dist/components.js +5 -1
  233. package/dist/connections/ConnectionsPage.cjs +51 -19
  234. package/dist/connections/ConnectionsPage.cjs.map +1 -1
  235. package/dist/connections/ConnectionsPage.d.ts +9 -1
  236. package/dist/connections/ConnectionsPage.d.ts.map +1 -1
  237. package/dist/connections/ConnectionsPage.js +52 -20
  238. package/dist/connections/ConnectionsPage.js.map +1 -1
  239. package/dist/connections/connectionDashboard.cjs +13 -8
  240. package/dist/connections/connectionDashboard.cjs.map +1 -1
  241. package/dist/connections/connectionDashboard.d.ts +8 -3
  242. package/dist/connections/connectionDashboard.d.ts.map +1 -1
  243. package/dist/connections/connectionDashboard.js +14 -9
  244. package/dist/connections/connectionDashboard.js.map +1 -1
  245. package/dist/connections/connectionDashboardModel.cjs.map +1 -1
  246. package/dist/connections/connectionDashboardModel.d.ts +4 -0
  247. package/dist/connections/connectionDashboardModel.d.ts.map +1 -1
  248. package/dist/connections/connectionDashboardModel.js.map +1 -1
  249. package/dist/connections/connectionDashboardRow.cjs +75 -55
  250. package/dist/connections/connectionDashboardRow.cjs.map +1 -1
  251. package/dist/connections/connectionDashboardRow.d.ts +3 -2
  252. package/dist/connections/connectionDashboardRow.d.ts.map +1 -1
  253. package/dist/connections/connectionDashboardRow.js +75 -55
  254. package/dist/connections/connectionDashboardRow.js.map +1 -1
  255. package/dist/connections/connectionNamespaceField.cjs +17 -0
  256. package/dist/connections/connectionNamespaceField.cjs.map +1 -0
  257. package/dist/connections/connectionNamespaceField.d.ts +10 -0
  258. package/dist/connections/connectionNamespaceField.d.ts.map +1 -0
  259. package/dist/connections/connectionNamespaceField.js +17 -0
  260. package/dist/connections/connectionNamespaceField.js.map +1 -0
  261. package/dist/connections/connectionSchemaFormExtensions.cjs +98 -0
  262. package/dist/connections/connectionSchemaFormExtensions.cjs.map +1 -0
  263. package/dist/connections/connectionSchemaFormExtensions.d.ts +41 -0
  264. package/dist/connections/connectionSchemaFormExtensions.d.ts.map +1 -0
  265. package/dist/connections/connectionSchemaFormExtensions.js +96 -0
  266. package/dist/connections/connectionSchemaFormExtensions.js.map +1 -0
  267. package/dist/connections/connectionsPageModel.cjs +11 -0
  268. package/dist/connections/connectionsPageModel.cjs.map +1 -1
  269. package/dist/connections/connectionsPageModel.d.ts +5 -0
  270. package/dist/connections/connectionsPageModel.d.ts.map +1 -1
  271. package/dist/connections/connectionsPageModel.js +11 -1
  272. package/dist/connections/connectionsPageModel.js.map +1 -1
  273. package/dist/connections.cjs +5 -0
  274. package/dist/connections.d.ts +2 -1
  275. package/dist/connections.d.ts.map +1 -1
  276. package/dist/connections.js +3 -2
  277. package/dist/data/AvatarBadge.cjs +3 -3
  278. package/dist/data/AvatarBadge.cjs.map +1 -1
  279. package/dist/data/AvatarBadge.js +3 -3
  280. package/dist/data/AvatarBadge.js.map +1 -1
  281. package/dist/data/CodeDiff.cjs +2 -0
  282. package/dist/data/CodeDiff.cjs.map +1 -1
  283. package/dist/data/CodeDiff.js +2 -0
  284. package/dist/data/CodeDiff.js.map +1 -1
  285. package/dist/data/DataTable.cjs +3 -2
  286. package/dist/data/DataTable.cjs.map +1 -1
  287. package/dist/data/DataTable.d.ts.map +1 -1
  288. package/dist/data/DataTable.js +3 -2
  289. package/dist/data/DataTable.js.map +1 -1
  290. package/dist/data/Gauge.cjs +1 -1
  291. package/dist/data/Gauge.cjs.map +1 -1
  292. package/dist/data/Gauge.js +1 -1
  293. package/dist/data/Gauge.js.map +1 -1
  294. package/dist/data/HighlightedTokens.cjs +2 -10
  295. package/dist/data/HighlightedTokens.cjs.map +1 -1
  296. package/dist/data/HighlightedTokens.d.ts.map +1 -1
  297. package/dist/data/HighlightedTokens.js +1 -9
  298. package/dist/data/HighlightedTokens.js.map +1 -1
  299. package/dist/data/Markdown.cjs +38 -11
  300. package/dist/data/Markdown.cjs.map +1 -1
  301. package/dist/data/Markdown.d.ts +9 -1
  302. package/dist/data/Markdown.d.ts.map +1 -1
  303. package/dist/data/Markdown.js +39 -12
  304. package/dist/data/Markdown.js.map +1 -1
  305. package/dist/data/MultiGaugeBar.cjs +157 -0
  306. package/dist/data/MultiGaugeBar.cjs.map +1 -0
  307. package/dist/data/MultiGaugeBar.d.ts +29 -0
  308. package/dist/data/MultiGaugeBar.d.ts.map +1 -0
  309. package/dist/data/MultiGaugeBar.js +157 -0
  310. package/dist/data/MultiGaugeBar.js.map +1 -0
  311. package/dist/data/OpenInFilesLink.cjs +27 -0
  312. package/dist/data/OpenInFilesLink.cjs.map +1 -0
  313. package/dist/data/OpenInFilesLink.d.ts +15 -0
  314. package/dist/data/OpenInFilesLink.d.ts.map +1 -0
  315. package/dist/data/OpenInFilesLink.js +27 -0
  316. package/dist/data/OpenInFilesLink.js.map +1 -0
  317. package/dist/data/ProgressBar.cjs +5 -3
  318. package/dist/data/ProgressBar.cjs.map +1 -1
  319. package/dist/data/ProgressBar.d.ts +5 -1
  320. package/dist/data/ProgressBar.d.ts.map +1 -1
  321. package/dist/data/ProgressBar.js +5 -3
  322. package/dist/data/ProgressBar.js.map +1 -1
  323. package/dist/data/ProgressBars.cjs +13 -5
  324. package/dist/data/ProgressBars.cjs.map +1 -1
  325. package/dist/data/ProgressBars.d.ts +6 -1
  326. package/dist/data/ProgressBars.d.ts.map +1 -1
  327. package/dist/data/ProgressBars.js +13 -5
  328. package/dist/data/ProgressBars.js.map +1 -1
  329. package/dist/data/Properties.cjs +3 -3
  330. package/dist/data/Properties.cjs.map +1 -1
  331. package/dist/data/Properties.js +3 -3
  332. package/dist/data/Properties.js.map +1 -1
  333. package/dist/data/TaskProgress.cjs +14 -6
  334. package/dist/data/TaskProgress.cjs.map +1 -1
  335. package/dist/data/TaskProgress.d.ts +3 -1
  336. package/dist/data/TaskProgress.d.ts.map +1 -1
  337. package/dist/data/TaskProgress.js +14 -6
  338. package/dist/data/TaskProgress.js.map +1 -1
  339. package/dist/data/TaskPrompts.cjs +96 -0
  340. package/dist/data/TaskPrompts.cjs.map +1 -0
  341. package/dist/data/TaskPrompts.d.ts +6 -0
  342. package/dist/data/TaskPrompts.d.ts.map +1 -0
  343. package/dist/data/TaskPrompts.js +96 -0
  344. package/dist/data/TaskPrompts.js.map +1 -0
  345. package/dist/data/TaskSnapshot.cjs.map +1 -1
  346. package/dist/data/TaskSnapshot.d.ts +3 -0
  347. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  348. package/dist/data/TaskSnapshot.js.map +1 -1
  349. package/dist/data/TimeseriesCoreBars.cjs +7 -3
  350. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  351. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  352. package/dist/data/TimeseriesCoreBars.js +8 -4
  353. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  354. package/dist/data/TimeseriesGauge.cjs +12 -5
  355. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  356. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  357. package/dist/data/TimeseriesGauge.js +13 -6
  358. package/dist/data/TimeseriesGauge.js.map +1 -1
  359. package/dist/data/TimeseriesPanel.cjs +10 -9
  360. package/dist/data/TimeseriesPanel.cjs.map +1 -1
  361. package/dist/data/TimeseriesPanel.d.ts +1 -1
  362. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  363. package/dist/data/TimeseriesPanel.js +11 -10
  364. package/dist/data/TimeseriesPanel.js.map +1 -1
  365. package/dist/data/TimeseriesPanel.model.cjs +62 -10
  366. package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
  367. package/dist/data/TimeseriesPanel.model.d.ts +40 -1
  368. package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
  369. package/dist/data/TimeseriesPanel.model.js +62 -11
  370. package/dist/data/TimeseriesPanel.model.js.map +1 -1
  371. package/dist/data/WorkloadCard.cjs +7 -3
  372. package/dist/data/WorkloadCard.cjs.map +1 -1
  373. package/dist/data/WorkloadCard.d.ts +3 -1
  374. package/dist/data/WorkloadCard.d.ts.map +1 -1
  375. package/dist/data/WorkloadCard.js +7 -3
  376. package/dist/data/WorkloadCard.js.map +1 -1
  377. package/dist/data/WorkloadCard.model.cjs.map +1 -1
  378. package/dist/data/WorkloadCard.model.d.ts +2 -0
  379. package/dist/data/WorkloadCard.model.d.ts.map +1 -1
  380. package/dist/data/WorkloadCard.model.js.map +1 -1
  381. package/dist/data/ai/ChatWindow.placement.cjs +2 -1
  382. package/dist/data/ai/ChatWindow.placement.cjs.map +1 -1
  383. package/dist/data/ai/ChatWindow.placement.d.ts +1 -1
  384. package/dist/data/ai/ChatWindow.placement.d.ts.map +1 -1
  385. package/dist/data/ai/ChatWindow.placement.js +2 -1
  386. package/dist/data/ai/ChatWindow.placement.js.map +1 -1
  387. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +6 -3
  388. package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -1
  389. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +6 -3
  390. package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -1
  391. package/dist/data/ai/PromptCatalog/PromptPage.cjs +2 -1
  392. package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -1
  393. package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -1
  394. package/dist/data/ai/PromptCatalog/PromptPage.js +2 -1
  395. package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -1
  396. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +9 -6
  397. package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -1
  398. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -1
  399. package/dist/data/ai/PromptCatalog/PromptPageHeader.js +9 -6
  400. package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -1
  401. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +3 -3
  402. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -1
  403. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +2 -1
  404. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -1
  405. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +3 -3
  406. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -1
  407. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +4 -3
  408. package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -1
  409. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +1 -1
  410. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -1
  411. package/dist/data/ai/PromptCatalog/prompt-page-model.js +4 -3
  412. package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -1
  413. package/dist/data/ai/PromptCatalog/types.d.ts +1 -0
  414. package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -1
  415. package/dist/data/ai/SpecRuntimeBar.cjs +2 -2
  416. package/dist/data/ai/SpecRuntimeBar.cjs.map +1 -1
  417. package/dist/data/ai/SpecRuntimeBar.d.ts +4 -1
  418. package/dist/data/ai/SpecRuntimeBar.d.ts.map +1 -1
  419. package/dist/data/ai/SpecRuntimeBar.js +2 -2
  420. package/dist/data/ai/SpecRuntimeBar.js.map +1 -1
  421. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +1 -1
  422. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  423. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +1 -1
  424. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  425. package/dist/data/ai/SpecRuntimeEditor.model.cjs +2 -2
  426. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  427. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -2
  428. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  429. package/dist/data/ai/SpecRuntimeEditor.model.js +2 -2
  430. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  431. package/dist/data/ai/ThreadPicker.cjs +2 -2
  432. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  433. package/dist/data/ai/ThreadPicker.js +2 -2
  434. package/dist/data/ai/ThreadPicker.js.map +1 -1
  435. package/dist/data/ai/index.d.ts +2 -0
  436. package/dist/data/ai/index.d.ts.map +1 -1
  437. package/dist/data/ai/use-prompt-run-stream.cjs +126 -0
  438. package/dist/data/ai/use-prompt-run-stream.cjs.map +1 -0
  439. package/dist/data/ai/use-prompt-run-stream.d.ts +52 -0
  440. package/dist/data/ai/use-prompt-run-stream.d.ts.map +1 -0
  441. package/dist/data/ai/use-prompt-run-stream.js +126 -0
  442. package/dist/data/ai/use-prompt-run-stream.js.map +1 -0
  443. package/dist/data/cache-browser/CacheBrowser.cjs +1 -0
  444. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -1
  445. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -1
  446. package/dist/data/cache-browser/CacheBrowser.js +1 -0
  447. package/dist/data/cache-browser/CacheBrowser.js.map +1 -1
  448. package/dist/data/charts/BarChart.cjs +194 -0
  449. package/dist/data/charts/BarChart.cjs.map +1 -0
  450. package/dist/data/charts/BarChart.d.ts +19 -0
  451. package/dist/data/charts/BarChart.d.ts.map +1 -0
  452. package/dist/data/charts/BarChart.js +194 -0
  453. package/dist/data/charts/BarChart.js.map +1 -0
  454. package/dist/data/charts/ChartLegend.cjs +54 -0
  455. package/dist/data/charts/ChartLegend.cjs.map +1 -0
  456. package/dist/data/charts/ChartLegend.d.ts +17 -0
  457. package/dist/data/charts/ChartLegend.d.ts.map +1 -0
  458. package/dist/data/charts/ChartLegend.js +54 -0
  459. package/dist/data/charts/ChartLegend.js.map +1 -0
  460. package/dist/data/charts/Sparkline.cjs +56 -0
  461. package/dist/data/charts/Sparkline.cjs.map +1 -0
  462. package/dist/data/charts/Sparkline.d.ts +15 -0
  463. package/dist/data/charts/Sparkline.d.ts.map +1 -0
  464. package/dist/data/charts/Sparkline.js +56 -0
  465. package/dist/data/charts/Sparkline.js.map +1 -0
  466. package/dist/data/charts/StackedBarChart.cjs +241 -0
  467. package/dist/data/charts/StackedBarChart.cjs.map +1 -0
  468. package/dist/data/charts/StackedBarChart.d.ts +20 -0
  469. package/dist/data/charts/StackedBarChart.d.ts.map +1 -0
  470. package/dist/data/charts/StackedBarChart.js +241 -0
  471. package/dist/data/charts/StackedBarChart.js.map +1 -0
  472. package/dist/data/charts/TrendChart.cjs +157 -0
  473. package/dist/data/charts/TrendChart.cjs.map +1 -0
  474. package/dist/data/charts/TrendChart.d.ts +20 -0
  475. package/dist/data/charts/TrendChart.d.ts.map +1 -0
  476. package/dist/data/charts/TrendChart.js +157 -0
  477. package/dist/data/charts/TrendChart.js.map +1 -0
  478. package/dist/data/charts/chart-marks.cjs +115 -0
  479. package/dist/data/charts/chart-marks.cjs.map +1 -0
  480. package/dist/data/charts/chart-marks.d.ts +39 -0
  481. package/dist/data/charts/chart-marks.d.ts.map +1 -0
  482. package/dist/data/charts/chart-marks.js +112 -0
  483. package/dist/data/charts/chart-marks.js.map +1 -0
  484. package/dist/data/charts/chart-palette.cjs +74 -0
  485. package/dist/data/charts/chart-palette.cjs.map +1 -0
  486. package/dist/data/charts/chart-palette.d.ts +58 -0
  487. package/dist/data/charts/chart-palette.d.ts.map +1 -0
  488. package/dist/data/charts/chart-palette.js +72 -0
  489. package/dist/data/charts/chart-palette.js.map +1 -0
  490. package/dist/data/charts/chart-scale.cjs +115 -0
  491. package/dist/data/charts/chart-scale.cjs.map +1 -0
  492. package/dist/data/charts/chart-scale.d.ts +41 -0
  493. package/dist/data/charts/chart-scale.d.ts.map +1 -0
  494. package/dist/data/charts/chart-scale.js +104 -0
  495. package/dist/data/charts/chart-scale.js.map +1 -0
  496. package/dist/data/charts/chart.test-utils.d.ts +7 -0
  497. package/dist/data/charts/chart.test-utils.d.ts.map +1 -0
  498. package/dist/data/charts/index.d.ts +7 -0
  499. package/dist/data/charts/index.d.ts.map +1 -0
  500. package/dist/data/chat/MessageActions.cjs +1 -1
  501. package/dist/data/chat/MessageActions.cjs.map +1 -1
  502. package/dist/data/chat/MessageActions.js +1 -1
  503. package/dist/data/chat/MessageActions.js.map +1 -1
  504. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +1 -1
  505. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +1 -1
  506. package/dist/data/diagnostics/DiagnosticsTree.cjs +1 -1
  507. package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -1
  508. package/dist/data/diagnostics/DiagnosticsTree.js +1 -1
  509. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
  510. package/dist/data/diagnostics/FrameSourceWindow.cjs +9 -2
  511. package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
  512. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  513. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
  514. package/dist/data/diagnostics/FrameSourceWindow.js +9 -2
  515. package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
  516. package/dist/data/diagnostics/ProblemActions.cjs +37 -0
  517. package/dist/data/diagnostics/ProblemActions.cjs.map +1 -0
  518. package/dist/data/diagnostics/ProblemActions.d.ts +6 -0
  519. package/dist/data/diagnostics/ProblemActions.d.ts.map +1 -0
  520. package/dist/data/diagnostics/ProblemActions.js +37 -0
  521. package/dist/data/diagnostics/ProblemActions.js.map +1 -0
  522. package/dist/data/diagnostics/ProblemFacet.cjs +33 -0
  523. package/dist/data/diagnostics/ProblemFacet.cjs.map +1 -0
  524. package/dist/data/diagnostics/ProblemFacet.d.ts +9 -0
  525. package/dist/data/diagnostics/ProblemFacet.d.ts.map +1 -0
  526. package/dist/data/diagnostics/ProblemFacet.js +33 -0
  527. package/dist/data/diagnostics/ProblemFacet.js.map +1 -0
  528. package/dist/data/diagnostics/ProblemRow.cjs +62 -0
  529. package/dist/data/diagnostics/ProblemRow.cjs.map +1 -0
  530. package/dist/data/diagnostics/ProblemRow.d.ts +14 -0
  531. package/dist/data/diagnostics/ProblemRow.d.ts.map +1 -0
  532. package/dist/data/diagnostics/ProblemRow.js +62 -0
  533. package/dist/data/diagnostics/ProblemRow.js.map +1 -0
  534. package/dist/data/diagnostics/ProblemViewOptions.cjs +18 -0
  535. package/dist/data/diagnostics/ProblemViewOptions.cjs.map +1 -0
  536. package/dist/data/diagnostics/ProblemViewOptions.d.ts +6 -0
  537. package/dist/data/diagnostics/ProblemViewOptions.d.ts.map +1 -0
  538. package/dist/data/diagnostics/ProblemViewOptions.js +18 -0
  539. package/dist/data/diagnostics/ProblemViewOptions.js.map +1 -0
  540. package/dist/data/diagnostics/StackFrameRow.cjs +1 -1
  541. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  542. package/dist/data/diagnostics/StackFrameRow.js +1 -1
  543. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  544. package/dist/data/diagnostics/diagnostic-identity.cjs +14 -0
  545. package/dist/data/diagnostics/diagnostic-identity.cjs.map +1 -0
  546. package/dist/data/diagnostics/diagnostic-identity.d.ts +3 -0
  547. package/dist/data/diagnostics/diagnostic-identity.d.ts.map +1 -0
  548. package/dist/data/diagnostics/diagnostic-identity.js +14 -0
  549. package/dist/data/diagnostics/diagnostic-identity.js.map +1 -0
  550. package/dist/data/diagnostics/use-problem-expansion.cjs +16 -0
  551. package/dist/data/diagnostics/use-problem-expansion.cjs.map +1 -0
  552. package/dist/data/diagnostics/use-problem-expansion.d.ts +3 -0
  553. package/dist/data/diagnostics/use-problem-expansion.d.ts.map +1 -0
  554. package/dist/data/diagnostics/use-problem-expansion.js +16 -0
  555. package/dist/data/diagnostics/use-problem-expansion.js.map +1 -0
  556. package/dist/data/git/GitChangeList.cjs +9 -6
  557. package/dist/data/git/GitChangeList.cjs.map +1 -1
  558. package/dist/data/git/GitChangeList.d.ts +6 -0
  559. package/dist/data/git/GitChangeList.d.ts.map +1 -1
  560. package/dist/data/git/GitChangeList.js +9 -6
  561. package/dist/data/git/GitChangeList.js.map +1 -1
  562. package/dist/data/git/pickers/GitPickersDemo.d.ts.map +1 -1
  563. package/dist/data/git/pickers/ReferencePicker.cjs +1 -0
  564. package/dist/data/git/pickers/ReferencePicker.cjs.map +1 -1
  565. package/dist/data/git/pickers/ReferencePicker.js +1 -0
  566. package/dist/data/git/pickers/ReferencePicker.js.map +1 -1
  567. package/dist/data/lint/LintDetail.cjs +230 -189
  568. package/dist/data/lint/LintDetail.cjs.map +1 -1
  569. package/dist/data/lint/LintDetail.d.ts +25 -3
  570. package/dist/data/lint/LintDetail.d.ts.map +1 -1
  571. package/dist/data/lint/LintDetail.js +231 -192
  572. package/dist/data/lint/LintDetail.js.map +1 -1
  573. package/dist/data/lint/LintFilterBar.cjs +78 -83
  574. package/dist/data/lint/LintFilterBar.cjs.map +1 -1
  575. package/dist/data/lint/LintFilterBar.d.ts +23 -6
  576. package/dist/data/lint/LintFilterBar.d.ts.map +1 -1
  577. package/dist/data/lint/LintFilterBar.js +78 -85
  578. package/dist/data/lint/LintFilterBar.js.map +1 -1
  579. package/dist/data/lint/LintIgnoreMenu.cjs +59 -0
  580. package/dist/data/lint/LintIgnoreMenu.cjs.map +1 -0
  581. package/dist/data/lint/LintIgnoreMenu.d.ts +20 -0
  582. package/dist/data/lint/LintIgnoreMenu.d.ts.map +1 -0
  583. package/dist/data/lint/LintIgnoreMenu.js +58 -0
  584. package/dist/data/lint/LintIgnoreMenu.js.map +1 -0
  585. package/dist/data/lint/LintResults.cjs +59 -14
  586. package/dist/data/lint/LintResults.cjs.map +1 -1
  587. package/dist/data/lint/LintResults.d.ts +25 -1
  588. package/dist/data/lint/LintResults.d.ts.map +1 -1
  589. package/dist/data/lint/LintResults.fixtures.d.ts +19 -0
  590. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -1
  591. package/dist/data/lint/LintResults.js +60 -15
  592. package/dist/data/lint/LintResults.js.map +1 -1
  593. package/dist/data/lint/LintTable.cjs +156 -0
  594. package/dist/data/lint/LintTable.cjs.map +1 -0
  595. package/dist/data/lint/LintTable.d.ts +13 -0
  596. package/dist/data/lint/LintTable.d.ts.map +1 -0
  597. package/dist/data/lint/LintTable.js +156 -0
  598. package/dist/data/lint/LintTable.js.map +1 -0
  599. package/dist/data/lint/LintTreeNode.cjs +42 -19
  600. package/dist/data/lint/LintTreeNode.cjs.map +1 -1
  601. package/dist/data/lint/LintTreeNode.d.ts +7 -2
  602. package/dist/data/lint/LintTreeNode.d.ts.map +1 -1
  603. package/dist/data/lint/LintTreeNode.js +44 -21
  604. package/dist/data/lint/LintTreeNode.js.map +1 -1
  605. package/dist/data/lint/ViolationSnippet.cjs +113 -0
  606. package/dist/data/lint/ViolationSnippet.cjs.map +1 -0
  607. package/dist/data/lint/ViolationSnippet.d.ts +20 -0
  608. package/dist/data/lint/ViolationSnippet.d.ts.map +1 -0
  609. package/dist/data/lint/ViolationSnippet.js +112 -0
  610. package/dist/data/lint/ViolationSnippet.js.map +1 -0
  611. package/dist/data/lint/actions.cjs +44 -16
  612. package/dist/data/lint/actions.cjs.map +1 -1
  613. package/dist/data/lint/actions.d.ts +7 -3
  614. package/dist/data/lint/actions.d.ts.map +1 -1
  615. package/dist/data/lint/actions.js +44 -16
  616. package/dist/data/lint/actions.js.map +1 -1
  617. package/dist/data/lint/grouping.cjs +105 -8
  618. package/dist/data/lint/grouping.cjs.map +1 -1
  619. package/dist/data/lint/grouping.d.ts +21 -1
  620. package/dist/data/lint/grouping.d.ts.map +1 -1
  621. package/dist/data/lint/grouping.js +105 -10
  622. package/dist/data/lint/grouping.js.map +1 -1
  623. package/dist/data/lint/ignore-menu-items.cjs +18 -0
  624. package/dist/data/lint/ignore-menu-items.cjs.map +1 -0
  625. package/dist/data/lint/ignore-menu-items.d.ts +6 -0
  626. package/dist/data/lint/ignore-menu-items.d.ts.map +1 -0
  627. package/dist/data/lint/ignore-menu-items.js +17 -0
  628. package/dist/data/lint/ignore-menu-items.js.map +1 -0
  629. package/dist/data/lint/index.d.ts +7 -5
  630. package/dist/data/lint/index.d.ts.map +1 -1
  631. package/dist/data/lint/stats.cjs +19 -4
  632. package/dist/data/lint/stats.cjs.map +1 -1
  633. package/dist/data/lint/stats.d.ts +13 -3
  634. package/dist/data/lint/stats.d.ts.map +1 -1
  635. package/dist/data/lint/stats.js +17 -5
  636. package/dist/data/lint/stats.js.map +1 -1
  637. package/dist/data/lint/types.cjs +8 -0
  638. package/dist/data/lint/types.cjs.map +1 -1
  639. package/dist/data/lint/types.d.ts +47 -0
  640. package/dist/data/lint/types.d.ts.map +1 -1
  641. package/dist/data/lint/types.js +8 -1
  642. package/dist/data/lint/types.js.map +1 -1
  643. package/dist/data/lint/violation-menu-items.cjs +31 -0
  644. package/dist/data/lint/violation-menu-items.cjs.map +1 -0
  645. package/dist/data/lint/violation-menu-items.d.ts +12 -0
  646. package/dist/data/lint/violation-menu-items.d.ts.map +1 -0
  647. package/dist/data/lint/violation-menu-items.js +31 -0
  648. package/dist/data/lint/violation-menu-items.js.map +1 -0
  649. package/dist/data/markdown-source-blocks.cjs +38 -0
  650. package/dist/data/markdown-source-blocks.cjs.map +1 -0
  651. package/dist/data/markdown-source-blocks.d.ts +32 -0
  652. package/dist/data/markdown-source-blocks.d.ts.map +1 -0
  653. package/dist/data/markdown-source-blocks.js +35 -0
  654. package/dist/data/markdown-source-blocks.js.map +1 -0
  655. package/dist/data/test-runner/FilterFacet.cjs +52 -0
  656. package/dist/data/test-runner/FilterFacet.cjs.map +1 -0
  657. package/dist/data/test-runner/FilterFacet.d.ts +13 -0
  658. package/dist/data/test-runner/FilterFacet.d.ts.map +1 -0
  659. package/dist/data/test-runner/FilterFacet.js +52 -0
  660. package/dist/data/test-runner/FilterFacet.js.map +1 -0
  661. package/dist/data/test-runner/MatrixMarks.cjs +19 -29
  662. package/dist/data/test-runner/MatrixMarks.cjs.map +1 -1
  663. package/dist/data/test-runner/MatrixMarks.d.ts +4 -4
  664. package/dist/data/test-runner/MatrixMarks.d.ts.map +1 -1
  665. package/dist/data/test-runner/MatrixMarks.js +19 -29
  666. package/dist/data/test-runner/MatrixMarks.js.map +1 -1
  667. package/dist/data/test-runner/TestAttemptDetail.cjs +1 -1
  668. package/dist/data/test-runner/TestAttemptDetail.js +1 -1
  669. package/dist/data/test-runner/TestDetailPanel.cjs +11 -0
  670. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  671. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  672. package/dist/data/test-runner/TestDetailPanel.js +11 -0
  673. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  674. package/dist/data/test-runner/TestFilterBar.cjs +3 -44
  675. package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
  676. package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
  677. package/dist/data/test-runner/TestFilterBar.js +3 -44
  678. package/dist/data/test-runner/TestFilterBar.js.map +1 -1
  679. package/dist/data/test-runner/TestRunner.cjs +3 -1
  680. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  681. package/dist/data/test-runner/TestRunner.d.ts +7 -1
  682. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  683. package/dist/data/test-runner/TestRunner.js +3 -1
  684. package/dist/data/test-runner/TestRunner.js.map +1 -1
  685. package/dist/data/test-runner/context.cjs.map +1 -1
  686. package/dist/data/test-runner/context.d.ts +3 -0
  687. package/dist/data/test-runner/context.d.ts.map +1 -1
  688. package/dist/data/test-runner/context.js.map +1 -1
  689. package/dist/data/test-runner/types.d.ts +2 -0
  690. package/dist/data/test-runner/types.d.ts.map +1 -1
  691. package/dist/data/timeseries-query.cjs +98 -2
  692. package/dist/data/timeseries-query.cjs.map +1 -1
  693. package/dist/data/timeseries-query.d.ts +31 -5
  694. package/dist/data/timeseries-query.d.ts.map +1 -1
  695. package/dist/data/timeseries-query.js +98 -3
  696. package/dist/data/timeseries-query.js.map +1 -1
  697. package/dist/data/timeseries-stream-provider.cjs +38 -0
  698. package/dist/data/timeseries-stream-provider.cjs.map +1 -0
  699. package/dist/data/timeseries-stream-provider.d.ts +26 -0
  700. package/dist/data/timeseries-stream-provider.d.ts.map +1 -0
  701. package/dist/data/timeseries-stream-provider.js +38 -0
  702. package/dist/data/timeseries-stream-provider.js.map +1 -0
  703. package/dist/data/timeseries-stream.cjs +304 -0
  704. package/dist/data/timeseries-stream.cjs.map +1 -0
  705. package/dist/data/timeseries-stream.d.ts +81 -0
  706. package/dist/data/timeseries-stream.d.ts.map +1 -0
  707. package/dist/data/timeseries-stream.fixtures.d.ts +36 -0
  708. package/dist/data/timeseries-stream.fixtures.d.ts.map +1 -0
  709. package/dist/data/timeseries-stream.js +296 -0
  710. package/dist/data/timeseries-stream.js.map +1 -0
  711. package/dist/data/token-style.cjs +13 -0
  712. package/dist/data/token-style.cjs.map +1 -0
  713. package/dist/data/token-style.d.ts +4 -0
  714. package/dist/data/token-style.d.ts.map +1 -0
  715. package/dist/data/token-style.js +13 -0
  716. package/dist/data/token-style.js.map +1 -0
  717. package/dist/data/traces/ProcessTraceDetail.cjs +1 -1
  718. package/dist/data/traces/ProcessTraceDetail.js +1 -1
  719. package/dist/data/traces/index.d.ts +8 -1
  720. package/dist/data/traces/index.d.ts.map +1 -1
  721. package/dist/data/traces/otel/OperationList.cjs +64 -0
  722. package/dist/data/traces/otel/OperationList.cjs.map +1 -0
  723. package/dist/data/traces/otel/OperationList.d.ts +10 -0
  724. package/dist/data/traces/otel/OperationList.d.ts.map +1 -0
  725. package/dist/data/traces/otel/OperationList.js +64 -0
  726. package/dist/data/traces/otel/OperationList.js.map +1 -0
  727. package/dist/data/traces/otel/OtelTraceDetail.cjs +781 -0
  728. package/dist/data/traces/otel/OtelTraceDetail.cjs.map +1 -0
  729. package/dist/data/traces/otel/OtelTraceDetail.d.ts +7 -0
  730. package/dist/data/traces/otel/OtelTraceDetail.d.ts.map +1 -0
  731. package/dist/data/traces/otel/OtelTraceDetail.js +781 -0
  732. package/dist/data/traces/otel/OtelTraceDetail.js.map +1 -0
  733. package/dist/data/traces/otel/OtelTraceSearch.cjs +145 -0
  734. package/dist/data/traces/otel/OtelTraceSearch.cjs.map +1 -0
  735. package/dist/data/traces/otel/OtelTraceSearch.d.ts +16 -0
  736. package/dist/data/traces/otel/OtelTraceSearch.d.ts.map +1 -0
  737. package/dist/data/traces/otel/OtelTraceSearch.js +145 -0
  738. package/dist/data/traces/otel/OtelTraceSearch.js.map +1 -0
  739. package/dist/data/traces/otel/OtelTraceTable.cjs +47 -0
  740. package/dist/data/traces/otel/OtelTraceTable.cjs.map +1 -0
  741. package/dist/data/traces/otel/OtelTraceTable.d.ts +12 -0
  742. package/dist/data/traces/otel/OtelTraceTable.d.ts.map +1 -0
  743. package/dist/data/traces/otel/OtelTraceTable.js +47 -0
  744. package/dist/data/traces/otel/OtelTraceTable.js.map +1 -0
  745. package/dist/data/traces/otel/QueryBar.cjs +158 -0
  746. package/dist/data/traces/otel/QueryBar.cjs.map +1 -0
  747. package/dist/data/traces/otel/QueryBar.d.ts +12 -0
  748. package/dist/data/traces/otel/QueryBar.d.ts.map +1 -0
  749. package/dist/data/traces/otel/QueryBar.js +158 -0
  750. package/dist/data/traces/otel/QueryBar.js.map +1 -0
  751. package/dist/data/traces/otel/SpanCards.cjs +264 -0
  752. package/dist/data/traces/otel/SpanCards.cjs.map +1 -0
  753. package/dist/data/traces/otel/SpanCards.d.ts +17 -0
  754. package/dist/data/traces/otel/SpanCards.d.ts.map +1 -0
  755. package/dist/data/traces/otel/SpanCards.js +261 -0
  756. package/dist/data/traces/otel/SpanCards.js.map +1 -0
  757. package/dist/data/traces/otel/SpanCategory.cjs +18 -0
  758. package/dist/data/traces/otel/SpanCategory.cjs.map +1 -0
  759. package/dist/data/traces/otel/SpanCategory.d.ts +7 -0
  760. package/dist/data/traces/otel/SpanCategory.d.ts.map +1 -0
  761. package/dist/data/traces/otel/SpanCategory.js +18 -0
  762. package/dist/data/traces/otel/SpanCategory.js.map +1 -0
  763. package/dist/data/traces/otel/TraceResults.cjs +195 -0
  764. package/dist/data/traces/otel/TraceResults.cjs.map +1 -0
  765. package/dist/data/traces/otel/TraceResults.d.ts +19 -0
  766. package/dist/data/traces/otel/TraceResults.d.ts.map +1 -0
  767. package/dist/data/traces/otel/TraceResults.js +193 -0
  768. package/dist/data/traces/otel/TraceResults.js.map +1 -0
  769. package/dist/data/traces/otel/api.cjs +36 -0
  770. package/dist/data/traces/otel/api.cjs.map +1 -0
  771. package/dist/data/traces/otel/api.d.ts +87 -0
  772. package/dist/data/traces/otel/api.d.ts.map +1 -0
  773. package/dist/data/traces/otel/api.js +33 -0
  774. package/dist/data/traces/otel/api.js.map +1 -0
  775. package/dist/data/traces/otel/fixtures.d.ts +4 -0
  776. package/dist/data/traces/otel/fixtures.d.ts.map +1 -0
  777. package/dist/data/traces/otel/metrics.cjs +7 -0
  778. package/dist/data/traces/otel/metrics.cjs.map +1 -0
  779. package/dist/data/traces/otel/metrics.d.ts +2 -0
  780. package/dist/data/traces/otel/metrics.d.ts.map +1 -0
  781. package/dist/data/traces/otel/metrics.js +7 -0
  782. package/dist/data/traces/otel/metrics.js.map +1 -0
  783. package/dist/data/traces/otel/model.cjs +167 -0
  784. package/dist/data/traces/otel/model.cjs.map +1 -0
  785. package/dist/data/traces/otel/model.d.ts +81 -0
  786. package/dist/data/traces/otel/model.d.ts.map +1 -0
  787. package/dist/data/traces/otel/model.js +154 -0
  788. package/dist/data/traces/otel/model.js.map +1 -0
  789. package/dist/data/traces/otel/query.cjs +90 -0
  790. package/dist/data/traces/otel/query.cjs.map +1 -0
  791. package/dist/data/traces/otel/query.d.ts +20 -0
  792. package/dist/data/traces/otel/query.d.ts.map +1 -0
  793. package/dist/data/traces/otel/query.js +86 -0
  794. package/dist/data/traces/otel/query.js.map +1 -0
  795. package/dist/data/traces/otel/result-model.cjs +25 -0
  796. package/dist/data/traces/otel/result-model.cjs.map +1 -0
  797. package/dist/data/traces/otel/result-model.d.ts +5 -0
  798. package/dist/data/traces/otel/result-model.d.ts.map +1 -0
  799. package/dist/data/traces/otel/result-model.js +24 -0
  800. package/dist/data/traces/otel/result-model.js.map +1 -0
  801. package/dist/data/traces/otel/source.cjs +11 -0
  802. package/dist/data/traces/otel/source.cjs.map +1 -0
  803. package/dist/data/traces/otel/source.d.ts +5 -0
  804. package/dist/data/traces/otel/source.d.ts.map +1 -0
  805. package/dist/data/traces/otel/source.js +10 -0
  806. package/dist/data/traces/otel/source.js.map +1 -0
  807. package/dist/data/traces/otel/span-traces.cjs +39 -0
  808. package/dist/data/traces/otel/span-traces.cjs.map +1 -0
  809. package/dist/data/traces/otel/span-traces.d.ts +3 -0
  810. package/dist/data/traces/otel/span-traces.d.ts.map +1 -0
  811. package/dist/data/traces/otel/span-traces.js +39 -0
  812. package/dist/data/traces/otel/span-traces.js.map +1 -0
  813. package/dist/data/use-data-table-virtual.d.ts +1 -1
  814. package/dist/data/version-info.cjs +3 -3
  815. package/dist/data/version-info.js +3 -3
  816. package/dist/data/workload-panel/MemoryStack.cjs +49 -0
  817. package/dist/data/workload-panel/MemoryStack.cjs.map +1 -0
  818. package/dist/data/workload-panel/MemoryStack.d.ts +11 -0
  819. package/dist/data/workload-panel/MemoryStack.d.ts.map +1 -0
  820. package/dist/data/workload-panel/MemoryStack.js +48 -0
  821. package/dist/data/workload-panel/MemoryStack.js.map +1 -0
  822. package/dist/data/workload-panel/Metrics.cjs +197 -0
  823. package/dist/data/workload-panel/Metrics.cjs.map +1 -0
  824. package/dist/data/workload-panel/Metrics.d.ts +11 -0
  825. package/dist/data/workload-panel/Metrics.d.ts.map +1 -0
  826. package/dist/data/workload-panel/Metrics.js +196 -0
  827. package/dist/data/workload-panel/Metrics.js.map +1 -0
  828. package/dist/data/workload-panel/WorkloadPanel.cjs +66 -0
  829. package/dist/data/workload-panel/WorkloadPanel.cjs.map +1 -0
  830. package/dist/data/workload-panel/WorkloadPanel.d.ts +3 -0
  831. package/dist/data/workload-panel/WorkloadPanel.d.ts.map +1 -0
  832. package/dist/data/workload-panel/WorkloadPanel.js +66 -0
  833. package/dist/data/workload-panel/WorkloadPanel.js.map +1 -0
  834. package/dist/data/workload-panel/fixtures.d.ts +60 -0
  835. package/dist/data/workload-panel/fixtures.d.ts.map +1 -0
  836. package/dist/data/workload-panel/model.cjs +137 -0
  837. package/dist/data/workload-panel/model.cjs.map +1 -0
  838. package/dist/data/workload-panel/model.d.ts +53 -0
  839. package/dist/data/workload-panel/model.d.ts.map +1 -0
  840. package/dist/data/workload-panel/model.js +133 -0
  841. package/dist/data/workload-panel/model.js.map +1 -0
  842. package/dist/data/workload-panel/types.d.ts +56 -0
  843. package/dist/data/workload-panel/types.d.ts.map +1 -0
  844. package/dist/data.cjs +68 -6
  845. package/dist/data.d.ts +9 -1
  846. package/dist/data.d.ts.map +1 -1
  847. package/dist/data.js +32 -10
  848. package/dist/file-findings/AnnotatedCode.cjs +243 -0
  849. package/dist/file-findings/AnnotatedCode.cjs.map +1 -0
  850. package/dist/file-findings/AnnotatedCode.d.ts +30 -0
  851. package/dist/file-findings/AnnotatedCode.d.ts.map +1 -0
  852. package/dist/file-findings/AnnotatedCode.js +243 -0
  853. package/dist/file-findings/AnnotatedCode.js.map +1 -0
  854. package/dist/file-findings/FileFindingsView.cjs +213 -0
  855. package/dist/file-findings/FileFindingsView.cjs.map +1 -0
  856. package/dist/file-findings/FileFindingsView.d.ts +35 -0
  857. package/dist/file-findings/FileFindingsView.d.ts.map +1 -0
  858. package/dist/file-findings/FileFindingsView.js +213 -0
  859. package/dist/file-findings/FileFindingsView.js.map +1 -0
  860. package/dist/file-findings/LazyAnnotatedCode.cjs +22 -0
  861. package/dist/file-findings/LazyAnnotatedCode.cjs.map +1 -0
  862. package/dist/file-findings/LazyAnnotatedCode.d.ts +5 -0
  863. package/dist/file-findings/LazyAnnotatedCode.d.ts.map +1 -0
  864. package/dist/file-findings/LazyAnnotatedCode.js +22 -0
  865. package/dist/file-findings/LazyAnnotatedCode.js.map +1 -0
  866. package/dist/file-findings/adapters.cjs +155 -0
  867. package/dist/file-findings/adapters.cjs.map +1 -0
  868. package/dist/file-findings/adapters.d.ts +24 -0
  869. package/dist/file-findings/adapters.d.ts.map +1 -0
  870. package/dist/file-findings/adapters.js +153 -0
  871. package/dist/file-findings/adapters.js.map +1 -0
  872. package/dist/file-findings/file-review/CommentDraft.cjs +97 -0
  873. package/dist/file-findings/file-review/CommentDraft.cjs.map +1 -0
  874. package/dist/file-findings/file-review/CommentDraft.d.ts +25 -0
  875. package/dist/file-findings/file-review/CommentDraft.d.ts.map +1 -0
  876. package/dist/file-findings/file-review/CommentDraft.js +97 -0
  877. package/dist/file-findings/file-review/CommentDraft.js.map +1 -0
  878. package/dist/file-findings/file-review/FileReview.cjs +863 -0
  879. package/dist/file-findings/file-review/FileReview.cjs.map +1 -0
  880. package/dist/file-findings/file-review/FileReview.d.ts +79 -0
  881. package/dist/file-findings/file-review/FileReview.d.ts.map +1 -0
  882. package/dist/file-findings/file-review/FileReview.fixtures.d.ts +25 -0
  883. package/dist/file-findings/file-review/FileReview.fixtures.d.ts.map +1 -0
  884. package/dist/file-findings/file-review/FileReview.js +863 -0
  885. package/dist/file-findings/file-review/FileReview.js.map +1 -0
  886. package/dist/file-findings/file-review/InlineAuthors.cjs +77 -0
  887. package/dist/file-findings/file-review/InlineAuthors.cjs.map +1 -0
  888. package/dist/file-findings/file-review/InlineAuthors.d.ts +9 -0
  889. package/dist/file-findings/file-review/InlineAuthors.d.ts.map +1 -0
  890. package/dist/file-findings/file-review/InlineAuthors.js +77 -0
  891. package/dist/file-findings/file-review/InlineAuthors.js.map +1 -0
  892. package/dist/file-findings/file-review/InlineThread.cjs +77 -0
  893. package/dist/file-findings/file-review/InlineThread.cjs.map +1 -0
  894. package/dist/file-findings/file-review/InlineThread.d.ts +27 -0
  895. package/dist/file-findings/file-review/InlineThread.d.ts.map +1 -0
  896. package/dist/file-findings/file-review/InlineThread.js +77 -0
  897. package/dist/file-findings/file-review/InlineThread.js.map +1 -0
  898. package/dist/file-findings/file-review/ProblemsList.cjs +164 -0
  899. package/dist/file-findings/file-review/ProblemsList.cjs.map +1 -0
  900. package/dist/file-findings/file-review/ProblemsList.d.ts +15 -0
  901. package/dist/file-findings/file-review/ProblemsList.d.ts.map +1 -0
  902. package/dist/file-findings/file-review/ProblemsList.js +164 -0
  903. package/dist/file-findings/file-review/ProblemsList.js.map +1 -0
  904. package/dist/file-findings/file-review/SourceView.cjs +179 -0
  905. package/dist/file-findings/file-review/SourceView.cjs.map +1 -0
  906. package/dist/file-findings/file-review/SourceView.d.ts +29 -0
  907. package/dist/file-findings/file-review/SourceView.d.ts.map +1 -0
  908. package/dist/file-findings/file-review/SourceView.js +179 -0
  909. package/dist/file-findings/file-review/SourceView.js.map +1 -0
  910. package/dist/file-findings/file-review/blame.cjs +35 -0
  911. package/dist/file-findings/file-review/blame.cjs.map +1 -0
  912. package/dist/file-findings/file-review/blame.d.ts +28 -0
  913. package/dist/file-findings/file-review/blame.d.ts.map +1 -0
  914. package/dist/file-findings/file-review/blame.js +33 -0
  915. package/dist/file-findings/file-review/blame.js.map +1 -0
  916. package/dist/file-findings/file-review/geometry.cjs +101 -0
  917. package/dist/file-findings/file-review/geometry.cjs.map +1 -0
  918. package/dist/file-findings/file-review/geometry.d.ts +45 -0
  919. package/dist/file-findings/file-review/geometry.d.ts.map +1 -0
  920. package/dist/file-findings/file-review/geometry.js +98 -0
  921. package/dist/file-findings/file-review/geometry.js.map +1 -0
  922. package/dist/file-findings/file-review/hooks.cjs +101 -0
  923. package/dist/file-findings/file-review/hooks.cjs.map +1 -0
  924. package/dist/file-findings/file-review/hooks.d.ts +22 -0
  925. package/dist/file-findings/file-review/hooks.d.ts.map +1 -0
  926. package/dist/file-findings/file-review/hooks.js +99 -0
  927. package/dist/file-findings/file-review/hooks.js.map +1 -0
  928. package/dist/file-findings/file-review/marks.cjs +52 -0
  929. package/dist/file-findings/file-review/marks.cjs.map +1 -0
  930. package/dist/file-findings/file-review/marks.d.ts +23 -0
  931. package/dist/file-findings/file-review/marks.d.ts.map +1 -0
  932. package/dist/file-findings/file-review/marks.js +47 -0
  933. package/dist/file-findings/file-review/marks.js.map +1 -0
  934. package/dist/file-findings/file-review/problem-filters.cjs +14 -0
  935. package/dist/file-findings/file-review/problem-filters.cjs.map +1 -0
  936. package/dist/file-findings/file-review/problem-filters.d.ts +10 -0
  937. package/dist/file-findings/file-review/problem-filters.d.ts.map +1 -0
  938. package/dist/file-findings/file-review/problem-filters.js +13 -0
  939. package/dist/file-findings/file-review/problem-filters.js.map +1 -0
  940. package/dist/file-findings/file-review/quote-anchor.cjs +234 -0
  941. package/dist/file-findings/file-review/quote-anchor.cjs.map +1 -0
  942. package/dist/file-findings/file-review/quote-anchor.d.ts +54 -0
  943. package/dist/file-findings/file-review/quote-anchor.d.ts.map +1 -0
  944. package/dist/file-findings/file-review/quote-anchor.js +226 -0
  945. package/dist/file-findings/file-review/quote-anchor.js.map +1 -0
  946. package/dist/file-findings/file-review/source-anchor.cjs +104 -0
  947. package/dist/file-findings/file-review/source-anchor.cjs.map +1 -0
  948. package/dist/file-findings/file-review/source-anchor.d.ts +27 -0
  949. package/dist/file-findings/file-review/source-anchor.d.ts.map +1 -0
  950. package/dist/file-findings/file-review/source-anchor.js +99 -0
  951. package/dist/file-findings/file-review/source-anchor.js.map +1 -0
  952. package/dist/file-findings/file-review/source-marks.cjs +71 -0
  953. package/dist/file-findings/file-review/source-marks.cjs.map +1 -0
  954. package/dist/file-findings/file-review/source-marks.d.ts +27 -0
  955. package/dist/file-findings/file-review/source-marks.d.ts.map +1 -0
  956. package/dist/file-findings/file-review/source-marks.js +68 -0
  957. package/dist/file-findings/file-review/source-marks.js.map +1 -0
  958. package/dist/file-findings/findings-comments.cjs +136 -0
  959. package/dist/file-findings/findings-comments.cjs.map +1 -0
  960. package/dist/file-findings/findings-comments.d.ts +28 -0
  961. package/dist/file-findings/findings-comments.d.ts.map +1 -0
  962. package/dist/file-findings/findings-comments.js +131 -0
  963. package/dist/file-findings/findings-comments.js.map +1 -0
  964. package/dist/file-findings/findings-languages.cjs +53 -0
  965. package/dist/file-findings/findings-languages.cjs.map +1 -0
  966. package/dist/file-findings/findings-languages.d.ts +11 -0
  967. package/dist/file-findings/findings-languages.d.ts.map +1 -0
  968. package/dist/file-findings/findings-languages.js +53 -0
  969. package/dist/file-findings/findings-languages.js.map +1 -0
  970. package/dist/file-findings/mdx-source.cjs +48 -0
  971. package/dist/file-findings/mdx-source.cjs.map +1 -0
  972. package/dist/file-findings/mdx-source.d.ts +7 -0
  973. package/dist/file-findings/mdx-source.d.ts.map +1 -0
  974. package/dist/file-findings/mdx-source.js +48 -0
  975. package/dist/file-findings/mdx-source.js.map +1 -0
  976. package/dist/file-findings/monaco-language.cjs +73 -0
  977. package/dist/file-findings/monaco-language.cjs.map +1 -0
  978. package/dist/file-findings/monaco-language.d.ts +11 -0
  979. package/dist/file-findings/monaco-language.d.ts.map +1 -0
  980. package/dist/file-findings/monaco-language.js +72 -0
  981. package/dist/file-findings/monaco-language.js.map +1 -0
  982. package/dist/file-findings/severity-counts.cjs +20 -0
  983. package/dist/file-findings/severity-counts.cjs.map +1 -0
  984. package/dist/file-findings/severity-counts.d.ts +5 -0
  985. package/dist/file-findings/severity-counts.d.ts.map +1 -0
  986. package/dist/file-findings/severity-counts.js +19 -0
  987. package/dist/file-findings/severity-counts.js.map +1 -0
  988. package/dist/file-findings/types.cjs +12 -0
  989. package/dist/file-findings/types.cjs.map +1 -0
  990. package/dist/file-findings/types.d.ts +43 -0
  991. package/dist/file-findings/types.d.ts.map +1 -0
  992. package/dist/file-findings/types.js +11 -0
  993. package/dist/file-findings/types.js.map +1 -0
  994. package/dist/file-findings.cjs +47 -0
  995. package/dist/file-findings.d.ts +15 -0
  996. package/dist/file-findings.d.ts.map +1 -0
  997. package/dist/file-findings.js +15 -0
  998. package/dist/hooks/event-hub.cjs +22 -8
  999. package/dist/hooks/event-hub.cjs.map +1 -1
  1000. package/dist/hooks/event-hub.d.ts.map +1 -1
  1001. package/dist/hooks/event-hub.js +22 -8
  1002. package/dist/hooks/event-hub.js.map +1 -1
  1003. package/dist/icons/components/UiBrowser.cjs +51 -0
  1004. package/dist/icons/components/UiBrowser.cjs.map +1 -0
  1005. package/dist/icons/components/UiBrowser.d.ts +15 -0
  1006. package/dist/icons/components/UiBrowser.d.ts.map +1 -0
  1007. package/dist/icons/components/UiBrowser.js +48 -0
  1008. package/dist/icons/components/UiBrowser.js.map +1 -0
  1009. package/dist/icons/components/UiCreditCard.cjs +51 -0
  1010. package/dist/icons/components/UiCreditCard.cjs.map +1 -0
  1011. package/dist/icons/components/UiCreditCard.d.ts +15 -0
  1012. package/dist/icons/components/UiCreditCard.d.ts.map +1 -0
  1013. package/dist/icons/components/UiCreditCard.js +48 -0
  1014. package/dist/icons/components/UiCreditCard.js.map +1 -0
  1015. package/dist/icons/components/UiShoppingCart.cjs +51 -0
  1016. package/dist/icons/components/UiShoppingCart.cjs.map +1 -0
  1017. package/dist/icons/components/UiShoppingCart.d.ts +15 -0
  1018. package/dist/icons/components/UiShoppingCart.d.ts.map +1 -0
  1019. package/dist/icons/components/UiShoppingCart.js +48 -0
  1020. package/dist/icons/components/UiShoppingCart.js.map +1 -0
  1021. package/dist/icons/index.d.ts +6 -0
  1022. package/dist/icons/index.d.ts.map +1 -1
  1023. package/dist/icons/registry.cjs +6 -0
  1024. package/dist/icons/registry.cjs.map +1 -1
  1025. package/dist/icons/registry.d.ts.map +1 -1
  1026. package/dist/icons/registry.js +6 -0
  1027. package/dist/icons/registry.js.map +1 -1
  1028. package/dist/icons.cjs +9 -0
  1029. package/dist/icons.js +4 -1
  1030. package/dist/index.cjs +86 -7
  1031. package/dist/index.d.ts +1 -0
  1032. package/dist/index.d.ts.map +1 -1
  1033. package/dist/index.js +40 -12
  1034. package/dist/layout/AppShell.cjs +37 -21
  1035. package/dist/layout/AppShell.cjs.map +1 -1
  1036. package/dist/layout/AppShell.d.ts +13 -2
  1037. package/dist/layout/AppShell.d.ts.map +1 -1
  1038. package/dist/layout/AppShell.js +37 -21
  1039. package/dist/layout/AppShell.js.map +1 -1
  1040. package/dist/layout/AppShell.nav.cjs +7 -6
  1041. package/dist/layout/AppShell.nav.cjs.map +1 -1
  1042. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  1043. package/dist/layout/AppShell.nav.js +7 -6
  1044. package/dist/layout/AppShell.nav.js.map +1 -1
  1045. package/dist/layout/SplitPane.cjs +16 -6
  1046. package/dist/layout/SplitPane.cjs.map +1 -1
  1047. package/dist/layout/SplitPane.d.ts +12 -2
  1048. package/dist/layout/SplitPane.d.ts.map +1 -1
  1049. package/dist/layout/SplitPane.js +16 -6
  1050. package/dist/layout/SplitPane.js.map +1 -1
  1051. package/dist/layout/Workspace.cjs +37 -33
  1052. package/dist/layout/Workspace.cjs.map +1 -1
  1053. package/dist/layout/Workspace.d.ts.map +1 -1
  1054. package/dist/layout/Workspace.js +37 -33
  1055. package/dist/layout/Workspace.js.map +1 -1
  1056. package/dist/layout/Workspace.regions.cjs +3 -3
  1057. package/dist/layout/Workspace.regions.cjs.map +1 -1
  1058. package/dist/layout/Workspace.regions.js +3 -3
  1059. package/dist/layout/Workspace.regions.js.map +1 -1
  1060. package/dist/lib/breakpoints.cjs +102 -0
  1061. package/dist/lib/breakpoints.cjs.map +1 -0
  1062. package/dist/lib/breakpoints.d.ts +36 -0
  1063. package/dist/lib/breakpoints.d.ts.map +1 -0
  1064. package/dist/lib/breakpoints.js +99 -0
  1065. package/dist/lib/breakpoints.js.map +1 -0
  1066. package/dist/lib/combobox.cjs +2 -1
  1067. package/dist/lib/combobox.cjs.map +1 -1
  1068. package/dist/lib/combobox.d.ts +1 -1
  1069. package/dist/lib/combobox.d.ts.map +1 -1
  1070. package/dist/lib/combobox.js +2 -1
  1071. package/dist/lib/combobox.js.map +1 -1
  1072. package/dist/lib/path-tree.cjs +21 -0
  1073. package/dist/lib/path-tree.cjs.map +1 -1
  1074. package/dist/lib/path-tree.d.ts +15 -0
  1075. package/dist/lib/path-tree.d.ts.map +1 -1
  1076. package/dist/lib/path-tree.js +21 -1
  1077. package/dist/lib/path-tree.js.map +1 -1
  1078. package/dist/overlay/Modal.cjs +2 -1
  1079. package/dist/overlay/Modal.cjs.map +1 -1
  1080. package/dist/overlay/Modal.d.ts.map +1 -1
  1081. package/dist/overlay/Modal.js +2 -1
  1082. package/dist/overlay/Modal.js.map +1 -1
  1083. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  1084. package/dist/profiles/editor/profileEditor.cjs +1 -1
  1085. package/dist/profiles/editor/profileEditor.cjs.map +1 -1
  1086. package/dist/profiles/editor/profileEditor.js +1 -1
  1087. package/dist/profiles/editor/profileEditor.js.map +1 -1
  1088. package/dist/profiles/editor/profileEditorSections.cjs +6 -2
  1089. package/dist/profiles/editor/profileEditorSections.cjs.map +1 -1
  1090. package/dist/profiles/editor/profileEditorSections.d.ts.map +1 -1
  1091. package/dist/profiles/editor/profileEditorSections.js +6 -2
  1092. package/dist/profiles/editor/profileEditorSections.js.map +1 -1
  1093. package/dist/profiles/query/prometheusResults.cjs +24 -36
  1094. package/dist/profiles/query/prometheusResults.cjs.map +1 -1
  1095. package/dist/profiles/query/prometheusResults.d.ts.map +1 -1
  1096. package/dist/profiles/query/prometheusResults.js +24 -36
  1097. package/dist/profiles/query/prometheusResults.js.map +1 -1
  1098. package/dist/rpc/CommandForm.cjs +1 -1
  1099. package/dist/rpc/CommandForm.cjs.map +1 -1
  1100. package/dist/rpc/CommandForm.js +1 -1
  1101. package/dist/rpc/CommandForm.js.map +1 -1
  1102. package/dist/rpc/classify.cjs +1 -1
  1103. package/dist/rpc/classify.cjs.map +1 -1
  1104. package/dist/rpc/classify.d.ts.map +1 -1
  1105. package/dist/rpc/classify.js +1 -1
  1106. package/dist/rpc/classify.js.map +1 -1
  1107. package/dist/rpc/useOperations.d.ts +24 -24
  1108. package/dist/rpc.cjs +0 -2
  1109. package/dist/rpc.d.ts +0 -1
  1110. package/dist/rpc.d.ts.map +1 -1
  1111. package/dist/rpc.js +1 -2
  1112. package/dist/styles.css +1 -1
  1113. package/dist/utils.cjs +6 -0
  1114. package/dist/utils.d.ts +2 -1
  1115. package/dist/utils.d.ts.map +1 -1
  1116. package/dist/utils.js +3 -2
  1117. package/package.json +9 -3
  1118. package/schemas/json-schema-form.schema.json +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadPicker.cjs","names":["useState","useRef","useCallback","DropdownMenu","Icon","UiComment","UiChevronDown","UiAdd","cn","UiPencilSimpleLine","UiTrash"],"sources":["../../../src/data/ai/ThreadPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport {\n UiComment,\n UiAdd,\n UiTrash,\n UiChevronDown,\n UiPencilSimpleLine,\n} from \"../../icons\";\n\n/** One conversation as returned by the sessions endpoint. Only `id` is required;\n * `title`/cost are rendered when present so the picker works against minimal\n * backends (e.g. clicky's in-memory ThreadStore, which has no cost). */\nexport interface ThreadSummary {\n id: string;\n title?: string | null;\n totalCostUsd?: number | null;\n updatedAt?: string;\n}\n\n/** An injectable thread data source, for apps that load conversations through\n * their own client (e.g. react-query) rather than a plain `${api}` fetch — and\n * for backend-free stories/demos. When supplied it replaces the `api` calls. */\nexport interface ThreadSource {\n /** Returns the conversation list (re-invoked whenever the menu opens). */\n load: () => Promise<ThreadSummary[]>;\n /** Creates a durable conversation before its first message is sent. */\n create?: () => Promise<ThreadSummary>;\n /** Deletes a conversation. Omit to hide the delete affordance's effect. */\n remove?: (id: string) => Promise<void>;\n /** Renames a conversation. Omit to hide the rename affordance. */\n rename?: (id: string, title: string) => Promise<void>;\n}\n\nexport type ThreadPickerProps = {\n /** Currently selected thread, or null for an unsaved/new conversation. */\n threadId: string | null;\n onSelect: (threadId: string) => void;\n onNew: () => void;\n /** Base endpoint for session CRUD. GET lists, `${api}/${id}` DELETE removes\n * and PATCH renames. Defaults to Captain's \"/api/chat/sessions\". Ignored when\n * `source` is set. */\n api?: string;\n /** Inject the thread list/delete/rename directly instead of fetching `api`. */\n source?: ThreadSource;\n /** Optional query string appended to the list request (e.g. a scope id). */\n query?: string;\n /** Changing this refetches the list, so a title the backend derived during a\n * turn appears without reopening the menu. */\n refreshToken?: number;\n className?: string;\n};\n\n/** A dropdown to switch between, create, and delete conversation threads. The\n * list is (re)fetched whenever the menu opens, so newly-persisted threads\n * appear without a manual refresh. */\nexport function ThreadPicker({\n threadId,\n onSelect,\n onNew,\n api = \"/api/chat/sessions\",\n source,\n query,\n refreshToken,\n className = \"\",\n}: ThreadPickerProps) {\n const [threads, setThreads] = useState<ThreadSummary[]>([]);\n const [loading, setLoading] = useState(false);\n const [renaming, setRenaming] = useState<{ id: string; title: string }>();\n const loadRequest = useRef(0);\n const canRename = source ? Boolean(source.rename) : Boolean(api);\n\n const listUrl = query ? `${api}?${query}` : api;\n\n const fetchThreads = useCallback(async () => {\n const request = ++loadRequest.current;\n setLoading(true);\n try {\n let loaded: ThreadSummary[];\n if (source) {\n loaded = await source.load();\n } else {\n const res = await fetch(listUrl);\n if (!res.ok) throw new Error(`load failed with status ${res.status}`);\n loaded = await res.json();\n }\n if (request === loadRequest.current) setThreads(loaded);\n } catch (err) {\n console.warn(\"clicky-ui: failed to load threads\", err);\n } finally {\n if (request === loadRequest.current) setLoading(false);\n }\n }, [source, listUrl]);\n\n useEffect(() => {\n void fetchThreads();\n return () => {\n loadRequest.current += 1;\n };\n }, [fetchThreads, refreshToken]);\n\n const commitRename = useCallback(async () => {\n if (!renaming) return;\n const { id, title } = renaming;\n setRenaming(undefined);\n const trimmed = title.trim();\n const previous = threads.find((t) => t.id === id)?.title ?? null;\n if (!trimmed || trimmed === previous) return;\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: trimmed } : t)),\n );\n try {\n if (source) {\n await source.rename?.(id, trimmed);\n } else {\n const res = await fetch(`${api}/${id}`, {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ title: trimmed }),\n });\n if (!res.ok) throw new Error(`rename failed with status ${res.status}`);\n }\n } catch (err) {\n console.warn(\"clicky-ui: failed to rename thread\", err);\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: previous } : t)),\n );\n }\n }, [api, renaming, source, threads]);\n\n const handleDelete = useCallback(\n async (id: string) => {\n try {\n if (source) {\n await source.remove?.(id);\n } else {\n await fetch(`${api}/${id}`, { method: \"DELETE\" });\n }\n setThreads((prev) => prev.filter((t) => t.id !== id));\n if (id === threadId) onNew();\n } catch (err) {\n console.warn(\"clicky-ui: failed to delete thread\", err);\n }\n },\n [source, api, threadId, onNew],\n );\n\n const current = threads.find((t) => t.id === threadId);\n const label = current?.title || \"New Chat\";\n\n return (\n <DropdownMenu\n align=\"left\"\n className={className}\n onOpenChange={(open) => {\n if (open) void fetchThreads();\n }}\n menuClassName=\"min-w-[220px] max-w-[320px] max-h-72 overflow-y-auto\"\n trigger={\n <button\n type=\"button\"\n className=\"flex max-w-[200px] items-center gap-1 truncate rounded px-2 py-1 text-sm font-medium hover:bg-muted\"\n >\n <Icon icon={UiComment} className=\"size-3.5 shrink-0\" />\n <span className=\"truncate\">{label}</span>\n <Icon icon={UiChevronDown} className=\"size-3 shrink-0 opacity-50\" />\n </button>\n }\n >\n {(closeMenu) => (\n <div className=\"py-1\">\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-popover-foreground hover:bg-accent\"\n onClick={() => {\n onNew();\n closeMenu();\n }}\n >\n <Icon icon={UiAdd} className=\"size-3\" /> New Chat\n </button>\n <div className=\"my-1 border-t border-border\" />\n {loading && threads.length === 0 && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n Loading…\n </div>\n )}\n {threads.length === 0 && !loading && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n No previous conversations\n </div>\n )}\n {threads.map((t) => (\n <div\n key={t.id}\n className={cn(\n \"group/thread flex w-full items-center gap-1 px-1 py-0.5 text-left text-xs hover:bg-accent\",\n t.id === threadId && \"font-semibold\",\n )}\n >\n {renaming?.id === t.id ? (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1\">\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <input\n autoFocus\n aria-label=\"Conversation title\"\n className=\"min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs\"\n value={renaming.title}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setRenaming({ id: t.id, title: e.target.value })\n }\n onBlur={() => setRenaming(undefined)}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\") void commitRename();\n if (e.key === \"Escape\") setRenaming(undefined);\n }}\n />\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left\"\n onClick={() => {\n onSelect(t.id);\n closeMenu();\n }}\n >\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate\">{t.title || \"Untitled\"}</span>\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </button>\n )}\n {canRename && renaming?.id !== t.id && (\n <button\n type=\"button\"\n aria-label=\"Rename conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100\"\n onClick={() => {\n setRenaming({ id: t.id, title: t.title ?? \"\" });\n }}\n >\n <Icon icon={UiPencilSimpleLine} className=\"size-3\" />\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Delete conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100\"\n onClick={() => void handleDelete(t.id)}\n >\n <Icon icon={UiTrash} className=\"size-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </DropdownMenu>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadPicker.cjs","names":["useState","useRef","useCallback","DropdownMenu","Icon","UiComment","UiChevronDown","UiAdd","cn","UiPencilSimpleLine","UiTrash"],"sources":["../../../src/data/ai/ThreadPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport {\n UiComment,\n UiAdd,\n UiTrash,\n UiChevronDown,\n UiPencilSimpleLine,\n} from \"../../icons\";\n\n/** One conversation as returned by the sessions endpoint. Only `id` is required;\n * `title`/cost are rendered when present so the picker works against minimal\n * backends (e.g. clicky's in-memory ThreadStore, which has no cost). */\nexport interface ThreadSummary {\n id: string;\n title?: string | null;\n totalCostUsd?: number | null;\n updatedAt?: string;\n}\n\n/** An injectable thread data source, for apps that load conversations through\n * their own client (e.g. react-query) rather than a plain `${api}` fetch — and\n * for backend-free stories/demos. When supplied it replaces the `api` calls. */\nexport interface ThreadSource {\n /** Returns the conversation list (re-invoked whenever the menu opens). */\n load: () => Promise<ThreadSummary[]>;\n /** Creates a durable conversation before its first message is sent. */\n create?: () => Promise<ThreadSummary>;\n /** Deletes a conversation. Omit to hide the delete affordance's effect. */\n remove?: (id: string) => Promise<void>;\n /** Renames a conversation. Omit to hide the rename affordance. */\n rename?: (id: string, title: string) => Promise<void>;\n}\n\nexport type ThreadPickerProps = {\n /** Currently selected thread, or null for an unsaved/new conversation. */\n threadId: string | null;\n onSelect: (threadId: string) => void;\n onNew: () => void;\n /** Base endpoint for session CRUD. GET lists, `${api}/${id}` DELETE removes\n * and PATCH renames. Defaults to Captain's \"/api/chat/sessions\". Ignored when\n * `source` is set. */\n api?: string;\n /** Inject the thread list/delete/rename directly instead of fetching `api`. */\n source?: ThreadSource;\n /** Optional query string appended to the list request (e.g. a scope id). */\n query?: string;\n /** Changing this refetches the list, so a title the backend derived during a\n * turn appears without reopening the menu. */\n refreshToken?: number;\n className?: string;\n};\n\n/** A dropdown to switch between, create, and delete conversation threads. The\n * list is (re)fetched whenever the menu opens, so newly-persisted threads\n * appear without a manual refresh. */\nexport function ThreadPicker({\n threadId,\n onSelect,\n onNew,\n api = \"/api/chat/sessions\",\n source,\n query,\n refreshToken,\n className = \"\",\n}: ThreadPickerProps) {\n const [threads, setThreads] = useState<ThreadSummary[]>([]);\n const [loading, setLoading] = useState(false);\n const [renaming, setRenaming] = useState<{ id: string; title: string }>();\n const loadRequest = useRef(0);\n const canRename = source ? Boolean(source.rename) : Boolean(api);\n\n const listUrl = query ? `${api}?${query}` : api;\n\n const fetchThreads = useCallback(async () => {\n const request = ++loadRequest.current;\n setLoading(true);\n try {\n let loaded: ThreadSummary[];\n if (source) {\n loaded = await source.load();\n } else {\n const res = await fetch(listUrl);\n if (!res.ok) throw new Error(`load failed with status ${res.status}`);\n loaded = await res.json();\n }\n if (request === loadRequest.current) setThreads(loaded);\n } catch (err) {\n console.warn(\"clicky-ui: failed to load threads\", err);\n } finally {\n if (request === loadRequest.current) setLoading(false);\n }\n }, [source, listUrl]);\n\n useEffect(() => {\n void fetchThreads();\n return () => {\n loadRequest.current += 1;\n };\n }, [fetchThreads, refreshToken]);\n\n const commitRename = useCallback(async () => {\n if (!renaming) return;\n const { id, title } = renaming;\n setRenaming(undefined);\n const trimmed = title.trim();\n const previous = threads.find((t) => t.id === id)?.title ?? null;\n if (!trimmed || trimmed === previous) return;\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: trimmed } : t)),\n );\n try {\n if (source) {\n await source.rename?.(id, trimmed);\n } else {\n const res = await fetch(`${api}/${id}`, {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ title: trimmed }),\n });\n if (!res.ok) throw new Error(`rename failed with status ${res.status}`);\n }\n } catch (err) {\n console.warn(\"clicky-ui: failed to rename thread\", err);\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: previous } : t)),\n );\n }\n }, [api, renaming, source, threads]);\n\n const handleDelete = useCallback(\n async (id: string) => {\n try {\n if (source) {\n await source.remove?.(id);\n } else {\n await fetch(`${api}/${id}`, { method: \"DELETE\" });\n }\n setThreads((prev) => prev.filter((t) => t.id !== id));\n if (id === threadId) onNew();\n } catch (err) {\n console.warn(\"clicky-ui: failed to delete thread\", err);\n }\n },\n [source, api, threadId, onNew],\n );\n\n const current = threads.find((t) => t.id === threadId);\n const label = current?.title || \"New Chat\";\n\n return (\n <DropdownMenu\n align=\"left\"\n className={className}\n onOpenChange={(open) => {\n if (open) void fetchThreads();\n }}\n menuClassName=\"min-w-[220px] max-w-[320px] max-h-72 overflow-y-auto\"\n trigger={\n <button\n type=\"button\"\n className=\"flex max-w-[200px] items-center gap-1 truncate rounded px-2 py-1 text-sm font-medium hover:bg-muted\"\n >\n <Icon icon={UiComment} className=\"size-3.5 shrink-0\" />\n <span className=\"truncate\">{label}</span>\n <Icon icon={UiChevronDown} className=\"size-3 shrink-0 opacity-50\" />\n </button>\n }\n >\n {(closeMenu) => (\n <div className=\"py-1\">\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-popover-foreground hover:bg-accent\"\n onClick={() => {\n onNew();\n closeMenu();\n }}\n >\n <Icon icon={UiAdd} className=\"size-3\" /> New Chat\n </button>\n <div className=\"my-1 border-t border-border\" />\n {loading && threads.length === 0 && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n Loading…\n </div>\n )}\n {threads.length === 0 && !loading && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n No previous conversations\n </div>\n )}\n {threads.map((t) => (\n <div\n key={t.id}\n className={cn(\n \"group/thread flex w-full items-center gap-1 px-1 py-0.5 text-left text-xs hover:bg-accent\",\n t.id === threadId && \"font-semibold\",\n )}\n >\n {renaming?.id === t.id ? (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1\">\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <input\n autoFocus\n aria-label=\"Conversation title\"\n className=\"min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs\"\n value={renaming.title}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setRenaming({ id: t.id, title: e.target.value })\n }\n onBlur={() => setRenaming(undefined)}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\") void commitRename();\n if (e.key === \"Escape\") setRenaming(undefined);\n }}\n />\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left\"\n onClick={() => {\n onSelect(t.id);\n closeMenu();\n }}\n >\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate\">{t.title || \"Untitled\"}</span>\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </button>\n )}\n {canRename && renaming?.id !== t.id && (\n <button\n type=\"button\"\n aria-label=\"Rename conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100\"\n onClick={() => {\n setRenaming({ id: t.id, title: t.title ?? \"\" });\n }}\n >\n <Icon icon={UiPencilSimpleLine} className=\"size-3\" />\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Delete conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100\"\n onClick={() => void handleDelete(t.id)}\n >\n <Icon icon={UiTrash} className=\"size-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </DropdownMenu>\n );\n}\n"],"mappings":"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"}
@@ -199,7 +199,7 @@ function ThreadPicker({ threadId, onSelect, onNew, api = "/api/chat/sessions", s
199
199
  canRename && renaming?.id !== t.id && /* @__PURE__ */ jsx("button", {
200
200
  type: "button",
201
201
  "aria-label": "Rename conversation",
202
- className: "shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100",
202
+ className: "shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100",
203
203
  onClick: () => {
204
204
  setRenaming({
205
205
  id: t.id,
@@ -214,7 +214,7 @@ function ThreadPicker({ threadId, onSelect, onNew, api = "/api/chat/sessions", s
214
214
  /* @__PURE__ */ jsx("button", {
215
215
  type: "button",
216
216
  "aria-label": "Delete conversation",
217
- className: "shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100",
217
+ className: "shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100",
218
218
  onClick: () => void handleDelete(t.id),
219
219
  children: /* @__PURE__ */ jsx(Icon, {
220
220
  icon: UiTrash,
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadPicker.js","names":[],"sources":["../../../src/data/ai/ThreadPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport {\n UiComment,\n UiAdd,\n UiTrash,\n UiChevronDown,\n UiPencilSimpleLine,\n} from \"../../icons\";\n\n/** One conversation as returned by the sessions endpoint. Only `id` is required;\n * `title`/cost are rendered when present so the picker works against minimal\n * backends (e.g. clicky's in-memory ThreadStore, which has no cost). */\nexport interface ThreadSummary {\n id: string;\n title?: string | null;\n totalCostUsd?: number | null;\n updatedAt?: string;\n}\n\n/** An injectable thread data source, for apps that load conversations through\n * their own client (e.g. react-query) rather than a plain `${api}` fetch — and\n * for backend-free stories/demos. When supplied it replaces the `api` calls. */\nexport interface ThreadSource {\n /** Returns the conversation list (re-invoked whenever the menu opens). */\n load: () => Promise<ThreadSummary[]>;\n /** Creates a durable conversation before its first message is sent. */\n create?: () => Promise<ThreadSummary>;\n /** Deletes a conversation. Omit to hide the delete affordance's effect. */\n remove?: (id: string) => Promise<void>;\n /** Renames a conversation. Omit to hide the rename affordance. */\n rename?: (id: string, title: string) => Promise<void>;\n}\n\nexport type ThreadPickerProps = {\n /** Currently selected thread, or null for an unsaved/new conversation. */\n threadId: string | null;\n onSelect: (threadId: string) => void;\n onNew: () => void;\n /** Base endpoint for session CRUD. GET lists, `${api}/${id}` DELETE removes\n * and PATCH renames. Defaults to Captain's \"/api/chat/sessions\". Ignored when\n * `source` is set. */\n api?: string;\n /** Inject the thread list/delete/rename directly instead of fetching `api`. */\n source?: ThreadSource;\n /** Optional query string appended to the list request (e.g. a scope id). */\n query?: string;\n /** Changing this refetches the list, so a title the backend derived during a\n * turn appears without reopening the menu. */\n refreshToken?: number;\n className?: string;\n};\n\n/** A dropdown to switch between, create, and delete conversation threads. The\n * list is (re)fetched whenever the menu opens, so newly-persisted threads\n * appear without a manual refresh. */\nexport function ThreadPicker({\n threadId,\n onSelect,\n onNew,\n api = \"/api/chat/sessions\",\n source,\n query,\n refreshToken,\n className = \"\",\n}: ThreadPickerProps) {\n const [threads, setThreads] = useState<ThreadSummary[]>([]);\n const [loading, setLoading] = useState(false);\n const [renaming, setRenaming] = useState<{ id: string; title: string }>();\n const loadRequest = useRef(0);\n const canRename = source ? Boolean(source.rename) : Boolean(api);\n\n const listUrl = query ? `${api}?${query}` : api;\n\n const fetchThreads = useCallback(async () => {\n const request = ++loadRequest.current;\n setLoading(true);\n try {\n let loaded: ThreadSummary[];\n if (source) {\n loaded = await source.load();\n } else {\n const res = await fetch(listUrl);\n if (!res.ok) throw new Error(`load failed with status ${res.status}`);\n loaded = await res.json();\n }\n if (request === loadRequest.current) setThreads(loaded);\n } catch (err) {\n console.warn(\"clicky-ui: failed to load threads\", err);\n } finally {\n if (request === loadRequest.current) setLoading(false);\n }\n }, [source, listUrl]);\n\n useEffect(() => {\n void fetchThreads();\n return () => {\n loadRequest.current += 1;\n };\n }, [fetchThreads, refreshToken]);\n\n const commitRename = useCallback(async () => {\n if (!renaming) return;\n const { id, title } = renaming;\n setRenaming(undefined);\n const trimmed = title.trim();\n const previous = threads.find((t) => t.id === id)?.title ?? null;\n if (!trimmed || trimmed === previous) return;\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: trimmed } : t)),\n );\n try {\n if (source) {\n await source.rename?.(id, trimmed);\n } else {\n const res = await fetch(`${api}/${id}`, {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ title: trimmed }),\n });\n if (!res.ok) throw new Error(`rename failed with status ${res.status}`);\n }\n } catch (err) {\n console.warn(\"clicky-ui: failed to rename thread\", err);\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: previous } : t)),\n );\n }\n }, [api, renaming, source, threads]);\n\n const handleDelete = useCallback(\n async (id: string) => {\n try {\n if (source) {\n await source.remove?.(id);\n } else {\n await fetch(`${api}/${id}`, { method: \"DELETE\" });\n }\n setThreads((prev) => prev.filter((t) => t.id !== id));\n if (id === threadId) onNew();\n } catch (err) {\n console.warn(\"clicky-ui: failed to delete thread\", err);\n }\n },\n [source, api, threadId, onNew],\n );\n\n const current = threads.find((t) => t.id === threadId);\n const label = current?.title || \"New Chat\";\n\n return (\n <DropdownMenu\n align=\"left\"\n className={className}\n onOpenChange={(open) => {\n if (open) void fetchThreads();\n }}\n menuClassName=\"min-w-[220px] max-w-[320px] max-h-72 overflow-y-auto\"\n trigger={\n <button\n type=\"button\"\n className=\"flex max-w-[200px] items-center gap-1 truncate rounded px-2 py-1 text-sm font-medium hover:bg-muted\"\n >\n <Icon icon={UiComment} className=\"size-3.5 shrink-0\" />\n <span className=\"truncate\">{label}</span>\n <Icon icon={UiChevronDown} className=\"size-3 shrink-0 opacity-50\" />\n </button>\n }\n >\n {(closeMenu) => (\n <div className=\"py-1\">\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-popover-foreground hover:bg-accent\"\n onClick={() => {\n onNew();\n closeMenu();\n }}\n >\n <Icon icon={UiAdd} className=\"size-3\" /> New Chat\n </button>\n <div className=\"my-1 border-t border-border\" />\n {loading && threads.length === 0 && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n Loading…\n </div>\n )}\n {threads.length === 0 && !loading && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n No previous conversations\n </div>\n )}\n {threads.map((t) => (\n <div\n key={t.id}\n className={cn(\n \"group/thread flex w-full items-center gap-1 px-1 py-0.5 text-left text-xs hover:bg-accent\",\n t.id === threadId && \"font-semibold\",\n )}\n >\n {renaming?.id === t.id ? (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1\">\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <input\n autoFocus\n aria-label=\"Conversation title\"\n className=\"min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs\"\n value={renaming.title}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setRenaming({ id: t.id, title: e.target.value })\n }\n onBlur={() => setRenaming(undefined)}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\") void commitRename();\n if (e.key === \"Escape\") setRenaming(undefined);\n }}\n />\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left\"\n onClick={() => {\n onSelect(t.id);\n closeMenu();\n }}\n >\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate\">{t.title || \"Untitled\"}</span>\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </button>\n )}\n {canRename && renaming?.id !== t.id && (\n <button\n type=\"button\"\n aria-label=\"Rename conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100\"\n onClick={() => {\n setRenaming({ id: t.id, title: t.title ?? \"\" });\n }}\n >\n <Icon icon={UiPencilSimpleLine} className=\"size-3\" />\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Delete conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100\"\n onClick={() => void handleDelete(t.id)}\n >\n <Icon icon={UiTrash} className=\"size-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </DropdownMenu>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadPicker.js","names":[],"sources":["../../../src/data/ai/ThreadPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { Icon } from \"../Icon\";\nimport {\n UiComment,\n UiAdd,\n UiTrash,\n UiChevronDown,\n UiPencilSimpleLine,\n} from \"../../icons\";\n\n/** One conversation as returned by the sessions endpoint. Only `id` is required;\n * `title`/cost are rendered when present so the picker works against minimal\n * backends (e.g. clicky's in-memory ThreadStore, which has no cost). */\nexport interface ThreadSummary {\n id: string;\n title?: string | null;\n totalCostUsd?: number | null;\n updatedAt?: string;\n}\n\n/** An injectable thread data source, for apps that load conversations through\n * their own client (e.g. react-query) rather than a plain `${api}` fetch — and\n * for backend-free stories/demos. When supplied it replaces the `api` calls. */\nexport interface ThreadSource {\n /** Returns the conversation list (re-invoked whenever the menu opens). */\n load: () => Promise<ThreadSummary[]>;\n /** Creates a durable conversation before its first message is sent. */\n create?: () => Promise<ThreadSummary>;\n /** Deletes a conversation. Omit to hide the delete affordance's effect. */\n remove?: (id: string) => Promise<void>;\n /** Renames a conversation. Omit to hide the rename affordance. */\n rename?: (id: string, title: string) => Promise<void>;\n}\n\nexport type ThreadPickerProps = {\n /** Currently selected thread, or null for an unsaved/new conversation. */\n threadId: string | null;\n onSelect: (threadId: string) => void;\n onNew: () => void;\n /** Base endpoint for session CRUD. GET lists, `${api}/${id}` DELETE removes\n * and PATCH renames. Defaults to Captain's \"/api/chat/sessions\". Ignored when\n * `source` is set. */\n api?: string;\n /** Inject the thread list/delete/rename directly instead of fetching `api`. */\n source?: ThreadSource;\n /** Optional query string appended to the list request (e.g. a scope id). */\n query?: string;\n /** Changing this refetches the list, so a title the backend derived during a\n * turn appears without reopening the menu. */\n refreshToken?: number;\n className?: string;\n};\n\n/** A dropdown to switch between, create, and delete conversation threads. The\n * list is (re)fetched whenever the menu opens, so newly-persisted threads\n * appear without a manual refresh. */\nexport function ThreadPicker({\n threadId,\n onSelect,\n onNew,\n api = \"/api/chat/sessions\",\n source,\n query,\n refreshToken,\n className = \"\",\n}: ThreadPickerProps) {\n const [threads, setThreads] = useState<ThreadSummary[]>([]);\n const [loading, setLoading] = useState(false);\n const [renaming, setRenaming] = useState<{ id: string; title: string }>();\n const loadRequest = useRef(0);\n const canRename = source ? Boolean(source.rename) : Boolean(api);\n\n const listUrl = query ? `${api}?${query}` : api;\n\n const fetchThreads = useCallback(async () => {\n const request = ++loadRequest.current;\n setLoading(true);\n try {\n let loaded: ThreadSummary[];\n if (source) {\n loaded = await source.load();\n } else {\n const res = await fetch(listUrl);\n if (!res.ok) throw new Error(`load failed with status ${res.status}`);\n loaded = await res.json();\n }\n if (request === loadRequest.current) setThreads(loaded);\n } catch (err) {\n console.warn(\"clicky-ui: failed to load threads\", err);\n } finally {\n if (request === loadRequest.current) setLoading(false);\n }\n }, [source, listUrl]);\n\n useEffect(() => {\n void fetchThreads();\n return () => {\n loadRequest.current += 1;\n };\n }, [fetchThreads, refreshToken]);\n\n const commitRename = useCallback(async () => {\n if (!renaming) return;\n const { id, title } = renaming;\n setRenaming(undefined);\n const trimmed = title.trim();\n const previous = threads.find((t) => t.id === id)?.title ?? null;\n if (!trimmed || trimmed === previous) return;\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: trimmed } : t)),\n );\n try {\n if (source) {\n await source.rename?.(id, trimmed);\n } else {\n const res = await fetch(`${api}/${id}`, {\n method: \"PATCH\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ title: trimmed }),\n });\n if (!res.ok) throw new Error(`rename failed with status ${res.status}`);\n }\n } catch (err) {\n console.warn(\"clicky-ui: failed to rename thread\", err);\n setThreads((prev) =>\n prev.map((t) => (t.id === id ? { ...t, title: previous } : t)),\n );\n }\n }, [api, renaming, source, threads]);\n\n const handleDelete = useCallback(\n async (id: string) => {\n try {\n if (source) {\n await source.remove?.(id);\n } else {\n await fetch(`${api}/${id}`, { method: \"DELETE\" });\n }\n setThreads((prev) => prev.filter((t) => t.id !== id));\n if (id === threadId) onNew();\n } catch (err) {\n console.warn(\"clicky-ui: failed to delete thread\", err);\n }\n },\n [source, api, threadId, onNew],\n );\n\n const current = threads.find((t) => t.id === threadId);\n const label = current?.title || \"New Chat\";\n\n return (\n <DropdownMenu\n align=\"left\"\n className={className}\n onOpenChange={(open) => {\n if (open) void fetchThreads();\n }}\n menuClassName=\"min-w-[220px] max-w-[320px] max-h-72 overflow-y-auto\"\n trigger={\n <button\n type=\"button\"\n className=\"flex max-w-[200px] items-center gap-1 truncate rounded px-2 py-1 text-sm font-medium hover:bg-muted\"\n >\n <Icon icon={UiComment} className=\"size-3.5 shrink-0\" />\n <span className=\"truncate\">{label}</span>\n <Icon icon={UiChevronDown} className=\"size-3 shrink-0 opacity-50\" />\n </button>\n }\n >\n {(closeMenu) => (\n <div className=\"py-1\">\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-popover-foreground hover:bg-accent\"\n onClick={() => {\n onNew();\n closeMenu();\n }}\n >\n <Icon icon={UiAdd} className=\"size-3\" /> New Chat\n </button>\n <div className=\"my-1 border-t border-border\" />\n {loading && threads.length === 0 && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n Loading…\n </div>\n )}\n {threads.length === 0 && !loading && (\n <div className=\"px-3 py-1.5 text-xs text-muted-foreground\">\n No previous conversations\n </div>\n )}\n {threads.map((t) => (\n <div\n key={t.id}\n className={cn(\n \"group/thread flex w-full items-center gap-1 px-1 py-0.5 text-left text-xs hover:bg-accent\",\n t.id === threadId && \"font-semibold\",\n )}\n >\n {renaming?.id === t.id ? (\n <div className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1\">\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <input\n autoFocus\n aria-label=\"Conversation title\"\n className=\"min-w-0 flex-1 rounded border border-border bg-background px-1 py-0.5 text-xs\"\n value={renaming.title}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setRenaming({ id: t.id, title: e.target.value })\n }\n onBlur={() => setRenaming(undefined)}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\") void commitRename();\n if (e.key === \"Escape\") setRenaming(undefined);\n }}\n />\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </div>\n ) : (\n <button\n type=\"button\"\n className=\"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left\"\n onClick={() => {\n onSelect(t.id);\n closeMenu();\n }}\n >\n <Icon icon={UiComment} className=\"size-3 shrink-0\" />\n <span className=\"min-w-0 flex-1 truncate\">{t.title || \"Untitled\"}</span>\n {t.totalCostUsd != null && t.totalCostUsd > 0 && (\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n ${t.totalCostUsd.toFixed(2)}\n </span>\n )}\n </button>\n )}\n {canRename && renaming?.id !== t.id && (\n <button\n type=\"button\"\n aria-label=\"Rename conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-foreground group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100\"\n onClick={() => {\n setRenaming({ id: t.id, title: t.title ?? \"\" });\n }}\n >\n <Icon icon={UiPencilSimpleLine} className=\"size-3\" />\n </button>\n )}\n <button\n type=\"button\"\n aria-label=\"Delete conversation\"\n className=\"shrink-0 rounded p-0.5 text-muted-foreground opacity-0 hover:text-destructive group-hover/thread:opacity-100 [@media(hover:none)]:opacity-100\"\n onClick={() => void handleDelete(t.id)}\n >\n <Icon icon={UiTrash} className=\"size-3\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </DropdownMenu>\n );\n}\n"],"mappings":"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"}
@@ -33,6 +33,7 @@ export { runtimeSpecFields } from './runtime-spec-fields.js';
33
33
  export { SpecRuntimeBar, type SpecRuntimeBarProps } from './SpecRuntimeBar.js';
34
34
  export { useRuntimePresetMenu, type RuntimePresetMenuOptions, type RuntimePresetMenuValue, } from './runtime-preset-menu/index.js';
35
35
  export { RuntimeBarActions, type RuntimeBarAction, type RuntimeBarActionsProps, } from '../runtime/RuntimeBarActions.js';
36
+ export { SEGMENT_CAPTION_CLASS, SEGMENT_KEY_CLASS, SegmentItemLabel, } from '../runtime/RuntimeBarSegment.js';
36
37
  export { ProviderStatusPanel, type ProviderStatusPanelProps, } from '../runtime/ProviderStatusPanel.js';
37
38
  export { RuntimeModePicker, type RuntimeModePickerProps, } from './RuntimeModePicker.js';
38
39
  export { SPEC_RUNTIME_MODES, SPEC_RUNTIME_FAMILIES, modeForFamily, familiesFromRuntimeCatalog, familyById, familyForModel, familyForMode, labelForMode, modeOptionFor, modelBelongsToFamily, modelsForFamily, runtimeModeError, runtimeModeFromModel, runtimeModelError, runtimeModeOptions, selectionForMode, selectionForRuntime, type RuntimeCatalogFamily, type RuntimeCatalogMode, type RuntimeArgumentImplementation, type RuntimeArgumentMapping, type RuntimePermissionCapabilities, type RuntimePermissionSupport, type RuntimePermissionSupportKind, type RuntimeSpecSchema, type SpecRuntimeMode, type SpecRuntimeFamily, type SpecRuntimeModeOption, } from '../runtime/runtime-mode.js';
@@ -42,6 +43,7 @@ export { SessionContextMeter } from './SessionViewer.header.js';
42
43
  export { serializeContext, parseContextPrefix, makeContextId, type ChatContextItem, type ContextTypeConfig, type ContextTypeStyle, } from './context.js';
43
44
  export { SessionViewer, type SessionViewerProps, type SessionPendingTool, type SessionToolDecision, type SessionEntry, type SessionEvent, type SessionInput, type SessionThemeOverride, type SessionTokenSizer, type SessionTokenSize, type SessionTokenSizingRequest, type SessionTokenSizingResult, } from './SessionViewer.js';
44
45
  export type { ApprovalDecisionFields, ApprovalKind, ApprovalQuestion, ApprovalRequest, ApprovalScope, CommandApproval, ElicitationApproval, ElicitationMode, FileChange, FilesystemApproval, FilesystemOperation, NativeSandboxPolicy, NetworkApproval, SandboxCommandPolicy, SandboxCredentialsPolicy, SandboxFilesystemAccess, SandboxFilesystemPolicy, SandboxNetworkAccess, SandboxNetworkPolicy, SandboxPlatformPolicy, StdinWrite, } from './approval-request.js';
46
+ export { usePromptRunStream, type PromptRunFrame, type PromptRunStreamOptions, type PromptRunStreamState, type PromptRunStreamStatus, type PromptRunSummary, } from './use-prompt-run-stream.js';
45
47
  export { SessionTail, type SessionTailProps } from './SessionTail.js';
46
48
  export { SessionInspector, type SessionInspectorOptions, type SessionInspectorProps, type SessionInspectorTab, } from './SessionInspector.js';
47
49
  export { fetchRemoteSession, isTerminalSessionLifecycle, mergeSessionMessages, openRemoteSession, sessionUrl, DEFAULT_SESSION_PAGE_SIZE, TERMINAL_SESSION_LIFECYCLES, useRemoteSession, type RemoteSessionHandle, type RemoteSessionOptions, type RemoteSessionState, type RemoteSessionView, type SessionFollowState, type SessionInspectorLoadState, } from './SessionInspector.remote.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/ai/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,KAAK,8BAA8B,GACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,4BAA4B,GAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAChB,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,GAClC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,UAAU,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,SAAS,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,aAAa,EAClC,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,KAAK,8BAA8B,GACpC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,8BAA8B,EACnC,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,UAAU,EACV,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,0BAA0B,EAC1B,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,GAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/ai/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ const require_event_source = require("../../hooks/event-source.cjs");
2
+ let react = require("react");
3
+ // src/data/ai/use-prompt-run-stream.ts
4
+ var IDLE = {
5
+ status: "idle",
6
+ entries: []
7
+ };
8
+ var RUNNING = {
9
+ status: "running",
10
+ entries: []
11
+ };
12
+ function upsertEntry(entries, entry) {
13
+ const index = entry.id ? entries.findIndex((existing) => existing.id === entry.id) : -1;
14
+ if (index < 0) return [...entries, entry];
15
+ const next = entries.slice();
16
+ next[index] = entry;
17
+ return next;
18
+ }
19
+ function frameData(event) {
20
+ return JSON.parse(event.data);
21
+ }
22
+ /**
23
+ * Follows a Captain prompt run by id: `idle` without one, `running` (with the
24
+ * session id from the `run` frame) until a terminal frame, then `succeeded` or
25
+ * `failed`. Callbacks are held in a ref, so passing a fresh `onDone` each render
26
+ * does not reopen the stream.
27
+ */
28
+ function usePromptRunStream(runId, options = {}) {
29
+ const { baseUrl = "", onDone } = options;
30
+ const openStream = require_event_source.useEventSourceFactory();
31
+ const [tracked, setTracked] = (0, react.useState)();
32
+ const callbacks = (0, react.useRef)({ onDone });
33
+ callbacks.current = { onDone };
34
+ const openRef = (0, react.useRef)(openStream);
35
+ openRef.current = openStream;
36
+ (0, react.useEffect)(() => {
37
+ if (!runId) return;
38
+ let stale = false;
39
+ const runPath = `${baseUrl}/api/captain/prompt/runs/${encodeURIComponent(runId)}`;
40
+ const stream = openRef.current(`${runPath}/stream`);
41
+ const update = (next) => {
42
+ if (stale) return;
43
+ setTracked((tracked) => ({
44
+ runId,
45
+ state: next(tracked?.runId === runId ? tracked.state : RUNNING)
46
+ }));
47
+ };
48
+ const finish = (summary, fallbackError = "The prompt run failed.") => {
49
+ stream.close();
50
+ update((current) => {
51
+ const base = {
52
+ entries: current.entries,
53
+ ...current.run ? { run: current.run } : {},
54
+ ...summary.sessionId ? { sessionId: summary.sessionId } : current.sessionId ? { sessionId: current.sessionId } : {},
55
+ summary
56
+ };
57
+ return summary.success ? {
58
+ status: "succeeded",
59
+ ...base
60
+ } : {
61
+ status: "failed",
62
+ ...base,
63
+ error: summary.error || fallbackError
64
+ };
65
+ });
66
+ callbacks.current.onDone?.(summary);
67
+ };
68
+ stream.addEventListener("run", (event) => {
69
+ const { runId, status, model, provider, mode, sessionId } = frameData(event);
70
+ const run = {
71
+ ...runId ? { runId } : {},
72
+ ...status ? { status } : {},
73
+ ...model ? { model } : {},
74
+ ...provider ? { provider } : {},
75
+ ...mode ? { mode } : {},
76
+ ...sessionId ? { sessionId } : {}
77
+ };
78
+ update((current) => ({
79
+ ...current,
80
+ run: {
81
+ ...current.run,
82
+ ...run
83
+ },
84
+ ...sessionId ? { sessionId } : {}
85
+ }));
86
+ });
87
+ stream.addEventListener("entry", (event) => {
88
+ const entry = frameData(event);
89
+ update((current) => ({
90
+ ...current,
91
+ entries: upsertEntry(current.entries, entry)
92
+ }));
93
+ });
94
+ stream.addEventListener("done", (event) => {
95
+ finish(frameData(event), "The prompt run did not succeed.");
96
+ });
97
+ stream.addEventListener("error", (event) => {
98
+ const data = event.data;
99
+ if (data) {
100
+ finish({
101
+ ...JSON.parse(data),
102
+ success: false
103
+ });
104
+ return;
105
+ }
106
+ fetch(runPath).then((response) => {
107
+ if (response.status !== 404 || stale) return;
108
+ finish({
109
+ success: false,
110
+ error: "Captain no longer knows this prompt run; check its result before retrying."
111
+ });
112
+ }).catch((error) => {
113
+ console.warn(`prompt run ${runId}: snapshot probe after a dropped stream failed`, error);
114
+ });
115
+ });
116
+ return () => {
117
+ stale = true;
118
+ stream.close();
119
+ };
120
+ }, [runId, baseUrl]);
121
+ if (!runId) return IDLE;
122
+ return tracked?.runId === runId ? tracked.state : RUNNING;
123
+ }
124
+ exports.usePromptRunStream = usePromptRunStream;
125
+
126
+ //# sourceMappingURL=use-prompt-run-stream.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-prompt-run-stream.cjs","names":["useEventSourceFactory","useState","useRef"],"sources":["../../../src/data/ai/use-prompt-run-stream.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { useEventSourceFactory } from \"../../hooks/event-source\";\nimport type { SessionUIMessage } from \"./SessionViewer.unified\";\n\n// Follows one Captain prompt run (`PromptRunHandler`):\n// GET {baseUrl}/api/captain/prompt/runs/{runId}/stream (SSE)\n// `run` → {runId,status,model,provider,mode,sessionId?}: run metadata, and\n// the session to tail once Captain records one\n// `entry` → one transcript message; replayed from the start on reconnect\n// `done` → the run's summary (success or failure)\n// `error` → with data, the run's failed summary; without, a dropped\n// connection the browser reconnects from (the server replays\n// the run) — unless Captain has forgotten the run, which only\n// the snapshot route can tell.\n// GET {baseUrl}/api/captain/prompt/runs/{runId} → snapshot (404 once forgotten)\n\n/** The terminal summary Captain publishes with `done` and server `error` frames. */\nexport interface PromptRunSummary {\n runId?: string;\n sessionId?: string;\n model?: string;\n provider?: string;\n mode?: string;\n inputTokens?: number;\n outputTokens?: number;\n costUSD?: number;\n /** A Go duration string, e.g. \"3m2.5s\". */\n duration?: string;\n success: boolean;\n error?: string;\n text?: string;\n structuredOutput?: unknown;\n}\n\n/** What Captain's `run` frame says about the run; every field is optional because frames arrive as the run progresses. */\nexport interface PromptRunFrame {\n runId?: string;\n status?: string;\n model?: string;\n provider?: string;\n mode?: string;\n sessionId?: string;\n}\n\nexport interface PromptRunStreamOptions {\n /** Prefix for the Captain routes; defaults to same-origin. */\n baseUrl?: string;\n /** Fires once, with the run's summary, when the run reaches a terminal frame. */\n onDone?: (summary: PromptRunSummary) => void;\n}\n\nexport type PromptRunStreamStatus = \"idle\" | \"running\" | \"succeeded\" | \"failed\";\n\nexport interface PromptRunStreamState {\n status: PromptRunStreamStatus;\n sessionId?: string;\n /** The latest `run` frame: model, provider, mode and ids, available from the first frame. */\n run?: PromptRunFrame;\n summary?: PromptRunSummary;\n error?: string;\n /** The run's transcript as it streams, whether or not Captain records a session. */\n entries: SessionUIMessage[];\n}\n\nconst IDLE: PromptRunStreamState = { status: \"idle\", entries: [] };\nconst RUNNING: PromptRunStreamState = { status: \"running\", entries: [] };\n\n// upsertEntry replaces a replayed or updated message by id, so a reconnect's\n// replay does not duplicate the transcript.\nfunction upsertEntry(entries: SessionUIMessage[], entry: SessionUIMessage): SessionUIMessage[] {\n const index = entry.id ? entries.findIndex((existing) => existing.id === entry.id) : -1;\n if (index < 0) return [...entries, entry];\n const next = entries.slice();\n next[index] = entry;\n return next;\n}\n\nfunction frameData<T>(event: Event): T {\n return JSON.parse((event as MessageEvent<string>).data) as T;\n}\n\n/**\n * Follows a Captain prompt run by id: `idle` without one, `running` (with the\n * session id from the `run` frame) until a terminal frame, then `succeeded` or\n * `failed`. Callbacks are held in a ref, so passing a fresh `onDone` each render\n * does not reopen the stream.\n */\nexport function usePromptRunStream(\n runId: string | undefined,\n options: PromptRunStreamOptions = {},\n): PromptRunStreamState {\n const { baseUrl = \"\", onDone } = options;\n const openStream = useEventSourceFactory();\n const [tracked, setTracked] = useState<{ runId: string; state: PromptRunStreamState } | undefined>();\n const callbacks = useRef({ onDone });\n callbacks.current = { onDone };\n const openRef = useRef(openStream);\n openRef.current = openStream;\n\n useEffect(() => {\n if (!runId) return;\n let stale = false;\n const runPath = `${baseUrl}/api/captain/prompt/runs/${encodeURIComponent(runId)}`;\n const stream = openRef.current(`${runPath}/stream`);\n const update = (next: (current: PromptRunStreamState) => PromptRunStreamState) => {\n if (stale) return;\n setTracked((tracked) => ({ runId, state: next(tracked?.runId === runId ? tracked.state : RUNNING) }));\n };\n const finish = (summary: PromptRunSummary, fallbackError = \"The prompt run failed.\") => {\n stream.close();\n update((current) => {\n const base = {\n entries: current.entries,\n ...(current.run ? { run: current.run } : {}),\n ...(summary.sessionId ? { sessionId: summary.sessionId } : current.sessionId ? { sessionId: current.sessionId } : {}),\n summary,\n };\n return summary.success\n ? { status: \"succeeded\", ...base }\n : { status: \"failed\", ...base, error: summary.error || fallbackError };\n });\n callbacks.current.onDone?.(summary);\n };\n\n stream.addEventListener(\"run\", (event) => {\n const { runId, status, model, provider, mode, sessionId } = frameData<PromptRunFrame>(event);\n const run: PromptRunFrame = {\n ...(runId ? { runId } : {}),\n ...(status ? { status } : {}),\n ...(model ? { model } : {}),\n ...(provider ? { provider } : {}),\n ...(mode ? { mode } : {}),\n ...(sessionId ? { sessionId } : {}),\n };\n update((current) => ({\n ...current,\n run: { ...current.run, ...run },\n ...(sessionId ? { sessionId } : {}),\n }));\n });\n stream.addEventListener(\"entry\", (event) => {\n const entry = frameData<SessionUIMessage>(event);\n update((current) => ({ ...current, entries: upsertEntry(current.entries, entry) }));\n });\n stream.addEventListener(\"done\", (event) => {\n finish(frameData<PromptRunSummary>(event), \"The prompt run did not succeed.\");\n });\n stream.addEventListener(\"error\", (event) => {\n const data = (event as MessageEvent<string | undefined>).data;\n if (data) {\n // Only the server's terminal `error` frame carries a summary; it is a failure by definition.\n finish({ ...JSON.parse(data), success: false } as PromptRunSummary);\n return;\n }\n fetch(runPath)\n .then((response) => {\n if (response.status !== 404 || stale) return;\n finish({ success: false, error: \"Captain no longer knows this prompt run; check its result before retrying.\" });\n })\n .catch((error: unknown) => {\n // The stream is already reconnecting; an unreachable snapshot route only means the server is still down.\n console.warn(`prompt run ${runId}: snapshot probe after a dropped stream failed`, error);\n });\n });\n return () => {\n stale = true;\n stream.close();\n };\n }, [runId, baseUrl]);\n\n if (!runId) return IDLE;\n return tracked?.runId === runId ? tracked.state : RUNNING;\n}\n"],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { SessionUIMessage } from './SessionViewer.unified.js';
2
+ /** The terminal summary Captain publishes with `done` and server `error` frames. */
3
+ export interface PromptRunSummary {
4
+ runId?: string;
5
+ sessionId?: string;
6
+ model?: string;
7
+ provider?: string;
8
+ mode?: string;
9
+ inputTokens?: number;
10
+ outputTokens?: number;
11
+ costUSD?: number;
12
+ /** A Go duration string, e.g. "3m2.5s". */
13
+ duration?: string;
14
+ success: boolean;
15
+ error?: string;
16
+ text?: string;
17
+ structuredOutput?: unknown;
18
+ }
19
+ /** What Captain's `run` frame says about the run; every field is optional because frames arrive as the run progresses. */
20
+ export interface PromptRunFrame {
21
+ runId?: string;
22
+ status?: string;
23
+ model?: string;
24
+ provider?: string;
25
+ mode?: string;
26
+ sessionId?: string;
27
+ }
28
+ export interface PromptRunStreamOptions {
29
+ /** Prefix for the Captain routes; defaults to same-origin. */
30
+ baseUrl?: string;
31
+ /** Fires once, with the run's summary, when the run reaches a terminal frame. */
32
+ onDone?: (summary: PromptRunSummary) => void;
33
+ }
34
+ export type PromptRunStreamStatus = "idle" | "running" | "succeeded" | "failed";
35
+ export interface PromptRunStreamState {
36
+ status: PromptRunStreamStatus;
37
+ sessionId?: string;
38
+ /** The latest `run` frame: model, provider, mode and ids, available from the first frame. */
39
+ run?: PromptRunFrame;
40
+ summary?: PromptRunSummary;
41
+ error?: string;
42
+ /** The run's transcript as it streams, whether or not Captain records a session. */
43
+ entries: SessionUIMessage[];
44
+ }
45
+ /**
46
+ * Follows a Captain prompt run by id: `idle` without one, `running` (with the
47
+ * session id from the `run` frame) until a terminal frame, then `succeeded` or
48
+ * `failed`. Callbacks are held in a ref, so passing a fresh `onDone` each render
49
+ * does not reopen the stream.
50
+ */
51
+ export declare function usePromptRunStream(runId: string | undefined, options?: PromptRunStreamOptions): PromptRunStreamState;
52
+ //# sourceMappingURL=use-prompt-run-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-prompt-run-stream.d.ts","sourceRoot":"","sources":["../../../src/data/ai/use-prompt-run-stream.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAchE,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,0HAA0H;AAC1H,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAmBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAkFtB"}
@@ -0,0 +1,126 @@
1
+ import { useEventSourceFactory } from "../../hooks/event-source.js";
2
+ import { useEffect, useRef, useState } from "react";
3
+ // src/data/ai/use-prompt-run-stream.ts
4
+ var IDLE = {
5
+ status: "idle",
6
+ entries: []
7
+ };
8
+ var RUNNING = {
9
+ status: "running",
10
+ entries: []
11
+ };
12
+ function upsertEntry(entries, entry) {
13
+ const index = entry.id ? entries.findIndex((existing) => existing.id === entry.id) : -1;
14
+ if (index < 0) return [...entries, entry];
15
+ const next = entries.slice();
16
+ next[index] = entry;
17
+ return next;
18
+ }
19
+ function frameData(event) {
20
+ return JSON.parse(event.data);
21
+ }
22
+ /**
23
+ * Follows a Captain prompt run by id: `idle` without one, `running` (with the
24
+ * session id from the `run` frame) until a terminal frame, then `succeeded` or
25
+ * `failed`. Callbacks are held in a ref, so passing a fresh `onDone` each render
26
+ * does not reopen the stream.
27
+ */
28
+ function usePromptRunStream(runId, options = {}) {
29
+ const { baseUrl = "", onDone } = options;
30
+ const openStream = useEventSourceFactory();
31
+ const [tracked, setTracked] = useState();
32
+ const callbacks = useRef({ onDone });
33
+ callbacks.current = { onDone };
34
+ const openRef = useRef(openStream);
35
+ openRef.current = openStream;
36
+ useEffect(() => {
37
+ if (!runId) return;
38
+ let stale = false;
39
+ const runPath = `${baseUrl}/api/captain/prompt/runs/${encodeURIComponent(runId)}`;
40
+ const stream = openRef.current(`${runPath}/stream`);
41
+ const update = (next) => {
42
+ if (stale) return;
43
+ setTracked((tracked) => ({
44
+ runId,
45
+ state: next(tracked?.runId === runId ? tracked.state : RUNNING)
46
+ }));
47
+ };
48
+ const finish = (summary, fallbackError = "The prompt run failed.") => {
49
+ stream.close();
50
+ update((current) => {
51
+ const base = {
52
+ entries: current.entries,
53
+ ...current.run ? { run: current.run } : {},
54
+ ...summary.sessionId ? { sessionId: summary.sessionId } : current.sessionId ? { sessionId: current.sessionId } : {},
55
+ summary
56
+ };
57
+ return summary.success ? {
58
+ status: "succeeded",
59
+ ...base
60
+ } : {
61
+ status: "failed",
62
+ ...base,
63
+ error: summary.error || fallbackError
64
+ };
65
+ });
66
+ callbacks.current.onDone?.(summary);
67
+ };
68
+ stream.addEventListener("run", (event) => {
69
+ const { runId, status, model, provider, mode, sessionId } = frameData(event);
70
+ const run = {
71
+ ...runId ? { runId } : {},
72
+ ...status ? { status } : {},
73
+ ...model ? { model } : {},
74
+ ...provider ? { provider } : {},
75
+ ...mode ? { mode } : {},
76
+ ...sessionId ? { sessionId } : {}
77
+ };
78
+ update((current) => ({
79
+ ...current,
80
+ run: {
81
+ ...current.run,
82
+ ...run
83
+ },
84
+ ...sessionId ? { sessionId } : {}
85
+ }));
86
+ });
87
+ stream.addEventListener("entry", (event) => {
88
+ const entry = frameData(event);
89
+ update((current) => ({
90
+ ...current,
91
+ entries: upsertEntry(current.entries, entry)
92
+ }));
93
+ });
94
+ stream.addEventListener("done", (event) => {
95
+ finish(frameData(event), "The prompt run did not succeed.");
96
+ });
97
+ stream.addEventListener("error", (event) => {
98
+ const data = event.data;
99
+ if (data) {
100
+ finish({
101
+ ...JSON.parse(data),
102
+ success: false
103
+ });
104
+ return;
105
+ }
106
+ fetch(runPath).then((response) => {
107
+ if (response.status !== 404 || stale) return;
108
+ finish({
109
+ success: false,
110
+ error: "Captain no longer knows this prompt run; check its result before retrying."
111
+ });
112
+ }).catch((error) => {
113
+ console.warn(`prompt run ${runId}: snapshot probe after a dropped stream failed`, error);
114
+ });
115
+ });
116
+ return () => {
117
+ stale = true;
118
+ stream.close();
119
+ };
120
+ }, [runId, baseUrl]);
121
+ if (!runId) return IDLE;
122
+ return tracked?.runId === runId ? tracked.state : RUNNING;
123
+ }
124
+ export { usePromptRunStream };
125
+
126
+ //# sourceMappingURL=use-prompt-run-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-prompt-run-stream.js","names":[],"sources":["../../../src/data/ai/use-prompt-run-stream.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { useEventSourceFactory } from \"../../hooks/event-source\";\nimport type { SessionUIMessage } from \"./SessionViewer.unified\";\n\n// Follows one Captain prompt run (`PromptRunHandler`):\n// GET {baseUrl}/api/captain/prompt/runs/{runId}/stream (SSE)\n// `run` → {runId,status,model,provider,mode,sessionId?}: run metadata, and\n// the session to tail once Captain records one\n// `entry` → one transcript message; replayed from the start on reconnect\n// `done` → the run's summary (success or failure)\n// `error` → with data, the run's failed summary; without, a dropped\n// connection the browser reconnects from (the server replays\n// the run) — unless Captain has forgotten the run, which only\n// the snapshot route can tell.\n// GET {baseUrl}/api/captain/prompt/runs/{runId} → snapshot (404 once forgotten)\n\n/** The terminal summary Captain publishes with `done` and server `error` frames. */\nexport interface PromptRunSummary {\n runId?: string;\n sessionId?: string;\n model?: string;\n provider?: string;\n mode?: string;\n inputTokens?: number;\n outputTokens?: number;\n costUSD?: number;\n /** A Go duration string, e.g. \"3m2.5s\". */\n duration?: string;\n success: boolean;\n error?: string;\n text?: string;\n structuredOutput?: unknown;\n}\n\n/** What Captain's `run` frame says about the run; every field is optional because frames arrive as the run progresses. */\nexport interface PromptRunFrame {\n runId?: string;\n status?: string;\n model?: string;\n provider?: string;\n mode?: string;\n sessionId?: string;\n}\n\nexport interface PromptRunStreamOptions {\n /** Prefix for the Captain routes; defaults to same-origin. */\n baseUrl?: string;\n /** Fires once, with the run's summary, when the run reaches a terminal frame. */\n onDone?: (summary: PromptRunSummary) => void;\n}\n\nexport type PromptRunStreamStatus = \"idle\" | \"running\" | \"succeeded\" | \"failed\";\n\nexport interface PromptRunStreamState {\n status: PromptRunStreamStatus;\n sessionId?: string;\n /** The latest `run` frame: model, provider, mode and ids, available from the first frame. */\n run?: PromptRunFrame;\n summary?: PromptRunSummary;\n error?: string;\n /** The run's transcript as it streams, whether or not Captain records a session. */\n entries: SessionUIMessage[];\n}\n\nconst IDLE: PromptRunStreamState = { status: \"idle\", entries: [] };\nconst RUNNING: PromptRunStreamState = { status: \"running\", entries: [] };\n\n// upsertEntry replaces a replayed or updated message by id, so a reconnect's\n// replay does not duplicate the transcript.\nfunction upsertEntry(entries: SessionUIMessage[], entry: SessionUIMessage): SessionUIMessage[] {\n const index = entry.id ? entries.findIndex((existing) => existing.id === entry.id) : -1;\n if (index < 0) return [...entries, entry];\n const next = entries.slice();\n next[index] = entry;\n return next;\n}\n\nfunction frameData<T>(event: Event): T {\n return JSON.parse((event as MessageEvent<string>).data) as T;\n}\n\n/**\n * Follows a Captain prompt run by id: `idle` without one, `running` (with the\n * session id from the `run` frame) until a terminal frame, then `succeeded` or\n * `failed`. Callbacks are held in a ref, so passing a fresh `onDone` each render\n * does not reopen the stream.\n */\nexport function usePromptRunStream(\n runId: string | undefined,\n options: PromptRunStreamOptions = {},\n): PromptRunStreamState {\n const { baseUrl = \"\", onDone } = options;\n const openStream = useEventSourceFactory();\n const [tracked, setTracked] = useState<{ runId: string; state: PromptRunStreamState } | undefined>();\n const callbacks = useRef({ onDone });\n callbacks.current = { onDone };\n const openRef = useRef(openStream);\n openRef.current = openStream;\n\n useEffect(() => {\n if (!runId) return;\n let stale = false;\n const runPath = `${baseUrl}/api/captain/prompt/runs/${encodeURIComponent(runId)}`;\n const stream = openRef.current(`${runPath}/stream`);\n const update = (next: (current: PromptRunStreamState) => PromptRunStreamState) => {\n if (stale) return;\n setTracked((tracked) => ({ runId, state: next(tracked?.runId === runId ? tracked.state : RUNNING) }));\n };\n const finish = (summary: PromptRunSummary, fallbackError = \"The prompt run failed.\") => {\n stream.close();\n update((current) => {\n const base = {\n entries: current.entries,\n ...(current.run ? { run: current.run } : {}),\n ...(summary.sessionId ? { sessionId: summary.sessionId } : current.sessionId ? { sessionId: current.sessionId } : {}),\n summary,\n };\n return summary.success\n ? { status: \"succeeded\", ...base }\n : { status: \"failed\", ...base, error: summary.error || fallbackError };\n });\n callbacks.current.onDone?.(summary);\n };\n\n stream.addEventListener(\"run\", (event) => {\n const { runId, status, model, provider, mode, sessionId } = frameData<PromptRunFrame>(event);\n const run: PromptRunFrame = {\n ...(runId ? { runId } : {}),\n ...(status ? { status } : {}),\n ...(model ? { model } : {}),\n ...(provider ? { provider } : {}),\n ...(mode ? { mode } : {}),\n ...(sessionId ? { sessionId } : {}),\n };\n update((current) => ({\n ...current,\n run: { ...current.run, ...run },\n ...(sessionId ? { sessionId } : {}),\n }));\n });\n stream.addEventListener(\"entry\", (event) => {\n const entry = frameData<SessionUIMessage>(event);\n update((current) => ({ ...current, entries: upsertEntry(current.entries, entry) }));\n });\n stream.addEventListener(\"done\", (event) => {\n finish(frameData<PromptRunSummary>(event), \"The prompt run did not succeed.\");\n });\n stream.addEventListener(\"error\", (event) => {\n const data = (event as MessageEvent<string | undefined>).data;\n if (data) {\n // Only the server's terminal `error` frame carries a summary; it is a failure by definition.\n finish({ ...JSON.parse(data), success: false } as PromptRunSummary);\n return;\n }\n fetch(runPath)\n .then((response) => {\n if (response.status !== 404 || stale) return;\n finish({ success: false, error: \"Captain no longer knows this prompt run; check its result before retrying.\" });\n })\n .catch((error: unknown) => {\n // The stream is already reconnecting; an unreachable snapshot route only means the server is still down.\n console.warn(`prompt run ${runId}: snapshot probe after a dropped stream failed`, error);\n });\n });\n return () => {\n stale = true;\n stream.close();\n };\n }, [runId, baseUrl]);\n\n if (!runId) return IDLE;\n return tracked?.runId === runId ? tracked.state : RUNNING;\n}\n"],"mappings":"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"}
@@ -28,6 +28,7 @@ function CacheBrowser({ baseUrl = "/api/v1", client: clientProp, fetcher, adapte
28
28
  const registry = (0, react.useMemo)(() => adapters instanceof require_adapter.CacheAdapterRegistry ? adapters : require_adapter.createCacheRegistry(adapters ?? []), [adapters]);
29
29
  const [selected, setSelected] = (0, react.useState)(null);
30
30
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_SplitPane.SplitPane, {
31
+ stackOnMobile: true,
31
32
  className: require_utils.cn("min-h-0 flex-1", className),
32
33
  defaultSplit,
33
34
  left: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_CacheTree.CacheTree, {