@flanksource/clicky-ui 0.2.14 → 0.2.15

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 (461) hide show
  1. package/dist/chat.cjs +20 -0
  2. package/dist/chat.cjs.map +1 -0
  3. package/dist/chat.d.ts +2 -0
  4. package/dist/chat.d.ts.map +1 -0
  5. package/dist/chat.js +20 -0
  6. package/dist/chat.js.map +1 -0
  7. package/dist/components/Combobox.cjs +5 -3
  8. package/dist/components/Combobox.cjs.map +1 -1
  9. package/dist/components/Combobox.d.ts +2 -0
  10. package/dist/components/Combobox.d.ts.map +1 -1
  11. package/dist/components/Combobox.js +5 -3
  12. package/dist/components/Combobox.js.map +1 -1
  13. package/dist/components/DateTimePicker.cjs +3 -1
  14. package/dist/components/DateTimePicker.cjs.map +1 -1
  15. package/dist/components/DateTimePicker.d.ts +5 -1
  16. package/dist/components/DateTimePicker.d.ts.map +1 -1
  17. package/dist/components/DateTimePicker.js +3 -1
  18. package/dist/components/DateTimePicker.js.map +1 -1
  19. package/dist/components/FilterBar.cjs +8 -41
  20. package/dist/components/FilterBar.cjs.map +1 -1
  21. package/dist/components/FilterBar.d.ts +0 -2
  22. package/dist/components/FilterBar.d.ts.map +1 -1
  23. package/dist/components/FilterBar.js +3 -36
  24. package/dist/components/FilterBar.js.map +1 -1
  25. package/dist/components/FormatOptionsDropdown.cjs +2 -18
  26. package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
  27. package/dist/components/FormatOptionsDropdown.d.ts +1 -17
  28. package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
  29. package/dist/components/FormatOptionsDropdown.js +1 -17
  30. package/dist/components/FormatOptionsDropdown.js.map +1 -1
  31. package/dist/components/JsonSchemaForm.cjs +128 -12
  32. package/dist/components/JsonSchemaForm.cjs.map +1 -1
  33. package/dist/components/JsonSchemaForm.d.ts +1 -1
  34. package/dist/components/JsonSchemaForm.d.ts.map +1 -1
  35. package/dist/components/JsonSchemaForm.js +131 -15
  36. package/dist/components/JsonSchemaForm.js.map +1 -1
  37. package/dist/components/SecretKeySelector.cjs +0 -1
  38. package/dist/components/SecretKeySelector.cjs.map +1 -1
  39. package/dist/components/SecretKeySelector.d.ts +0 -2
  40. package/dist/components/SecretKeySelector.d.ts.map +1 -1
  41. package/dist/components/SecretKeySelector.js +1 -2
  42. package/dist/components/SecretKeySelector.js.map +1 -1
  43. package/dist/components/TreePickerField.cjs +137 -0
  44. package/dist/components/TreePickerField.cjs.map +1 -0
  45. package/dist/components/TreePickerField.d.ts +30 -0
  46. package/dist/components/TreePickerField.d.ts.map +1 -0
  47. package/dist/components/TreePickerField.js +137 -0
  48. package/dist/components/TreePickerField.js.map +1 -0
  49. package/dist/components/WorkloadPicker.cjs +6 -81
  50. package/dist/components/WorkloadPicker.cjs.map +1 -1
  51. package/dist/components/WorkloadPicker.d.ts +1 -20
  52. package/dist/components/WorkloadPicker.d.ts.map +1 -1
  53. package/dist/components/WorkloadPicker.js +3 -78
  54. package/dist/components/WorkloadPicker.js.map +1 -1
  55. package/dist/components/button-variants.cjs +30 -0
  56. package/dist/components/button-variants.cjs.map +1 -0
  57. package/dist/components/button-variants.d.ts +5 -0
  58. package/dist/components/button-variants.d.ts.map +1 -0
  59. package/dist/components/button-variants.js +30 -0
  60. package/dist/components/button-variants.js.map +1 -0
  61. package/dist/components/button.cjs +11 -82
  62. package/dist/components/button.cjs.map +1 -1
  63. package/dist/components/button.d.ts +1 -5
  64. package/dist/components/button.d.ts.map +1 -1
  65. package/dist/components/button.js +5 -76
  66. package/dist/components/button.js.map +1 -1
  67. package/dist/components/filter-bar-utils.cjs +37 -0
  68. package/dist/components/filter-bar-utils.cjs.map +1 -0
  69. package/dist/components/filter-bar-utils.d.ts +4 -0
  70. package/dist/components/filter-bar-utils.d.ts.map +1 -0
  71. package/dist/components/filter-bar-utils.js +37 -0
  72. package/dist/components/filter-bar-utils.js.map +1 -0
  73. package/dist/components/format-options.cjs +20 -0
  74. package/dist/components/format-options.cjs.map +1 -0
  75. package/dist/components/format-options.d.ts +18 -0
  76. package/dist/components/format-options.d.ts.map +1 -0
  77. package/dist/components/format-options.js +20 -0
  78. package/dist/components/format-options.js.map +1 -0
  79. package/dist/components/json-schema-form-array.cjs +13 -17
  80. package/dist/components/json-schema-form-array.cjs.map +1 -1
  81. package/dist/components/json-schema-form-array.d.ts +1 -2
  82. package/dist/components/json-schema-form-array.d.ts.map +1 -1
  83. package/dist/components/json-schema-form-array.js +3 -7
  84. package/dist/components/json-schema-form-array.js.map +1 -1
  85. package/dist/components/json-schema-form-fields.cjs +90 -232
  86. package/dist/components/json-schema-form-fields.cjs.map +1 -1
  87. package/dist/components/json-schema-form-fields.d.ts +51 -6
  88. package/dist/components/json-schema-form-fields.d.ts.map +1 -1
  89. package/dist/components/json-schema-form-fields.js +82 -224
  90. package/dist/components/json-schema-form-fields.js.map +1 -1
  91. package/dist/components/json-schema-form-object.cjs +149 -0
  92. package/dist/components/json-schema-form-object.cjs.map +1 -0
  93. package/dist/components/json-schema-form-object.d.ts +10 -0
  94. package/dist/components/json-schema-form-object.d.ts.map +1 -0
  95. package/dist/components/json-schema-form-object.js +149 -0
  96. package/dist/components/json-schema-form-object.js.map +1 -0
  97. package/dist/components/json-schema-form-preferences.cjs +41 -0
  98. package/dist/components/json-schema-form-preferences.cjs.map +1 -0
  99. package/dist/components/json-schema-form-preferences.d.ts +10 -0
  100. package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
  101. package/dist/components/json-schema-form-preferences.js +41 -0
  102. package/dist/components/json-schema-form-preferences.js.map +1 -0
  103. package/dist/components/json-schema-form-render.cjs +43 -72
  104. package/dist/components/json-schema-form-render.cjs.map +1 -1
  105. package/dist/components/json-schema-form-render.d.ts +5 -33
  106. package/dist/components/json-schema-form-render.d.ts.map +1 -1
  107. package/dist/components/json-schema-form-render.js +41 -70
  108. package/dist/components/json-schema-form-render.js.map +1 -1
  109. package/dist/components/json-schema-form-resolve.cjs +9 -1
  110. package/dist/components/json-schema-form-resolve.cjs.map +1 -1
  111. package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
  112. package/dist/components/json-schema-form-resolve.js +9 -1
  113. package/dist/components/json-schema-form-resolve.js.map +1 -1
  114. package/dist/components/json-schema-form-types.d.ts +58 -1
  115. package/dist/components/json-schema-form-types.d.ts.map +1 -1
  116. package/dist/components/json-schema-form-utils.cjs +96 -0
  117. package/dist/components/json-schema-form-utils.cjs.map +1 -0
  118. package/dist/components/json-schema-form-utils.d.ts +17 -0
  119. package/dist/components/json-schema-form-utils.d.ts.map +1 -0
  120. package/dist/components/json-schema-form-utils.js +96 -0
  121. package/dist/components/json-schema-form-utils.js.map +1 -0
  122. package/dist/components/loading.cjs +109 -0
  123. package/dist/components/loading.cjs.map +1 -0
  124. package/dist/components/loading.d.ts +27 -0
  125. package/dist/components/loading.d.ts.map +1 -0
  126. package/dist/components/loading.js +109 -0
  127. package/dist/components/loading.js.map +1 -0
  128. package/dist/components/workload-picker-utils.cjs +88 -0
  129. package/dist/components/workload-picker-utils.cjs.map +1 -0
  130. package/dist/components/workload-picker-utils.d.ts +34 -0
  131. package/dist/components/workload-picker-utils.d.ts.map +1 -0
  132. package/dist/components/workload-picker-utils.js +88 -0
  133. package/dist/components/workload-picker-utils.js.map +1 -0
  134. package/dist/components.cjs +18 -6
  135. package/dist/components.cjs.map +1 -1
  136. package/dist/components.d.ts +10 -3
  137. package/dist/components.d.ts.map +1 -1
  138. package/dist/components.js +16 -4
  139. package/dist/components.js.map +1 -1
  140. package/dist/data/Badge.cjs +11 -91
  141. package/dist/data/Badge.cjs.map +1 -1
  142. package/dist/data/Badge.d.ts +1 -5
  143. package/dist/data/Badge.d.ts.map +1 -1
  144. package/dist/data/Badge.js +11 -91
  145. package/dist/data/Badge.js.map +1 -1
  146. package/dist/data/Clicky.cjs +4 -3
  147. package/dist/data/Clicky.cjs.map +1 -1
  148. package/dist/data/Clicky.d.ts.map +1 -1
  149. package/dist/data/Clicky.js +4 -3
  150. package/dist/data/Clicky.js.map +1 -1
  151. package/dist/data/DataTable.cjs +161 -156
  152. package/dist/data/DataTable.cjs.map +1 -1
  153. package/dist/data/DataTable.d.ts +25 -4
  154. package/dist/data/DataTable.d.ts.map +1 -1
  155. package/dist/data/DataTable.js +140 -135
  156. package/dist/data/DataTable.js.map +1 -1
  157. package/dist/data/FilterPill.cjs +3 -0
  158. package/dist/data/FilterPill.cjs.map +1 -1
  159. package/dist/data/FilterPill.d.ts.map +1 -1
  160. package/dist/data/FilterPill.js +3 -0
  161. package/dist/data/FilterPill.js.map +1 -1
  162. package/dist/data/Icon.cjs +7 -7
  163. package/dist/data/Icon.cjs.map +1 -1
  164. package/dist/data/Icon.js +7 -7
  165. package/dist/data/Icon.js.map +1 -1
  166. package/dist/data/LogDetails.cjs +5 -14
  167. package/dist/data/LogDetails.cjs.map +1 -1
  168. package/dist/data/LogDetails.d.ts +8 -4
  169. package/dist/data/LogDetails.d.ts.map +1 -1
  170. package/dist/data/LogDetails.js +4 -13
  171. package/dist/data/LogDetails.js.map +1 -1
  172. package/dist/data/LogsTable.cjs +6 -165
  173. package/dist/data/LogsTable.cjs.map +1 -1
  174. package/dist/data/LogsTable.d.ts +2 -15
  175. package/dist/data/LogsTable.d.ts.map +1 -1
  176. package/dist/data/LogsTable.js +6 -165
  177. package/dist/data/LogsTable.js.map +1 -1
  178. package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
  179. package/dist/data/TimeseriesPanel.axes.js.map +1 -1
  180. package/dist/data/TreeNode.cjs +13 -7
  181. package/dist/data/TreeNode.cjs.map +1 -1
  182. package/dist/data/TreeNode.d.ts.map +1 -1
  183. package/dist/data/TreeNode.js +13 -7
  184. package/dist/data/TreeNode.js.map +1 -1
  185. package/dist/data/badge-variants.cjs +85 -0
  186. package/dist/data/badge-variants.cjs.map +1 -0
  187. package/dist/data/badge-variants.d.ts +6 -0
  188. package/dist/data/badge-variants.d.ts.map +1 -0
  189. package/dist/data/badge-variants.js +85 -0
  190. package/dist/data/badge-variants.js.map +1 -0
  191. package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
  192. package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
  193. package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
  194. package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
  195. package/dist/data/cache-browser/CacheBrowser.js +59 -0
  196. package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
  197. package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
  198. package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
  199. package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
  200. package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
  201. package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
  202. package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
  203. package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
  204. package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
  205. package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
  206. package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
  207. package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
  208. package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
  209. package/dist/data/cache-browser/CacheTree.cjs +189 -0
  210. package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
  211. package/dist/data/cache-browser/CacheTree.d.ts +27 -0
  212. package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
  213. package/dist/data/cache-browser/CacheTree.js +189 -0
  214. package/dist/data/cache-browser/CacheTree.js.map +1 -0
  215. package/dist/data/cache-browser/CacheValue.cjs +86 -0
  216. package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
  217. package/dist/data/cache-browser/CacheValue.d.ts +11 -0
  218. package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
  219. package/dist/data/cache-browser/CacheValue.js +86 -0
  220. package/dist/data/cache-browser/CacheValue.js.map +1 -0
  221. package/dist/data/cache-browser/adapter.cjs +52 -0
  222. package/dist/data/cache-browser/adapter.cjs.map +1 -0
  223. package/dist/data/cache-browser/adapter.d.ts +48 -0
  224. package/dist/data/cache-browser/adapter.d.ts.map +1 -0
  225. package/dist/data/cache-browser/adapter.js +52 -0
  226. package/dist/data/cache-browser/adapter.js.map +1 -0
  227. package/dist/data/cache-browser/api.cjs +42 -0
  228. package/dist/data/cache-browser/api.cjs.map +1 -0
  229. package/dist/data/cache-browser/api.d.ts +33 -0
  230. package/dist/data/cache-browser/api.d.ts.map +1 -0
  231. package/dist/data/cache-browser/api.js +42 -0
  232. package/dist/data/cache-browser/api.js.map +1 -0
  233. package/dist/data/cache-browser/index.d.ts +9 -0
  234. package/dist/data/cache-browser/index.d.ts.map +1 -0
  235. package/dist/data/cache-browser/types.cjs +7 -0
  236. package/dist/data/cache-browser/types.cjs.map +1 -0
  237. package/dist/data/cache-browser/types.d.ts +78 -0
  238. package/dist/data/cache-browser/types.d.ts.map +1 -0
  239. package/dist/data/cache-browser/types.js +7 -0
  240. package/dist/data/cache-browser/types.js.map +1 -0
  241. package/dist/data/cells/TagList.cjs +4 -101
  242. package/dist/data/cells/TagList.cjs.map +1 -1
  243. package/dist/data/cells/TagList.d.ts +1 -49
  244. package/dist/data/cells/TagList.d.ts.map +1 -1
  245. package/dist/data/cells/TagList.js +3 -100
  246. package/dist/data/cells/TagList.js.map +1 -1
  247. package/dist/data/cells/Timestamp.cjs +3 -192
  248. package/dist/data/cells/Timestamp.cjs.map +1 -1
  249. package/dist/data/cells/Timestamp.d.ts +1 -50
  250. package/dist/data/cells/Timestamp.d.ts.map +1 -1
  251. package/dist/data/cells/Timestamp.js +2 -191
  252. package/dist/data/cells/Timestamp.js.map +1 -1
  253. package/dist/data/cells/tag-utils.cjs +103 -0
  254. package/dist/data/cells/tag-utils.cjs.map +1 -0
  255. package/dist/data/cells/tag-utils.d.ts +51 -0
  256. package/dist/data/cells/tag-utils.d.ts.map +1 -0
  257. package/dist/data/cells/tag-utils.js +103 -0
  258. package/dist/data/cells/tag-utils.js.map +1 -0
  259. package/dist/data/cells/timestamp-format.cjs +193 -0
  260. package/dist/data/cells/timestamp-format.cjs.map +1 -0
  261. package/dist/data/cells/timestamp-format.d.ts +51 -0
  262. package/dist/data/cells/timestamp-format.d.ts.map +1 -0
  263. package/dist/data/cells/timestamp-format.js +193 -0
  264. package/dist/data/cells/timestamp-format.js.map +1 -0
  265. package/dist/data/chat/Chat.cjs +48 -0
  266. package/dist/data/chat/Chat.cjs.map +1 -0
  267. package/dist/data/chat/Chat.d.ts +26 -0
  268. package/dist/data/chat/Chat.d.ts.map +1 -0
  269. package/dist/data/chat/Chat.fixtures.d.ts +6 -0
  270. package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
  271. package/dist/data/chat/Chat.js +48 -0
  272. package/dist/data/chat/Chat.js.map +1 -0
  273. package/dist/data/chat/Conversation.cjs +34 -0
  274. package/dist/data/chat/Conversation.cjs.map +1 -0
  275. package/dist/data/chat/Conversation.d.ts +11 -0
  276. package/dist/data/chat/Conversation.d.ts.map +1 -0
  277. package/dist/data/chat/Conversation.js +34 -0
  278. package/dist/data/chat/Conversation.js.map +1 -0
  279. package/dist/data/chat/Message.cjs +44 -0
  280. package/dist/data/chat/Message.cjs.map +1 -0
  281. package/dist/data/chat/Message.d.ts +10 -0
  282. package/dist/data/chat/Message.d.ts.map +1 -0
  283. package/dist/data/chat/Message.js +44 -0
  284. package/dist/data/chat/Message.js.map +1 -0
  285. package/dist/data/chat/PromptInput.cjs +61 -0
  286. package/dist/data/chat/PromptInput.cjs.map +1 -0
  287. package/dist/data/chat/PromptInput.d.ts +16 -0
  288. package/dist/data/chat/PromptInput.d.ts.map +1 -0
  289. package/dist/data/chat/PromptInput.js +61 -0
  290. package/dist/data/chat/PromptInput.js.map +1 -0
  291. package/dist/data/chat/ToolCall.cjs +92 -0
  292. package/dist/data/chat/ToolCall.cjs.map +1 -0
  293. package/dist/data/chat/ToolCall.d.ts +14 -0
  294. package/dist/data/chat/ToolCall.d.ts.map +1 -0
  295. package/dist/data/chat/ToolCall.js +92 -0
  296. package/dist/data/chat/ToolCall.js.map +1 -0
  297. package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
  298. package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
  299. package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
  300. package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
  301. package/dist/data/chat/clickyOperationsToTools.js +73 -0
  302. package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
  303. package/dist/data/chat/index.d.ts +8 -0
  304. package/dist/data/chat/index.d.ts.map +1 -0
  305. package/dist/data/chat/types.cjs +18 -0
  306. package/dist/data/chat/types.cjs.map +1 -0
  307. package/dist/data/chat/types.d.ts +41 -0
  308. package/dist/data/chat/types.d.ts.map +1 -0
  309. package/dist/data/chat/types.js +18 -0
  310. package/dist/data/chat/types.js.map +1 -0
  311. package/dist/data/data-table-utils.cjs +55 -0
  312. package/dist/data/data-table-utils.cjs.map +1 -0
  313. package/dist/data/data-table-utils.d.ts +24 -0
  314. package/dist/data/data-table-utils.d.ts.map +1 -0
  315. package/dist/data/data-table-utils.js +55 -0
  316. package/dist/data/data-table-utils.js.map +1 -0
  317. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
  318. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  319. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  320. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
  321. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  322. package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
  323. package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
  324. package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
  325. package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
  326. package/dist/data/diagnostics/GoroutineCard.js +2 -21
  327. package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
  328. package/dist/data/diagnostics/ThreadCard.cjs +3 -38
  329. package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
  330. package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
  331. package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
  332. package/dist/data/diagnostics/ThreadCard.js +2 -37
  333. package/dist/data/diagnostics/ThreadCard.js.map +1 -1
  334. package/dist/data/diagnostics/state-styles.cjs +59 -0
  335. package/dist/data/diagnostics/state-styles.cjs.map +1 -0
  336. package/dist/data/diagnostics/state-styles.d.ts +5 -0
  337. package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
  338. package/dist/data/diagnostics/state-styles.js +59 -0
  339. package/dist/data/diagnostics/state-styles.js.map +1 -0
  340. package/dist/data/logs-normalize.cjs +166 -0
  341. package/dist/data/logs-normalize.cjs.map +1 -0
  342. package/dist/data/logs-normalize.d.ts +16 -0
  343. package/dist/data/logs-normalize.d.ts.map +1 -0
  344. package/dist/data/logs-normalize.js +166 -0
  345. package/dist/data/logs-normalize.js.map +1 -0
  346. package/dist/data/task-status.cjs +19 -19
  347. package/dist/data/task-status.cjs.map +1 -1
  348. package/dist/data/task-status.js +19 -19
  349. package/dist/data/task-status.js.map +1 -1
  350. package/dist/data/version-info.cjs +3 -3
  351. package/dist/data/version-info.js +3 -3
  352. package/dist/data.cjs +43 -18
  353. package/dist/data.cjs.map +1 -1
  354. package/dist/data.d.ts +11 -5
  355. package/dist/data.d.ts.map +1 -1
  356. package/dist/data.js +30 -5
  357. package/dist/data.js.map +1 -1
  358. package/dist/hooks/density-provider.cjs +38 -0
  359. package/dist/hooks/density-provider.cjs.map +1 -0
  360. package/dist/hooks/density-provider.d.ts +20 -0
  361. package/dist/hooks/density-provider.d.ts.map +1 -0
  362. package/dist/hooks/density-provider.js +38 -0
  363. package/dist/hooks/density-provider.js.map +1 -0
  364. package/dist/hooks/theme-provider.cjs +43 -0
  365. package/dist/hooks/theme-provider.cjs.map +1 -0
  366. package/dist/hooks/theme-provider.d.ts +9 -0
  367. package/dist/hooks/theme-provider.d.ts.map +1 -0
  368. package/dist/hooks/theme-provider.js +43 -0
  369. package/dist/hooks/theme-provider.js.map +1 -0
  370. package/dist/hooks/use-density.cjs +8 -37
  371. package/dist/hooks/use-density.cjs.map +1 -1
  372. package/dist/hooks/use-density.d.ts +5 -20
  373. package/dist/hooks/use-density.d.ts.map +1 -1
  374. package/dist/hooks/use-density.js +9 -38
  375. package/dist/hooks/use-density.js.map +1 -1
  376. package/dist/hooks/use-theme.cjs +10 -43
  377. package/dist/hooks/use-theme.cjs.map +1 -1
  378. package/dist/hooks/use-theme.d.ts +6 -9
  379. package/dist/hooks/use-theme.d.ts.map +1 -1
  380. package/dist/hooks/use-theme.js +11 -44
  381. package/dist/hooks/use-theme.js.map +1 -1
  382. package/dist/hooks.cjs +5 -2
  383. package/dist/hooks.cjs.map +1 -1
  384. package/dist/hooks.d.ts +4 -2
  385. package/dist/hooks.d.ts.map +1 -1
  386. package/dist/hooks.js +5 -2
  387. package/dist/hooks.js.map +1 -1
  388. package/dist/icons/changeIconAliases.cjs +13 -13
  389. package/dist/icons/changeIconAliases.cjs.map +1 -1
  390. package/dist/icons/changeIconAliases.d.ts.map +1 -1
  391. package/dist/icons/changeIconAliases.js +13 -13
  392. package/dist/icons/changeIconAliases.js.map +1 -1
  393. package/dist/index.cjs +71 -30
  394. package/dist/index.cjs.map +1 -1
  395. package/dist/index.js +53 -12
  396. package/dist/index.js.map +1 -1
  397. package/dist/overlay/DropdownMenu.cjs +2 -0
  398. package/dist/overlay/DropdownMenu.cjs.map +1 -1
  399. package/dist/overlay/DropdownMenu.d.ts +3 -1
  400. package/dist/overlay/DropdownMenu.d.ts.map +1 -1
  401. package/dist/overlay/DropdownMenu.js +2 -0
  402. package/dist/overlay/DropdownMenu.js.map +1 -1
  403. package/dist/overlay/Modal.cjs +11 -4
  404. package/dist/overlay/Modal.cjs.map +1 -1
  405. package/dist/overlay/Modal.d.ts +1 -1
  406. package/dist/overlay/Modal.d.ts.map +1 -1
  407. package/dist/overlay/Modal.js +11 -4
  408. package/dist/overlay/Modal.js.map +1 -1
  409. package/dist/overlay/modalStack.cjs +35 -0
  410. package/dist/overlay/modalStack.cjs.map +1 -0
  411. package/dist/overlay/modalStack.d.ts +13 -0
  412. package/dist/overlay/modalStack.d.ts.map +1 -0
  413. package/dist/overlay/modalStack.js +35 -0
  414. package/dist/overlay/modalStack.js.map +1 -0
  415. package/dist/rpc/AcceptPicker.cjs +2 -18
  416. package/dist/rpc/AcceptPicker.cjs.map +1 -1
  417. package/dist/rpc/AcceptPicker.d.ts +1 -41
  418. package/dist/rpc/AcceptPicker.d.ts.map +1 -1
  419. package/dist/rpc/AcceptPicker.js +2 -18
  420. package/dist/rpc/AcceptPicker.js.map +1 -1
  421. package/dist/rpc/CommandOutput.cjs +1 -1
  422. package/dist/rpc/CommandOutput.cjs.map +1 -1
  423. package/dist/rpc/CommandOutput.js +1 -1
  424. package/dist/rpc/CommandOutput.js.map +1 -1
  425. package/dist/rpc/EndpointList.cjs +1 -1
  426. package/dist/rpc/EndpointList.cjs.map +1 -1
  427. package/dist/rpc/EndpointList.js +1 -1
  428. package/dist/rpc/EndpointList.js.map +1 -1
  429. package/dist/rpc/OperationCatalog.cjs +23 -41
  430. package/dist/rpc/OperationCatalog.cjs.map +1 -1
  431. package/dist/rpc/OperationCatalog.d.ts.map +1 -1
  432. package/dist/rpc/OperationCatalog.js +24 -42
  433. package/dist/rpc/OperationCatalog.js.map +1 -1
  434. package/dist/rpc/OperationCommandPage.cjs.map +1 -1
  435. package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
  436. package/dist/rpc/OperationCommandPage.js.map +1 -1
  437. package/dist/rpc/accept-options.cjs +20 -0
  438. package/dist/rpc/accept-options.cjs.map +1 -0
  439. package/dist/rpc/accept-options.d.ts +42 -0
  440. package/dist/rpc/accept-options.d.ts.map +1 -0
  441. package/dist/rpc/accept-options.js +20 -0
  442. package/dist/rpc/accept-options.js.map +1 -0
  443. package/dist/rpc/classify.cjs +15 -4
  444. package/dist/rpc/classify.cjs.map +1 -1
  445. package/dist/rpc/classify.d.ts.map +1 -1
  446. package/dist/rpc/classify.js +15 -4
  447. package/dist/rpc/classify.js.map +1 -1
  448. package/dist/rpc/clickyMetadata.cjs +13 -3
  449. package/dist/rpc/clickyMetadata.cjs.map +1 -1
  450. package/dist/rpc/clickyMetadata.d.ts +2 -0
  451. package/dist/rpc/clickyMetadata.d.ts.map +1 -1
  452. package/dist/rpc/clickyMetadata.js +14 -4
  453. package/dist/rpc/clickyMetadata.js.map +1 -1
  454. package/dist/rpc.cjs +3 -2
  455. package/dist/rpc.cjs.map +1 -1
  456. package/dist/rpc.d.ts +2 -1
  457. package/dist/rpc.d.ts.map +1 -1
  458. package/dist/rpc.js +2 -1
  459. package/dist/rpc.js.map +1 -1
  460. package/dist/styles.css +1 -1
  461. package/package.json +16 -1
