@flanksource/clicky-ui 0.3.54 → 0.3.56

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 (999) 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/FilterBar.cjs +29 -6
  79. package/dist/components/FilterBar.cjs.map +1 -1
  80. package/dist/components/FilterBar.d.ts +3 -1
  81. package/dist/components/FilterBar.d.ts.map +1 -1
  82. package/dist/components/FilterBar.js +29 -6
  83. package/dist/components/FilterBar.js.map +1 -1
  84. package/dist/components/ItemActions.cjs +1 -1
  85. package/dist/components/ItemActions.cjs.map +1 -1
  86. package/dist/components/ItemActions.js +1 -1
  87. package/dist/components/ItemActions.js.map +1 -1
  88. package/dist/components/ListMenu.cjs +33 -3
  89. package/dist/components/ListMenu.cjs.map +1 -1
  90. package/dist/components/ListMenu.d.ts +4 -1
  91. package/dist/components/ListMenu.d.ts.map +1 -1
  92. package/dist/components/ListMenu.js +33 -3
  93. package/dist/components/ListMenu.js.map +1 -1
  94. package/dist/components/ListMenuItems.cjs +80 -0
  95. package/dist/components/ListMenuItems.cjs.map +1 -0
  96. package/dist/components/ListMenuItems.d.ts +8 -0
  97. package/dist/components/ListMenuItems.d.ts.map +1 -0
  98. package/dist/components/ListMenuItems.js +80 -0
  99. package/dist/components/ListMenuItems.js.map +1 -0
  100. package/dist/components/LocalPathPicker.cjs +182 -0
  101. package/dist/components/LocalPathPicker.cjs.map +1 -0
  102. package/dist/components/LocalPathPicker.d.ts +11 -0
  103. package/dist/components/LocalPathPicker.d.ts.map +1 -0
  104. package/dist/components/LocalPathPicker.js +182 -0
  105. package/dist/components/LocalPathPicker.js.map +1 -0
  106. package/dist/components/LocalPathTree.cjs +89 -0
  107. package/dist/components/LocalPathTree.cjs.map +1 -0
  108. package/dist/components/LocalPathTree.d.ts +9 -0
  109. package/dist/components/LocalPathTree.d.ts.map +1 -0
  110. package/dist/components/LocalPathTree.js +89 -0
  111. package/dist/components/LocalPathTree.js.map +1 -0
  112. package/dist/components/RangeSlider.cjs +10 -30
  113. package/dist/components/RangeSlider.cjs.map +1 -1
  114. package/dist/components/RangeSlider.d.ts.map +1 -1
  115. package/dist/components/RangeSlider.js +4 -24
  116. package/dist/components/RangeSlider.js.map +1 -1
  117. package/dist/components/Slider.cjs +79 -0
  118. package/dist/components/Slider.cjs.map +1 -0
  119. package/dist/components/Slider.d.ts +23 -0
  120. package/dist/components/Slider.d.ts.map +1 -0
  121. package/dist/components/Slider.js +79 -0
  122. package/dist/components/Slider.js.map +1 -0
  123. package/dist/components/combobox-types.d.ts +4 -1
  124. package/dist/components/combobox-types.d.ts.map +1 -1
  125. package/dist/components/filter-bar-field-utils.cjs +3 -5
  126. package/dist/components/filter-bar-field-utils.cjs.map +1 -1
  127. package/dist/components/filter-bar-field-utils.d.ts.map +1 -1
  128. package/dist/components/filter-bar-field-utils.js +3 -5
  129. package/dist/components/filter-bar-field-utils.js.map +1 -1
  130. package/dist/components/filter-bar-tree-model.cjs +22 -0
  131. package/dist/components/filter-bar-tree-model.cjs.map +1 -0
  132. package/dist/components/filter-bar-tree-model.d.ts +33 -0
  133. package/dist/components/filter-bar-tree-model.d.ts.map +1 -0
  134. package/dist/components/filter-bar-tree-model.js +21 -0
  135. package/dist/components/filter-bar-tree-model.js.map +1 -0
  136. package/dist/components/filter-bar-tree.cjs +84 -0
  137. package/dist/components/filter-bar-tree.cjs.map +1 -0
  138. package/dist/components/filter-bar-tree.d.ts +7 -0
  139. package/dist/components/filter-bar-tree.d.ts.map +1 -0
  140. package/dist/components/filter-bar-tree.js +84 -0
  141. package/dist/components/filter-bar-tree.js.map +1 -0
  142. package/dist/components/json-schema-form-debug-glyph-map.cjs +2 -0
  143. package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -1
  144. package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -1
  145. package/dist/components/json-schema-form-debug-glyph-map.js +2 -0
  146. package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -1
  147. package/dist/components/json-schema-form-help-links.cjs +18 -0
  148. package/dist/components/json-schema-form-help-links.cjs.map +1 -0
  149. package/dist/components/json-schema-form-help-links.d.ts +5 -0
  150. package/dist/components/json-schema-form-help-links.d.ts.map +1 -0
  151. package/dist/components/json-schema-form-help-links.js +18 -0
  152. package/dist/components/json-schema-form-help-links.js.map +1 -0
  153. package/dist/components/json-schema-form-help-model.cjs +7 -0
  154. package/dist/components/json-schema-form-help-model.cjs.map +1 -0
  155. package/dist/components/json-schema-form-help-model.d.ts +3 -0
  156. package/dist/components/json-schema-form-help-model.d.ts.map +1 -0
  157. package/dist/components/json-schema-form-help-model.js +7 -0
  158. package/dist/components/json-schema-form-help-model.js.map +1 -0
  159. package/dist/components/json-schema-form-json.cjs +48 -0
  160. package/dist/components/json-schema-form-json.cjs.map +1 -0
  161. package/dist/components/json-schema-form-json.d.ts +7 -0
  162. package/dist/components/json-schema-form-json.d.ts.map +1 -0
  163. package/dist/components/json-schema-form-json.js +48 -0
  164. package/dist/components/json-schema-form-json.js.map +1 -0
  165. package/dist/components/json-schema-form-layout.cjs +7 -5
  166. package/dist/components/json-schema-form-layout.cjs.map +1 -1
  167. package/dist/components/json-schema-form-layout.d.ts +2 -2
  168. package/dist/components/json-schema-form-layout.d.ts.map +1 -1
  169. package/dist/components/json-schema-form-layout.js +7 -5
  170. package/dist/components/json-schema-form-layout.js.map +1 -1
  171. package/dist/components/json-schema-form-object.cjs +2 -13
  172. package/dist/components/json-schema-form-object.cjs.map +1 -1
  173. package/dist/components/json-schema-form-object.d.ts.map +1 -1
  174. package/dist/components/json-schema-form-object.js +2 -13
  175. package/dist/components/json-schema-form-object.js.map +1 -1
  176. package/dist/components/json-schema-form-refs.cjs +1 -1
  177. package/dist/components/json-schema-form-refs.cjs.map +1 -1
  178. package/dist/components/json-schema-form-refs.d.ts.map +1 -1
  179. package/dist/components/json-schema-form-refs.js +1 -1
  180. package/dist/components/json-schema-form-refs.js.map +1 -1
  181. package/dist/components/json-schema-form-render.cjs +20 -6
  182. package/dist/components/json-schema-form-render.cjs.map +1 -1
  183. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  184. package/dist/components/json-schema-form-render.js +20 -6
  185. package/dist/components/json-schema-form-render.js.map +1 -1
  186. package/dist/components/json-schema-form-resolve.cjs +22 -2
  187. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  188. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  189. package/dist/components/json-schema-form-resolve.js +22 -2
  190. package/dist/components/json-schema-form-resolve.js.map +1 -1
  191. package/dist/components/json-schema-form-types.d.ts +5 -1
  192. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  193. package/dist/components/json-schema-form-union-model.cjs +46 -0
  194. package/dist/components/json-schema-form-union-model.cjs.map +1 -0
  195. package/dist/components/json-schema-form-union-model.d.ts +6 -0
  196. package/dist/components/json-schema-form-union-model.d.ts.map +1 -0
  197. package/dist/components/json-schema-form-union-model.js +43 -0
  198. package/dist/components/json-schema-form-union-model.js.map +1 -0
  199. package/dist/components/json-schema-form-union.cjs +52 -0
  200. package/dist/components/json-schema-form-union.cjs.map +1 -0
  201. package/dist/components/json-schema-form-union.d.ts +7 -0
  202. package/dist/components/json-schema-form-union.d.ts.map +1 -0
  203. package/dist/components/json-schema-form-union.js +52 -0
  204. package/dist/components/json-schema-form-union.js.map +1 -0
  205. package/dist/components/list-menu-virtual.cjs +5 -0
  206. package/dist/components/list-menu-virtual.cjs.map +1 -0
  207. package/dist/components/list-menu-virtual.d.ts +12 -0
  208. package/dist/components/list-menu-virtual.d.ts.map +1 -0
  209. package/dist/components/list-menu-virtual.js +6 -0
  210. package/dist/components/list-menu-virtual.js.map +1 -0
  211. package/dist/components/local-path.cjs +12 -0
  212. package/dist/components/local-path.cjs.map +1 -0
  213. package/dist/components/local-path.d.ts +14 -0
  214. package/dist/components/local-path.d.ts.map +1 -0
  215. package/dist/components/local-path.js +12 -0
  216. package/dist/components/local-path.js.map +1 -0
  217. package/dist/components/slider-shared.cjs +32 -0
  218. package/dist/components/slider-shared.cjs.map +1 -0
  219. package/dist/components/slider-shared.d.ts +18 -0
  220. package/dist/components/slider-shared.d.ts.map +1 -0
  221. package/dist/components/slider-shared.js +27 -0
  222. package/dist/components/slider-shared.js.map +1 -0
  223. package/dist/components.cjs +8 -0
  224. package/dist/components.d.ts +6 -1
  225. package/dist/components.d.ts.map +1 -1
  226. package/dist/components.js +5 -1
  227. package/dist/connections/ConnectionsPage.cjs +51 -19
  228. package/dist/connections/ConnectionsPage.cjs.map +1 -1
  229. package/dist/connections/ConnectionsPage.d.ts +9 -1
  230. package/dist/connections/ConnectionsPage.d.ts.map +1 -1
  231. package/dist/connections/ConnectionsPage.js +52 -20
  232. package/dist/connections/ConnectionsPage.js.map +1 -1
  233. package/dist/connections/connectionDashboard.cjs +13 -8
  234. package/dist/connections/connectionDashboard.cjs.map +1 -1
  235. package/dist/connections/connectionDashboard.d.ts +8 -3
  236. package/dist/connections/connectionDashboard.d.ts.map +1 -1
  237. package/dist/connections/connectionDashboard.js +14 -9
  238. package/dist/connections/connectionDashboard.js.map +1 -1
  239. package/dist/connections/connectionDashboardModel.cjs.map +1 -1
  240. package/dist/connections/connectionDashboardModel.d.ts +4 -0
  241. package/dist/connections/connectionDashboardModel.d.ts.map +1 -1
  242. package/dist/connections/connectionDashboardModel.js.map +1 -1
  243. package/dist/connections/connectionDashboardRow.cjs +75 -55
  244. package/dist/connections/connectionDashboardRow.cjs.map +1 -1
  245. package/dist/connections/connectionDashboardRow.d.ts +3 -2
  246. package/dist/connections/connectionDashboardRow.d.ts.map +1 -1
  247. package/dist/connections/connectionDashboardRow.js +75 -55
  248. package/dist/connections/connectionDashboardRow.js.map +1 -1
  249. package/dist/connections/connectionNamespaceField.cjs +17 -0
  250. package/dist/connections/connectionNamespaceField.cjs.map +1 -0
  251. package/dist/connections/connectionNamespaceField.d.ts +10 -0
  252. package/dist/connections/connectionNamespaceField.d.ts.map +1 -0
  253. package/dist/connections/connectionNamespaceField.js +17 -0
  254. package/dist/connections/connectionNamespaceField.js.map +1 -0
  255. package/dist/connections/connectionSchemaFormExtensions.cjs +98 -0
  256. package/dist/connections/connectionSchemaFormExtensions.cjs.map +1 -0
  257. package/dist/connections/connectionSchemaFormExtensions.d.ts +41 -0
  258. package/dist/connections/connectionSchemaFormExtensions.d.ts.map +1 -0
  259. package/dist/connections/connectionSchemaFormExtensions.js +96 -0
  260. package/dist/connections/connectionSchemaFormExtensions.js.map +1 -0
  261. package/dist/connections/connectionsPageModel.cjs +11 -0
  262. package/dist/connections/connectionsPageModel.cjs.map +1 -1
  263. package/dist/connections/connectionsPageModel.d.ts +5 -0
  264. package/dist/connections/connectionsPageModel.d.ts.map +1 -1
  265. package/dist/connections/connectionsPageModel.js +11 -1
  266. package/dist/connections/connectionsPageModel.js.map +1 -1
  267. package/dist/connections.cjs +5 -0
  268. package/dist/connections.d.ts +2 -1
  269. package/dist/connections.d.ts.map +1 -1
  270. package/dist/connections.js +3 -2
  271. package/dist/data/AvatarBadge.cjs +3 -3
  272. package/dist/data/AvatarBadge.cjs.map +1 -1
  273. package/dist/data/AvatarBadge.js +3 -3
  274. package/dist/data/AvatarBadge.js.map +1 -1
  275. package/dist/data/CodeDiff.cjs +2 -0
  276. package/dist/data/CodeDiff.cjs.map +1 -1
  277. package/dist/data/CodeDiff.js +2 -0
  278. package/dist/data/CodeDiff.js.map +1 -1
  279. package/dist/data/DataTable.cjs +3 -2
  280. package/dist/data/DataTable.cjs.map +1 -1
  281. package/dist/data/DataTable.d.ts.map +1 -1
  282. package/dist/data/DataTable.js +3 -2
  283. package/dist/data/DataTable.js.map +1 -1
  284. package/dist/data/Gauge.cjs +1 -1
  285. package/dist/data/Gauge.cjs.map +1 -1
  286. package/dist/data/Gauge.js +1 -1
  287. package/dist/data/Gauge.js.map +1 -1
  288. package/dist/data/HighlightedTokens.cjs +2 -10
  289. package/dist/data/HighlightedTokens.cjs.map +1 -1
  290. package/dist/data/HighlightedTokens.d.ts.map +1 -1
  291. package/dist/data/HighlightedTokens.js +1 -9
  292. package/dist/data/HighlightedTokens.js.map +1 -1
  293. package/dist/data/Markdown.cjs +38 -11
  294. package/dist/data/Markdown.cjs.map +1 -1
  295. package/dist/data/Markdown.d.ts +9 -1
  296. package/dist/data/Markdown.d.ts.map +1 -1
  297. package/dist/data/Markdown.js +39 -12
  298. package/dist/data/Markdown.js.map +1 -1
  299. package/dist/data/MultiGaugeBar.cjs +157 -0
  300. package/dist/data/MultiGaugeBar.cjs.map +1 -0
  301. package/dist/data/MultiGaugeBar.d.ts +29 -0
  302. package/dist/data/MultiGaugeBar.d.ts.map +1 -0
  303. package/dist/data/MultiGaugeBar.js +157 -0
  304. package/dist/data/MultiGaugeBar.js.map +1 -0
  305. package/dist/data/OpenInFilesLink.cjs +27 -0
  306. package/dist/data/OpenInFilesLink.cjs.map +1 -0
  307. package/dist/data/OpenInFilesLink.d.ts +15 -0
  308. package/dist/data/OpenInFilesLink.d.ts.map +1 -0
  309. package/dist/data/OpenInFilesLink.js +27 -0
  310. package/dist/data/OpenInFilesLink.js.map +1 -0
  311. package/dist/data/ProgressBar.cjs +5 -3
  312. package/dist/data/ProgressBar.cjs.map +1 -1
  313. package/dist/data/ProgressBar.d.ts +5 -1
  314. package/dist/data/ProgressBar.d.ts.map +1 -1
  315. package/dist/data/ProgressBar.js +5 -3
  316. package/dist/data/ProgressBar.js.map +1 -1
  317. package/dist/data/ProgressBars.cjs +13 -5
  318. package/dist/data/ProgressBars.cjs.map +1 -1
  319. package/dist/data/ProgressBars.d.ts +6 -1
  320. package/dist/data/ProgressBars.d.ts.map +1 -1
  321. package/dist/data/ProgressBars.js +13 -5
  322. package/dist/data/ProgressBars.js.map +1 -1
  323. package/dist/data/Properties.cjs +3 -3
  324. package/dist/data/Properties.cjs.map +1 -1
  325. package/dist/data/Properties.js +3 -3
  326. package/dist/data/Properties.js.map +1 -1
  327. package/dist/data/TaskProgress.cjs +14 -6
  328. package/dist/data/TaskProgress.cjs.map +1 -1
  329. package/dist/data/TaskProgress.d.ts +3 -1
  330. package/dist/data/TaskProgress.d.ts.map +1 -1
  331. package/dist/data/TaskProgress.js +14 -6
  332. package/dist/data/TaskProgress.js.map +1 -1
  333. package/dist/data/TaskPrompts.cjs +96 -0
  334. package/dist/data/TaskPrompts.cjs.map +1 -0
  335. package/dist/data/TaskPrompts.d.ts +6 -0
  336. package/dist/data/TaskPrompts.d.ts.map +1 -0
  337. package/dist/data/TaskPrompts.js +96 -0
  338. package/dist/data/TaskPrompts.js.map +1 -0
  339. package/dist/data/TaskSnapshot.cjs.map +1 -1
  340. package/dist/data/TaskSnapshot.d.ts +3 -0
  341. package/dist/data/TaskSnapshot.d.ts.map +1 -1
  342. package/dist/data/TaskSnapshot.js.map +1 -1
  343. package/dist/data/TimeseriesCoreBars.cjs +7 -3
  344. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  345. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  346. package/dist/data/TimeseriesCoreBars.js +8 -4
  347. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  348. package/dist/data/TimeseriesGauge.cjs +12 -5
  349. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  350. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  351. package/dist/data/TimeseriesGauge.js +13 -6
  352. package/dist/data/TimeseriesGauge.js.map +1 -1
  353. package/dist/data/TimeseriesPanel.cjs +10 -9
  354. package/dist/data/TimeseriesPanel.cjs.map +1 -1
  355. package/dist/data/TimeseriesPanel.d.ts +1 -1
  356. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  357. package/dist/data/TimeseriesPanel.js +11 -10
  358. package/dist/data/TimeseriesPanel.js.map +1 -1
  359. package/dist/data/TimeseriesPanel.model.cjs +62 -10
  360. package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
  361. package/dist/data/TimeseriesPanel.model.d.ts +40 -1
  362. package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
  363. package/dist/data/TimeseriesPanel.model.js +62 -11
  364. package/dist/data/TimeseriesPanel.model.js.map +1 -1
  365. package/dist/data/WorkloadCard.cjs +7 -3
  366. package/dist/data/WorkloadCard.cjs.map +1 -1
  367. package/dist/data/WorkloadCard.d.ts +3 -1
  368. package/dist/data/WorkloadCard.d.ts.map +1 -1
  369. package/dist/data/WorkloadCard.js +7 -3
  370. package/dist/data/WorkloadCard.js.map +1 -1
  371. package/dist/data/WorkloadCard.model.cjs.map +1 -1
  372. package/dist/data/WorkloadCard.model.d.ts +2 -0
  373. package/dist/data/WorkloadCard.model.d.ts.map +1 -1
  374. package/dist/data/WorkloadCard.model.js.map +1 -1
  375. package/dist/data/ai/ChatWindow.placement.cjs +2 -1
  376. package/dist/data/ai/ChatWindow.placement.cjs.map +1 -1
  377. package/dist/data/ai/ChatWindow.placement.d.ts +1 -1
  378. package/dist/data/ai/ChatWindow.placement.d.ts.map +1 -1
  379. package/dist/data/ai/ChatWindow.placement.js +2 -1
  380. package/dist/data/ai/ChatWindow.placement.js.map +1 -1
  381. package/dist/data/ai/SpecRuntimeBar.cjs +2 -2
  382. package/dist/data/ai/SpecRuntimeBar.cjs.map +1 -1
  383. package/dist/data/ai/SpecRuntimeBar.d.ts +4 -1
  384. package/dist/data/ai/SpecRuntimeBar.d.ts.map +1 -1
  385. package/dist/data/ai/SpecRuntimeBar.js +2 -2
  386. package/dist/data/ai/SpecRuntimeBar.js.map +1 -1
  387. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +1 -1
  388. package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
  389. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +1 -1
  390. package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
  391. package/dist/data/ai/SpecRuntimeEditor.model.cjs +2 -2
  392. package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
  393. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -2
  394. package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
  395. package/dist/data/ai/SpecRuntimeEditor.model.js +2 -2
  396. package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
  397. package/dist/data/ai/ThreadPicker.cjs +2 -2
  398. package/dist/data/ai/ThreadPicker.cjs.map +1 -1
  399. package/dist/data/ai/ThreadPicker.js +2 -2
  400. package/dist/data/ai/ThreadPicker.js.map +1 -1
  401. package/dist/data/ai/index.d.ts +2 -0
  402. package/dist/data/ai/index.d.ts.map +1 -1
  403. package/dist/data/ai/use-prompt-run-stream.cjs +126 -0
  404. package/dist/data/ai/use-prompt-run-stream.cjs.map +1 -0
  405. package/dist/data/ai/use-prompt-run-stream.d.ts +52 -0
  406. package/dist/data/ai/use-prompt-run-stream.d.ts.map +1 -0
  407. package/dist/data/ai/use-prompt-run-stream.js +126 -0
  408. package/dist/data/ai/use-prompt-run-stream.js.map +1 -0
  409. package/dist/data/cache-browser/CacheBrowser.cjs +1 -0
  410. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -1
  411. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -1
  412. package/dist/data/cache-browser/CacheBrowser.js +1 -0
  413. package/dist/data/cache-browser/CacheBrowser.js.map +1 -1
  414. package/dist/data/charts/BarChart.cjs +194 -0
  415. package/dist/data/charts/BarChart.cjs.map +1 -0
  416. package/dist/data/charts/BarChart.d.ts +19 -0
  417. package/dist/data/charts/BarChart.d.ts.map +1 -0
  418. package/dist/data/charts/BarChart.js +194 -0
  419. package/dist/data/charts/BarChart.js.map +1 -0
  420. package/dist/data/charts/ChartLegend.cjs +54 -0
  421. package/dist/data/charts/ChartLegend.cjs.map +1 -0
  422. package/dist/data/charts/ChartLegend.d.ts +17 -0
  423. package/dist/data/charts/ChartLegend.d.ts.map +1 -0
  424. package/dist/data/charts/ChartLegend.js +54 -0
  425. package/dist/data/charts/ChartLegend.js.map +1 -0
  426. package/dist/data/charts/Sparkline.cjs +56 -0
  427. package/dist/data/charts/Sparkline.cjs.map +1 -0
  428. package/dist/data/charts/Sparkline.d.ts +15 -0
  429. package/dist/data/charts/Sparkline.d.ts.map +1 -0
  430. package/dist/data/charts/Sparkline.js +56 -0
  431. package/dist/data/charts/Sparkline.js.map +1 -0
  432. package/dist/data/charts/StackedBarChart.cjs +241 -0
  433. package/dist/data/charts/StackedBarChart.cjs.map +1 -0
  434. package/dist/data/charts/StackedBarChart.d.ts +20 -0
  435. package/dist/data/charts/StackedBarChart.d.ts.map +1 -0
  436. package/dist/data/charts/StackedBarChart.js +241 -0
  437. package/dist/data/charts/StackedBarChart.js.map +1 -0
  438. package/dist/data/charts/TrendChart.cjs +157 -0
  439. package/dist/data/charts/TrendChart.cjs.map +1 -0
  440. package/dist/data/charts/TrendChart.d.ts +20 -0
  441. package/dist/data/charts/TrendChart.d.ts.map +1 -0
  442. package/dist/data/charts/TrendChart.js +157 -0
  443. package/dist/data/charts/TrendChart.js.map +1 -0
  444. package/dist/data/charts/chart-marks.cjs +115 -0
  445. package/dist/data/charts/chart-marks.cjs.map +1 -0
  446. package/dist/data/charts/chart-marks.d.ts +39 -0
  447. package/dist/data/charts/chart-marks.d.ts.map +1 -0
  448. package/dist/data/charts/chart-marks.js +112 -0
  449. package/dist/data/charts/chart-marks.js.map +1 -0
  450. package/dist/data/charts/chart-palette.cjs +74 -0
  451. package/dist/data/charts/chart-palette.cjs.map +1 -0
  452. package/dist/data/charts/chart-palette.d.ts +58 -0
  453. package/dist/data/charts/chart-palette.d.ts.map +1 -0
  454. package/dist/data/charts/chart-palette.js +72 -0
  455. package/dist/data/charts/chart-palette.js.map +1 -0
  456. package/dist/data/charts/chart-scale.cjs +115 -0
  457. package/dist/data/charts/chart-scale.cjs.map +1 -0
  458. package/dist/data/charts/chart-scale.d.ts +41 -0
  459. package/dist/data/charts/chart-scale.d.ts.map +1 -0
  460. package/dist/data/charts/chart-scale.js +104 -0
  461. package/dist/data/charts/chart-scale.js.map +1 -0
  462. package/dist/data/charts/chart.test-utils.d.ts +7 -0
  463. package/dist/data/charts/chart.test-utils.d.ts.map +1 -0
  464. package/dist/data/charts/index.d.ts +7 -0
  465. package/dist/data/charts/index.d.ts.map +1 -0
  466. package/dist/data/chat/MessageActions.cjs +1 -1
  467. package/dist/data/chat/MessageActions.cjs.map +1 -1
  468. package/dist/data/chat/MessageActions.js +1 -1
  469. package/dist/data/chat/MessageActions.js.map +1 -1
  470. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +1 -1
  471. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +1 -1
  472. package/dist/data/diagnostics/DiagnosticsTree.cjs +1 -1
  473. package/dist/data/diagnostics/DiagnosticsTree.cjs.map +1 -1
  474. package/dist/data/diagnostics/DiagnosticsTree.js +1 -1
  475. package/dist/data/diagnostics/DiagnosticsTree.js.map +1 -1
  476. package/dist/data/diagnostics/FrameSourceWindow.cjs +9 -2
  477. package/dist/data/diagnostics/FrameSourceWindow.cjs.map +1 -1
  478. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  479. package/dist/data/diagnostics/FrameSourceWindow.d.ts.map +1 -1
  480. package/dist/data/diagnostics/FrameSourceWindow.js +9 -2
  481. package/dist/data/diagnostics/FrameSourceWindow.js.map +1 -1
  482. package/dist/data/diagnostics/ProblemActions.cjs +37 -0
  483. package/dist/data/diagnostics/ProblemActions.cjs.map +1 -0
  484. package/dist/data/diagnostics/ProblemActions.d.ts +6 -0
  485. package/dist/data/diagnostics/ProblemActions.d.ts.map +1 -0
  486. package/dist/data/diagnostics/ProblemActions.js +37 -0
  487. package/dist/data/diagnostics/ProblemActions.js.map +1 -0
  488. package/dist/data/diagnostics/ProblemFacet.cjs +33 -0
  489. package/dist/data/diagnostics/ProblemFacet.cjs.map +1 -0
  490. package/dist/data/diagnostics/ProblemFacet.d.ts +9 -0
  491. package/dist/data/diagnostics/ProblemFacet.d.ts.map +1 -0
  492. package/dist/data/diagnostics/ProblemFacet.js +33 -0
  493. package/dist/data/diagnostics/ProblemFacet.js.map +1 -0
  494. package/dist/data/diagnostics/ProblemRow.cjs +62 -0
  495. package/dist/data/diagnostics/ProblemRow.cjs.map +1 -0
  496. package/dist/data/diagnostics/ProblemRow.d.ts +14 -0
  497. package/dist/data/diagnostics/ProblemRow.d.ts.map +1 -0
  498. package/dist/data/diagnostics/ProblemRow.js +62 -0
  499. package/dist/data/diagnostics/ProblemRow.js.map +1 -0
  500. package/dist/data/diagnostics/ProblemViewOptions.cjs +18 -0
  501. package/dist/data/diagnostics/ProblemViewOptions.cjs.map +1 -0
  502. package/dist/data/diagnostics/ProblemViewOptions.d.ts +6 -0
  503. package/dist/data/diagnostics/ProblemViewOptions.d.ts.map +1 -0
  504. package/dist/data/diagnostics/ProblemViewOptions.js +18 -0
  505. package/dist/data/diagnostics/ProblemViewOptions.js.map +1 -0
  506. package/dist/data/diagnostics/StackFrameRow.cjs +1 -1
  507. package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
  508. package/dist/data/diagnostics/StackFrameRow.js +1 -1
  509. package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
  510. package/dist/data/diagnostics/diagnostic-identity.cjs +14 -0
  511. package/dist/data/diagnostics/diagnostic-identity.cjs.map +1 -0
  512. package/dist/data/diagnostics/diagnostic-identity.d.ts +3 -0
  513. package/dist/data/diagnostics/diagnostic-identity.d.ts.map +1 -0
  514. package/dist/data/diagnostics/diagnostic-identity.js +14 -0
  515. package/dist/data/diagnostics/diagnostic-identity.js.map +1 -0
  516. package/dist/data/diagnostics/use-problem-expansion.cjs +16 -0
  517. package/dist/data/diagnostics/use-problem-expansion.cjs.map +1 -0
  518. package/dist/data/diagnostics/use-problem-expansion.d.ts +3 -0
  519. package/dist/data/diagnostics/use-problem-expansion.d.ts.map +1 -0
  520. package/dist/data/diagnostics/use-problem-expansion.js +16 -0
  521. package/dist/data/diagnostics/use-problem-expansion.js.map +1 -0
  522. package/dist/data/git/GitChangeList.cjs +9 -6
  523. package/dist/data/git/GitChangeList.cjs.map +1 -1
  524. package/dist/data/git/GitChangeList.d.ts +6 -0
  525. package/dist/data/git/GitChangeList.d.ts.map +1 -1
  526. package/dist/data/git/GitChangeList.js +9 -6
  527. package/dist/data/git/GitChangeList.js.map +1 -1
  528. package/dist/data/git/pickers/GitPickersDemo.d.ts.map +1 -1
  529. package/dist/data/git/pickers/ReferencePicker.cjs +1 -0
  530. package/dist/data/git/pickers/ReferencePicker.cjs.map +1 -1
  531. package/dist/data/git/pickers/ReferencePicker.js +1 -0
  532. package/dist/data/git/pickers/ReferencePicker.js.map +1 -1
  533. package/dist/data/lint/LintDetail.cjs +230 -189
  534. package/dist/data/lint/LintDetail.cjs.map +1 -1
  535. package/dist/data/lint/LintDetail.d.ts +25 -3
  536. package/dist/data/lint/LintDetail.d.ts.map +1 -1
  537. package/dist/data/lint/LintDetail.js +231 -192
  538. package/dist/data/lint/LintDetail.js.map +1 -1
  539. package/dist/data/lint/LintFilterBar.cjs +78 -83
  540. package/dist/data/lint/LintFilterBar.cjs.map +1 -1
  541. package/dist/data/lint/LintFilterBar.d.ts +23 -6
  542. package/dist/data/lint/LintFilterBar.d.ts.map +1 -1
  543. package/dist/data/lint/LintFilterBar.js +78 -85
  544. package/dist/data/lint/LintFilterBar.js.map +1 -1
  545. package/dist/data/lint/LintIgnoreMenu.cjs +59 -0
  546. package/dist/data/lint/LintIgnoreMenu.cjs.map +1 -0
  547. package/dist/data/lint/LintIgnoreMenu.d.ts +20 -0
  548. package/dist/data/lint/LintIgnoreMenu.d.ts.map +1 -0
  549. package/dist/data/lint/LintIgnoreMenu.js +58 -0
  550. package/dist/data/lint/LintIgnoreMenu.js.map +1 -0
  551. package/dist/data/lint/LintResults.cjs +59 -14
  552. package/dist/data/lint/LintResults.cjs.map +1 -1
  553. package/dist/data/lint/LintResults.d.ts +25 -1
  554. package/dist/data/lint/LintResults.d.ts.map +1 -1
  555. package/dist/data/lint/LintResults.fixtures.d.ts +19 -0
  556. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -1
  557. package/dist/data/lint/LintResults.js +60 -15
  558. package/dist/data/lint/LintResults.js.map +1 -1
  559. package/dist/data/lint/LintTable.cjs +156 -0
  560. package/dist/data/lint/LintTable.cjs.map +1 -0
  561. package/dist/data/lint/LintTable.d.ts +13 -0
  562. package/dist/data/lint/LintTable.d.ts.map +1 -0
  563. package/dist/data/lint/LintTable.js +156 -0
  564. package/dist/data/lint/LintTable.js.map +1 -0
  565. package/dist/data/lint/LintTreeNode.cjs +42 -19
  566. package/dist/data/lint/LintTreeNode.cjs.map +1 -1
  567. package/dist/data/lint/LintTreeNode.d.ts +7 -2
  568. package/dist/data/lint/LintTreeNode.d.ts.map +1 -1
  569. package/dist/data/lint/LintTreeNode.js +44 -21
  570. package/dist/data/lint/LintTreeNode.js.map +1 -1
  571. package/dist/data/lint/ViolationSnippet.cjs +113 -0
  572. package/dist/data/lint/ViolationSnippet.cjs.map +1 -0
  573. package/dist/data/lint/ViolationSnippet.d.ts +20 -0
  574. package/dist/data/lint/ViolationSnippet.d.ts.map +1 -0
  575. package/dist/data/lint/ViolationSnippet.js +112 -0
  576. package/dist/data/lint/ViolationSnippet.js.map +1 -0
  577. package/dist/data/lint/actions.cjs +44 -16
  578. package/dist/data/lint/actions.cjs.map +1 -1
  579. package/dist/data/lint/actions.d.ts +7 -3
  580. package/dist/data/lint/actions.d.ts.map +1 -1
  581. package/dist/data/lint/actions.js +44 -16
  582. package/dist/data/lint/actions.js.map +1 -1
  583. package/dist/data/lint/grouping.cjs +105 -8
  584. package/dist/data/lint/grouping.cjs.map +1 -1
  585. package/dist/data/lint/grouping.d.ts +21 -1
  586. package/dist/data/lint/grouping.d.ts.map +1 -1
  587. package/dist/data/lint/grouping.js +105 -10
  588. package/dist/data/lint/grouping.js.map +1 -1
  589. package/dist/data/lint/ignore-menu-items.cjs +18 -0
  590. package/dist/data/lint/ignore-menu-items.cjs.map +1 -0
  591. package/dist/data/lint/ignore-menu-items.d.ts +6 -0
  592. package/dist/data/lint/ignore-menu-items.d.ts.map +1 -0
  593. package/dist/data/lint/ignore-menu-items.js +17 -0
  594. package/dist/data/lint/ignore-menu-items.js.map +1 -0
  595. package/dist/data/lint/index.d.ts +7 -5
  596. package/dist/data/lint/index.d.ts.map +1 -1
  597. package/dist/data/lint/stats.cjs +19 -4
  598. package/dist/data/lint/stats.cjs.map +1 -1
  599. package/dist/data/lint/stats.d.ts +13 -3
  600. package/dist/data/lint/stats.d.ts.map +1 -1
  601. package/dist/data/lint/stats.js +17 -5
  602. package/dist/data/lint/stats.js.map +1 -1
  603. package/dist/data/lint/types.cjs +8 -0
  604. package/dist/data/lint/types.cjs.map +1 -1
  605. package/dist/data/lint/types.d.ts +47 -0
  606. package/dist/data/lint/types.d.ts.map +1 -1
  607. package/dist/data/lint/types.js +8 -1
  608. package/dist/data/lint/types.js.map +1 -1
  609. package/dist/data/lint/violation-menu-items.cjs +31 -0
  610. package/dist/data/lint/violation-menu-items.cjs.map +1 -0
  611. package/dist/data/lint/violation-menu-items.d.ts +12 -0
  612. package/dist/data/lint/violation-menu-items.d.ts.map +1 -0
  613. package/dist/data/lint/violation-menu-items.js +31 -0
  614. package/dist/data/lint/violation-menu-items.js.map +1 -0
  615. package/dist/data/markdown-source-blocks.cjs +38 -0
  616. package/dist/data/markdown-source-blocks.cjs.map +1 -0
  617. package/dist/data/markdown-source-blocks.d.ts +32 -0
  618. package/dist/data/markdown-source-blocks.d.ts.map +1 -0
  619. package/dist/data/markdown-source-blocks.js +35 -0
  620. package/dist/data/markdown-source-blocks.js.map +1 -0
  621. package/dist/data/test-runner/FilterFacet.cjs +52 -0
  622. package/dist/data/test-runner/FilterFacet.cjs.map +1 -0
  623. package/dist/data/test-runner/FilterFacet.d.ts +13 -0
  624. package/dist/data/test-runner/FilterFacet.d.ts.map +1 -0
  625. package/dist/data/test-runner/FilterFacet.js +52 -0
  626. package/dist/data/test-runner/FilterFacet.js.map +1 -0
  627. package/dist/data/test-runner/MatrixMarks.cjs +42 -40
  628. package/dist/data/test-runner/MatrixMarks.cjs.map +1 -1
  629. package/dist/data/test-runner/MatrixMarks.d.ts +20 -4
  630. package/dist/data/test-runner/MatrixMarks.d.ts.map +1 -1
  631. package/dist/data/test-runner/MatrixMarks.js +43 -42
  632. package/dist/data/test-runner/MatrixMarks.js.map +1 -1
  633. package/dist/data/test-runner/TestAttemptDetail.cjs +1 -1
  634. package/dist/data/test-runner/TestAttemptDetail.js +1 -1
  635. package/dist/data/test-runner/TestDetailPanel.cjs +11 -0
  636. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  637. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  638. package/dist/data/test-runner/TestDetailPanel.js +11 -0
  639. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  640. package/dist/data/test-runner/TestFilterBar.cjs +3 -44
  641. package/dist/data/test-runner/TestFilterBar.cjs.map +1 -1
  642. package/dist/data/test-runner/TestFilterBar.d.ts.map +1 -1
  643. package/dist/data/test-runner/TestFilterBar.js +3 -44
  644. package/dist/data/test-runner/TestFilterBar.js.map +1 -1
  645. package/dist/data/test-runner/TestRunner.cjs +3 -1
  646. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  647. package/dist/data/test-runner/TestRunner.d.ts +7 -1
  648. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  649. package/dist/data/test-runner/TestRunner.js +3 -1
  650. package/dist/data/test-runner/TestRunner.js.map +1 -1
  651. package/dist/data/test-runner/context.cjs.map +1 -1
  652. package/dist/data/test-runner/context.d.ts +3 -0
  653. package/dist/data/test-runner/context.d.ts.map +1 -1
  654. package/dist/data/test-runner/context.js.map +1 -1
  655. package/dist/data/test-runner/index.d.ts +2 -2
  656. package/dist/data/test-runner/index.d.ts.map +1 -1
  657. package/dist/data/test-runner/matrix-marks.cjs +2 -11
  658. package/dist/data/test-runner/matrix-marks.cjs.map +1 -1
  659. package/dist/data/test-runner/matrix-marks.d.ts +2 -4
  660. package/dist/data/test-runner/matrix-marks.d.ts.map +1 -1
  661. package/dist/data/test-runner/matrix-marks.js +3 -11
  662. package/dist/data/test-runner/matrix-marks.js.map +1 -1
  663. package/dist/data/test-runner/types.d.ts +2 -0
  664. package/dist/data/test-runner/types.d.ts.map +1 -1
  665. package/dist/data/timeseries-query.cjs +98 -2
  666. package/dist/data/timeseries-query.cjs.map +1 -1
  667. package/dist/data/timeseries-query.d.ts +31 -5
  668. package/dist/data/timeseries-query.d.ts.map +1 -1
  669. package/dist/data/timeseries-query.js +98 -3
  670. package/dist/data/timeseries-query.js.map +1 -1
  671. package/dist/data/timeseries-stream-provider.cjs +38 -0
  672. package/dist/data/timeseries-stream-provider.cjs.map +1 -0
  673. package/dist/data/timeseries-stream-provider.d.ts +26 -0
  674. package/dist/data/timeseries-stream-provider.d.ts.map +1 -0
  675. package/dist/data/timeseries-stream-provider.js +38 -0
  676. package/dist/data/timeseries-stream-provider.js.map +1 -0
  677. package/dist/data/timeseries-stream.cjs +304 -0
  678. package/dist/data/timeseries-stream.cjs.map +1 -0
  679. package/dist/data/timeseries-stream.d.ts +81 -0
  680. package/dist/data/timeseries-stream.d.ts.map +1 -0
  681. package/dist/data/timeseries-stream.fixtures.d.ts +36 -0
  682. package/dist/data/timeseries-stream.fixtures.d.ts.map +1 -0
  683. package/dist/data/timeseries-stream.js +296 -0
  684. package/dist/data/timeseries-stream.js.map +1 -0
  685. package/dist/data/token-style.cjs +13 -0
  686. package/dist/data/token-style.cjs.map +1 -0
  687. package/dist/data/token-style.d.ts +4 -0
  688. package/dist/data/token-style.d.ts.map +1 -0
  689. package/dist/data/token-style.js +13 -0
  690. package/dist/data/token-style.js.map +1 -0
  691. package/dist/data/traces/ProcessTraceDetail.cjs +1 -1
  692. package/dist/data/traces/ProcessTraceDetail.js +1 -1
  693. package/dist/data/traces/index.d.ts +1 -1
  694. package/dist/data/traces/index.d.ts.map +1 -1
  695. package/dist/data/use-data-table-virtual.d.ts +1 -1
  696. package/dist/data/version-info.cjs +3 -3
  697. package/dist/data/version-info.js +3 -3
  698. package/dist/data/workload-panel/MemoryStack.cjs +49 -0
  699. package/dist/data/workload-panel/MemoryStack.cjs.map +1 -0
  700. package/dist/data/workload-panel/MemoryStack.d.ts +11 -0
  701. package/dist/data/workload-panel/MemoryStack.d.ts.map +1 -0
  702. package/dist/data/workload-panel/MemoryStack.js +48 -0
  703. package/dist/data/workload-panel/MemoryStack.js.map +1 -0
  704. package/dist/data/workload-panel/Metrics.cjs +197 -0
  705. package/dist/data/workload-panel/Metrics.cjs.map +1 -0
  706. package/dist/data/workload-panel/Metrics.d.ts +11 -0
  707. package/dist/data/workload-panel/Metrics.d.ts.map +1 -0
  708. package/dist/data/workload-panel/Metrics.js +196 -0
  709. package/dist/data/workload-panel/Metrics.js.map +1 -0
  710. package/dist/data/workload-panel/WorkloadPanel.cjs +66 -0
  711. package/dist/data/workload-panel/WorkloadPanel.cjs.map +1 -0
  712. package/dist/data/workload-panel/WorkloadPanel.d.ts +3 -0
  713. package/dist/data/workload-panel/WorkloadPanel.d.ts.map +1 -0
  714. package/dist/data/workload-panel/WorkloadPanel.js +66 -0
  715. package/dist/data/workload-panel/WorkloadPanel.js.map +1 -0
  716. package/dist/data/workload-panel/fixtures.d.ts +60 -0
  717. package/dist/data/workload-panel/fixtures.d.ts.map +1 -0
  718. package/dist/data/workload-panel/model.cjs +137 -0
  719. package/dist/data/workload-panel/model.cjs.map +1 -0
  720. package/dist/data/workload-panel/model.d.ts +53 -0
  721. package/dist/data/workload-panel/model.d.ts.map +1 -0
  722. package/dist/data/workload-panel/model.js +133 -0
  723. package/dist/data/workload-panel/model.js.map +1 -0
  724. package/dist/data/workload-panel/types.d.ts +56 -0
  725. package/dist/data/workload-panel/types.d.ts.map +1 -0
  726. package/dist/data.cjs +58 -7
  727. package/dist/data.d.ts +9 -1
  728. package/dist/data.d.ts.map +1 -1
  729. package/dist/data.js +29 -12
  730. package/dist/file-findings/AnnotatedCode.cjs +243 -0
  731. package/dist/file-findings/AnnotatedCode.cjs.map +1 -0
  732. package/dist/file-findings/AnnotatedCode.d.ts +30 -0
  733. package/dist/file-findings/AnnotatedCode.d.ts.map +1 -0
  734. package/dist/file-findings/AnnotatedCode.js +243 -0
  735. package/dist/file-findings/AnnotatedCode.js.map +1 -0
  736. package/dist/file-findings/FileFindingsView.cjs +213 -0
  737. package/dist/file-findings/FileFindingsView.cjs.map +1 -0
  738. package/dist/file-findings/FileFindingsView.d.ts +35 -0
  739. package/dist/file-findings/FileFindingsView.d.ts.map +1 -0
  740. package/dist/file-findings/FileFindingsView.js +213 -0
  741. package/dist/file-findings/FileFindingsView.js.map +1 -0
  742. package/dist/file-findings/LazyAnnotatedCode.cjs +22 -0
  743. package/dist/file-findings/LazyAnnotatedCode.cjs.map +1 -0
  744. package/dist/file-findings/LazyAnnotatedCode.d.ts +5 -0
  745. package/dist/file-findings/LazyAnnotatedCode.d.ts.map +1 -0
  746. package/dist/file-findings/LazyAnnotatedCode.js +22 -0
  747. package/dist/file-findings/LazyAnnotatedCode.js.map +1 -0
  748. package/dist/file-findings/adapters.cjs +155 -0
  749. package/dist/file-findings/adapters.cjs.map +1 -0
  750. package/dist/file-findings/adapters.d.ts +24 -0
  751. package/dist/file-findings/adapters.d.ts.map +1 -0
  752. package/dist/file-findings/adapters.js +153 -0
  753. package/dist/file-findings/adapters.js.map +1 -0
  754. package/dist/file-findings/file-review/CommentDraft.cjs +97 -0
  755. package/dist/file-findings/file-review/CommentDraft.cjs.map +1 -0
  756. package/dist/file-findings/file-review/CommentDraft.d.ts +25 -0
  757. package/dist/file-findings/file-review/CommentDraft.d.ts.map +1 -0
  758. package/dist/file-findings/file-review/CommentDraft.js +97 -0
  759. package/dist/file-findings/file-review/CommentDraft.js.map +1 -0
  760. package/dist/file-findings/file-review/FileReview.cjs +863 -0
  761. package/dist/file-findings/file-review/FileReview.cjs.map +1 -0
  762. package/dist/file-findings/file-review/FileReview.d.ts +79 -0
  763. package/dist/file-findings/file-review/FileReview.d.ts.map +1 -0
  764. package/dist/file-findings/file-review/FileReview.fixtures.d.ts +25 -0
  765. package/dist/file-findings/file-review/FileReview.fixtures.d.ts.map +1 -0
  766. package/dist/file-findings/file-review/FileReview.js +863 -0
  767. package/dist/file-findings/file-review/FileReview.js.map +1 -0
  768. package/dist/file-findings/file-review/InlineAuthors.cjs +77 -0
  769. package/dist/file-findings/file-review/InlineAuthors.cjs.map +1 -0
  770. package/dist/file-findings/file-review/InlineAuthors.d.ts +9 -0
  771. package/dist/file-findings/file-review/InlineAuthors.d.ts.map +1 -0
  772. package/dist/file-findings/file-review/InlineAuthors.js +77 -0
  773. package/dist/file-findings/file-review/InlineAuthors.js.map +1 -0
  774. package/dist/file-findings/file-review/InlineThread.cjs +77 -0
  775. package/dist/file-findings/file-review/InlineThread.cjs.map +1 -0
  776. package/dist/file-findings/file-review/InlineThread.d.ts +27 -0
  777. package/dist/file-findings/file-review/InlineThread.d.ts.map +1 -0
  778. package/dist/file-findings/file-review/InlineThread.js +77 -0
  779. package/dist/file-findings/file-review/InlineThread.js.map +1 -0
  780. package/dist/file-findings/file-review/ProblemsList.cjs +164 -0
  781. package/dist/file-findings/file-review/ProblemsList.cjs.map +1 -0
  782. package/dist/file-findings/file-review/ProblemsList.d.ts +15 -0
  783. package/dist/file-findings/file-review/ProblemsList.d.ts.map +1 -0
  784. package/dist/file-findings/file-review/ProblemsList.js +164 -0
  785. package/dist/file-findings/file-review/ProblemsList.js.map +1 -0
  786. package/dist/file-findings/file-review/SourceView.cjs +179 -0
  787. package/dist/file-findings/file-review/SourceView.cjs.map +1 -0
  788. package/dist/file-findings/file-review/SourceView.d.ts +29 -0
  789. package/dist/file-findings/file-review/SourceView.d.ts.map +1 -0
  790. package/dist/file-findings/file-review/SourceView.js +179 -0
  791. package/dist/file-findings/file-review/SourceView.js.map +1 -0
  792. package/dist/file-findings/file-review/blame.cjs +35 -0
  793. package/dist/file-findings/file-review/blame.cjs.map +1 -0
  794. package/dist/file-findings/file-review/blame.d.ts +28 -0
  795. package/dist/file-findings/file-review/blame.d.ts.map +1 -0
  796. package/dist/file-findings/file-review/blame.js +33 -0
  797. package/dist/file-findings/file-review/blame.js.map +1 -0
  798. package/dist/file-findings/file-review/geometry.cjs +101 -0
  799. package/dist/file-findings/file-review/geometry.cjs.map +1 -0
  800. package/dist/file-findings/file-review/geometry.d.ts +45 -0
  801. package/dist/file-findings/file-review/geometry.d.ts.map +1 -0
  802. package/dist/file-findings/file-review/geometry.js +98 -0
  803. package/dist/file-findings/file-review/geometry.js.map +1 -0
  804. package/dist/file-findings/file-review/hooks.cjs +101 -0
  805. package/dist/file-findings/file-review/hooks.cjs.map +1 -0
  806. package/dist/file-findings/file-review/hooks.d.ts +22 -0
  807. package/dist/file-findings/file-review/hooks.d.ts.map +1 -0
  808. package/dist/file-findings/file-review/hooks.js +99 -0
  809. package/dist/file-findings/file-review/hooks.js.map +1 -0
  810. package/dist/file-findings/file-review/marks.cjs +52 -0
  811. package/dist/file-findings/file-review/marks.cjs.map +1 -0
  812. package/dist/file-findings/file-review/marks.d.ts +23 -0
  813. package/dist/file-findings/file-review/marks.d.ts.map +1 -0
  814. package/dist/file-findings/file-review/marks.js +47 -0
  815. package/dist/file-findings/file-review/marks.js.map +1 -0
  816. package/dist/file-findings/file-review/problem-filters.cjs +14 -0
  817. package/dist/file-findings/file-review/problem-filters.cjs.map +1 -0
  818. package/dist/file-findings/file-review/problem-filters.d.ts +10 -0
  819. package/dist/file-findings/file-review/problem-filters.d.ts.map +1 -0
  820. package/dist/file-findings/file-review/problem-filters.js +13 -0
  821. package/dist/file-findings/file-review/problem-filters.js.map +1 -0
  822. package/dist/file-findings/file-review/quote-anchor.cjs +234 -0
  823. package/dist/file-findings/file-review/quote-anchor.cjs.map +1 -0
  824. package/dist/file-findings/file-review/quote-anchor.d.ts +54 -0
  825. package/dist/file-findings/file-review/quote-anchor.d.ts.map +1 -0
  826. package/dist/file-findings/file-review/quote-anchor.js +226 -0
  827. package/dist/file-findings/file-review/quote-anchor.js.map +1 -0
  828. package/dist/file-findings/file-review/source-anchor.cjs +104 -0
  829. package/dist/file-findings/file-review/source-anchor.cjs.map +1 -0
  830. package/dist/file-findings/file-review/source-anchor.d.ts +27 -0
  831. package/dist/file-findings/file-review/source-anchor.d.ts.map +1 -0
  832. package/dist/file-findings/file-review/source-anchor.js +99 -0
  833. package/dist/file-findings/file-review/source-anchor.js.map +1 -0
  834. package/dist/file-findings/file-review/source-marks.cjs +71 -0
  835. package/dist/file-findings/file-review/source-marks.cjs.map +1 -0
  836. package/dist/file-findings/file-review/source-marks.d.ts +27 -0
  837. package/dist/file-findings/file-review/source-marks.d.ts.map +1 -0
  838. package/dist/file-findings/file-review/source-marks.js +68 -0
  839. package/dist/file-findings/file-review/source-marks.js.map +1 -0
  840. package/dist/file-findings/findings-comments.cjs +136 -0
  841. package/dist/file-findings/findings-comments.cjs.map +1 -0
  842. package/dist/file-findings/findings-comments.d.ts +28 -0
  843. package/dist/file-findings/findings-comments.d.ts.map +1 -0
  844. package/dist/file-findings/findings-comments.js +131 -0
  845. package/dist/file-findings/findings-comments.js.map +1 -0
  846. package/dist/file-findings/findings-languages.cjs +53 -0
  847. package/dist/file-findings/findings-languages.cjs.map +1 -0
  848. package/dist/file-findings/findings-languages.d.ts +11 -0
  849. package/dist/file-findings/findings-languages.d.ts.map +1 -0
  850. package/dist/file-findings/findings-languages.js +53 -0
  851. package/dist/file-findings/findings-languages.js.map +1 -0
  852. package/dist/file-findings/mdx-source.cjs +48 -0
  853. package/dist/file-findings/mdx-source.cjs.map +1 -0
  854. package/dist/file-findings/mdx-source.d.ts +7 -0
  855. package/dist/file-findings/mdx-source.d.ts.map +1 -0
  856. package/dist/file-findings/mdx-source.js +48 -0
  857. package/dist/file-findings/mdx-source.js.map +1 -0
  858. package/dist/file-findings/monaco-language.cjs +73 -0
  859. package/dist/file-findings/monaco-language.cjs.map +1 -0
  860. package/dist/file-findings/monaco-language.d.ts +11 -0
  861. package/dist/file-findings/monaco-language.d.ts.map +1 -0
  862. package/dist/file-findings/monaco-language.js +72 -0
  863. package/dist/file-findings/monaco-language.js.map +1 -0
  864. package/dist/file-findings/severity-counts.cjs +20 -0
  865. package/dist/file-findings/severity-counts.cjs.map +1 -0
  866. package/dist/file-findings/severity-counts.d.ts +5 -0
  867. package/dist/file-findings/severity-counts.d.ts.map +1 -0
  868. package/dist/file-findings/severity-counts.js +19 -0
  869. package/dist/file-findings/severity-counts.js.map +1 -0
  870. package/dist/file-findings/types.cjs +12 -0
  871. package/dist/file-findings/types.cjs.map +1 -0
  872. package/dist/file-findings/types.d.ts +43 -0
  873. package/dist/file-findings/types.d.ts.map +1 -0
  874. package/dist/file-findings/types.js +11 -0
  875. package/dist/file-findings/types.js.map +1 -0
  876. package/dist/file-findings.cjs +47 -0
  877. package/dist/file-findings.d.ts +15 -0
  878. package/dist/file-findings.d.ts.map +1 -0
  879. package/dist/file-findings.js +15 -0
  880. package/dist/hooks/event-hub.cjs +22 -8
  881. package/dist/hooks/event-hub.cjs.map +1 -1
  882. package/dist/hooks/event-hub.d.ts.map +1 -1
  883. package/dist/hooks/event-hub.js +22 -8
  884. package/dist/hooks/event-hub.js.map +1 -1
  885. package/dist/icons/components/UiBrowser.cjs +51 -0
  886. package/dist/icons/components/UiBrowser.cjs.map +1 -0
  887. package/dist/icons/components/UiBrowser.d.ts +15 -0
  888. package/dist/icons/components/UiBrowser.d.ts.map +1 -0
  889. package/dist/icons/components/UiBrowser.js +48 -0
  890. package/dist/icons/components/UiBrowser.js.map +1 -0
  891. package/dist/icons/components/UiCreditCard.cjs +51 -0
  892. package/dist/icons/components/UiCreditCard.cjs.map +1 -0
  893. package/dist/icons/components/UiCreditCard.d.ts +15 -0
  894. package/dist/icons/components/UiCreditCard.d.ts.map +1 -0
  895. package/dist/icons/components/UiCreditCard.js +48 -0
  896. package/dist/icons/components/UiCreditCard.js.map +1 -0
  897. package/dist/icons/components/UiShoppingCart.cjs +51 -0
  898. package/dist/icons/components/UiShoppingCart.cjs.map +1 -0
  899. package/dist/icons/components/UiShoppingCart.d.ts +15 -0
  900. package/dist/icons/components/UiShoppingCart.d.ts.map +1 -0
  901. package/dist/icons/components/UiShoppingCart.js +48 -0
  902. package/dist/icons/components/UiShoppingCart.js.map +1 -0
  903. package/dist/icons/index.d.ts +6 -0
  904. package/dist/icons/index.d.ts.map +1 -1
  905. package/dist/icons/registry.cjs +6 -0
  906. package/dist/icons/registry.cjs.map +1 -1
  907. package/dist/icons/registry.d.ts.map +1 -1
  908. package/dist/icons/registry.js +6 -0
  909. package/dist/icons/registry.js.map +1 -1
  910. package/dist/icons.cjs +9 -0
  911. package/dist/icons.js +4 -1
  912. package/dist/index.cjs +76 -8
  913. package/dist/index.d.ts +1 -0
  914. package/dist/index.d.ts.map +1 -1
  915. package/dist/index.js +37 -14
  916. package/dist/layout/AppShell.cjs +37 -21
  917. package/dist/layout/AppShell.cjs.map +1 -1
  918. package/dist/layout/AppShell.d.ts +13 -2
  919. package/dist/layout/AppShell.d.ts.map +1 -1
  920. package/dist/layout/AppShell.js +37 -21
  921. package/dist/layout/AppShell.js.map +1 -1
  922. package/dist/layout/AppShell.nav.cjs +7 -6
  923. package/dist/layout/AppShell.nav.cjs.map +1 -1
  924. package/dist/layout/AppShell.nav.d.ts.map +1 -1
  925. package/dist/layout/AppShell.nav.js +7 -6
  926. package/dist/layout/AppShell.nav.js.map +1 -1
  927. package/dist/layout/SplitPane.cjs +16 -6
  928. package/dist/layout/SplitPane.cjs.map +1 -1
  929. package/dist/layout/SplitPane.d.ts +12 -2
  930. package/dist/layout/SplitPane.d.ts.map +1 -1
  931. package/dist/layout/SplitPane.js +16 -6
  932. package/dist/layout/SplitPane.js.map +1 -1
  933. package/dist/layout/Workspace.cjs +37 -33
  934. package/dist/layout/Workspace.cjs.map +1 -1
  935. package/dist/layout/Workspace.d.ts.map +1 -1
  936. package/dist/layout/Workspace.js +37 -33
  937. package/dist/layout/Workspace.js.map +1 -1
  938. package/dist/layout/Workspace.regions.cjs +3 -3
  939. package/dist/layout/Workspace.regions.cjs.map +1 -1
  940. package/dist/layout/Workspace.regions.js +3 -3
  941. package/dist/layout/Workspace.regions.js.map +1 -1
  942. package/dist/lib/breakpoints.cjs +102 -0
  943. package/dist/lib/breakpoints.cjs.map +1 -0
  944. package/dist/lib/breakpoints.d.ts +36 -0
  945. package/dist/lib/breakpoints.d.ts.map +1 -0
  946. package/dist/lib/breakpoints.js +99 -0
  947. package/dist/lib/breakpoints.js.map +1 -0
  948. package/dist/lib/combobox.cjs +2 -1
  949. package/dist/lib/combobox.cjs.map +1 -1
  950. package/dist/lib/combobox.d.ts +1 -1
  951. package/dist/lib/combobox.d.ts.map +1 -1
  952. package/dist/lib/combobox.js +2 -1
  953. package/dist/lib/combobox.js.map +1 -1
  954. package/dist/lib/path-tree.cjs +21 -0
  955. package/dist/lib/path-tree.cjs.map +1 -1
  956. package/dist/lib/path-tree.d.ts +15 -0
  957. package/dist/lib/path-tree.d.ts.map +1 -1
  958. package/dist/lib/path-tree.js +21 -1
  959. package/dist/lib/path-tree.js.map +1 -1
  960. package/dist/overlay/Modal.cjs +2 -1
  961. package/dist/overlay/Modal.cjs.map +1 -1
  962. package/dist/overlay/Modal.d.ts.map +1 -1
  963. package/dist/overlay/Modal.js +2 -1
  964. package/dist/overlay/Modal.js.map +1 -1
  965. package/dist/overlay/dropdownMenuContext.d.ts +1 -1
  966. package/dist/profiles/editor/profileEditor.cjs +1 -1
  967. package/dist/profiles/editor/profileEditor.cjs.map +1 -1
  968. package/dist/profiles/editor/profileEditor.js +1 -1
  969. package/dist/profiles/editor/profileEditor.js.map +1 -1
  970. package/dist/profiles/editor/profileEditorSections.cjs +2 -2
  971. package/dist/profiles/editor/profileEditorSections.cjs.map +1 -1
  972. package/dist/profiles/editor/profileEditorSections.js +2 -2
  973. package/dist/profiles/editor/profileEditorSections.js.map +1 -1
  974. package/dist/profiles/query/prometheusResults.cjs +24 -36
  975. package/dist/profiles/query/prometheusResults.cjs.map +1 -1
  976. package/dist/profiles/query/prometheusResults.d.ts.map +1 -1
  977. package/dist/profiles/query/prometheusResults.js +24 -36
  978. package/dist/profiles/query/prometheusResults.js.map +1 -1
  979. package/dist/rpc/CommandForm.cjs +1 -1
  980. package/dist/rpc/CommandForm.cjs.map +1 -1
  981. package/dist/rpc/CommandForm.js +1 -1
  982. package/dist/rpc/CommandForm.js.map +1 -1
  983. package/dist/rpc/classify.cjs +1 -1
  984. package/dist/rpc/classify.cjs.map +1 -1
  985. package/dist/rpc/classify.d.ts.map +1 -1
  986. package/dist/rpc/classify.js +1 -1
  987. package/dist/rpc/classify.js.map +1 -1
  988. package/dist/rpc/useOperations.d.ts +24 -24
  989. package/dist/rpc.cjs +0 -2
  990. package/dist/rpc.d.ts +0 -1
  991. package/dist/rpc.d.ts.map +1 -1
  992. package/dist/rpc.js +1 -2
  993. package/dist/styles.css +1 -1
  994. package/dist/utils.cjs +6 -0
  995. package/dist/utils.d.ts +2 -1
  996. package/dist/utils.d.ts.map +1 -1
  997. package/dist/utils.js +3 -2
  998. package/package.json +9 -3
  999. package/schemas/json-schema-form.schema.json +9 -1