@@ -0,0 +1,59 @@
1
+ function goroutineStateBadge(state) {
2
+ if (state.includes("running"))
3
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
4
+ if (state.includes("chan") || state.includes("wait"))
5
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
6
+ if (state.includes("sleep"))
7
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
8
+ if (state.includes("select"))
9
+ return "bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300";
10
+ return "bg-muted text-muted-foreground";
11
+ }
12
+ function goroutineStateDot(state) {
13
+ if (state.includes("running")) return "bg-green-500";
14
+ if (state.includes("chan") || state.includes("wait")) return "bg-blue-500";
15
+ if (state.includes("sleep")) return "bg-amber-500";
16
+ if (state.includes("select")) return "bg-violet-500";
17
+ return "bg-muted-foreground/40";
18
+ }
19
+ function threadStateBadge(state) {
20
+ switch (state) {
21
+ case "runnable":
22
+ return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
23
+ case "blocked":
24
+ return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
25
+ case "waiting":
26
+ case "timed_waiting":
27
+ return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
28
+ case "new":
29
+ return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
30
+ case "terminated":
31
+ return "bg-muted text-muted-foreground";
32
+ default:
33
+ return "bg-muted text-muted-foreground";
34
+ }
35
+ }
36
+ function threadStateDot(state) {
37
+ switch (state) {
38
+ case "runnable":
39
+ return "bg-green-500";
40
+ case "blocked":
41
+ return "bg-red-500";
42
+ case "waiting":
43
+ case "timed_waiting":
44
+ return "bg-blue-500";
45
+ case "new":
46
+ return "bg-amber-500";
47
+ case "terminated":
48
+ return "bg-muted-foreground/40";
49
+ default:
50
+ return "bg-muted-foreground/40";
51
+ }
52
+ }
53
+ export {
54
+ goroutineStateBadge,
55
+ goroutineStateDot,
56
+ threadStateBadge,
57
+ threadStateDot
58
+ };
59
+ //# sourceMappingURL=state-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-styles.js","sources":["../../../src/data/diagnostics/state-styles.ts"],"sourcesContent":["// Tailwind class pickers for goroutine / JVM-thread states, shared by the\n// stack cards and the diagnostics detail panel.\n\nexport function goroutineStateBadge(state: string): string {\n if (state.includes(\"running\"))\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n if (state.includes(\"chan\") || state.includes(\"wait\"))\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n if (state.includes(\"sleep\"))\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n if (state.includes(\"select\"))\n return \"bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300\";\n return \"bg-muted text-muted-foreground\";\n}\n\nexport function goroutineStateDot(state: string): string {\n if (state.includes(\"running\")) return \"bg-green-500\";\n if (state.includes(\"chan\") || state.includes(\"wait\")) return \"bg-blue-500\";\n if (state.includes(\"sleep\")) return \"bg-amber-500\";\n if (state.includes(\"select\")) return \"bg-violet-500\";\n return \"bg-muted-foreground/40\";\n}\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n"],"names":[],"mappings":"AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AACT,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;AACjD,WAAO;AACT,MAAI,MAAM,SAAS,OAAO;AACxB,WAAO;AACT,MAAI,MAAM,SAAS,QAAQ;AACzB,WAAO;AACT,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AACtC,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,EAAG,QAAO;AAC7D,MAAI,MAAM,SAAS,OAAO,EAAG,QAAO;AACpC,MAAI,MAAM,SAAS,QAAQ,EAAG,QAAO;AACrC,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const logUtils = require("./log-utils.cjs");
4
+ const JSON_PARSE_FAILED = Symbol("json-parse-failed");
5
+ function normalizeLogsTableRows(logs) {
6
+ const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
7
+ return entries.map((entry, index) => normalizeLogEntry(entry, index));
8
+ }
9
+ function splitLogLines(logs) {
10
+ return logs.split(/\r?\n/).filter((line) => line.length > 0);
11
+ }
12
+ function normalizeLogEntry(entry, index) {
13
+ const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
14
+ const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
15
+ const outer = logUtils.asRecord(parsedOuter);
16
+ const outerLine = stringValue(outer == null ? void 0 : outer.line);
17
+ const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
18
+ const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
19
+ const inner = logUtils.asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
20
+ const labels = logUtils.asRecord(outer == null ? void 0 : outer.labels);
21
+ const timestamp = firstString(
22
+ pick(outer, "timestamp"),
23
+ pick(inner, "@timestamp"),
24
+ pick(outer, "ts"),
25
+ pick(inner, "timestamp"),
26
+ pick(outer, "time"),
27
+ pick(inner, "time")
28
+ );
29
+ const level = firstString(
30
+ pick(inner, "log.level"),
31
+ pick(inner, "level"),
32
+ pick(outer, "level"),
33
+ pick(outer, "severity"),
34
+ pick(inner, "severity")
35
+ );
36
+ const pod = firstString(
37
+ pick(outer, "pod"),
38
+ pick(labels, "pod"),
39
+ pick(inner, "kubernetes.pod.name")
40
+ );
41
+ const namespace = firstString(
42
+ pick(outer, "namespace"),
43
+ pick(labels, "namespace"),
44
+ pick(inner, "kubernetes.namespace")
45
+ );
46
+ const container = firstString(
47
+ pick(outer, "container"),
48
+ pick(labels, "container"),
49
+ pick(inner, "container.name")
50
+ );
51
+ const service = firstString(
52
+ pick(inner, "service.name"),
53
+ pick(inner, "service"),
54
+ pick(outer, "service"),
55
+ pick(labels, "service")
56
+ );
57
+ const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
58
+ const logger = firstString(
59
+ pick(inner, "log.logger"),
60
+ pick(inner, "logger"),
61
+ pick(outer, "logger")
62
+ );
63
+ const thread = firstString(
64
+ pick(inner, "process.thread.name"),
65
+ pick(inner, "thread"),
66
+ pick(outer, "thread")
67
+ );
68
+ const message = firstString(
69
+ pick(inner, "message"),
70
+ pick(inner, "msg"),
71
+ pick(outer, "message"),
72
+ outerLine,
73
+ typeof entry === "string" ? entry : void 0
74
+ );
75
+ const tags = buildTags({
76
+ namespace,
77
+ container,
78
+ service,
79
+ dataset,
80
+ ecsVersion: firstString(pick(inner, "ecs.version")),
81
+ labels
82
+ });
83
+ return {
84
+ id: `${index}:${timestamp || pod || message || stableString(entry)}`,
85
+ timestamp,
86
+ level,
87
+ pod,
88
+ logger,
89
+ thread,
90
+ message,
91
+ tags,
92
+ line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
93
+ raw: parsedOuter,
94
+ ...parsedLine !== void 0 ? { parsedLine } : {}
95
+ };
96
+ }
97
+ function buildTags({
98
+ namespace,
99
+ container,
100
+ service,
101
+ dataset,
102
+ ecsVersion,
103
+ labels
104
+ }) {
105
+ const tags = [];
106
+ const seen = /* @__PURE__ */ new Set();
107
+ const addTag = (key, value) => {
108
+ const valueString = stringValue(value);
109
+ if (!valueString) return;
110
+ const tag = `${key}=${valueString}`;
111
+ if (seen.has(tag)) return;
112
+ seen.add(tag);
113
+ tags.push(tag);
114
+ };
115
+ addTag("namespace", namespace);
116
+ addTag("container", container);
117
+ addTag("service", service);
118
+ addTag("dataset", dataset);
119
+ addTag("ecs.version", ecsVersion);
120
+ if (labels) {
121
+ for (const [key, value] of Object.entries(labels)) {
122
+ addTag(key, value);
123
+ }
124
+ }
125
+ return tags;
126
+ }
127
+ function tryParseJson(value) {
128
+ try {
129
+ return JSON.parse(value);
130
+ } catch {
131
+ return JSON_PARSE_FAILED;
132
+ }
133
+ }
134
+ function pick(record, path) {
135
+ if (!record) return void 0;
136
+ if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
137
+ return path.split(".").reduce((current, key) => {
138
+ if (current && typeof current === "object") {
139
+ return current[key];
140
+ }
141
+ return void 0;
142
+ }, record);
143
+ }
144
+ function firstString(...values) {
145
+ for (const value of values) {
146
+ const string = stringValue(value);
147
+ if (string) return string;
148
+ }
149
+ return "";
150
+ }
151
+ function stringValue(value) {
152
+ if (value == null) return "";
153
+ if (typeof value === "string") return value.trim();
154
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
155
+ return "";
156
+ }
157
+ function stableString(value) {
158
+ if (typeof value === "string") return value;
159
+ try {
160
+ return JSON.stringify(value);
161
+ } catch {
162
+ return String(value);
163
+ }
164
+ }
165
+ exports.normalizeLogsTableRows = normalizeLogsTableRows;
166
+ //# sourceMappingURL=logs-normalize.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-normalize.cjs","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n return entries.map((entry, index) => normalizeLogEntry(entry, index));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(entry: LogsTableInput, index: number): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: `${index}:${timestamp || pod || message || stableString(entry)}`,\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":["asRecord"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type LogsTableInput = string | Record<string, unknown>;
2
+ export type LogsTableRow = {
3
+ id: string;
4
+ timestamp: string;
5
+ level: string;
6
+ pod: string;
7
+ logger: string;
8
+ thread: string;
9
+ message: string;
10
+ tags: string[];
11
+ line: string;
12
+ parsedLine?: unknown;
13
+ raw: unknown;
14
+ };
15
+ export declare function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[];
16
+ //# sourceMappingURL=logs-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-normalize.d.ts","sourceRoot":"","sources":["../../src/data/logs-normalize.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAGtF"}
@@ -0,0 +1,166 @@
1
+ import { asRecord } from "./log-utils.js";
2
+ const JSON_PARSE_FAILED = Symbol("json-parse-failed");
3
+ function normalizeLogsTableRows(logs) {
4
+ const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
5
+ return entries.map((entry, index) => normalizeLogEntry(entry, index));
6
+ }
7
+ function splitLogLines(logs) {
8
+ return logs.split(/\r?\n/).filter((line) => line.length > 0);
9
+ }
10
+ function normalizeLogEntry(entry, index) {
11
+ const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
12
+ const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
13
+ const outer = asRecord(parsedOuter);
14
+ const outerLine = stringValue(outer == null ? void 0 : outer.line);
15
+ const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
16
+ const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
17
+ const inner = asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
18
+ const labels = asRecord(outer == null ? void 0 : outer.labels);
19
+ const timestamp = firstString(
20
+ pick(outer, "timestamp"),
21
+ pick(inner, "@timestamp"),
22
+ pick(outer, "ts"),
23
+ pick(inner, "timestamp"),
24
+ pick(outer, "time"),
25
+ pick(inner, "time")
26
+ );
27
+ const level = firstString(
28
+ pick(inner, "log.level"),
29
+ pick(inner, "level"),
30
+ pick(outer, "level"),
31
+ pick(outer, "severity"),
32
+ pick(inner, "severity")
33
+ );
34
+ const pod = firstString(
35
+ pick(outer, "pod"),
36
+ pick(labels, "pod"),
37
+ pick(inner, "kubernetes.pod.name")
38
+ );
39
+ const namespace = firstString(
40
+ pick(outer, "namespace"),
41
+ pick(labels, "namespace"),
42
+ pick(inner, "kubernetes.namespace")
43
+ );
44
+ const container = firstString(
45
+ pick(outer, "container"),
46
+ pick(labels, "container"),
47
+ pick(inner, "container.name")
48
+ );
49
+ const service = firstString(
50
+ pick(inner, "service.name"),
51
+ pick(inner, "service"),
52
+ pick(outer, "service"),
53
+ pick(labels, "service")
54
+ );
55
+ const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
56
+ const logger = firstString(
57
+ pick(inner, "log.logger"),
58
+ pick(inner, "logger"),
59
+ pick(outer, "logger")
60
+ );
61
+ const thread = firstString(
62
+ pick(inner, "process.thread.name"),
63
+ pick(inner, "thread"),
64
+ pick(outer, "thread")
65
+ );
66
+ const message = firstString(
67
+ pick(inner, "message"),
68
+ pick(inner, "msg"),
69
+ pick(outer, "message"),
70
+ outerLine,
71
+ typeof entry === "string" ? entry : void 0
72
+ );
73
+ const tags = buildTags({
74
+ namespace,
75
+ container,
76
+ service,
77
+ dataset,
78
+ ecsVersion: firstString(pick(inner, "ecs.version")),
79
+ labels
80
+ });
81
+ return {
82
+ id: `${index}:${timestamp || pod || message || stableString(entry)}`,
83
+ timestamp,
84
+ level,
85
+ pod,
86
+ logger,
87
+ thread,
88
+ message,
89
+ tags,
90
+ line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
91
+ raw: parsedOuter,
92
+ ...parsedLine !== void 0 ? { parsedLine } : {}
93
+ };
94
+ }
95
+ function buildTags({
96
+ namespace,
97
+ container,
98
+ service,
99
+ dataset,
100
+ ecsVersion,
101
+ labels
102
+ }) {
103
+ const tags = [];
104
+ const seen = /* @__PURE__ */ new Set();
105
+ const addTag = (key, value) => {
106
+ const valueString = stringValue(value);
107
+ if (!valueString) return;
108
+ const tag = `${key}=${valueString}`;
109
+ if (seen.has(tag)) return;
110
+ seen.add(tag);
111
+ tags.push(tag);
112
+ };
113
+ addTag("namespace", namespace);
114
+ addTag("container", container);
115
+ addTag("service", service);
116
+ addTag("dataset", dataset);
117
+ addTag("ecs.version", ecsVersion);
118
+ if (labels) {
119
+ for (const [key, value] of Object.entries(labels)) {
120
+ addTag(key, value);
121
+ }
122
+ }
123
+ return tags;
124
+ }
125
+ function tryParseJson(value) {
126
+ try {
127
+ return JSON.parse(value);
128
+ } catch {
129
+ return JSON_PARSE_FAILED;
130
+ }
131
+ }
132
+ function pick(record, path) {
133
+ if (!record) return void 0;
134
+ if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
135
+ return path.split(".").reduce((current, key) => {
136
+ if (current && typeof current === "object") {
137
+ return current[key];
138
+ }
139
+ return void 0;
140
+ }, record);
141
+ }
142
+ function firstString(...values) {
143
+ for (const value of values) {
144
+ const string = stringValue(value);
145
+ if (string) return string;
146
+ }
147
+ return "";
148
+ }
149
+ function stringValue(value) {
150
+ if (value == null) return "";
151
+ if (typeof value === "string") return value.trim();
152
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
153
+ return "";
154
+ }
155
+ function stableString(value) {
156
+ if (typeof value === "string") return value;
157
+ try {
158
+ return JSON.stringify(value);
159
+ } catch {
160
+ return String(value);
161
+ }
162
+ }
163
+ export {
164
+ normalizeLogsTableRows
165
+ };
166
+ //# sourceMappingURL=logs-normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs-normalize.js","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n return entries.map((entry, index) => normalizeLogEntry(entry, index));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(entry: LogsTableInput, index: number): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: `${index}:${timestamp || pod || message || stableString(entry)}`,\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const STATUS_COLORS = {
4
- success: "text-green-600",
5
- PASS: "text-green-600",
6
- completed: "text-green-600",
7
- failed: "text-red-600",
8
- FAIL: "text-red-600",
9
- ERR: "text-red-600",
10
- warning: "text-yellow-600",
11
- running: "text-blue-600",
4
+ success: "text-green-600 dark:text-green-400",
5
+ PASS: "text-green-600 dark:text-green-400",
6
+ completed: "text-green-600 dark:text-green-400",
7
+ failed: "text-red-600 dark:text-red-400",
8
+ FAIL: "text-red-600 dark:text-red-400",
9
+ ERR: "text-red-600 dark:text-red-400",
10
+ warning: "text-yellow-600 dark:text-yellow-400",
11
+ running: "text-blue-600 dark:text-blue-400",
12
12
  pending: "text-gray-400",