@@ -0,0 +1,96 @@
1
+ const require_UiQuestion = require("../icons/components/UiQuestion.cjs");
2
+ const require_use_prompts = require("../hooks/use-prompts.cjs");
3
+ const require_Icon = require("./Icon.cjs");
4
+ const require_button = require("../components/button.cjs");
5
+ const require_PromptDialog = require("./PromptDialog.cjs");
6
+ let react = require("react");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ // src/data/TaskPrompts.tsx
9
+ var MAX_INLINE_OPTIONS = 4;
10
+ function inlineOptions(prompt) {
11
+ const entries = Object.entries(prompt.schema.properties ?? {});
12
+ if (entries.length !== 1) return null;
13
+ const [field, property] = entries[0];
14
+ const values = property.enum;
15
+ if (property.type !== "string" || !values || values.length === 0 || values.length > MAX_INLINE_OPTIONS) return null;
16
+ const labels = property["x-enum-labels"] ?? {};
17
+ return {
18
+ field,
19
+ options: values.map((value) => ({
20
+ key: String(value),
21
+ label: labels[String(value)] ?? String(value)
22
+ }))
23
+ };
24
+ }
25
+ function TaskPrompts({ prompts, basePath }) {
26
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
27
+ className: "mt-1 space-y-1",
28
+ onClick: (event) => event.stopPropagation(),
29
+ children: prompts.map((prompt) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaskPrompt, {
30
+ prompt,
31
+ basePath
32
+ }, prompt.id))
33
+ });
34
+ }
35
+ function TaskPrompt({ prompt, basePath }) {
36
+ const [busy, setBusy] = (0, react.useState)(null);
37
+ const [error, setError] = (0, react.useState)("");
38
+ const [formOpen, setFormOpen] = (0, react.useState)(false);
39
+ const inline = inlineOptions(prompt);
40
+ const choose = async (field, option) => {
41
+ setBusy(option.key);
42
+ setError("");
43
+ try {
44
+ await require_use_prompts.answerPrompt(basePath, prompt.id, { values: { [field]: option.key } });
45
+ } catch (cause) {
46
+ setError(cause instanceof Error ? cause.message : String(cause));
47
+ } finally {
48
+ setBusy(null);
49
+ }
50
+ };
51
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
52
+ className: "flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-2 py-1.5",
53
+ children: [
54
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Icon.Icon, {
55
+ icon: require_UiQuestion.UiQuestion,
56
+ className: "shrink-0 text-amber-600 dark:text-amber-400"
57
+ }),
58
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
59
+ className: "min-w-0 flex-1 text-xs font-medium",
60
+ children: prompt.title
61
+ }),
62
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
63
+ className: "flex shrink-0 flex-wrap items-center gap-1",
64
+ children: inline ? inline.options.map((option, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
65
+ type: "button",
66
+ size: "sm",
67
+ variant: index === 0 ? "default" : "outline",
68
+ loading: busy === option.key,
69
+ disabled: busy !== null,
70
+ onClick: () => void choose(inline.field, option),
71
+ children: option.label
72
+ }, option.key)) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_button.Button, {
73
+ type: "button",
74
+ size: "sm",
75
+ "aria-label": `Answer ${prompt.title}`,
76
+ onClick: () => setFormOpen(true),
77
+ children: "Answer"
78
+ })
79
+ }),
80
+ error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
81
+ role: "alert",
82
+ className: "w-full text-xs text-red-600",
83
+ children: error
84
+ }),
85
+ formOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_PromptDialog.PromptDialog, {
86
+ prompt,
87
+ basePath,
88
+ open: true,
89
+ onClose: () => setFormOpen(false)
90
+ })
91
+ ]
92
+ });
93
+ }
94
+ exports.TaskPrompts = TaskPrompts;
95
+
96
+ //# sourceMappingURL=TaskPrompts.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPrompts.cjs","names":["useState","answerPrompt","Icon","UiQuestion","Button","PromptDialog"],"sources":["../../src/data/TaskPrompts.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Button } from \"../components/button\";\nimport { answerPrompt, type PromptSnapshot } from \"../hooks/use-prompts\";\nimport { UiQuestion } from \"../icons\";\nimport { Icon } from \"./Icon\";\nimport { PromptDialog } from \"./PromptDialog\";\n\n// TaskPrompts renders the questions a running task is blocked on (the Go side\n// lists them on TaskSnapshot.prompts). A single-choice prompt with a few options\n// is answered inline with one button per option; anything else opens the\n// prompt's JSON Schema form in a PromptDialog.\n\nconst MAX_INLINE_OPTIONS = 4;\n\ninterface PromptOption {\n key: string;\n label: string;\n}\n\n// inlineOptions returns the options of a prompt whose schema is a single\n// required enum field (clicky's SelectSchema), or null when it needs the form.\nfunction inlineOptions(prompt: PromptSnapshot): { field: string; options: PromptOption[] } | null {\n const entries = Object.entries(prompt.schema.properties ?? {});\n if (entries.length !== 1) return null;\n const [field, property] = entries[0]!;\n const values = property.enum;\n if (property.type !== \"string\" || !values || values.length === 0 || values.length > MAX_INLINE_OPTIONS) return null;\n const labels = property[\"x-enum-labels\"] ?? {};\n return {\n field,\n options: values.map((value) => ({ key: String(value), label: labels[String(value)] ?? String(value) })),\n };\n}\n\nexport function TaskPrompts({ prompts, basePath }: { prompts: PromptSnapshot[]; basePath: string }) {\n return (\n <div className=\"mt-1 space-y-1\" onClick={(event) => event.stopPropagation()}>\n {prompts.map((prompt) => (\n <TaskPrompt key={prompt.id} prompt={prompt} basePath={basePath} />\n ))}\n </div>\n );\n}\n\nfunction TaskPrompt({ prompt, basePath }: { prompt: PromptSnapshot; basePath: string }) {\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState(\"\");\n const [formOpen, setFormOpen] = useState(false);\n const inline = inlineOptions(prompt);\n\n const choose = async (field: string, option: PromptOption) => {\n setBusy(option.key);\n setError(\"\");\n try {\n await answerPrompt(basePath, prompt.id, { values: { [field]: option.key } });\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause));\n } finally {\n setBusy(null);\n }\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-2 py-1.5\">\n <Icon icon={UiQuestion} className=\"shrink-0 text-amber-600 dark:text-amber-400\" />\n <span className=\"min-w-0 flex-1 text-xs font-medium\">{prompt.title}</span>\n <div className=\"flex shrink-0 flex-wrap items-center gap-1\">\n {inline ? (\n inline.options.map((option, index) => (\n <Button\n key={option.key}\n type=\"button\"\n size=\"sm\"\n variant={index === 0 ? \"default\" : \"outline\"}\n loading={busy === option.key}\n disabled={busy !== null}\n onClick={() => void choose(inline.field, option)}\n >\n {option.label}\n </Button>\n ))\n ) : (\n <Button type=\"button\" size=\"sm\" aria-label={`Answer ${prompt.title}`} onClick={() => setFormOpen(true)}>\n Answer\n </Button>\n )}\n </div>\n {error && (\n <span role=\"alert\" className=\"w-full text-xs text-red-600\">\n {error}\n </span>\n )}\n {formOpen && (\n <PromptDialog prompt={prompt} basePath={basePath} open={true} onClose={() => setFormOpen(false)} />\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAYA,IAAM,qBAAqB;AAS3B,SAAS,cAAc,QAA2E;CAChG,MAAM,UAAU,OAAO,QAAQ,OAAO,OAAO,cAAc,CAAC,CAAC;CAC7D,IAAI,QAAQ,WAAW,GAAG,OAAO;CACjC,MAAM,CAAC,OAAO,YAAY,QAAQ;CAClC,MAAM,SAAS,SAAS;CACxB,IAAI,SAAS,SAAS,YAAY,CAAC,UAAU,OAAO,WAAW,KAAK,OAAO,SAAS,oBAAoB,OAAO;CAC/G,MAAM,SAAS,SAAS,oBAAoB,CAAC;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,WAAW;GAAE,KAAK,OAAO,KAAK;GAAG,OAAO,OAAO,OAAO,KAAK,MAAM,OAAO,KAAK;EAAE,EAAE;CACxG;AACF;AAEA,SAAgB,YAAY,EAAE,SAAS,YAA6D;CAClG,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EAAiB,UAAU,UAAU,MAAM,gBAAgB;EACvE,UAAA,QAAQ,KAAK,WACZ,iBAAA,GAAA,kBAAA,IAAA,CAAC,YAAD;GAAoC;GAAkB;EAAW,GAAhD,OAAO,EAAyC,CAClE;CACE,CAAA;AAET;AAEA,SAAS,WAAW,EAAE,QAAQ,YAA0D;CACtF,MAAM,CAAC,MAAM,YAAA,GAAWA,MAAAA,SAAAA,CAAwB,IAAI;CACpD,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,CAAS,EAAE;CACrC,MAAM,CAAC,UAAU,gBAAA,GAAeA,MAAAA,SAAAA,CAAS,KAAK;CAC9C,MAAM,SAAS,cAAc,MAAM;CAEnC,MAAM,SAAS,OAAO,OAAe,WAAyB;EAC5D,QAAQ,OAAO,GAAG;EAClB,SAAS,EAAE;EACX,IAAI;GACF,MAAMC,oBAAAA,aAAa,UAAU,OAAO,IAAI,EAAE,QAAQ,GAAG,QAAQ,OAAO,IAAI,EAAE,CAAC;EAC7E,SAAS,OAAO;GACd,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;EACjE,UAAU;GACR,QAAQ,IAAI;EACd;CACF;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,MAAD;IAAM,MAAMC,mBAAAA;IAAY,WAAU;GAA+C,CAAA;GACjF,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAU;IAAsC,UAAA,OAAO;GAAY,CAAA;GACzE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IACZ,UAAA,SACC,OAAO,QAAQ,KAAK,QAAQ,UAC1B,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;KAEE,MAAK;KACL,MAAK;KACL,SAAS,UAAU,IAAI,YAAY;KACnC,SAAS,SAAS,OAAO;KACzB,UAAU,SAAS;KACnB,eAAe,KAAK,OAAO,OAAO,OAAO,MAAM;KAE9C,UAAA,OAAO;IACF,GATD,OAAO,GASN,CACT,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,QAAD;KAAQ,MAAK;KAAS,MAAK;KAAK,cAAY,UAAU,OAAO;KAAS,eAAe,YAAY,IAAI;KAAG,UAAA;IAEhG,CAAA;GAEP,CAAA;GACJ,SACC,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,MAAK;IAAQ,WAAU;IAC1B,UAAA;GACG,CAAA;GAEP,YACC,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,cAAD;IAAsB;IAAkB;IAAU,MAAM;IAAM,eAAe,YAAY,KAAK;GAAI,CAAA;EAEjG;;AAET"}
@@ -0,0 +1,6 @@
1
+ import { PromptSnapshot } from '../hooks/use-prompts.js';
2
+ export declare function TaskPrompts({ prompts, basePath }: {
3
+ prompts: PromptSnapshot[];
4
+ basePath: string;
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=TaskPrompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPrompts.d.ts","sourceRoot":"","sources":["../../src/data/TaskPrompts.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgCzE,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAQjG"}
@@ -0,0 +1,96 @@
1
+ import { UiQuestion } from "../icons/components/UiQuestion.js";
2
+ import { answerPrompt } from "../hooks/use-prompts.js";
3
+ import { Icon } from "./Icon.js";
4
+ import { Button } from "../components/button.js";
5
+ import { PromptDialog } from "./PromptDialog.js";
6
+ import { useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ // src/data/TaskPrompts.tsx
9
+ var MAX_INLINE_OPTIONS = 4;
10
+ function inlineOptions(prompt) {
11
+ const entries = Object.entries(prompt.schema.properties ?? {});
12
+ if (entries.length !== 1) return null;
13
+ const [field, property] = entries[0];
14
+ const values = property.enum;
15
+ if (property.type !== "string" || !values || values.length === 0 || values.length > MAX_INLINE_OPTIONS) return null;
16
+ const labels = property["x-enum-labels"] ?? {};
17
+ return {
18
+ field,
19
+ options: values.map((value) => ({
20
+ key: String(value),
21
+ label: labels[String(value)] ?? String(value)
22
+ }))
23
+ };
24
+ }
25
+ function TaskPrompts({ prompts, basePath }) {
26
+ return /* @__PURE__ */ jsx("div", {
27
+ className: "mt-1 space-y-1",
28
+ onClick: (event) => event.stopPropagation(),
29
+ children: prompts.map((prompt) => /* @__PURE__ */ jsx(TaskPrompt, {
30
+ prompt,
31
+ basePath
32
+ }, prompt.id))
33
+ });
34
+ }
35
+ function TaskPrompt({ prompt, basePath }) {
36
+ const [busy, setBusy] = useState(null);
37
+ const [error, setError] = useState("");
38
+ const [formOpen, setFormOpen] = useState(false);
39
+ const inline = inlineOptions(prompt);
40
+ const choose = async (field, option) => {
41
+ setBusy(option.key);
42
+ setError("");
43
+ try {
44
+ await answerPrompt(basePath, prompt.id, { values: { [field]: option.key } });
45
+ } catch (cause) {
46
+ setError(cause instanceof Error ? cause.message : String(cause));
47
+ } finally {
48
+ setBusy(null);
49
+ }
50
+ };
51
+ return /* @__PURE__ */ jsxs("div", {
52
+ className: "flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-2 py-1.5",
53
+ children: [
54
+ /* @__PURE__ */ jsx(Icon, {
55
+ icon: UiQuestion,
56
+ className: "shrink-0 text-amber-600 dark:text-amber-400"
57
+ }),
58
+ /* @__PURE__ */ jsx("span", {
59
+ className: "min-w-0 flex-1 text-xs font-medium",
60
+ children: prompt.title
61
+ }),
62
+ /* @__PURE__ */ jsx("div", {
63
+ className: "flex shrink-0 flex-wrap items-center gap-1",
64
+ children: inline ? inline.options.map((option, index) => /* @__PURE__ */ jsx(Button, {
65
+ type: "button",
66
+ size: "sm",
67
+ variant: index === 0 ? "default" : "outline",
68
+ loading: busy === option.key,
69
+ disabled: busy !== null,
70
+ onClick: () => void choose(inline.field, option),
71
+ children: option.label
72
+ }, option.key)) : /* @__PURE__ */ jsx(Button, {
73
+ type: "button",
74
+ size: "sm",
75
+ "aria-label": `Answer ${prompt.title}`,
76
+ onClick: () => setFormOpen(true),
77
+ children: "Answer"
78
+ })
79
+ }),
80
+ error && /* @__PURE__ */ jsx("span", {
81
+ role: "alert",
82
+ className: "w-full text-xs text-red-600",
83
+ children: error
84
+ }),
85
+ formOpen && /* @__PURE__ */ jsx(PromptDialog, {
86
+ prompt,
87
+ basePath,
88
+ open: true,
89
+ onClose: () => setFormOpen(false)
90
+ })
91
+ ]
92
+ });
93
+ }
94
+ export { TaskPrompts };
95
+
96
+ //# sourceMappingURL=TaskPrompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPrompts.js","names":[],"sources":["../../src/data/TaskPrompts.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Button } from \"../components/button\";\nimport { answerPrompt, type PromptSnapshot } from \"../hooks/use-prompts\";\nimport { UiQuestion } from \"../icons\";\nimport { Icon } from \"./Icon\";\nimport { PromptDialog } from \"./PromptDialog\";\n\n// TaskPrompts renders the questions a running task is blocked on (the Go side\n// lists them on TaskSnapshot.prompts). A single-choice prompt with a few options\n// is answered inline with one button per option; anything else opens the\n// prompt's JSON Schema form in a PromptDialog.\n\nconst MAX_INLINE_OPTIONS = 4;\n\ninterface PromptOption {\n key: string;\n label: string;\n}\n\n// inlineOptions returns the options of a prompt whose schema is a single\n// required enum field (clicky's SelectSchema), or null when it needs the form.\nfunction inlineOptions(prompt: PromptSnapshot): { field: string; options: PromptOption[] } | null {\n const entries = Object.entries(prompt.schema.properties ?? {});\n if (entries.length !== 1) return null;\n const [field, property] = entries[0]!;\n const values = property.enum;\n if (property.type !== \"string\" || !values || values.length === 0 || values.length > MAX_INLINE_OPTIONS) return null;\n const labels = property[\"x-enum-labels\"] ?? {};\n return {\n field,\n options: values.map((value) => ({ key: String(value), label: labels[String(value)] ?? String(value) })),\n };\n}\n\nexport function TaskPrompts({ prompts, basePath }: { prompts: PromptSnapshot[]; basePath: string }) {\n return (\n <div className=\"mt-1 space-y-1\" onClick={(event) => event.stopPropagation()}>\n {prompts.map((prompt) => (\n <TaskPrompt key={prompt.id} prompt={prompt} basePath={basePath} />\n ))}\n </div>\n );\n}\n\nfunction TaskPrompt({ prompt, basePath }: { prompt: PromptSnapshot; basePath: string }) {\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState(\"\");\n const [formOpen, setFormOpen] = useState(false);\n const inline = inlineOptions(prompt);\n\n const choose = async (field: string, option: PromptOption) => {\n setBusy(option.key);\n setError(\"\");\n try {\n await answerPrompt(basePath, prompt.id, { values: { [field]: option.key } });\n } catch (cause) {\n setError(cause instanceof Error ? cause.message : String(cause));\n } finally {\n setBusy(null);\n }\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2 rounded-md border border-amber-500/40 bg-amber-500/10 px-2 py-1.5\">\n <Icon icon={UiQuestion} className=\"shrink-0 text-amber-600 dark:text-amber-400\" />\n <span className=\"min-w-0 flex-1 text-xs font-medium\">{prompt.title}</span>\n <div className=\"flex shrink-0 flex-wrap items-center gap-1\">\n {inline ? (\n inline.options.map((option, index) => (\n <Button\n key={option.key}\n type=\"button\"\n size=\"sm\"\n variant={index === 0 ? \"default\" : \"outline\"}\n loading={busy === option.key}\n disabled={busy !== null}\n onClick={() => void choose(inline.field, option)}\n >\n {option.label}\n </Button>\n ))\n ) : (\n <Button type=\"button\" size=\"sm\" aria-label={`Answer ${prompt.title}`} onClick={() => setFormOpen(true)}>\n Answer\n </Button>\n )}\n </div>\n {error && (\n <span role=\"alert\" className=\"w-full text-xs text-red-600\">\n {error}\n </span>\n )}\n {formOpen && (\n <PromptDialog prompt={prompt} basePath={basePath} open={true} onClose={() => setFormOpen(false)} />\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAYA,IAAM,qBAAqB;AAS3B,SAAS,cAAc,QAA2E;CAChG,MAAM,UAAU,OAAO,QAAQ,OAAO,OAAO,cAAc,CAAC,CAAC;CAC7D,IAAI,QAAQ,WAAW,GAAG,OAAO;CACjC,MAAM,CAAC,OAAO,YAAY,QAAQ;CAClC,MAAM,SAAS,SAAS;CACxB,IAAI,SAAS,SAAS,YAAY,CAAC,UAAU,OAAO,WAAW,KAAK,OAAO,SAAS,oBAAoB,OAAO;CAC/G,MAAM,SAAS,SAAS,oBAAoB,CAAC;CAC7C,OAAO;EACL;EACA,SAAS,OAAO,KAAK,WAAW;GAAE,KAAK,OAAO,KAAK;GAAG,OAAO,OAAO,OAAO,KAAK,MAAM,OAAO,KAAK;EAAE,EAAE;CACxG;AACF;AAEA,SAAgB,YAAY,EAAE,SAAS,YAA6D;CAClG,OACE,oBAAC,OAAD;EAAK,WAAU;EAAiB,UAAU,UAAU,MAAM,gBAAgB;EACvE,UAAA,QAAQ,KAAK,WACZ,oBAAC,YAAD;GAAoC;GAAkB;EAAW,GAAhD,OAAO,EAAyC,CAClE;CACE,CAAA;AAET;AAEA,SAAS,WAAW,EAAE,QAAQ,YAA0D;CACtF,MAAM,CAAC,MAAM,WAAW,SAAwB,IAAI;CACpD,MAAM,CAAC,OAAO,YAAY,SAAS,EAAE;CACrC,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAC9C,MAAM,SAAS,cAAc,MAAM;CAEnC,MAAM,SAAS,OAAO,OAAe,WAAyB;EAC5D,QAAQ,OAAO,GAAG;EAClB,SAAS,EAAE;EACX,IAAI;GACF,MAAM,aAAa,UAAU,OAAO,IAAI,EAAE,QAAQ,GAAG,QAAQ,OAAO,IAAI,EAAE,CAAC;EAC7E,SAAS,OAAO;GACd,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;EACjE,UAAU;GACR,QAAQ,IAAI;EACd;CACF;CAEA,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA;GACE,oBAAC,MAAD;IAAM,MAAM;IAAY,WAAU;GAA+C,CAAA;GACjF,oBAAC,QAAD;IAAM,WAAU;IAAsC,UAAA,OAAO;GAAY,CAAA;GACzE,oBAAC,OAAD;IAAK,WAAU;IACZ,UAAA,SACC,OAAO,QAAQ,KAAK,QAAQ,UAC1B,oBAAC,QAAD;KAEE,MAAK;KACL,MAAK;KACL,SAAS,UAAU,IAAI,YAAY;KACnC,SAAS,SAAS,OAAO;KACzB,UAAU,SAAS;KACnB,eAAe,KAAK,OAAO,OAAO,OAAO,MAAM;KAE9C,UAAA,OAAO;IACF,GATD,OAAO,GASN,CACT,IAED,oBAAC,QAAD;KAAQ,MAAK;KAAS,MAAK;KAAK,cAAY,UAAU,OAAO;KAAS,eAAe,YAAY,IAAI;KAAG,UAAA;IAEhG,CAAA;GAEP,CAAA;GACJ,SACC,oBAAC,QAAD;IAAM,MAAK;IAAQ,WAAU;IAC1B,UAAA;GACG,CAAA;GAEP,YACC,oBAAC,cAAD;IAAsB;IAAkB;IAAU,MAAM;IAAM,eAAe,YAAY,KAAK;GAAI,CAAA;EAEjG;;AAET"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskSnapshot.cjs","names":[],"sources":["../../src/data/TaskSnapshot.ts"],"sourcesContent":["// TaskSnapshot mirrors the Go `task.TaskSnapshot` wire format emitted by clicky's\n// JSONHandler / SSEHandler (github.com/flanksource/clicky/task/snapshot.go). Field\n// names match the JSON tags exactly. This module is generic — it carries no\n// application-specific concepts.\n\nexport interface LogEntry {\n level: string;\n message: string;\n}\n\nexport type TaskControlAction = \"start\" | \"stop\" | \"restart\" | \"drain\" | \"retry\";\n\nexport interface TaskWorkProgress {\n total: number;\n completed: number;\n cached: number;\n failed: number;\n running: number;\n canceled: number;\n unstarted: number;\n}\n\nexport interface TaskResourceSnapshot {\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n sampledAt: string;\n}\n\nexport interface TaskProcessSample {\n pid: number;\n ppid: number;\n command: string;\n status?: string;\n isRoot?: boolean;\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n}\n\n/** Runaway bounds a supervised process is killed for exceeding. */\nexport interface TaskResourceLimits {\n maxRssBytes?: number;\n maxCpuPercent?: number;\n cpuSampleCount?: number;\n /** Sampling cadence as a Go duration string, e.g. \"2s\". */\n interval?: string;\n}\n\nexport interface TaskProcessDetails {\n pid?: number;\n command: string;\n args?: string[];\n status: string;\n started?: string;\n exitCode?: number;\n ports?: number[];\n restarts: number;\n restartPolicy: string;\n maxRestarts?: number;\n limits?: TaskResourceLimits;\n latest: TaskResourceSnapshot;\n peak: TaskResourceSnapshot;\n metrics: Record<string, string>;\n tree?: TaskProcessSample[];\n /**\n * Caller-supplied context, re-read on every snapshot. Any JSON the producer\n * chooses to send — flat values render inline, anything structured renders as\n * JSON. This module gives the shape no meaning beyond \"show it\".\n */\n metadata?: unknown;\n}\n\nexport interface TaskExecDetails {\n command: string;\n args?: string[];\n cwd?: string;\n pid?: number;\n status: string;\n exitCode: number;\n started?: string;\n /** Go time.Duration encoded as nanoseconds. */\n duration?: number;\n [key: string]: unknown;\n}\n\nexport interface TaskSnapshot {\n /** Stable identities of tasks that must finish before this task starts. */\n dependencyIds?: string[];\n id: string;\n name: string;\n /** \"task\" or \"group\". */\n type: \"task\" | \"group\";\n /** Parent group NAME (groups: empty). */\n group?: string;\n status: string;\n duration?: string;\n error?: string;\n /** Latest log line. */\n message?: string;\n logs?: LogEntry[];\n /** Group aggregates. */\n total?: number;\n completed?: number;\n failed?: number;\n running?: number;\n canceled?: number;\n work?: TaskWorkProgress;\n /** Per-task (type === \"task\") live stage label and bounded progress. */\n description?: string;\n progress?: number;\n /** Progress denominator; 0/undefined means the task has no bounded progress. */\n maxValue?: number;\n /** Stable parent-run id (tasks) or the run's own id (groups). */\n groupId?: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n /** RFC3339. */\n startedAt?: string;\n /** RFC3339. */\n finishedAt?: string;\n href?: string;\n controls?: TaskControlAction[];\n stdout?: string;\n stderr?: string;\n /**\n * Absolute stream offset of the first retained byte — how much the server's\n * bounded buffer has already discarded ahead of `stdout`/`stderr`. Non-zero\n * exactly when the matching `*Truncated` flag is set.\n */\n stdoutOffset?: number;\n stderrOffset?: number;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n details?: TaskProcessDetails | TaskExecDetails | Record<string, unknown>;\n}\n\n// TaskRunMeta mirrors the Go `task.RunMeta` listing summary returned by\n// GET {prefix}/tasks. Named TaskRunMeta to avoid colliding with the unrelated\n// diagnostics `RunMeta` already exported by this package.\nexport interface TaskRunMeta {\n id: string;\n name: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n status: string;\n startedAt?: string;\n finishedAt?: string;\n total: number;\n completed: number;\n failed: number;\n running: number;\n canceled?: number;\n work?: TaskWorkProgress;\n href?: string;\n controls?: TaskControlAction[];\n}\n\n// Terminal run/group statuses (not running/pending). Used to decide when an SSE\n// stream is done or when polling should stop.\nconst TERMINAL_STATUSES = new Set([\n \"success\",\n \"failed\",\n \"warning\",\n \"canceled\",\n \"PASS\",\n \"FAIL\",\n \"ERR\",\n \"SKIP\",\n]);\n\nexport function isTerminalStatus(status: string | undefined): boolean {\n return !!status && TERMINAL_STATUSES.has(status);\n}\n\n// allGroupsTerminal reports whether every group snapshot has reached a terminal\n// status — i.e. the run(s) are complete and an SSE stream / poll can stop.\nexport function allGroupsTerminal(snapshots: TaskSnapshot[]): boolean {\n const groups = snapshots.filter((s) => s.type === \"group\");\n if (groups.length === 0) return false;\n return groups.every((g) => isTerminalStatus(g.status));\n}\n"],"mappings":";AAoKA,IAAM,oCAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,iBAAiB,QAAqC;CACpE,OAAO,CAAC,CAAC,UAAU,kBAAkB,IAAI,MAAM;AACjD;AAIA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,SAAS,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO;CACzD,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,OAAO,OAAO,OAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC;AACvD"}
1
+ {"version":3,"file":"TaskSnapshot.cjs","names":[],"sources":["../../src/data/TaskSnapshot.ts"],"sourcesContent":["// TaskSnapshot mirrors the Go `task.TaskSnapshot` wire format emitted by clicky's\n// JSONHandler / SSEHandler (github.com/flanksource/clicky/task/snapshot.go). Field\n// names match the JSON tags exactly. This module is generic — it carries no\n// application-specific concepts.\n\nimport type { PromptSnapshot } from \"../hooks/use-prompts\";\n\nexport interface LogEntry {\n level: string;\n message: string;\n}\n\nexport type TaskControlAction = \"start\" | \"stop\" | \"restart\" | \"drain\" | \"retry\";\n\nexport interface TaskWorkProgress {\n total: number;\n completed: number;\n cached: number;\n failed: number;\n running: number;\n canceled: number;\n unstarted: number;\n}\n\nexport interface TaskResourceSnapshot {\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n sampledAt: string;\n}\n\nexport interface TaskProcessSample {\n pid: number;\n ppid: number;\n command: string;\n status?: string;\n isRoot?: boolean;\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n}\n\n/** Runaway bounds a supervised process is killed for exceeding. */\nexport interface TaskResourceLimits {\n maxRssBytes?: number;\n maxCpuPercent?: number;\n cpuSampleCount?: number;\n /** Sampling cadence as a Go duration string, e.g. \"2s\". */\n interval?: string;\n}\n\nexport interface TaskProcessDetails {\n pid?: number;\n command: string;\n args?: string[];\n status: string;\n started?: string;\n exitCode?: number;\n ports?: number[];\n restarts: number;\n restartPolicy: string;\n maxRestarts?: number;\n limits?: TaskResourceLimits;\n latest: TaskResourceSnapshot;\n peak: TaskResourceSnapshot;\n metrics: Record<string, string>;\n tree?: TaskProcessSample[];\n /**\n * Caller-supplied context, re-read on every snapshot. Any JSON the producer\n * chooses to send — flat values render inline, anything structured renders as\n * JSON. This module gives the shape no meaning beyond \"show it\".\n */\n metadata?: unknown;\n}\n\nexport interface TaskExecDetails {\n command: string;\n args?: string[];\n cwd?: string;\n pid?: number;\n status: string;\n exitCode: number;\n started?: string;\n /** Go time.Duration encoded as nanoseconds. */\n duration?: number;\n [key: string]: unknown;\n}\n\nexport interface TaskSnapshot {\n /** Stable identities of tasks that must finish before this task starts. */\n dependencyIds?: string[];\n id: string;\n name: string;\n /** \"task\" or \"group\". */\n type: \"task\" | \"group\";\n /** Parent group NAME (groups: empty). */\n group?: string;\n status: string;\n duration?: string;\n error?: string;\n /** Latest log line. */\n message?: string;\n logs?: LogEntry[];\n /** Group aggregates. */\n total?: number;\n completed?: number;\n failed?: number;\n running?: number;\n canceled?: number;\n work?: TaskWorkProgress;\n /** Per-task (type === \"task\") live stage label and bounded progress. */\n description?: string;\n progress?: number;\n /** Progress denominator; 0/undefined means the task has no bounded progress. */\n maxValue?: number;\n /** Stable parent-run id (tasks) or the run's own id (groups). */\n groupId?: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n /** RFC3339. */\n startedAt?: string;\n /** RFC3339. */\n finishedAt?: string;\n href?: string;\n controls?: TaskControlAction[];\n stdout?: string;\n stderr?: string;\n /**\n * Absolute stream offset of the first retained byte — how much the server's\n * bounded buffer has already discarded ahead of `stdout`/`stderr`. Non-zero\n * exactly when the matching `*Truncated` flag is set.\n */\n stdoutOffset?: number;\n stderrOffset?: number;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n details?: TaskProcessDetails | TaskExecDetails | Record<string, unknown>;\n /** Pending prompts a running task is blocked on (Go `prompt.TaskLabel`). */\n prompts?: PromptSnapshot[];\n}\n\n// TaskRunMeta mirrors the Go `task.RunMeta` listing summary returned by\n// GET {prefix}/tasks. Named TaskRunMeta to avoid colliding with the unrelated\n// diagnostics `RunMeta` already exported by this package.\nexport interface TaskRunMeta {\n id: string;\n name: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n status: string;\n startedAt?: string;\n finishedAt?: string;\n total: number;\n completed: number;\n failed: number;\n running: number;\n canceled?: number;\n work?: TaskWorkProgress;\n href?: string;\n controls?: TaskControlAction[];\n}\n\n// Terminal run/group statuses (not running/pending). Used to decide when an SSE\n// stream is done or when polling should stop.\nconst TERMINAL_STATUSES = new Set([\n \"success\",\n \"failed\",\n \"warning\",\n \"canceled\",\n \"PASS\",\n \"FAIL\",\n \"ERR\",\n \"SKIP\",\n]);\n\nexport function isTerminalStatus(status: string | undefined): boolean {\n return !!status && TERMINAL_STATUSES.has(status);\n}\n\n// allGroupsTerminal reports whether every group snapshot has reached a terminal\n// status — i.e. the run(s) are complete and an SSE stream / poll can stop.\nexport function allGroupsTerminal(snapshots: TaskSnapshot[]): boolean {\n const groups = snapshots.filter((s) => s.type === \"group\");\n if (groups.length === 0) return false;\n return groups.every((g) => isTerminalStatus(g.status));\n}\n"],"mappings":";AAwKA,IAAM,oCAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,iBAAiB,QAAqC;CACpE,OAAO,CAAC,CAAC,UAAU,kBAAkB,IAAI,MAAM;AACjD;AAIA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,SAAS,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO;CACzD,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,OAAO,OAAO,OAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC;AACvD"}
@@ -1,3 +1,4 @@
1
+ import { PromptSnapshot } from '../hooks/use-prompts.js';
1
2
  export interface LogEntry {
2
3
  level: string;
3
4
  message: string;
@@ -123,6 +124,8 @@ export interface TaskSnapshot {
123
124
  stdoutTruncated?: boolean;
124
125
  stderrTruncated?: boolean;
125
126
  details?: TaskProcessDetails | TaskExecDetails | Record<string, unknown>;
127
+ /** Pending prompts a running task is blocked on (Go `prompt.TaskLabel`). */
128
+ prompts?: PromptSnapshot[];
126
129
  }
127
130
  export interface TaskRunMeta {
128
131
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TaskSnapshot.d.ts","sourceRoot":"","sources":["../../src/data/TaskSnapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskSnapshot.d.ts","sourceRoot":"","sources":["../../src/data/TaskSnapshot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskSnapshot.js","names":[],"sources":["../../src/data/TaskSnapshot.ts"],"sourcesContent":["// TaskSnapshot mirrors the Go `task.TaskSnapshot` wire format emitted by clicky's\n// JSONHandler / SSEHandler (github.com/flanksource/clicky/task/snapshot.go). Field\n// names match the JSON tags exactly. This module is generic — it carries no\n// application-specific concepts.\n\nexport interface LogEntry {\n level: string;\n message: string;\n}\n\nexport type TaskControlAction = \"start\" | \"stop\" | \"restart\" | \"drain\" | \"retry\";\n\nexport interface TaskWorkProgress {\n total: number;\n completed: number;\n cached: number;\n failed: number;\n running: number;\n canceled: number;\n unstarted: number;\n}\n\nexport interface TaskResourceSnapshot {\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n sampledAt: string;\n}\n\nexport interface TaskProcessSample {\n pid: number;\n ppid: number;\n command: string;\n status?: string;\n isRoot?: boolean;\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n}\n\n/** Runaway bounds a supervised process is killed for exceeding. */\nexport interface TaskResourceLimits {\n maxRssBytes?: number;\n maxCpuPercent?: number;\n cpuSampleCount?: number;\n /** Sampling cadence as a Go duration string, e.g. \"2s\". */\n interval?: string;\n}\n\nexport interface TaskProcessDetails {\n pid?: number;\n command: string;\n args?: string[];\n status: string;\n started?: string;\n exitCode?: number;\n ports?: number[];\n restarts: number;\n restartPolicy: string;\n maxRestarts?: number;\n limits?: TaskResourceLimits;\n latest: TaskResourceSnapshot;\n peak: TaskResourceSnapshot;\n metrics: Record<string, string>;\n tree?: TaskProcessSample[];\n /**\n * Caller-supplied context, re-read on every snapshot. Any JSON the producer\n * chooses to send — flat values render inline, anything structured renders as\n * JSON. This module gives the shape no meaning beyond \"show it\".\n */\n metadata?: unknown;\n}\n\nexport interface TaskExecDetails {\n command: string;\n args?: string[];\n cwd?: string;\n pid?: number;\n status: string;\n exitCode: number;\n started?: string;\n /** Go time.Duration encoded as nanoseconds. */\n duration?: number;\n [key: string]: unknown;\n}\n\nexport interface TaskSnapshot {\n /** Stable identities of tasks that must finish before this task starts. */\n dependencyIds?: string[];\n id: string;\n name: string;\n /** \"task\" or \"group\". */\n type: \"task\" | \"group\";\n /** Parent group NAME (groups: empty). */\n group?: string;\n status: string;\n duration?: string;\n error?: string;\n /** Latest log line. */\n message?: string;\n logs?: LogEntry[];\n /** Group aggregates. */\n total?: number;\n completed?: number;\n failed?: number;\n running?: number;\n canceled?: number;\n work?: TaskWorkProgress;\n /** Per-task (type === \"task\") live stage label and bounded progress. */\n description?: string;\n progress?: number;\n /** Progress denominator; 0/undefined means the task has no bounded progress. */\n maxValue?: number;\n /** Stable parent-run id (tasks) or the run's own id (groups). */\n groupId?: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n /** RFC3339. */\n startedAt?: string;\n /** RFC3339. */\n finishedAt?: string;\n href?: string;\n controls?: TaskControlAction[];\n stdout?: string;\n stderr?: string;\n /**\n * Absolute stream offset of the first retained byte — how much the server's\n * bounded buffer has already discarded ahead of `stdout`/`stderr`. Non-zero\n * exactly when the matching `*Truncated` flag is set.\n */\n stdoutOffset?: number;\n stderrOffset?: number;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n details?: TaskProcessDetails | TaskExecDetails | Record<string, unknown>;\n}\n\n// TaskRunMeta mirrors the Go `task.RunMeta` listing summary returned by\n// GET {prefix}/tasks. Named TaskRunMeta to avoid colliding with the unrelated\n// diagnostics `RunMeta` already exported by this package.\nexport interface TaskRunMeta {\n id: string;\n name: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n status: string;\n startedAt?: string;\n finishedAt?: string;\n total: number;\n completed: number;\n failed: number;\n running: number;\n canceled?: number;\n work?: TaskWorkProgress;\n href?: string;\n controls?: TaskControlAction[];\n}\n\n// Terminal run/group statuses (not running/pending). Used to decide when an SSE\n// stream is done or when polling should stop.\nconst TERMINAL_STATUSES = new Set([\n \"success\",\n \"failed\",\n \"warning\",\n \"canceled\",\n \"PASS\",\n \"FAIL\",\n \"ERR\",\n \"SKIP\",\n]);\n\nexport function isTerminalStatus(status: string | undefined): boolean {\n return !!status && TERMINAL_STATUSES.has(status);\n}\n\n// allGroupsTerminal reports whether every group snapshot has reached a terminal\n// status — i.e. the run(s) are complete and an SSE stream / poll can stop.\nexport function allGroupsTerminal(snapshots: TaskSnapshot[]): boolean {\n const groups = snapshots.filter((s) => s.type === \"group\");\n if (groups.length === 0) return false;\n return groups.every((g) => isTerminalStatus(g.status));\n}\n"],"mappings":";AAoKA,IAAM,oCAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,iBAAiB,QAAqC;CACpE,OAAO,CAAC,CAAC,UAAU,kBAAkB,IAAI,MAAM;AACjD;AAIA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,SAAS,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO;CACzD,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,OAAO,OAAO,OAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC;AACvD"}
1
+ {"version":3,"file":"TaskSnapshot.js","names":[],"sources":["../../src/data/TaskSnapshot.ts"],"sourcesContent":["// TaskSnapshot mirrors the Go `task.TaskSnapshot` wire format emitted by clicky's\n// JSONHandler / SSEHandler (github.com/flanksource/clicky/task/snapshot.go). Field\n// names match the JSON tags exactly. This module is generic — it carries no\n// application-specific concepts.\n\nimport type { PromptSnapshot } from \"../hooks/use-prompts\";\n\nexport interface LogEntry {\n level: string;\n message: string;\n}\n\nexport type TaskControlAction = \"start\" | \"stop\" | \"restart\" | \"drain\" | \"retry\";\n\nexport interface TaskWorkProgress {\n total: number;\n completed: number;\n cached: number;\n failed: number;\n running: number;\n canceled: number;\n unstarted: number;\n}\n\nexport interface TaskResourceSnapshot {\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n sampledAt: string;\n}\n\nexport interface TaskProcessSample {\n pid: number;\n ppid: number;\n command: string;\n status?: string;\n isRoot?: boolean;\n cpuPercent: number;\n rssBytes: number;\n vmsBytes: number;\n openFiles: number;\n}\n\n/** Runaway bounds a supervised process is killed for exceeding. */\nexport interface TaskResourceLimits {\n maxRssBytes?: number;\n maxCpuPercent?: number;\n cpuSampleCount?: number;\n /** Sampling cadence as a Go duration string, e.g. \"2s\". */\n interval?: string;\n}\n\nexport interface TaskProcessDetails {\n pid?: number;\n command: string;\n args?: string[];\n status: string;\n started?: string;\n exitCode?: number;\n ports?: number[];\n restarts: number;\n restartPolicy: string;\n maxRestarts?: number;\n limits?: TaskResourceLimits;\n latest: TaskResourceSnapshot;\n peak: TaskResourceSnapshot;\n metrics: Record<string, string>;\n tree?: TaskProcessSample[];\n /**\n * Caller-supplied context, re-read on every snapshot. Any JSON the producer\n * chooses to send — flat values render inline, anything structured renders as\n * JSON. This module gives the shape no meaning beyond \"show it\".\n */\n metadata?: unknown;\n}\n\nexport interface TaskExecDetails {\n command: string;\n args?: string[];\n cwd?: string;\n pid?: number;\n status: string;\n exitCode: number;\n started?: string;\n /** Go time.Duration encoded as nanoseconds. */\n duration?: number;\n [key: string]: unknown;\n}\n\nexport interface TaskSnapshot {\n /** Stable identities of tasks that must finish before this task starts. */\n dependencyIds?: string[];\n id: string;\n name: string;\n /** \"task\" or \"group\". */\n type: \"task\" | \"group\";\n /** Parent group NAME (groups: empty). */\n group?: string;\n status: string;\n duration?: string;\n error?: string;\n /** Latest log line. */\n message?: string;\n logs?: LogEntry[];\n /** Group aggregates. */\n total?: number;\n completed?: number;\n failed?: number;\n running?: number;\n canceled?: number;\n work?: TaskWorkProgress;\n /** Per-task (type === \"task\") live stage label and bounded progress. */\n description?: string;\n progress?: number;\n /** Progress denominator; 0/undefined means the task has no bounded progress. */\n maxValue?: number;\n /** Stable parent-run id (tasks) or the run's own id (groups). */\n groupId?: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n /** RFC3339. */\n startedAt?: string;\n /** RFC3339. */\n finishedAt?: string;\n href?: string;\n controls?: TaskControlAction[];\n stdout?: string;\n stderr?: string;\n /**\n * Absolute stream offset of the first retained byte — how much the server's\n * bounded buffer has already discarded ahead of `stdout`/`stderr`. Non-zero\n * exactly when the matching `*Truncated` flag is set.\n */\n stdoutOffset?: number;\n stderrOffset?: number;\n stdoutTruncated?: boolean;\n stderrTruncated?: boolean;\n details?: TaskProcessDetails | TaskExecDetails | Record<string, unknown>;\n /** Pending prompts a running task is blocked on (Go `prompt.TaskLabel`). */\n prompts?: PromptSnapshot[];\n}\n\n// TaskRunMeta mirrors the Go `task.RunMeta` listing summary returned by\n// GET {prefix}/tasks. Named TaskRunMeta to avoid colliding with the unrelated\n// diagnostics `RunMeta` already exported by this package.\nexport interface TaskRunMeta {\n id: string;\n name: string;\n kind?: string;\n labels?: Record<string, string>;\n owner?: string;\n status: string;\n startedAt?: string;\n finishedAt?: string;\n total: number;\n completed: number;\n failed: number;\n running: number;\n canceled?: number;\n work?: TaskWorkProgress;\n href?: string;\n controls?: TaskControlAction[];\n}\n\n// Terminal run/group statuses (not running/pending). Used to decide when an SSE\n// stream is done or when polling should stop.\nconst TERMINAL_STATUSES = new Set([\n \"success\",\n \"failed\",\n \"warning\",\n \"canceled\",\n \"PASS\",\n \"FAIL\",\n \"ERR\",\n \"SKIP\",\n]);\n\nexport function isTerminalStatus(status: string | undefined): boolean {\n return !!status && TERMINAL_STATUSES.has(status);\n}\n\n// allGroupsTerminal reports whether every group snapshot has reached a terminal\n// status — i.e. the run(s) are complete and an SSE stream / poll can stop.\nexport function allGroupsTerminal(snapshots: TaskSnapshot[]): boolean {\n const groups = snapshots.filter((s) => s.type === \"group\");\n if (groups.length === 0) return false;\n return groups.every((g) => isTerminalStatus(g.status));\n}\n"],"mappings":";AAwKA,IAAM,oCAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAgB,iBAAiB,QAAqC;CACpE,OAAO,CAAC,CAAC,UAAU,kBAAkB,IAAI,MAAM;AACjD;AAIA,SAAgB,kBAAkB,WAAoC;CACpE,MAAM,SAAS,UAAU,QAAQ,MAAM,EAAE,SAAS,OAAO;CACzD,IAAI,OAAO,WAAW,GAAG,OAAO;CAChC,OAAO,OAAO,OAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC;AACvD"}
@@ -18,18 +18,22 @@ function TimeseriesCoreBars({ baseUrl = "", value, max, unit, title, icon, range
18
18
  refreshMs,
19
19
  fetcher
20
20
  });
21
- const rawValue = require_timeseries_query.latestValue(results[0]?.data);
21
+ const valueRead = require_timeseries_query.soleSeries(value.id, results[0]);
22
+ const maxRead = maxSeries ? require_timeseries_query.soleSeries(maxSeries.id, results[1]) : void 0;
23
+ const error = valueRead.error ?? maxRead?.error ?? null;
24
+ const rawValue = require_timeseries_query.latestValue(valueRead.data);
22
25
  const usage = rawValue === void 0 ? void 0 : value.transform ? value.transform(rawValue) : rawValue;
23
26
  let limit;
24
27
  if (typeof max === "number") limit = max;
25
28
  else if (maxSeries) {
26
- const rawMax = require_timeseries_query.latestValue(results[1]?.data);
29
+ const rawMax = require_timeseries_query.latestValue(maxRead?.data);
27
30
  limit = rawMax === void 0 ? void 0 : maxSeries.transform ? maxSeries.transform(rawMax) : rawMax;
28
31
  }
29
- const stats = require_gauge_stats.seriesStats(results[0]?.data?.points, value.transform);
32
+ const stats = require_gauge_stats.seriesStats(valueRead.data?.points, value.transform);
30
33
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ProgressBars.ProgressBars, {
31
34
  usage,
32
35
  stats,
36
+ error,
33
37
  title,
34
38
  thresholds,
35
39
  variant,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesCoreBars.cjs","names":["defaultTimeseriesFetcher","useTimeseriesQueries","latestValue","seriesStats","ProgressBars"],"sources":["../../src/data/TimeseriesCoreBars.tsx"],"sourcesContent":["import { type StaticIconComponent } from \"./Icon\";\nimport type { GaugeSeries } from \"./TimeseriesGauge\";\nimport type { TimeseriesResponse } from \"./TimeseriesPanel\";\nimport {\n ProgressBars,\n type ProgressBarsOrientation,\n type ProgressBarsUnit,\n type ProgressBarsVariant,\n} from \"./ProgressBars\";\nimport { seriesStats } from \"./gauge-stats\";\nimport { defaultTimeseriesFetcher, latestValue, useTimeseriesQueries } from \"./timeseries-query\";\n\nexport interface TimeseriesCoreBarsProps {\n /** Common prefix; the value/max requests are `baseUrl + id` (unless a series has `load`). */\n baseUrl?: string;\n /** The metric whose latest value (CPU millicores) fills the bars. */\n value: GaugeSeries;\n /**\n * The capacity. Either a `.limit`-style metric series (its latest value) or a\n * fixed number, in the same raw domain as `value`. Determines the number of\n * bars (one per `unit.perBar`). When omitted or 0, the bar count falls back to\n * the ceiling of the usage so an unbounded reading still renders.\n */\n max?: GaugeSeries | number;\n /** What one bar represents. Defaults to CPU cores (perBar 1000, label \"cores\"). */\n unit?: ProgressBarsUnit;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Look-back window passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /**\n * Utilisation thresholds (percent of capacity) at which the fill turns amber\n * then red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: ProgressBarsVariant;\n /** Show the title text. Icons and values remain visible unless separately hidden. */\n showLabel?: boolean;\n /** Show the value/capacity caption. Icons and bars remain visible when false. */\n showValue?: boolean;\n /**\n * Include the capacity in the caption (\"2.3 / 4 cores\"). Defaults to false — the\n * caption shows only the current value (\"2.3 cores\") since the bars already\n * convey capacity. Set true to append the \"/ <capacity>\".\n */\n showCapacity?: boolean;\n /** Bar direction. Vertical bars fill bottom-up; horizontal bars fill left-to-right. */\n orientation?: ProgressBarsOrientation;\n /**\n * Wrap the bars in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\n/**\n * TimeseriesCoreBars reads usage and limit live from the timeseries store\n * (mirroring TimeseriesGauge's data plumbing) and renders them as quantised\n * utilisation bars via {@link ProgressBars}. Usage and limit flow through each\n * series' optional `transform`; the hover card summarises current/min/max/avg/\n * capacity over the look-back window.\n */\nexport function TimeseriesCoreBars({\n baseUrl = \"\",\n value,\n max,\n unit,\n title,\n icon,\n range = \"1h\",\n refreshMs = 5000,\n thresholds = [75, 90],\n variant = \"default\",\n showLabel = true,\n showValue = true,\n showCapacity = false,\n orientation,\n hoverCard = true,\n fetcher = defaultTimeseriesFetcher,\n className,\n}: TimeseriesCoreBarsProps) {\n const maxSeries = typeof max === \"object\" ? max : undefined;\n const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {\n baseUrl,\n range,\n refreshMs,\n fetcher,\n });\n\n const rawValue = latestValue(results[0]?.data);\n const usage =\n rawValue === undefined\n ? undefined\n : value.transform\n ? value.transform(rawValue)\n : rawValue;\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(results[1]?.data);\n limit =\n rawMax === undefined\n ? undefined\n : maxSeries.transform\n ? maxSeries.transform(rawMax)\n : rawMax;\n }\n\n const stats = seriesStats(results[0]?.data?.points, value.transform);\n\n return (\n <ProgressBars\n usage={usage}\n stats={stats}\n title={title}\n thresholds={thresholds}\n variant={variant}\n showLabel={showLabel}\n showValue={showValue}\n showCapacity={showCapacity}\n hoverCard={hoverCard}\n hoverFooter={`over last ${range}`}\n {...(limit !== undefined ? { max: limit } : {})}\n {...(unit !== undefined ? { unit } : {})}\n {...(icon !== undefined ? { icon } : {})}\n {...(orientation !== undefined ? { orientation } : {})}\n {...(className !== undefined ? { className } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqEA,SAAgB,mBAAmB,EACjC,UAAU,IACV,OACA,KACA,MACA,OACA,MACA,QAAQ,MACR,YAAY,KACZ,aAAa,CAAC,IAAI,EAAE,GACpB,UAAU,WACV,YAAY,MACZ,YAAY,MACZ,eAAe,OACf,aACA,YAAY,MACZ,UAAUA,yBAAAA,0BACV,aAC0B;CAC1B,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,KAAA;CAClD,MAAM,UAAUC,yBAAAA,qBAAqB,YAAY,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG;EAC7E;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,WAAWC,yBAAAA,YAAY,QAAQ,EAAE,EAAE,IAAI;CAC7C,MAAM,QACJ,aAAa,KAAA,IACT,KAAA,IACA,MAAM,YACJ,MAAM,UAAU,QAAQ,IACxB;CAER,IAAI;CACJ,IAAI,OAAO,QAAQ,UACjB,QAAQ;MACH,IAAI,WAAW;EACpB,MAAM,SAASA,yBAAAA,YAAY,QAAQ,EAAE,EAAE,IAAI;EAC3C,QACE,WAAW,KAAA,IACP,KAAA,IACA,UAAU,YACR,UAAU,UAAU,MAAM,IAC1B;CACV;CAEA,MAAM,QAAQC,oBAAAA,YAAY,QAAQ,EAAE,EAAE,MAAM,QAAQ,MAAM,SAAS;CAEnE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,cAAD;EACS;EACA;EACA;EACK;EACH;EACE;EACA;EACG;EACH;EACX,aAAa,aAAa;EAC1B,GAAK,UAAU,KAAA,IAAY,EAAE,KAAK,MAAM,IAAI,CAAC;EAC7C,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,gBAAgB,KAAA,IAAY,EAAE,YAAY,IAAI,CAAC;EACpD,GAAK,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CACjD,CAAA;AAEL"}
1
+ {"version":3,"file":"TimeseriesCoreBars.cjs","names":["defaultTimeseriesFetcher","useTimeseriesQueries","soleSeries","latestValue","seriesStats","ProgressBars"],"sources":["../../src/data/TimeseriesCoreBars.tsx"],"sourcesContent":["import { type StaticIconComponent } from \"./Icon\";\nimport type { GaugeSeries } from \"./TimeseriesGauge\";\nimport type { TimeseriesResponse } from \"./TimeseriesPanel\";\nimport {\n ProgressBars,\n type ProgressBarsOrientation,\n type ProgressBarsUnit,\n type ProgressBarsVariant,\n} from \"./ProgressBars\";\nimport { seriesStats } from \"./gauge-stats\";\nimport {\n defaultTimeseriesFetcher,\n latestValue,\n soleSeries,\n useTimeseriesQueries,\n} from \"./timeseries-query\";\n\nexport interface TimeseriesCoreBarsProps {\n /** Common prefix; the value/max requests are `baseUrl + id` (unless a series has `load`). */\n baseUrl?: string;\n /** The metric whose latest value (CPU millicores) fills the bars. */\n value: GaugeSeries;\n /**\n * The capacity. Either a `.limit`-style metric series (its latest value) or a\n * fixed number, in the same raw domain as `value`. Determines the number of\n * bars (one per `unit.perBar`). When omitted or 0, the bar count falls back to\n * the ceiling of the usage so an unbounded reading still renders.\n */\n max?: GaugeSeries | number;\n /** What one bar represents. Defaults to CPU cores (perBar 1000, label \"cores\"). */\n unit?: ProgressBarsUnit;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Look-back window passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /**\n * Utilisation thresholds (percent of capacity) at which the fill turns amber\n * then red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: ProgressBarsVariant;\n /** Show the title text. Icons and values remain visible unless separately hidden. */\n showLabel?: boolean;\n /** Show the value/capacity caption. Icons and bars remain visible when false. */\n showValue?: boolean;\n /**\n * Include the capacity in the caption (\"2.3 / 4 cores\"). Defaults to false — the\n * caption shows only the current value (\"2.3 cores\") since the bars already\n * convey capacity. Set true to append the \"/ <capacity>\".\n */\n showCapacity?: boolean;\n /** Bar direction. Vertical bars fill bottom-up; horizontal bars fill left-to-right. */\n orientation?: ProgressBarsOrientation;\n /**\n * Wrap the bars in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\n/**\n * TimeseriesCoreBars reads usage and limit live from the timeseries store\n * (mirroring TimeseriesGauge's data plumbing) and renders them as quantised\n * utilisation bars via {@link ProgressBars}. Usage and limit flow through each\n * series' optional `transform`; the hover card summarises current/min/max/avg/\n * capacity over the look-back window.\n */\nexport function TimeseriesCoreBars({\n baseUrl = \"\",\n value,\n max,\n unit,\n title,\n icon,\n range = \"1h\",\n refreshMs = 5000,\n thresholds = [75, 90],\n variant = \"default\",\n showLabel = true,\n showValue = true,\n showCapacity = false,\n orientation,\n hoverCard = true,\n fetcher = defaultTimeseriesFetcher,\n className,\n}: TimeseriesCoreBarsProps) {\n const maxSeries = typeof max === \"object\" ? max : undefined;\n const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {\n baseUrl,\n range,\n refreshMs,\n fetcher,\n });\n\n const valueRead = soleSeries(value.id, results[0]);\n const maxRead = maxSeries ? soleSeries(maxSeries.id, results[1]) : undefined;\n const error = valueRead.error ?? maxRead?.error ?? null;\n const rawValue = latestValue(valueRead.data);\n const usage =\n rawValue === undefined\n ? undefined\n : value.transform\n ? value.transform(rawValue)\n : rawValue;\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(maxRead?.data);\n limit =\n rawMax === undefined\n ? undefined\n : maxSeries.transform\n ? maxSeries.transform(rawMax)\n : rawMax;\n }\n\n const stats = seriesStats(valueRead.data?.points, value.transform);\n\n return (\n <ProgressBars\n usage={usage}\n stats={stats}\n error={error}\n title={title}\n thresholds={thresholds}\n variant={variant}\n showLabel={showLabel}\n showValue={showValue}\n showCapacity={showCapacity}\n hoverCard={hoverCard}\n hoverFooter={`over last ${range}`}\n {...(limit !== undefined ? { max: limit } : {})}\n {...(unit !== undefined ? { unit } : {})}\n {...(icon !== undefined ? { icon } : {})}\n {...(orientation !== undefined ? { orientation } : {})}\n {...(className !== undefined ? { className } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AA0EA,SAAgB,mBAAmB,EACjC,UAAU,IACV,OACA,KACA,MACA,OACA,MACA,QAAQ,MACR,YAAY,KACZ,aAAa,CAAC,IAAI,EAAE,GACpB,UAAU,WACV,YAAY,MACZ,YAAY,MACZ,eAAe,OACf,aACA,YAAY,MACZ,UAAUA,yBAAAA,0BACV,aAC0B;CAC1B,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,KAAA;CAClD,MAAM,UAAUC,yBAAAA,qBAAqB,YAAY,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG;EAC7E;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,YAAYC,yBAAAA,WAAW,MAAM,IAAI,QAAQ,EAAE;CACjD,MAAM,UAAU,YAAYA,yBAAAA,WAAW,UAAU,IAAI,QAAQ,EAAE,IAAI,KAAA;CACnE,MAAM,QAAQ,UAAU,SAAS,SAAS,SAAS;CACnD,MAAM,WAAWC,yBAAAA,YAAY,UAAU,IAAI;CAC3C,MAAM,QACJ,aAAa,KAAA,IACT,KAAA,IACA,MAAM,YACJ,MAAM,UAAU,QAAQ,IACxB;CAER,IAAI;CACJ,IAAI,OAAO,QAAQ,UACjB,QAAQ;MACH,IAAI,WAAW;EACpB,MAAM,SAASA,yBAAAA,YAAY,SAAS,IAAI;EACxC,QACE,WAAW,KAAA,IACP,KAAA,IACA,UAAU,YACR,UAAU,UAAU,MAAM,IAC1B;CACV;CAEA,MAAM,QAAQC,oBAAAA,YAAY,UAAU,MAAM,QAAQ,MAAM,SAAS;CAEjE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qBAAAA,cAAD;EACS;EACA;EACA;EACA;EACK;EACH;EACE;EACA;EACG;EACH;EACX,aAAa,aAAa;EAC1B,GAAK,UAAU,KAAA,IAAY,EAAE,KAAK,MAAM,IAAI,CAAC;EAC7C,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,gBAAgB,KAAA,IAAY,EAAE,YAAY,IAAI,CAAC;EACpD,GAAK,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CACjD,CAAA;AAEL"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesCoreBars.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesCoreBars.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,mFAAmF;IACnF,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,mFAAmF;IACnF,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAY,EACZ,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAY,EACZ,SAAgB,EAChB,UAAqB,EACrB,OAAmB,EACnB,SAAgB,EAChB,SAAgB,EAChB,YAAoB,EACpB,WAAW,EACX,SAAgB,EAChB,OAAkC,EAClC,SAAS,GACV,EAAE,uBAAuB,+BAmDzB"}
1
+ {"version":3,"file":"TimeseriesCoreBars.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesCoreBars.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,gBAAgB,CAAC;AASxB,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,WAAW,CAAC;IACnB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,mFAAmF;IACnF,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,mFAAmF;IACnF,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qFAAqF;IACrF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAY,EACZ,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,KAAY,EACZ,SAAgB,EAChB,UAAqB,EACrB,OAAmB,EACnB,SAAgB,EAChB,SAAgB,EAChB,YAAoB,EACpB,WAAW,EACX,SAAgB,EAChB,OAAkC,EAClC,SAAS,GACV,EAAE,uBAAuB,+BAuDzB"}
@@ -1,4 +1,4 @@
1
- import { defaultTimeseriesFetcher, latestValue, useTimeseriesQueries } from "./timeseries-query.js";
1
+ import { defaultTimeseriesFetcher, latestValue, soleSeries, useTimeseriesQueries } from "./timeseries-query.js";
2
2
  import { seriesStats } from "./gauge-stats.js";
3
3
  import { ProgressBars } from "./ProgressBars.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -18,18 +18,22 @@ function TimeseriesCoreBars({ baseUrl = "", value, max, unit, title, icon, range
18
18
  refreshMs,
19
19
  fetcher
20
20
  });
21
- const rawValue = latestValue(results[0]?.data);
21
+ const valueRead = soleSeries(value.id, results[0]);
22
+ const maxRead = maxSeries ? soleSeries(maxSeries.id, results[1]) : void 0;
23
+ const error = valueRead.error ?? maxRead?.error ?? null;
24
+ const rawValue = latestValue(valueRead.data);
22
25
  const usage = rawValue === void 0 ? void 0 : value.transform ? value.transform(rawValue) : rawValue;
23
26
  let limit;
24
27
  if (typeof max === "number") limit = max;
25
28
  else if (maxSeries) {
26
- const rawMax = latestValue(results[1]?.data);
29
+ const rawMax = latestValue(maxRead?.data);
27
30
  limit = rawMax === void 0 ? void 0 : maxSeries.transform ? maxSeries.transform(rawMax) : rawMax;
28
31
  }
29
- const stats = seriesStats(results[0]?.data?.points, value.transform);
32
+ const stats = seriesStats(valueRead.data?.points, value.transform);
30
33
  return /* @__PURE__ */ jsx(ProgressBars, {
31
34
  usage,
32
35
  stats,
36
+ error,
33
37
  title,
34
38
  thresholds,
35
39
  variant,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesCoreBars.js","names":[],"sources":["../../src/data/TimeseriesCoreBars.tsx"],"sourcesContent":["import { type StaticIconComponent } from \"./Icon\";\nimport type { GaugeSeries } from \"./TimeseriesGauge\";\nimport type { TimeseriesResponse } from \"./TimeseriesPanel\";\nimport {\n ProgressBars,\n type ProgressBarsOrientation,\n type ProgressBarsUnit,\n type ProgressBarsVariant,\n} from \"./ProgressBars\";\nimport { seriesStats } from \"./gauge-stats\";\nimport { defaultTimeseriesFetcher, latestValue, useTimeseriesQueries } from \"./timeseries-query\";\n\nexport interface TimeseriesCoreBarsProps {\n /** Common prefix; the value/max requests are `baseUrl + id` (unless a series has `load`). */\n baseUrl?: string;\n /** The metric whose latest value (CPU millicores) fills the bars. */\n value: GaugeSeries;\n /**\n * The capacity. Either a `.limit`-style metric series (its latest value) or a\n * fixed number, in the same raw domain as `value`. Determines the number of\n * bars (one per `unit.perBar`). When omitted or 0, the bar count falls back to\n * the ceiling of the usage so an unbounded reading still renders.\n */\n max?: GaugeSeries | number;\n /** What one bar represents. Defaults to CPU cores (perBar 1000, label \"cores\"). */\n unit?: ProgressBarsUnit;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Look-back window passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /**\n * Utilisation thresholds (percent of capacity) at which the fill turns amber\n * then red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: ProgressBarsVariant;\n /** Show the title text. Icons and values remain visible unless separately hidden. */\n showLabel?: boolean;\n /** Show the value/capacity caption. Icons and bars remain visible when false. */\n showValue?: boolean;\n /**\n * Include the capacity in the caption (\"2.3 / 4 cores\"). Defaults to false — the\n * caption shows only the current value (\"2.3 cores\") since the bars already\n * convey capacity. Set true to append the \"/ <capacity>\".\n */\n showCapacity?: boolean;\n /** Bar direction. Vertical bars fill bottom-up; horizontal bars fill left-to-right. */\n orientation?: ProgressBarsOrientation;\n /**\n * Wrap the bars in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\n/**\n * TimeseriesCoreBars reads usage and limit live from the timeseries store\n * (mirroring TimeseriesGauge's data plumbing) and renders them as quantised\n * utilisation bars via {@link ProgressBars}. Usage and limit flow through each\n * series' optional `transform`; the hover card summarises current/min/max/avg/\n * capacity over the look-back window.\n */\nexport function TimeseriesCoreBars({\n baseUrl = \"\",\n value,\n max,\n unit,\n title,\n icon,\n range = \"1h\",\n refreshMs = 5000,\n thresholds = [75, 90],\n variant = \"default\",\n showLabel = true,\n showValue = true,\n showCapacity = false,\n orientation,\n hoverCard = true,\n fetcher = defaultTimeseriesFetcher,\n className,\n}: TimeseriesCoreBarsProps) {\n const maxSeries = typeof max === \"object\" ? max : undefined;\n const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {\n baseUrl,\n range,\n refreshMs,\n fetcher,\n });\n\n const rawValue = latestValue(results[0]?.data);\n const usage =\n rawValue === undefined\n ? undefined\n : value.transform\n ? value.transform(rawValue)\n : rawValue;\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(results[1]?.data);\n limit =\n rawMax === undefined\n ? undefined\n : maxSeries.transform\n ? maxSeries.transform(rawMax)\n : rawMax;\n }\n\n const stats = seriesStats(results[0]?.data?.points, value.transform);\n\n return (\n <ProgressBars\n usage={usage}\n stats={stats}\n title={title}\n thresholds={thresholds}\n variant={variant}\n showLabel={showLabel}\n showValue={showValue}\n showCapacity={showCapacity}\n hoverCard={hoverCard}\n hoverFooter={`over last ${range}`}\n {...(limit !== undefined ? { max: limit } : {})}\n {...(unit !== undefined ? { unit } : {})}\n {...(icon !== undefined ? { icon } : {})}\n {...(orientation !== undefined ? { orientation } : {})}\n {...(className !== undefined ? { className } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqEA,SAAgB,mBAAmB,EACjC,UAAU,IACV,OACA,KACA,MACA,OACA,MACA,QAAQ,MACR,YAAY,KACZ,aAAa,CAAC,IAAI,EAAE,GACpB,UAAU,WACV,YAAY,MACZ,YAAY,MACZ,eAAe,OACf,aACA,YAAY,MACZ,UAAU,0BACV,aAC0B;CAC1B,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,KAAA;CAClD,MAAM,UAAU,qBAAqB,YAAY,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG;EAC7E;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,WAAW,YAAY,QAAQ,EAAE,EAAE,IAAI;CAC7C,MAAM,QACJ,aAAa,KAAA,IACT,KAAA,IACA,MAAM,YACJ,MAAM,UAAU,QAAQ,IACxB;CAER,IAAI;CACJ,IAAI,OAAO,QAAQ,UACjB,QAAQ;MACH,IAAI,WAAW;EACpB,MAAM,SAAS,YAAY,QAAQ,EAAE,EAAE,IAAI;EAC3C,QACE,WAAW,KAAA,IACP,KAAA,IACA,UAAU,YACR,UAAU,UAAU,MAAM,IAC1B;CACV;CAEA,MAAM,QAAQ,YAAY,QAAQ,EAAE,EAAE,MAAM,QAAQ,MAAM,SAAS;CAEnE,OACE,oBAAC,cAAD;EACS;EACA;EACA;EACK;EACH;EACE;EACA;EACG;EACH;EACX,aAAa,aAAa;EAC1B,GAAK,UAAU,KAAA,IAAY,EAAE,KAAK,MAAM,IAAI,CAAC;EAC7C,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,gBAAgB,KAAA,IAAY,EAAE,YAAY,IAAI,CAAC;EACpD,GAAK,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CACjD,CAAA;AAEL"}
1
+ {"version":3,"file":"TimeseriesCoreBars.js","names":[],"sources":["../../src/data/TimeseriesCoreBars.tsx"],"sourcesContent":["import { type StaticIconComponent } from \"./Icon\";\nimport type { GaugeSeries } from \"./TimeseriesGauge\";\nimport type { TimeseriesResponse } from \"./TimeseriesPanel\";\nimport {\n ProgressBars,\n type ProgressBarsOrientation,\n type ProgressBarsUnit,\n type ProgressBarsVariant,\n} from \"./ProgressBars\";\nimport { seriesStats } from \"./gauge-stats\";\nimport {\n defaultTimeseriesFetcher,\n latestValue,\n soleSeries,\n useTimeseriesQueries,\n} from \"./timeseries-query\";\n\nexport interface TimeseriesCoreBarsProps {\n /** Common prefix; the value/max requests are `baseUrl + id` (unless a series has `load`). */\n baseUrl?: string;\n /** The metric whose latest value (CPU millicores) fills the bars. */\n value: GaugeSeries;\n /**\n * The capacity. Either a `.limit`-style metric series (its latest value) or a\n * fixed number, in the same raw domain as `value`. Determines the number of\n * bars (one per `unit.perBar`). When omitted or 0, the bar count falls back to\n * the ceiling of the usage so an unbounded reading still renders.\n */\n max?: GaugeSeries | number;\n /** What one bar represents. Defaults to CPU cores (perBar 1000, label \"cores\"). */\n unit?: ProgressBarsUnit;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Look-back window passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /**\n * Utilisation thresholds (percent of capacity) at which the fill turns amber\n * then red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: ProgressBarsVariant;\n /** Show the title text. Icons and values remain visible unless separately hidden. */\n showLabel?: boolean;\n /** Show the value/capacity caption. Icons and bars remain visible when false. */\n showValue?: boolean;\n /**\n * Include the capacity in the caption (\"2.3 / 4 cores\"). Defaults to false — the\n * caption shows only the current value (\"2.3 cores\") since the bars already\n * convey capacity. Set true to append the \"/ <capacity>\".\n */\n showCapacity?: boolean;\n /** Bar direction. Vertical bars fill bottom-up; horizontal bars fill left-to-right. */\n orientation?: ProgressBarsOrientation;\n /**\n * Wrap the bars in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\n/**\n * TimeseriesCoreBars reads usage and limit live from the timeseries store\n * (mirroring TimeseriesGauge's data plumbing) and renders them as quantised\n * utilisation bars via {@link ProgressBars}. Usage and limit flow through each\n * series' optional `transform`; the hover card summarises current/min/max/avg/\n * capacity over the look-back window.\n */\nexport function TimeseriesCoreBars({\n baseUrl = \"\",\n value,\n max,\n unit,\n title,\n icon,\n range = \"1h\",\n refreshMs = 5000,\n thresholds = [75, 90],\n variant = \"default\",\n showLabel = true,\n showValue = true,\n showCapacity = false,\n orientation,\n hoverCard = true,\n fetcher = defaultTimeseriesFetcher,\n className,\n}: TimeseriesCoreBarsProps) {\n const maxSeries = typeof max === \"object\" ? max : undefined;\n const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {\n baseUrl,\n range,\n refreshMs,\n fetcher,\n });\n\n const valueRead = soleSeries(value.id, results[0]);\n const maxRead = maxSeries ? soleSeries(maxSeries.id, results[1]) : undefined;\n const error = valueRead.error ?? maxRead?.error ?? null;\n const rawValue = latestValue(valueRead.data);\n const usage =\n rawValue === undefined\n ? undefined\n : value.transform\n ? value.transform(rawValue)\n : rawValue;\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(maxRead?.data);\n limit =\n rawMax === undefined\n ? undefined\n : maxSeries.transform\n ? maxSeries.transform(rawMax)\n : rawMax;\n }\n\n const stats = seriesStats(valueRead.data?.points, value.transform);\n\n return (\n <ProgressBars\n usage={usage}\n stats={stats}\n error={error}\n title={title}\n thresholds={thresholds}\n variant={variant}\n showLabel={showLabel}\n showValue={showValue}\n showCapacity={showCapacity}\n hoverCard={hoverCard}\n hoverFooter={`over last ${range}`}\n {...(limit !== undefined ? { max: limit } : {})}\n {...(unit !== undefined ? { unit } : {})}\n {...(icon !== undefined ? { icon } : {})}\n {...(orientation !== undefined ? { orientation } : {})}\n {...(className !== undefined ? { className } : {})}\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;AA0EA,SAAgB,mBAAmB,EACjC,UAAU,IACV,OACA,KACA,MACA,OACA,MACA,QAAQ,MACR,YAAY,KACZ,aAAa,CAAC,IAAI,EAAE,GACpB,UAAU,WACV,YAAY,MACZ,YAAY,MACZ,eAAe,OACf,aACA,YAAY,MACZ,UAAU,0BACV,aAC0B;CAC1B,MAAM,YAAY,OAAO,QAAQ,WAAW,MAAM,KAAA;CAClD,MAAM,UAAU,qBAAqB,YAAY,CAAC,OAAO,SAAS,IAAI,CAAC,KAAK,GAAG;EAC7E;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,YAAY,WAAW,MAAM,IAAI,QAAQ,EAAE;CACjD,MAAM,UAAU,YAAY,WAAW,UAAU,IAAI,QAAQ,EAAE,IAAI,KAAA;CACnE,MAAM,QAAQ,UAAU,SAAS,SAAS,SAAS;CACnD,MAAM,WAAW,YAAY,UAAU,IAAI;CAC3C,MAAM,QACJ,aAAa,KAAA,IACT,KAAA,IACA,MAAM,YACJ,MAAM,UAAU,QAAQ,IACxB;CAER,IAAI;CACJ,IAAI,OAAO,QAAQ,UACjB,QAAQ;MACH,IAAI,WAAW;EACpB,MAAM,SAAS,YAAY,SAAS,IAAI;EACxC,QACE,WAAW,KAAA,IACP,KAAA,IACA,UAAU,YACR,UAAU,UAAU,MAAM,IAC1B;CACV;CAEA,MAAM,QAAQ,YAAY,UAAU,MAAM,QAAQ,MAAM,SAAS;CAEjE,OACE,oBAAC,cAAD;EACS;EACA;EACA;EACA;EACK;EACH;EACE;EACA;EACG;EACH;EACX,aAAa,aAAa;EAC1B,GAAK,UAAU,KAAA,IAAY,EAAE,KAAK,MAAM,IAAI,CAAC;EAC7C,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,SAAS,KAAA,IAAY,EAAE,KAAK,IAAI,CAAC;EACtC,GAAK,gBAAgB,KAAA,IAAY,EAAE,YAAY,IAAI,CAAC;EACpD,GAAK,cAAc,KAAA,IAAY,EAAE,UAAU,IAAI,CAAC;CACjD,CAAA;AAEL"}
@@ -88,13 +88,16 @@ function TimeseriesGauge({ baseUrl = "", value, max, title, icon, unit, range =
88
88
  refreshMs,
89
89
  fetcher
90
90
  });
91
- const rawValue = require_timeseries_query.latestValue(results[0]?.data);
91
+ const valueRead = require_timeseries_query.soleSeries(value.id, results[0]);
92
+ const maxRead = maxSeries ? require_timeseries_query.soleSeries(maxSeries.id, results[1]) : void 0;
93
+ const error = valueRead.error ?? maxRead?.error ?? null;
94
+ const rawValue = require_timeseries_query.latestValue(valueRead.data);
92
95
  const hasValue = rawValue !== void 0;
93
96
  const usage = value.transform ? value.transform(rawValue ?? 0) : rawValue ?? 0;
94
97
  let limit;
95
98
  if (typeof max === "number") limit = max;
96
99
  else if (maxSeries) {
97
- const rawMax = require_timeseries_query.latestValue(results[1]?.data);
100
+ const rawMax = require_timeseries_query.latestValue(maxRead?.data);
98
101
  limit = rawMax === void 0 ? void 0 : maxSeries.transform ? maxSeries.transform(rawMax) : rawMax;
99
102
  }
100
103
  const bounded = hasValue && limit !== void 0 && limit > 0;
@@ -102,7 +105,7 @@ function TimeseriesGauge({ baseUrl = "", value, max, title, icon, unit, range =
102
105
  const tone = toneClass(pct, thresholds);
103
106
  const toneBg = toneBgClass(pct, thresholds);
104
107
  const readout = centerDisplay === "percent" ? bounded ? `${pct}%` : hasValue ? "n/a" : "—" : hasValue ? require_format.formatUnit(usage, unit) : "—";
105
- const titleText = `${title}: ${readout}`;
108
+ const titleText = `${title}: ${error ? error.message : readout}`;
106
109
  const canExpand = expandable && variant === "default";
107
110
  const readoutTone = bounded ? tone : "text-foreground";
108
111
  const chartSeries = (0, react.useMemo)(() => {
@@ -116,9 +119,13 @@ function TimeseriesGauge({ baseUrl = "", value, max, title, icon, unit, range =
116
119
  });
117
120
  return s;
118
121
  }, [value, maxSeries]);
119
- const stats = require_gauge_stats.seriesStats(results[0]?.data?.points, value.transform);
122
+ const stats = require_gauge_stats.seriesStats(valueRead.data?.points, value.transform);
120
123
  const fmt = (n) => require_format.formatUnit(n, unit);
121
- const hoverRows = hasValue ? [
124
+ const hoverRows = error ? [{
125
+ label: "Error",
126
+ value: error.message,
127
+ tone: "text-red-500"
128
+ }] : hasValue ? [
122
129
  {
123
130
  label: "Current",
124
131
  value: fmt(usage),