13
13
  canceled: "text-gray-400",
14
14
  SKIP: "text-gray-400"
@@ -27,15 +27,15 @@ const STATUS_ICONS = {
27
27
  SKIP: "codicon:circle-slash"
28
28
  };
29
29
  const STATUS_BG = {
30
- success: "bg-green-100",
31
- completed: "bg-green-100",
32
- PASS: "bg-green-100",
33
- failed: "bg-red-100",
34
- FAIL: "bg-red-100",
35
- ERR: "bg-red-100",
36
- warning: "bg-yellow-100",
37
- running: "bg-blue-100",
38
- pending: "bg-gray-100"
30
+ success: "bg-green-100 dark:bg-green-500/20",
31
+ completed: "bg-green-100 dark:bg-green-500/20",
32
+ PASS: "bg-green-100 dark:bg-green-500/20",
33
+ failed: "bg-red-100 dark:bg-red-500/20",
34
+ FAIL: "bg-red-100 dark:bg-red-500/20",
35
+ ERR: "bg-red-100 dark:bg-red-500/20",
36
+ warning: "bg-yellow-100 dark:bg-yellow-500/20",
37
+ running: "bg-blue-100 dark:bg-blue-500/20",
38
+ pending: "bg-gray-100 dark:bg-gray-500/20"
39
39
  };
40
40
  function taskStatusColor(s) {
41
41
  return STATUS_COLORS[s] ?? "text-gray-500";
@@ -44,14 +44,14 @@ function taskStatusIcon(s) {
44
44
  return STATUS_ICONS[s] ?? "codicon:circle-outline";
45
45
  }
46
46
  function taskStatusBg(s) {
47
- return STATUS_BG[s] ?? "bg-gray-100";
47
+ return STATUS_BG[s] ?? "bg-gray-100 dark:bg-gray-500/20";
48
48
  }
49
49
  function logLevelColor(level) {
50
50
  switch (level) {
51
51
  case "error":
52
52
  return "text-red-500";
53
53
  case "warn":
54
- return "text-yellow-600";
54
+ return "text-yellow-600 dark:text-yellow-400";
55
55
  case "debug":
56
56
  return "text-gray-400";
57
57
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"task-status.cjs","sources":["../../src/data/task-status.ts"],"sourcesContent":["import type { ProgressSegment } from \"./ProgressBar\";\nimport type { TaskSnapshot } from \"./TaskSnapshot\";\n\n// Status → presentation maps, ported from clicky's task UI (task/ui/src/utils.ts)\n// so the React and Preact renderers agree on icon/color semantics.\n\nconst STATUS_COLORS: Record<string, string> = {\n success: \"text-green-600\",\n PASS: \"text-green-600\",\n completed: \"text-green-600\",\n failed: \"text-red-600\",\n FAIL: \"text-red-600\",\n ERR: \"text-red-600\",\n warning: \"text-yellow-600\",\n running: \"text-blue-600\",\n pending: \"text-gray-400\",\n canceled: \"text-gray-400\",\n SKIP: \"text-gray-400\",\n};\n\nconst STATUS_ICONS: Record<string, string> = {\n pending: \"codicon:clock\",\n running: \"svg-spinners:ring-resize\",\n success: \"codicon:pass-filled\",\n PASS: \"codicon:pass-filled\",\n completed: \"codicon:pass-filled\",\n failed: \"codicon:error\",\n FAIL: \"codicon:error\",\n ERR: \"codicon:error\",\n warning: \"codicon:warning\",\n canceled: \"codicon:circle-slash\",\n SKIP: \"codicon:circle-slash\",\n};\n\nconst STATUS_BG: Record<string, string> = {\n success: \"bg-green-100\",\n completed: \"bg-green-100\",\n PASS: \"bg-green-100\",\n failed: \"bg-red-100\",\n FAIL: \"bg-red-100\",\n ERR: \"bg-red-100\",\n warning: \"bg-yellow-100\",\n running: \"bg-blue-100\",\n pending: \"bg-gray-100\",\n};\n\nexport function taskStatusColor(s: string): string {\n return STATUS_COLORS[s] ?? \"text-gray-500\";\n}\n\nexport function taskStatusIcon(s: string): string {\n return STATUS_ICONS[s] ?? \"codicon:circle-outline\";\n}\n\nexport function taskStatusBg(s: string): string {\n return STATUS_BG[s] ?? \"bg-gray-100\";\n}\n\nexport function logLevelColor(level: string): string {\n switch (level) {\n case \"error\":\n return \"text-red-500\";\n case \"warn\":\n return \"text-yellow-600\";\n case \"debug\":\n return \"text-gray-400\";\n default:\n return \"text-gray-500\";\n }\n}\n\n// taskSegments builds the colored progress-bar segments for a set of counts, in\n// the canonical clicky order (passed, warnings, failed, running, pending).\nexport function taskSegments(counts: {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n}): ProgressSegment[] {\n return [\n { count: counts.ok, color: \"bg-green-500\", label: \"passed\" },\n { count: counts.warn, color: \"bg-yellow-400\", label: \"warnings\" },\n { count: counts.fail, color: \"bg-red-500\", label: \"failed\" },\n { count: counts.run, color: \"bg-blue-500\", label: \"running\" },\n { count: counts.pending, color: \"bg-gray-300\", label: \"pending\" },\n ];\n}\n\n// bucketTasks tallies the child tasks of a group by status bucket.\nexport function bucketTasks(tasks: TaskSnapshot[]): {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n} {\n let ok = 0;\n let warn = 0;\n let fail = 0;\n let run = 0;\n let pending = 0;\n for (const t of tasks) {\n switch (t.status) {\n case \"success\":\n case \"PASS\":\n ok += 1;\n break;\n case \"warning\":\n warn += 1;\n break;\n case \"failed\":\n case \"FAIL\":\n case \"ERR\":\n fail += 1;\n break;\n case \"running\":\n run += 1;\n break;\n case \"pending\":\n pending += 1;\n break;\n default:\n ok += 1; // SKIP / canceled / completed count as done\n }\n }\n return { ok, warn, fail, run, pending };\n}\n"],"names":[],"mappings":";;AAMA,MAAM,gBAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,eAAuC;AAAA,EAC3C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,YAAoC;AAAA,EACxC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,gBAAgB,GAAmB;AACjD,SAAO,cAAc,CAAC,KAAK;AAC7B;AAEO,SAAS,eAAe,GAAmB;AAChD,SAAO,aAAa,CAAC,KAAK;AAC5B;AAEO,SAAS,aAAa,GAAmB;AAC9C,SAAO,UAAU,CAAC,KAAK;AACzB;AAEO,SAAS,cAAc,OAAuB;AACnD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAIO,SAAS,aAAa,QAMP;AACpB,SAAO;AAAA,IACL,EAAE,OAAO,OAAO,IAAI,OAAO,gBAAgB,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,MAAM,OAAO,iBAAiB,OAAO,WAAA;AAAA,IACrD,EAAE,OAAO,OAAO,MAAM,OAAO,cAAc,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,KAAK,OAAO,eAAe,OAAO,UAAA;AAAA,IAClD,EAAE,OAAO,OAAO,SAAS,OAAO,eAAe,OAAO,UAAA;AAAA,EAAU;AAEpE;AAGO,SAAS,YAAY,OAM1B;AACA,MAAI,KAAK;AACT,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,MAAM;AACV,MAAI,UAAU;AACd,aAAW,KAAK,OAAO;AACrB,YAAQ,EAAE,QAAA;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AACH,cAAM;AACN;AAAA,MACF,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AACH,eAAO;AACP;AAAA,MACF,KAAK;AACH,mBAAW;AACX;AAAA,MACF;AACE,cAAM;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,KAAK,QAAA;AAChC;;;;;;;"}
1
+ {"version":3,"file":"task-status.cjs","sources":["../../src/data/task-status.ts"],"sourcesContent":["import type { ProgressSegment } from \"./ProgressBar\";\nimport type { TaskSnapshot } from \"./TaskSnapshot\";\n\n// Status → presentation maps, ported from clicky's task UI (task/ui/src/utils.ts)\n// so the React and Preact renderers agree on icon/color semantics.\n\nconst STATUS_COLORS: Record<string, string> = {\n success: \"text-green-600 dark:text-green-400\",\n PASS: \"text-green-600 dark:text-green-400\",\n completed: \"text-green-600 dark:text-green-400\",\n failed: \"text-red-600 dark:text-red-400\",\n FAIL: \"text-red-600 dark:text-red-400\",\n ERR: \"text-red-600 dark:text-red-400\",\n warning: \"text-yellow-600 dark:text-yellow-400\",\n running: \"text-blue-600 dark:text-blue-400\",\n pending: \"text-gray-400\",\n canceled: \"text-gray-400\",\n SKIP: \"text-gray-400\",\n};\n\nconst STATUS_ICONS: Record<string, string> = {\n pending: \"codicon:clock\",\n running: \"svg-spinners:ring-resize\",\n success: \"codicon:pass-filled\",\n PASS: \"codicon:pass-filled\",\n completed: \"codicon:pass-filled\",\n failed: \"codicon:error\",\n FAIL: \"codicon:error\",\n ERR: \"codicon:error\",\n warning: \"codicon:warning\",\n canceled: \"codicon:circle-slash\",\n SKIP: \"codicon:circle-slash\",\n};\n\nconst STATUS_BG: Record<string, string> = {\n success: \"bg-green-100 dark:bg-green-500/20\",\n completed: \"bg-green-100 dark:bg-green-500/20\",\n PASS: \"bg-green-100 dark:bg-green-500/20\",\n failed: \"bg-red-100 dark:bg-red-500/20\",\n FAIL: \"bg-red-100 dark:bg-red-500/20\",\n ERR: \"bg-red-100 dark:bg-red-500/20\",\n warning: \"bg-yellow-100 dark:bg-yellow-500/20\",\n running: \"bg-blue-100 dark:bg-blue-500/20\",\n pending: \"bg-gray-100 dark:bg-gray-500/20\",\n};\n\nexport function taskStatusColor(s: string): string {\n return STATUS_COLORS[s] ?? \"text-gray-500\";\n}\n\nexport function taskStatusIcon(s: string): string {\n return STATUS_ICONS[s] ?? \"codicon:circle-outline\";\n}\n\nexport function taskStatusBg(s: string): string {\n return STATUS_BG[s] ?? \"bg-gray-100 dark:bg-gray-500/20\";\n}\n\nexport function logLevelColor(level: string): string {\n switch (level) {\n case \"error\":\n return \"text-red-500\";\n case \"warn\":\n return \"text-yellow-600 dark:text-yellow-400\";\n case \"debug\":\n return \"text-gray-400\";\n default:\n return \"text-gray-500\";\n }\n}\n\n// taskSegments builds the colored progress-bar segments for a set of counts, in\n// the canonical clicky order (passed, warnings, failed, running, pending).\nexport function taskSegments(counts: {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n}): ProgressSegment[] {\n return [\n { count: counts.ok, color: \"bg-green-500\", label: \"passed\" },\n { count: counts.warn, color: \"bg-yellow-400\", label: \"warnings\" },\n { count: counts.fail, color: \"bg-red-500\", label: \"failed\" },\n { count: counts.run, color: \"bg-blue-500\", label: \"running\" },\n { count: counts.pending, color: \"bg-gray-300\", label: \"pending\" },\n ];\n}\n\n// bucketTasks tallies the child tasks of a group by status bucket.\nexport function bucketTasks(tasks: TaskSnapshot[]): {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n} {\n let ok = 0;\n let warn = 0;\n let fail = 0;\n let run = 0;\n let pending = 0;\n for (const t of tasks) {\n switch (t.status) {\n case \"success\":\n case \"PASS\":\n ok += 1;\n break;\n case \"warning\":\n warn += 1;\n break;\n case \"failed\":\n case \"FAIL\":\n case \"ERR\":\n fail += 1;\n break;\n case \"running\":\n run += 1;\n break;\n case \"pending\":\n pending += 1;\n break;\n default:\n ok += 1; // SKIP / canceled / completed count as done\n }\n }\n return { ok, warn, fail, run, pending };\n}\n"],"names":[],"mappings":";;AAMA,MAAM,gBAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,eAAuC;AAAA,EAC3C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,YAAoC;AAAA,EACxC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,gBAAgB,GAAmB;AACjD,SAAO,cAAc,CAAC,KAAK;AAC7B;AAEO,SAAS,eAAe,GAAmB;AAChD,SAAO,aAAa,CAAC,KAAK;AAC5B;AAEO,SAAS,aAAa,GAAmB;AAC9C,SAAO,UAAU,CAAC,KAAK;AACzB;AAEO,SAAS,cAAc,OAAuB;AACnD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAIO,SAAS,aAAa,QAMP;AACpB,SAAO;AAAA,IACL,EAAE,OAAO,OAAO,IAAI,OAAO,gBAAgB,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,MAAM,OAAO,iBAAiB,OAAO,WAAA;AAAA,IACrD,EAAE,OAAO,OAAO,MAAM,OAAO,cAAc,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,KAAK,OAAO,eAAe,OAAO,UAAA;AAAA,IAClD,EAAE,OAAO,OAAO,SAAS,OAAO,eAAe,OAAO,UAAA;AAAA,EAAU;AAEpE;AAGO,SAAS,YAAY,OAM1B;AACA,MAAI,KAAK;AACT,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,MAAM;AACV,MAAI,UAAU;AACd,aAAW,KAAK,OAAO;AACrB,YAAQ,EAAE,QAAA;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AACH,cAAM;AACN;AAAA,MACF,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AACH,eAAO;AACP;AAAA,MACF,KAAK;AACH,mBAAW;AACX;AAAA,MACF;AACE,cAAM;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,KAAK,QAAA;AAChC;;;;;;;"}
@@ -1,12 +1,12 @@
1
1
  const STATUS_COLORS = {
2
- success: "text-green-600",
3
- PASS: "text-green-600",
4
- completed: "text-green-600",
5
- failed: "text-red-600",
6
- FAIL: "text-red-600",
7
- ERR: "text-red-600",
8
- warning: "text-yellow-600",
9
- running: "text-blue-600",
2
+ success: "text-green-600 dark:text-green-400",
3
+ PASS: "text-green-600 dark:text-green-400",
4
+ completed: "text-green-600 dark:text-green-400",
5
+ failed: "text-red-600 dark:text-red-400",
6
+ FAIL: "text-red-600 dark:text-red-400",
7
+ ERR: "text-red-600 dark:text-red-400",
8
+ warning: "text-yellow-600 dark:text-yellow-400",
9
+ running: "text-blue-600 dark:text-blue-400",
10
10
  pending: "text-gray-400",
11
11
  canceled: "text-gray-400",
12
12
  SKIP: "text-gray-400"
@@ -25,15 +25,15 @@ const STATUS_ICONS = {
25
25
  SKIP: "codicon:circle-slash"
26
26
  };
27
27
  const STATUS_BG = {
28
- success: "bg-green-100",
29
- completed: "bg-green-100",
30
- PASS: "bg-green-100",
31
- failed: "bg-red-100",
32
- FAIL: "bg-red-100",
33
- ERR: "bg-red-100",
34
- warning: "bg-yellow-100",
35
- running: "bg-blue-100",
36
- pending: "bg-gray-100"
28
+ success: "bg-green-100 dark:bg-green-500/20",
29
+ completed: "bg-green-100 dark:bg-green-500/20",
30
+ PASS: "bg-green-100 dark:bg-green-500/20",
31
+ failed: "bg-red-100 dark:bg-red-500/20",
32
+ FAIL: "bg-red-100 dark:bg-red-500/20",
33
+ ERR: "bg-red-100 dark:bg-red-500/20",
34
+ warning: "bg-yellow-100 dark:bg-yellow-500/20",
35
+ running: "bg-blue-100 dark:bg-blue-500/20",
36
+ pending: "bg-gray-100 dark:bg-gray-500/20"
37
37
  };
38
38
  function taskStatusColor(s) {
39
39
  return STATUS_COLORS[s] ?? "text-gray-500";
@@ -42,14 +42,14 @@ function taskStatusIcon(s) {
42
42
  return STATUS_ICONS[s] ?? "codicon:circle-outline";
43
43
  }
44
44
  function taskStatusBg(s) {
45
- return STATUS_BG[s] ?? "bg-gray-100";
45
+ return STATUS_BG[s] ?? "bg-gray-100 dark:bg-gray-500/20";
46
46
  }
47
47
  function logLevelColor(level) {
48
48
  switch (level) {
49
49
  case "error":
50
50
  return "text-red-500";
51
51
  case "warn":
52
- return "text-yellow-600";
52
+ return "text-yellow-600 dark:text-yellow-400";
53
53
  case "debug":
54
54
  return "text-gray-400";
55
55
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"task-status.js","sources":["../../src/data/task-status.ts"],"sourcesContent":["import type { ProgressSegment } from \"./ProgressBar\";\nimport type { TaskSnapshot } from \"./TaskSnapshot\";\n\n// Status → presentation maps, ported from clicky's task UI (task/ui/src/utils.ts)\n// so the React and Preact renderers agree on icon/color semantics.\n\nconst STATUS_COLORS: Record<string, string> = {\n success: \"text-green-600\",\n PASS: \"text-green-600\",\n completed: \"text-green-600\",\n failed: \"text-red-600\",\n FAIL: \"text-red-600\",\n ERR: \"text-red-600\",\n warning: \"text-yellow-600\",\n running: \"text-blue-600\",\n pending: \"text-gray-400\",\n canceled: \"text-gray-400\",\n SKIP: \"text-gray-400\",\n};\n\nconst STATUS_ICONS: Record<string, string> = {\n pending: \"codicon:clock\",\n running: \"svg-spinners:ring-resize\",\n success: \"codicon:pass-filled\",\n PASS: \"codicon:pass-filled\",\n completed: \"codicon:pass-filled\",\n failed: \"codicon:error\",\n FAIL: \"codicon:error\",\n ERR: \"codicon:error\",\n warning: \"codicon:warning\",\n canceled: \"codicon:circle-slash\",\n SKIP: \"codicon:circle-slash\",\n};\n\nconst STATUS_BG: Record<string, string> = {\n success: \"bg-green-100\",\n completed: \"bg-green-100\",\n PASS: \"bg-green-100\",\n failed: \"bg-red-100\",\n FAIL: \"bg-red-100\",\n ERR: \"bg-red-100\",\n warning: \"bg-yellow-100\",\n running: \"bg-blue-100\",\n pending: \"bg-gray-100\",\n};\n\nexport function taskStatusColor(s: string): string {\n return STATUS_COLORS[s] ?? \"text-gray-500\";\n}\n\nexport function taskStatusIcon(s: string): string {\n return STATUS_ICONS[s] ?? \"codicon:circle-outline\";\n}\n\nexport function taskStatusBg(s: string): string {\n return STATUS_BG[s] ?? \"bg-gray-100\";\n}\n\nexport function logLevelColor(level: string): string {\n switch (level) {\n case \"error\":\n return \"text-red-500\";\n case \"warn\":\n return \"text-yellow-600\";\n case \"debug\":\n return \"text-gray-400\";\n default:\n return \"text-gray-500\";\n }\n}\n\n// taskSegments builds the colored progress-bar segments for a set of counts, in\n// the canonical clicky order (passed, warnings, failed, running, pending).\nexport function taskSegments(counts: {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n}): ProgressSegment[] {\n return [\n { count: counts.ok, color: \"bg-green-500\", label: \"passed\" },\n { count: counts.warn, color: \"bg-yellow-400\", label: \"warnings\" },\n { count: counts.fail, color: \"bg-red-500\", label: \"failed\" },\n { count: counts.run, color: \"bg-blue-500\", label: \"running\" },\n { count: counts.pending, color: \"bg-gray-300\", label: \"pending\" },\n ];\n}\n\n// bucketTasks tallies the child tasks of a group by status bucket.\nexport function bucketTasks(tasks: TaskSnapshot[]): {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n} {\n let ok = 0;\n let warn = 0;\n let fail = 0;\n let run = 0;\n let pending = 0;\n for (const t of tasks) {\n switch (t.status) {\n case \"success\":\n case \"PASS\":\n ok += 1;\n break;\n case \"warning\":\n warn += 1;\n break;\n case \"failed\":\n case \"FAIL\":\n case \"ERR\":\n fail += 1;\n break;\n case \"running\":\n run += 1;\n break;\n case \"pending\":\n pending += 1;\n break;\n default:\n ok += 1; // SKIP / canceled / completed count as done\n }\n }\n return { ok, warn, fail, run, pending };\n}\n"],"names":[],"mappings":"AAMA,MAAM,gBAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,eAAuC;AAAA,EAC3C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,YAAoC;AAAA,EACxC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,gBAAgB,GAAmB;AACjD,SAAO,cAAc,CAAC,KAAK;AAC7B;AAEO,SAAS,eAAe,GAAmB;AAChD,SAAO,aAAa,CAAC,KAAK;AAC5B;AAEO,SAAS,aAAa,GAAmB;AAC9C,SAAO,UAAU,CAAC,KAAK;AACzB;AAEO,SAAS,cAAc,OAAuB;AACnD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAIO,SAAS,aAAa,QAMP;AACpB,SAAO;AAAA,IACL,EAAE,OAAO,OAAO,IAAI,OAAO,gBAAgB,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,MAAM,OAAO,iBAAiB,OAAO,WAAA;AAAA,IACrD,EAAE,OAAO,OAAO,MAAM,OAAO,cAAc,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,KAAK,OAAO,eAAe,OAAO,UAAA;AAAA,IAClD,EAAE,OAAO,OAAO,SAAS,OAAO,eAAe,OAAO,UAAA;AAAA,EAAU;AAEpE;AAGO,SAAS,YAAY,OAM1B;AACA,MAAI,KAAK;AACT,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,MAAM;AACV,MAAI,UAAU;AACd,aAAW,KAAK,OAAO;AACrB,YAAQ,EAAE,QAAA;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AACH,cAAM;AACN;AAAA,MACF,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AACH,eAAO;AACP;AAAA,MACF,KAAK;AACH,mBAAW;AACX;AAAA,MACF;AACE,cAAM;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,KAAK,QAAA;AAChC;"}
1
+ {"version":3,"file":"task-status.js","sources":["../../src/data/task-status.ts"],"sourcesContent":["import type { ProgressSegment } from \"./ProgressBar\";\nimport type { TaskSnapshot } from \"./TaskSnapshot\";\n\n// Status → presentation maps, ported from clicky's task UI (task/ui/src/utils.ts)\n// so the React and Preact renderers agree on icon/color semantics.\n\nconst STATUS_COLORS: Record<string, string> = {\n success: \"text-green-600 dark:text-green-400\",\n PASS: \"text-green-600 dark:text-green-400\",\n completed: \"text-green-600 dark:text-green-400\",\n failed: \"text-red-600 dark:text-red-400\",\n FAIL: \"text-red-600 dark:text-red-400\",\n ERR: \"text-red-600 dark:text-red-400\",\n warning: \"text-yellow-600 dark:text-yellow-400\",\n running: \"text-blue-600 dark:text-blue-400\",\n pending: \"text-gray-400\",\n canceled: \"text-gray-400\",\n SKIP: \"text-gray-400\",\n};\n\nconst STATUS_ICONS: Record<string, string> = {\n pending: \"codicon:clock\",\n running: \"svg-spinners:ring-resize\",\n success: \"codicon:pass-filled\",\n PASS: \"codicon:pass-filled\",\n completed: \"codicon:pass-filled\",\n failed: \"codicon:error\",\n FAIL: \"codicon:error\",\n ERR: \"codicon:error\",\n warning: \"codicon:warning\",\n canceled: \"codicon:circle-slash\",\n SKIP: \"codicon:circle-slash\",\n};\n\nconst STATUS_BG: Record<string, string> = {\n success: \"bg-green-100 dark:bg-green-500/20\",\n completed: \"bg-green-100 dark:bg-green-500/20\",\n PASS: \"bg-green-100 dark:bg-green-500/20\",\n failed: \"bg-red-100 dark:bg-red-500/20\",\n FAIL: \"bg-red-100 dark:bg-red-500/20\",\n ERR: \"bg-red-100 dark:bg-red-500/20\",\n warning: \"bg-yellow-100 dark:bg-yellow-500/20\",\n running: \"bg-blue-100 dark:bg-blue-500/20\",\n pending: \"bg-gray-100 dark:bg-gray-500/20\",\n};\n\nexport function taskStatusColor(s: string): string {\n return STATUS_COLORS[s] ?? \"text-gray-500\";\n}\n\nexport function taskStatusIcon(s: string): string {\n return STATUS_ICONS[s] ?? \"codicon:circle-outline\";\n}\n\nexport function taskStatusBg(s: string): string {\n return STATUS_BG[s] ?? \"bg-gray-100 dark:bg-gray-500/20\";\n}\n\nexport function logLevelColor(level: string): string {\n switch (level) {\n case \"error\":\n return \"text-red-500\";\n case \"warn\":\n return \"text-yellow-600 dark:text-yellow-400\";\n case \"debug\":\n return \"text-gray-400\";\n default:\n return \"text-gray-500\";\n }\n}\n\n// taskSegments builds the colored progress-bar segments for a set of counts, in\n// the canonical clicky order (passed, warnings, failed, running, pending).\nexport function taskSegments(counts: {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n}): ProgressSegment[] {\n return [\n { count: counts.ok, color: \"bg-green-500\", label: \"passed\" },\n { count: counts.warn, color: \"bg-yellow-400\", label: \"warnings\" },\n { count: counts.fail, color: \"bg-red-500\", label: \"failed\" },\n { count: counts.run, color: \"bg-blue-500\", label: \"running\" },\n { count: counts.pending, color: \"bg-gray-300\", label: \"pending\" },\n ];\n}\n\n// bucketTasks tallies the child tasks of a group by status bucket.\nexport function bucketTasks(tasks: TaskSnapshot[]): {\n ok: number;\n warn: number;\n fail: number;\n run: number;\n pending: number;\n} {\n let ok = 0;\n let warn = 0;\n let fail = 0;\n let run = 0;\n let pending = 0;\n for (const t of tasks) {\n switch (t.status) {\n case \"success\":\n case \"PASS\":\n ok += 1;\n break;\n case \"warning\":\n warn += 1;\n break;\n case \"failed\":\n case \"FAIL\":\n case \"ERR\":\n fail += 1;\n break;\n case \"running\":\n run += 1;\n break;\n case \"pending\":\n pending += 1;\n break;\n default:\n ok += 1; // SKIP / canceled / completed count as done\n }\n }\n return { ok, warn, fail, run, pending };\n}\n"],"names":[],"mappings":"AAMA,MAAM,gBAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,eAAuC;AAAA,EAC3C,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACR;AAEA,MAAM,YAAoC;AAAA,EACxC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAEO,SAAS,gBAAgB,GAAmB;AACjD,SAAO,cAAc,CAAC,KAAK;AAC7B;AAEO,SAAS,eAAe,GAAmB;AAChD,SAAO,aAAa,CAAC,KAAK;AAC5B;AAEO,SAAS,aAAa,GAAmB;AAC9C,SAAO,UAAU,CAAC,KAAK;AACzB;AAEO,SAAS,cAAc,OAAuB;AACnD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAIO,SAAS,aAAa,QAMP;AACpB,SAAO;AAAA,IACL,EAAE,OAAO,OAAO,IAAI,OAAO,gBAAgB,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,MAAM,OAAO,iBAAiB,OAAO,WAAA;AAAA,IACrD,EAAE,OAAO,OAAO,MAAM,OAAO,cAAc,OAAO,SAAA;AAAA,IAClD,EAAE,OAAO,OAAO,KAAK,OAAO,eAAe,OAAO,UAAA;AAAA,IAClD,EAAE,OAAO,OAAO,SAAS,OAAO,eAAe,OAAO,UAAA;AAAA,EAAU;AAEpE;AAGO,SAAS,YAAY,OAM1B;AACA,MAAI,KAAK;AACT,MAAI,OAAO;AACX,MAAI,OAAO;AACX,MAAI,MAAM;AACV,MAAI,UAAU;AACd,aAAW,KAAK,OAAO;AACrB,YAAQ,EAAE,QAAA;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AACH,cAAM;AACN;AAAA,MACF,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ;AACR;AAAA,MACF,KAAK;AACH,eAAO;AACP;AAAA,MACF,KAAK;AACH,mBAAW;AACX;AAAA,MACF;AACE,cAAM;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,KAAK,QAAA;AAChC;"}