@flanksource/clicky-ui 0.3.48 → 0.3.50

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 (444) hide show
  1. package/dist/connections/ConnectionsPage.cjs +219 -0
  2. package/dist/connections/ConnectionsPage.cjs.map +1 -0
  3. package/dist/connections/ConnectionsPage.d.ts +23 -0
  4. package/dist/connections/ConnectionsPage.d.ts.map +1 -0
  5. package/dist/connections/ConnectionsPage.js +219 -0
  6. package/dist/connections/ConnectionsPage.js.map +1 -0
  7. package/dist/connections/connectionActionStatus.cjs +43 -0
  8. package/dist/connections/connectionActionStatus.cjs.map +1 -0
  9. package/dist/connections/connectionActionStatus.d.ts +5 -0
  10. package/dist/connections/connectionActionStatus.d.ts.map +1 -0
  11. package/dist/connections/connectionActionStatus.js +43 -0
  12. package/dist/connections/connectionActionStatus.js.map +1 -0
  13. package/dist/connections/connectionActionTypes.cjs +24 -0
  14. package/dist/connections/connectionActionTypes.cjs.map +1 -0
  15. package/dist/connections/connectionActionTypes.d.ts +36 -0
  16. package/dist/connections/connectionActionTypes.d.ts.map +1 -0
  17. package/dist/connections/connectionActionTypes.js +24 -0
  18. package/dist/connections/connectionActionTypes.js.map +1 -0
  19. package/dist/connections/connectionActions.cjs +11 -0
  20. package/dist/connections/connectionActions.cjs.map +1 -0
  21. package/dist/connections/connectionActions.d.ts +15 -0
  22. package/dist/connections/connectionActions.d.ts.map +1 -0
  23. package/dist/connections/connectionActions.js +11 -0
  24. package/dist/connections/connectionActions.js.map +1 -0
  25. package/dist/connections/connectionDashboard.cjs +185 -0
  26. package/dist/connections/connectionDashboard.cjs.map +1 -0
  27. package/dist/connections/connectionDashboard.d.ts +25 -0
  28. package/dist/connections/connectionDashboard.d.ts.map +1 -0
  29. package/dist/connections/connectionDashboard.js +185 -0
  30. package/dist/connections/connectionDashboard.js.map +1 -0
  31. package/dist/connections/connectionDashboardModel.cjs +43 -0
  32. package/dist/connections/connectionDashboardModel.cjs.map +1 -0
  33. package/dist/connections/connectionDashboardModel.d.ts +75 -0
  34. package/dist/connections/connectionDashboardModel.d.ts.map +1 -0
  35. package/dist/connections/connectionDashboardModel.js +43 -0
  36. package/dist/connections/connectionDashboardModel.js.map +1 -0
  37. package/dist/connections/connectionDashboardRenderer.cjs +21 -0
  38. package/dist/connections/connectionDashboardRenderer.cjs.map +1 -0
  39. package/dist/connections/connectionDashboardRenderer.d.ts +15 -0
  40. package/dist/connections/connectionDashboardRenderer.d.ts.map +1 -0
  41. package/dist/connections/connectionDashboardRenderer.js +21 -0
  42. package/dist/connections/connectionDashboardRenderer.js.map +1 -0
  43. package/dist/connections/connectionDashboardRow.cjs +169 -0
  44. package/dist/connections/connectionDashboardRow.cjs.map +1 -0
  45. package/dist/connections/connectionDashboardRow.d.ts +12 -0
  46. package/dist/connections/connectionDashboardRow.d.ts.map +1 -0
  47. package/dist/connections/connectionDashboardRow.js +169 -0
  48. package/dist/connections/connectionDashboardRow.js.map +1 -0
  49. package/dist/connections/connectionErrorView.cjs +8 -0
  50. package/dist/connections/connectionErrorView.cjs.map +1 -0
  51. package/dist/connections/connectionErrorView.d.ts +4 -0
  52. package/dist/connections/connectionErrorView.d.ts.map +1 -0
  53. package/dist/connections/connectionErrorView.js +8 -0
  54. package/dist/connections/connectionErrorView.js.map +1 -0
  55. package/dist/connections/connectionHealth.cjs +82 -0
  56. package/dist/connections/connectionHealth.cjs.map +1 -0
  57. package/dist/connections/connectionHealth.d.ts +33 -0
  58. package/dist/connections/connectionHealth.d.ts.map +1 -0
  59. package/dist/connections/connectionHealth.js +82 -0
  60. package/dist/connections/connectionHealth.js.map +1 -0
  61. package/dist/connections/connectionLogging.cjs +29 -0
  62. package/dist/connections/connectionLogging.cjs.map +1 -0
  63. package/dist/connections/connectionLogging.d.ts +11 -0
  64. package/dist/connections/connectionLogging.d.ts.map +1 -0
  65. package/dist/connections/connectionLogging.js +29 -0
  66. package/dist/connections/connectionLogging.js.map +1 -0
  67. package/dist/connections/connectionLoggingField.cjs +37 -0
  68. package/dist/connections/connectionLoggingField.cjs.map +1 -0
  69. package/dist/connections/connectionLoggingField.d.ts +12 -0
  70. package/dist/connections/connectionLoggingField.d.ts.map +1 -0
  71. package/dist/connections/connectionLoggingField.js +37 -0
  72. package/dist/connections/connectionLoggingField.js.map +1 -0
  73. package/dist/connections/connectionLoggingModel.cjs +16 -0
  74. package/dist/connections/connectionLoggingModel.cjs.map +1 -0
  75. package/dist/connections/connectionLoggingModel.d.ts +6 -0
  76. package/dist/connections/connectionLoggingModel.d.ts.map +1 -0
  77. package/dist/connections/connectionLoggingModel.js +16 -0
  78. package/dist/connections/connectionLoggingModel.js.map +1 -0
  79. package/dist/connections/connectionResolveView.cjs +24 -0
  80. package/dist/connections/connectionResolveView.cjs.map +1 -0
  81. package/dist/connections/connectionResolveView.d.ts +5 -0
  82. package/dist/connections/connectionResolveView.d.ts.map +1 -0
  83. package/dist/connections/connectionResolveView.js +24 -0
  84. package/dist/connections/connectionResolveView.js.map +1 -0
  85. package/dist/connections/connectionTestButton.cjs +58 -0
  86. package/dist/connections/connectionTestButton.cjs.map +1 -0
  87. package/dist/connections/connectionTestButton.d.ts +6 -0
  88. package/dist/connections/connectionTestButton.d.ts.map +1 -0
  89. package/dist/connections/connectionTestButton.js +58 -0
  90. package/dist/connections/connectionTestButton.js.map +1 -0
  91. package/dist/connections/connectionTestView.cjs +12 -0
  92. package/dist/connections/connectionTestView.cjs.map +1 -0
  93. package/dist/connections/connectionTestView.d.ts +5 -0
  94. package/dist/connections/connectionTestView.d.ts.map +1 -0
  95. package/dist/connections/connectionTestView.js +12 -0
  96. package/dist/connections/connectionTestView.js.map +1 -0
  97. package/dist/connections/connectionsPageModel.cjs +33 -0
  98. package/dist/connections/connectionsPageModel.cjs.map +1 -0
  99. package/dist/connections/connectionsPageModel.d.ts +24 -0
  100. package/dist/connections/connectionsPageModel.d.ts.map +1 -0
  101. package/dist/connections/connectionsPageModel.js +33 -0
  102. package/dist/connections/connectionsPageModel.js.map +1 -0
  103. package/dist/connections/iconProvider.cjs +20 -0
  104. package/dist/connections/iconProvider.cjs.map +1 -0
  105. package/dist/connections/iconProvider.d.ts +7 -0
  106. package/dist/connections/iconProvider.d.ts.map +1 -0
  107. package/dist/connections/iconProvider.js +20 -0
  108. package/dist/connections/iconProvider.js.map +1 -0
  109. package/dist/connections.cjs +45 -0
  110. package/dist/connections.cjs.map +1 -0
  111. package/dist/connections.d.ts +34 -0
  112. package/dist/connections.d.ts.map +1 -0
  113. package/dist/connections.js +45 -0
  114. package/dist/connections.js.map +1 -0
  115. package/dist/data/DataTable.cjs +18 -8
  116. package/dist/data/DataTable.cjs.map +1 -1
  117. package/dist/data/DataTable.d.ts +4 -0
  118. package/dist/data/DataTable.d.ts.map +1 -1
  119. package/dist/data/DataTable.js +18 -8
  120. package/dist/data/DataTable.js.map +1 -1
  121. package/dist/data/TaskManager.cjs +183 -159
  122. package/dist/data/TaskManager.cjs.map +1 -1
  123. package/dist/data/TaskManager.d.ts +3 -1
  124. package/dist/data/TaskManager.d.ts.map +1 -1
  125. package/dist/data/TaskManager.js +185 -161
  126. package/dist/data/TaskManager.js.map +1 -1
  127. package/dist/data/TaskManagerButton.cjs +1 -0
  128. package/dist/data/TaskManagerButton.cjs.map +1 -1
  129. package/dist/data/TaskManagerButton.js +1 -0
  130. package/dist/data/TaskManagerButton.js.map +1 -1
  131. package/dist/data/TaskProgress.cjs +13 -7
  132. package/dist/data/TaskProgress.cjs.map +1 -1
  133. package/dist/data/TaskProgress.d.ts +3 -1
  134. package/dist/data/TaskProgress.d.ts.map +1 -1
  135. package/dist/data/TaskProgress.js +13 -7
  136. package/dist/data/TaskProgress.js.map +1 -1
  137. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +52 -295
  138. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  139. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  140. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +47 -290
  141. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  142. package/dist/data/diagnostics/MetricTile.cjs +44 -0
  143. package/dist/data/diagnostics/MetricTile.cjs.map +1 -0
  144. package/dist/data/diagnostics/MetricTile.d.ts +13 -0
  145. package/dist/data/diagnostics/MetricTile.d.ts.map +1 -0
  146. package/dist/data/diagnostics/MetricTile.js +44 -0
  147. package/dist/data/diagnostics/MetricTile.js.map +1 -0
  148. package/dist/data/diagnostics/StackDumpView.cjs +227 -0
  149. package/dist/data/diagnostics/StackDumpView.cjs.map +1 -0
  150. package/dist/data/diagnostics/StackDumpView.d.ts +53 -0
  151. package/dist/data/diagnostics/StackDumpView.d.ts.map +1 -0
  152. package/dist/data/diagnostics/StackDumpView.js +227 -0
  153. package/dist/data/diagnostics/StackDumpView.js.map +1 -0
  154. package/dist/data/diagnostics/fixtures.d.ts +1 -0
  155. package/dist/data/diagnostics/fixtures.d.ts.map +1 -1
  156. package/dist/data/diagnostics/metric-tone.cjs +18 -0
  157. package/dist/data/diagnostics/metric-tone.cjs.map +1 -0
  158. package/dist/data/diagnostics/metric-tone.d.ts +6 -0
  159. package/dist/data/diagnostics/metric-tone.d.ts.map +1 -0
  160. package/dist/data/diagnostics/metric-tone.js +18 -0
  161. package/dist/data/diagnostics/metric-tone.js.map +1 -0
  162. package/dist/data/diagnostics/stacktrace.cjs +44 -0
  163. package/dist/data/diagnostics/stacktrace.cjs.map +1 -1
  164. package/dist/data/diagnostics/stacktrace.d.ts +7 -0
  165. package/dist/data/diagnostics/stacktrace.d.ts.map +1 -1
  166. package/dist/data/diagnostics/stacktrace.js +44 -0
  167. package/dist/data/diagnostics/stacktrace.js.map +1 -1
  168. package/dist/data/diagnostics/types.d.ts +2 -8
  169. package/dist/data/diagnostics/types.d.ts.map +1 -1
  170. package/dist/data/lint/LintDetail.cjs +339 -0
  171. package/dist/data/lint/LintDetail.cjs.map +1 -0
  172. package/dist/data/lint/LintDetail.d.ts +17 -0
  173. package/dist/data/lint/LintDetail.d.ts.map +1 -0
  174. package/dist/data/lint/LintDetail.js +339 -0
  175. package/dist/data/lint/LintDetail.js.map +1 -0
  176. package/dist/data/lint/LintFilterBar.cjs +103 -0
  177. package/dist/data/lint/LintFilterBar.cjs.map +1 -0
  178. package/dist/data/lint/LintFilterBar.d.ts +16 -0
  179. package/dist/data/lint/LintFilterBar.d.ts.map +1 -0
  180. package/dist/data/lint/LintFilterBar.js +103 -0
  181. package/dist/data/lint/LintFilterBar.js.map +1 -0
  182. package/dist/data/lint/LintResults.cjs +144 -0
  183. package/dist/data/lint/LintResults.cjs.map +1 -0
  184. package/dist/data/lint/LintResults.d.ts +39 -0
  185. package/dist/data/lint/LintResults.d.ts.map +1 -0
  186. package/dist/data/lint/LintResults.fixtures.d.ts +10 -0
  187. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -0
  188. package/dist/data/lint/LintResults.js +144 -0
  189. package/dist/data/lint/LintResults.js.map +1 -0
  190. package/dist/data/lint/LintTreeNode.cjs +66 -0
  191. package/dist/data/lint/LintTreeNode.cjs.map +1 -0
  192. package/dist/data/lint/LintTreeNode.d.ts +7 -0
  193. package/dist/data/lint/LintTreeNode.d.ts.map +1 -0
  194. package/dist/data/lint/LintTreeNode.js +66 -0
  195. package/dist/data/lint/LintTreeNode.js.map +1 -0
  196. package/dist/data/lint/actions.cjs +195 -0
  197. package/dist/data/lint/actions.cjs.map +1 -0
  198. package/dist/data/lint/actions.d.ts +29 -0
  199. package/dist/data/lint/actions.d.ts.map +1 -0
  200. package/dist/data/lint/actions.js +195 -0
  201. package/dist/data/lint/actions.js.map +1 -0
  202. package/dist/data/lint/grouping-options.cjs +14 -0
  203. package/dist/data/lint/grouping-options.cjs.map +1 -0
  204. package/dist/data/lint/grouping-options.d.ts +9 -0
  205. package/dist/data/lint/grouping-options.d.ts.map +1 -0
  206. package/dist/data/lint/grouping-options.js +14 -0
  207. package/dist/data/lint/grouping-options.js.map +1 -0
  208. package/dist/data/lint/grouping.cjs +450 -0
  209. package/dist/data/lint/grouping.cjs.map +1 -0
  210. package/dist/data/lint/grouping.d.ts +10 -0
  211. package/dist/data/lint/grouping.d.ts.map +1 -0
  212. package/dist/data/lint/grouping.js +450 -0
  213. package/dist/data/lint/grouping.js.map +1 -0
  214. package/dist/data/lint/index.d.ts +10 -0
  215. package/dist/data/lint/index.d.ts.map +1 -0
  216. package/dist/data/lint/paths.cjs +35 -0
  217. package/dist/data/lint/paths.cjs.map +1 -0
  218. package/dist/data/lint/paths.d.ts +13 -0
  219. package/dist/data/lint/paths.d.ts.map +1 -0
  220. package/dist/data/lint/paths.js +35 -0
  221. package/dist/data/lint/paths.js.map +1 -0
  222. package/dist/data/lint/stats.cjs +76 -0
  223. package/dist/data/lint/stats.cjs.map +1 -0
  224. package/dist/data/lint/stats.d.ts +19 -0
  225. package/dist/data/lint/stats.d.ts.map +1 -0
  226. package/dist/data/lint/stats.js +76 -0
  227. package/dist/data/lint/stats.js.map +1 -0
  228. package/dist/data/lint/types.cjs +16 -0
  229. package/dist/data/lint/types.cjs.map +1 -0
  230. package/dist/data/lint/types.d.ts +93 -0
  231. package/dist/data/lint/types.d.ts.map +1 -0
  232. package/dist/data/lint/types.js +16 -0
  233. package/dist/data/lint/types.js.map +1 -0
  234. package/dist/data/test-runner/TestAttemptDetail.cjs +113 -0
  235. package/dist/data/test-runner/TestAttemptDetail.cjs.map +1 -0
  236. package/dist/data/test-runner/TestAttemptDetail.d.ts +19 -0
  237. package/dist/data/test-runner/TestAttemptDetail.d.ts.map +1 -0
  238. package/dist/data/test-runner/TestAttemptDetail.js +113 -0
  239. package/dist/data/test-runner/TestAttemptDetail.js.map +1 -0
  240. package/dist/data/test-runner/TestAttempts.cjs +36 -0
  241. package/dist/data/test-runner/TestAttempts.cjs.map +1 -0
  242. package/dist/data/test-runner/TestAttempts.d.ts +5 -0
  243. package/dist/data/test-runner/TestAttempts.d.ts.map +1 -0
  244. package/dist/data/test-runner/TestAttempts.js +36 -0
  245. package/dist/data/test-runner/TestAttempts.js.map +1 -0
  246. package/dist/data/test-runner/TestDetailPanel.cjs +13 -3
  247. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  248. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  249. package/dist/data/test-runner/TestDetailPanel.js +14 -4
  250. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  251. package/dist/data/test-runner/TestFailureDetail.cjs +9 -29
  252. package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
  253. package/dist/data/test-runner/TestFailureDetail.d.ts +6 -6
  254. package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
  255. package/dist/data/test-runner/TestFailureDetail.js +9 -29
  256. package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
  257. package/dist/data/test-runner/TestRunSummary.cjs +33 -0
  258. package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
  259. package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
  260. package/dist/data/test-runner/TestRunSummary.js +34 -1
  261. package/dist/data/test-runner/TestRunSummary.js.map +1 -1
  262. package/dist/data/test-runner/TestRunner.cjs +3 -0
  263. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  264. package/dist/data/test-runner/TestRunner.d.ts +8 -1
  265. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  266. package/dist/data/test-runner/TestRunner.js +3 -0
  267. package/dist/data/test-runner/TestRunner.js.map +1 -1
  268. package/dist/data/test-runner/TestTreeNode.cjs +3 -1
  269. package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
  270. package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
  271. package/dist/data/test-runner/TestTreeNode.js +3 -1
  272. package/dist/data/test-runner/TestTreeNode.js.map +1 -1
  273. package/dist/data/test-runner/adapter.cjs +9 -1
  274. package/dist/data/test-runner/adapter.cjs.map +1 -1
  275. package/dist/data/test-runner/adapter.d.ts +5 -0
  276. package/dist/data/test-runner/adapter.d.ts.map +1 -1
  277. package/dist/data/test-runner/adapter.js +9 -1
  278. package/dist/data/test-runner/adapter.js.map +1 -1
  279. package/dist/data/test-runner/attempts.cjs +62 -0
  280. package/dist/data/test-runner/attempts.cjs.map +1 -0
  281. package/dist/data/test-runner/attempts.d.ts +13 -0
  282. package/dist/data/test-runner/attempts.d.ts.map +1 -0
  283. package/dist/data/test-runner/attempts.js +62 -0
  284. package/dist/data/test-runner/attempts.js.map +1 -0
  285. package/dist/data/test-runner/context.cjs.map +1 -1
  286. package/dist/data/test-runner/context.d.ts +6 -0
  287. package/dist/data/test-runner/context.d.ts.map +1 -1
  288. package/dist/data/test-runner/context.js.map +1 -1
  289. package/dist/data/test-runner/index.d.ts +5 -1
  290. package/dist/data/test-runner/index.d.ts.map +1 -1
  291. package/dist/data/test-runner/marks.cjs +2 -0
  292. package/dist/data/test-runner/marks.cjs.map +1 -1
  293. package/dist/data/test-runner/marks.d.ts.map +1 -1
  294. package/dist/data/test-runner/marks.js +2 -0
  295. package/dist/data/test-runner/marks.js.map +1 -1
  296. package/dist/data/test-runner/process-metrics.cjs +15 -0
  297. package/dist/data/test-runner/process-metrics.cjs.map +1 -0
  298. package/dist/data/test-runner/process-metrics.d.ts +22 -0
  299. package/dist/data/test-runner/process-metrics.d.ts.map +1 -0
  300. package/dist/data/test-runner/process-metrics.js +15 -0
  301. package/dist/data/test-runner/process-metrics.js.map +1 -0
  302. package/dist/data/test-runner/status.cjs +11 -3
  303. package/dist/data/test-runner/status.cjs.map +1 -1
  304. package/dist/data/test-runner/status.d.ts +3 -1
  305. package/dist/data/test-runner/status.d.ts.map +1 -1
  306. package/dist/data/test-runner/status.js +11 -3
  307. package/dist/data/test-runner/status.js.map +1 -1
  308. package/dist/data/test-runner/types.d.ts +14 -0
  309. package/dist/data/test-runner/types.d.ts.map +1 -1
  310. package/dist/data/traces/GoProfileView.cjs +176 -0
  311. package/dist/data/traces/GoProfileView.cjs.map +1 -0
  312. package/dist/data/traces/GoProfileView.d.ts +30 -0
  313. package/dist/data/traces/GoProfileView.d.ts.map +1 -0
  314. package/dist/data/traces/GoProfileView.js +176 -0
  315. package/dist/data/traces/GoProfileView.js.map +1 -0
  316. package/dist/data/traces/ProcessFacetTable.cjs +79 -0
  317. package/dist/data/traces/ProcessFacetTable.cjs.map +1 -0
  318. package/dist/data/traces/ProcessFacetTable.d.ts +21 -0
  319. package/dist/data/traces/ProcessFacetTable.d.ts.map +1 -0
  320. package/dist/data/traces/ProcessFacetTable.js +79 -0
  321. package/dist/data/traces/ProcessFacetTable.js.map +1 -0
  322. package/dist/data/traces/ProcessRecordViews.cjs +41 -0
  323. package/dist/data/traces/ProcessRecordViews.cjs.map +1 -0
  324. package/dist/data/traces/ProcessRecordViews.d.ts +16 -0
  325. package/dist/data/traces/ProcessRecordViews.d.ts.map +1 -0
  326. package/dist/data/traces/ProcessRecordViews.js +41 -0
  327. package/dist/data/traces/ProcessRecordViews.js.map +1 -0
  328. package/dist/data/traces/ProcessTraceDetail.cjs +316 -0
  329. package/dist/data/traces/ProcessTraceDetail.cjs.map +1 -0
  330. package/dist/data/traces/ProcessTraceDetail.d.ts +39 -0
  331. package/dist/data/traces/ProcessTraceDetail.d.ts.map +1 -0
  332. package/dist/data/traces/ProcessTraceDetail.js +316 -0
  333. package/dist/data/traces/ProcessTraceDetail.js.map +1 -0
  334. package/dist/data/traces/ProcessTraceTree.cjs +135 -0
  335. package/dist/data/traces/ProcessTraceTree.cjs.map +1 -0
  336. package/dist/data/traces/ProcessTraceTree.d.ts +41 -0
  337. package/dist/data/traces/ProcessTraceTree.d.ts.map +1 -0
  338. package/dist/data/traces/ProcessTraceTree.js +135 -0
  339. package/dist/data/traces/ProcessTraceTree.js.map +1 -0
  340. package/dist/data/traces/Sparkline.cjs +45 -0
  341. package/dist/data/traces/Sparkline.cjs.map +1 -0
  342. package/dist/data/traces/Sparkline.d.ts +29 -0
  343. package/dist/data/traces/Sparkline.d.ts.map +1 -0
  344. package/dist/data/traces/Sparkline.js +45 -0
  345. package/dist/data/traces/Sparkline.js.map +1 -0
  346. package/dist/data/traces/SqlTraceTable.cjs +104 -0
  347. package/dist/data/traces/SqlTraceTable.cjs.map +1 -0
  348. package/dist/data/traces/SqlTraceTable.d.ts +19 -0
  349. package/dist/data/traces/SqlTraceTable.d.ts.map +1 -0
  350. package/dist/data/traces/SqlTraceTable.js +104 -0
  351. package/dist/data/traces/SqlTraceTable.js.map +1 -0
  352. package/dist/data/traces/TerminalCastPlayer.cjs +162 -0
  353. package/dist/data/traces/TerminalCastPlayer.cjs.map +1 -0
  354. package/dist/data/traces/TerminalCastPlayer.js +162 -0
  355. package/dist/data/traces/TerminalCastPlayer.js.map +1 -0
  356. package/dist/data/traces/TraceHarView.cjs +15 -0
  357. package/dist/data/traces/TraceHarView.cjs.map +1 -0
  358. package/dist/data/traces/TraceHarView.js +15 -0
  359. package/dist/data/traces/TraceHarView.js.map +1 -0
  360. package/dist/data/traces/TraceView.cjs +63 -0
  361. package/dist/data/traces/TraceView.cjs.map +1 -0
  362. package/dist/data/traces/TraceView.d.ts +20 -0
  363. package/dist/data/traces/TraceView.d.ts.map +1 -0
  364. package/dist/data/traces/TraceView.js +63 -0
  365. package/dist/data/traces/TraceView.js.map +1 -0
  366. package/dist/data/traces/TraceWindowList.cjs +117 -0
  367. package/dist/data/traces/TraceWindowList.cjs.map +1 -0
  368. package/dist/data/traces/TraceWindowList.d.ts +48 -0
  369. package/dist/data/traces/TraceWindowList.d.ts.map +1 -0
  370. package/dist/data/traces/TraceWindowList.js +117 -0
  371. package/dist/data/traces/TraceWindowList.js.map +1 -0
  372. package/dist/data/traces/cast.cjs +81 -0
  373. package/dist/data/traces/cast.cjs.map +1 -0
  374. package/dist/data/traces/cast.js +81 -0
  375. package/dist/data/traces/cast.js.map +1 -0
  376. package/dist/data/traces/fixtures.d.ts +25 -1
  377. package/dist/data/traces/fixtures.d.ts.map +1 -1
  378. package/dist/data/traces/har-adapter.cjs +83 -0
  379. package/dist/data/traces/har-adapter.cjs.map +1 -0
  380. package/dist/data/traces/har-adapter.js +83 -0
  381. package/dist/data/traces/har-adapter.js.map +1 -0
  382. package/dist/data/traces/index.d.ts +19 -0
  383. package/dist/data/traces/index.d.ts.map +1 -0
  384. package/dist/data/traces/process-facets.cjs +48 -0
  385. package/dist/data/traces/process-facets.cjs.map +1 -0
  386. package/dist/data/traces/process-facets.d.ts +38 -0
  387. package/dist/data/traces/process-facets.d.ts.map +1 -0
  388. package/dist/data/traces/process-facets.js +48 -0
  389. package/dist/data/traces/process-facets.js.map +1 -0
  390. package/dist/data/traces/process-tree.cjs +85 -0
  391. package/dist/data/traces/process-tree.cjs.map +1 -0
  392. package/dist/data/traces/process-tree.d.ts +40 -0
  393. package/dist/data/traces/process-tree.d.ts.map +1 -0
  394. package/dist/data/traces/process-tree.js +85 -0
  395. package/dist/data/traces/process-tree.js.map +1 -0
  396. package/dist/data/traces/profile-aggregate.cjs +78 -0
  397. package/dist/data/traces/profile-aggregate.cjs.map +1 -0
  398. package/dist/data/traces/profile-aggregate.d.ts +41 -0
  399. package/dist/data/traces/profile-aggregate.d.ts.map +1 -0
  400. package/dist/data/traces/profile-aggregate.js +78 -0
  401. package/dist/data/traces/profile-aggregate.js.map +1 -0
  402. package/dist/data/traces/sql-trace.cjs +39 -0
  403. package/dist/data/traces/sql-trace.cjs.map +1 -0
  404. package/dist/data/traces/sql-trace.d.ts +31 -0
  405. package/dist/data/traces/sql-trace.d.ts.map +1 -0
  406. package/dist/data/traces/sql-trace.js +39 -0
  407. package/dist/data/traces/sql-trace.js.map +1 -0
  408. package/dist/data/traces/stack-checkpoints.cjs +22 -0
  409. package/dist/data/traces/stack-checkpoints.cjs.map +1 -0
  410. package/dist/data/traces/stack-checkpoints.d.ts +18 -0
  411. package/dist/data/traces/stack-checkpoints.d.ts.map +1 -0
  412. package/dist/data/traces/stack-checkpoints.js +22 -0
  413. package/dist/data/traces/stack-checkpoints.js.map +1 -0
  414. package/dist/data/traces/terminal-screen.cjs +270 -0
  415. package/dist/data/traces/terminal-screen.cjs.map +1 -0
  416. package/dist/data/traces/terminal-screen.js +270 -0
  417. package/dist/data/traces/terminal-screen.js.map +1 -0
  418. package/dist/data/traces/terminal-timeline.cjs +48 -0
  419. package/dist/data/traces/terminal-timeline.cjs.map +1 -0
  420. package/dist/data/traces/terminal-timeline.js +48 -0
  421. package/dist/data/traces/terminal-timeline.js.map +1 -0
  422. package/dist/data/traces/types.d.ts +121 -8
  423. package/dist/data/traces/types.d.ts.map +1 -1
  424. package/dist/data/verification/adapters.cjs +1 -0
  425. package/dist/data/verification/adapters.cjs.map +1 -1
  426. package/dist/data/verification/adapters.d.ts.map +1 -1
  427. package/dist/data/verification/adapters.js +1 -0
  428. package/dist/data/verification/adapters.js.map +1 -1
  429. package/dist/data/version-info.cjs +3 -3
  430. package/dist/data/version-info.cjs.map +1 -1
  431. package/dist/data/version-info.js +3 -3
  432. package/dist/data/version-info.js.map +1 -1
  433. package/dist/data.cjs +105 -5
  434. package/dist/data.cjs.map +1 -1
  435. package/dist/data.d.ts +5 -0
  436. package/dist/data.d.ts.map +1 -1
  437. package/dist/data.js +101 -1
  438. package/dist/data.js.map +1 -1
  439. package/dist/index.cjs +107 -7
  440. package/dist/index.cjs.map +1 -1
  441. package/dist/index.js +101 -1
  442. package/dist/index.js.map +1 -1
  443. package/dist/styles.css +1 -1
  444. package/package.json +6 -1
@@ -1,36 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
- const react = require("react");
5
4
  const Icon = require("../Icon.cjs");
6
5
  const utils = require("./utils.cjs");
7
- const stacktrace = require("./stacktrace.cjs");
8
- const GoroutineCard = require("./GoroutineCard.cjs");
9
- const ThreadCard = require("./ThreadCard.cjs");
10
- const stateStyles = require("./state-styles.cjs");
6
+ const MetricTile = require("./MetricTile.cjs");
7
+ const metricTone = require("./metric-tone.cjs");
8
+ const StackDumpView = require("./StackDumpView.cjs");
11
9
  const UiServerProcess = require("../../icons/components/UiServerProcess.cjs");
12
10
  const UiDebug = require("../../icons/components/UiDebug.cjs");
13
11
  const UiLoader = require("../../icons/components/UiLoader.cjs");
14
12
  const UiDebugSmall = require("../../icons/components/UiDebugSmall.cjs");
15
13
  const UiRefresh = require("../../icons/components/UiRefresh.cjs");
16
14
  const format = require("../../lib/format.cjs");
17
- const UiSearch = require("../../icons/components/UiSearch.cjs");
18
- const STACK_MIN_LINES = 10;
19
- const STACK_LINE_HEIGHT_REM = 1;
20
- const STACK_MIN_HEIGHT = `${STACK_MIN_LINES * STACK_LINE_HEIGHT_REM}rem`;
21
- function cpuTone(pct) {
22
- if (pct >= 90) return "danger";
23
- if (pct >= 60) return "warning";
24
- if (pct > 0) return "success";
25
- return "neutral";
26
- }
27
- function memoryTone(rss, vms) {
28
- if (!rss || !vms) return "neutral";
29
- const ratio = rss / vms;
30
- if (ratio >= 0.9) return "danger";
31
- if (ratio >= 0.6) return "warning";
32
- return "info";
33
- }
34
15
  function DiagnosticsDetailPanel({
35
16
  process,
36
17
  collectBusy,
@@ -41,34 +22,13 @@ function DiagnosticsDetailPanel({
41
22
  headerActions,
42
23
  singleItem
43
24
  }) {
44
- const [search, setSearch] = react.useState("");
45
- const [selectedStates, setSelectedStates] = react.useState(/* @__PURE__ */ new Set());
46
- const [hideRuntimeOnly, setHideRuntimeOnly] = react.useState(true);
47
- const stack = process == null ? void 0 : process.stack_capture;
48
- const parsed = react.useMemo(() => stacktrace.parseStackDump((stack == null ? void 0 : stack.text) || ""), [stack == null ? void 0 : stack.text]);
49
- const stateCounts = react.useMemo(() => stacktrace.countStackByState(parsed), [parsed]);
50
- const filtered = react.useMemo(() => {
51
- const needle = search.trim().toLowerCase();
52
- const items = parsed.format === "jvm" ? parsed.threads : parsed.format === "go" ? parsed.goroutines : [];
53
- if (singleItem) return items;
54
- return items.filter((item) => {
55
- if (selectedStates.size > 0 && !selectedStates.has(item.state)) return false;
56
- if (hideRuntimeOnly && item.userFrameCount === 0) return false;
57
- if (needle && !item.searchText.includes(needle)) return false;
58
- return true;
59
- });
60
- }, [parsed, search, selectedStates, hideRuntimeOnly, singleItem]);
61
- react.useEffect(() => {
62
- setSearch("");
63
- setSelectedStates(/* @__PURE__ */ new Set());
64
- setHideRuntimeOnly(true);
65
- }, [stack == null ? void 0 : stack.text, process == null ? void 0 : process.pid]);
66
25
  if (!process) {
67
26
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full text-muted-foreground text-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
68
27
  /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiServerProcess.UiServerProcess, className: "text-4xl mb-density-2" }),
69
28
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Select a process to view diagnostics" })
70
29
  ] }) });
71
30
  }
31
+ const stack = process.stack_capture;
72
32
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full min-h-0 flex flex-col gap-density-3 p-density-4", children: [
73
33
  /* @__PURE__ */ jsxRuntime.jsx(
74
34
  Header,
@@ -83,24 +43,35 @@ function DiagnosticsDetailPanel({
83
43
  runMeta && /* @__PURE__ */ jsxRuntime.jsx(RunSection, { runMeta }),
84
44
  process.command && /* @__PURE__ */ jsxRuntime.jsx(PanelSection, { title: "Command", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-xs text-foreground whitespace-pre-wrap font-mono bg-blue-50 dark:bg-blue-500/10 rounded p-2 break-all", children: process.command }) }),
85
45
  /* @__PURE__ */ jsxRuntime.jsx(PanelSection, { title: "Metrics", children: /* @__PURE__ */ jsxRuntime.jsx(ProcessMetrics, { process }) }),
86
- /* @__PURE__ */ jsxRuntime.jsx(PanelSection, { title: "Stack", grow: true, children: /* @__PURE__ */ jsxRuntime.jsx(
87
- StackBlock,
46
+ /* @__PURE__ */ jsxRuntime.jsx(PanelSection, { title: "Stack", grow: true, children: (stack == null ? void 0 : stack.text) ? /* @__PURE__ */ jsxRuntime.jsx(
47
+ StackDumpView.StackDumpView,
88
48
  {
89
- process,
90
- parsed,
91
- stateCounts,
92
- filtered,
93
- search,
94
- setSearch,
95
- selectedStates,
96
- setSelectedStates,
97
- hideRuntimeOnly,
98
- setHideRuntimeOnly,
99
- collectBusy: collectBusy ?? false,
49
+ text: stack.text,
50
+ status: stack.status,
100
51
  singleItem: singleItem ?? false,
101
- ...onCollectStack ? { onCollectStack } : {},
52
+ ...stack.error ? { error: stack.error } : {},
53
+ ...stack.collected_at ? { collectedAt: stack.collected_at } : {},
102
54
  ...resolveSource ? { resolveSource } : {},
103
- ...frameActions ? { frameActions } : {}
55
+ ...frameActions ? { frameActions } : {},
56
+ ...onCollectStack && !singleItem ? {
57
+ headerActions: /* @__PURE__ */ jsxRuntime.jsx(
58
+ CollectButton,
59
+ {
60
+ pid: process.pid,
61
+ busy: collectBusy ?? false,
62
+ onClick: onCollectStack
63
+ }
64
+ )
65
+ } : {}
66
+ },
67
+ process.pid
68
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
69
+ StackPlaceholder,
70
+ {
71
+ error: stack == null ? void 0 : stack.error,
72
+ busy: collectBusy ?? false,
73
+ pid: process.pid,
74
+ ...onCollectStack ? { onCollectStack } : {}
104
75
  }
105
76
  ) })
106
77
  ] });
@@ -162,207 +133,25 @@ function RunSection({ runMeta }) {
162
133
  )
163
134
  ] }) });
164
135
  }
165
- function stackItemCount(parsed) {
166
- if (parsed.format === "jvm") return parsed.threads.length;
167
- if (parsed.format === "go") return parsed.goroutines.length;
168
- return 0;
169
- }
170
- function stackItemLabel(parsed) {
171
- if (parsed.format === "jvm") return "threads";
172
- if (parsed.format === "go") return "goroutines";
173
- return "frames";
174
- }
175
- function stackStateDot(parsed, state) {
176
- return parsed.format === "jvm" ? stateStyles.threadStateDot(state) : stateStyles.goroutineStateDot(state);
177
- }
178
- function StackBlock(props) {
179
- const {
180
- process,
181
- parsed,
182
- stateCounts,
183
- filtered,
184
- search,
185
- setSearch,
186
- selectedStates,
187
- setSelectedStates,
188
- hideRuntimeOnly,
189
- setHideRuntimeOnly,
190
- collectBusy,
191
- onCollectStack,
192
- resolveSource,
193
- frameActions,
194
- singleItem
195
- } = props;
196
- const stack = process.stack_capture;
197
- if (!(stack == null ? void 0 : stack.text)) {
198
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full min-h-[14rem] flex flex-col justify-center gap-density-3 p-density-3", children: [
199
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
200
- /* @__PURE__ */ jsxRuntime.jsx(
201
- "div",
202
- {
203
- className: `h-3 w-40 rounded ${collectBusy ? "animate-pulse bg-muted" : "bg-muted/70"}`
204
- }
205
- ),
206
- /* @__PURE__ */ jsxRuntime.jsx(
207
- "div",
208
- {
209
- className: `h-3 w-full rounded ${collectBusy ? "animate-pulse bg-muted" : "bg-muted/70"}`
210
- }
211
- ),
212
- /* @__PURE__ */ jsxRuntime.jsx(
213
- "div",
214
- {
215
- className: `h-3 w-5/6 rounded ${collectBusy ? "animate-pulse bg-muted" : "bg-muted/70"}`
216
- }
217
- )
218
- ] }),
219
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-density-3", children: [
220
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: (stack == null ? void 0 : stack.error) ? stack.error : collectBusy ? "Collecting stack trace..." : "No stack trace collected yet." }),
221
- onCollectStack && /* @__PURE__ */ jsxRuntime.jsx(
222
- CollectButton,
223
- {
224
- pid: process.pid,
225
- busy: collectBusy ?? false,
226
- onClick: onCollectStack,
227
- primary: true
228
- }
229
- )
230
- ] })
231
- ] });
232
- }
233
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full min-h-0 flex flex-col", children: [
234
- !singleItem && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-1 py-1.5 space-y-density-2", children: [
235
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-density-2 text-[11px] text-muted-foreground flex-wrap", children: [
236
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-density-2 flex-wrap", children: [
237
- /* @__PURE__ */ jsxRuntime.jsx(StackStatusBadge, { status: stack.status }),
238
- stack.collected_at && /* @__PURE__ */ jsxRuntime.jsx("span", { children: new Date(stack.collected_at).toLocaleString() }),
239
- stackItemCount(parsed) > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
240
- filtered.length,
241
- " / ",
242
- stackItemCount(parsed),
243
- " ",
244
- stackItemLabel(parsed)
245
- ] })
246
- ] }),
247
- onCollectStack && /* @__PURE__ */ jsxRuntime.jsx(CollectButton, { pid: process.pid, busy: collectBusy ?? false, onClick: onCollectStack })
248
- ] }),
249
- stackItemCount(parsed) > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
250
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [
251
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative min-w-[14rem] flex-1", children: [
252
- /* @__PURE__ */ jsxRuntime.jsx(
253
- Icon.Icon,
254
- {
255
- icon: UiSearch.UiSearch,
256
- className: "absolute left-2 top-1/2 -translate-y-1/2 text-muted-foreground text-xs"
257
- }
258
- ),
259
- /* @__PURE__ */ jsxRuntime.jsx(
260
- "input",
261
- {
262
- className: "w-full rounded-md border border-border bg-muted/50 py-1 pl-7 pr-2 text-xs outline-none focus:border-primary focus:bg-background",
263
- placeholder: parsed.format === "jvm" ? "Filter by thread name, function, or file" : "Filter by goroutine id, function, or file",
264
- value: search,
265
- onChange: (e) => setSearch(e.target.value)
266
- }
267
- )
268
- ] }),
269
- /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-1.5 rounded-md border border-border bg-muted/50 px-2 py-1 text-[11px] text-muted-foreground", children: [
270
- /* @__PURE__ */ jsxRuntime.jsx(
271
- "input",
272
- {
273
- type: "checkbox",
274
- checked: hideRuntimeOnly,
275
- onChange: (e) => setHideRuntimeOnly(e.target.checked)
276
- }
277
- ),
278
- "Hide runtime-only"
279
- ] }),
280
- (search || selectedStates.size > 0 || !hideRuntimeOnly) && /* @__PURE__ */ jsxRuntime.jsx(
281
- "button",
282
- {
283
- className: "text-[11px] text-muted-foreground hover:text-foreground",
284
- onClick: () => {
285
- setSearch("");
286
- setSelectedStates(() => /* @__PURE__ */ new Set());
287
- setHideRuntimeOnly(true);
288
- },
289
- children: "Clear"
290
- }
291
- )
292
- ] }),
293
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1 flex-wrap", children: Array.from(stateCounts.entries()).sort((a, b) => b[1] - a[1]).map(([state, count]) => {
294
- const active = selectedStates.has(state);
295
- return /* @__PURE__ */ jsxRuntime.jsxs(
296
- "button",
297
- {
298
- className: `inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] transition-colors ${active ? "border-primary bg-primary/10 text-primary" : "border-border bg-muted/50 text-muted-foreground hover:bg-background"}`,
299
- onClick: () => {
300
- setSelectedStates((prev) => {
301
- const next = new Set(prev);
302
- if (next.has(state)) next.delete(state);
303
- else next.add(state);
304
- return next;
305
- });
306
- },
307
- children: [
308
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-2 w-2 rounded-full ${stackStateDot(parsed, state)}` }),
309
- state,
310
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] opacity-70", children: count })
311
- ]
312
- },
313
- state
314
- );
315
- }) })
316
- ] })
136
+ function StackPlaceholder({
137
+ error,
138
+ busy,
139
+ pid,
140
+ onCollectStack
141
+ }) {
142
+ const bar = busy ? "animate-pulse bg-muted" : "bg-muted/70";
143
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full min-h-[14rem] flex flex-col justify-center gap-density-3 p-density-3", children: [
144
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
145
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-3 w-40 rounded ${bar}` }),
146
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-3 w-full rounded ${bar}` }),
147
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-3 w-5/6 rounded ${bar}` })
317
148
  ] }),
318
- stack.error && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-density-2 text-xs text-red-600 whitespace-pre-wrap", children: stack.error }),
319
- stackItemCount(parsed) === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
320
- "pre",
321
- {
322
- className: "flex-1 min-h-0 overflow-auto py-1 text-[11px] text-foreground whitespace-pre-wrap font-mono leading-4",
323
- style: { minHeight: STACK_MIN_HEIGHT },
324
- children: stack.text
325
- }
326
- ) : /* @__PURE__ */ jsxRuntime.jsxs(
327
- "div",
328
- {
329
- className: "flex-1 min-h-0 overflow-auto py-1 space-y-1",
330
- style: { minHeight: STACK_MIN_HEIGHT },
331
- children: [
332
- filtered.length === 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-density-3 text-center text-xs text-muted-foreground", children: [
333
- "No ",
334
- stackItemLabel(parsed),
335
- " match the current filters."
336
- ] }),
337
- parsed.format === "jvm" && parsed.threads.filter((t) => filtered.includes(t)).map((t) => /* @__PURE__ */ jsxRuntime.jsx(
338
- ThreadCard.ThreadCard,
339
- {
340
- thread: t,
341
- search,
342
- hideRuntimeOnly,
343
- ...resolveSource ? { resolveSource } : {},
344
- ...frameActions ? { frameActions } : {}
345
- },
346
- t.id
347
- )),
348
- parsed.format === "go" && parsed.goroutines.filter((g) => filtered.includes(g)).map((goroutine) => /* @__PURE__ */ jsxRuntime.jsx(
349
- GoroutineCard.GoroutineCard,
350
- {
351
- goroutine,
352
- search,
353
- hideRuntimeOnly
354
- },
355
- goroutine.id
356
- ))
357
- ]
358
- }
359
- )
149
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-density-3", children: [
150
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: error ? error : busy ? "Collecting stack trace..." : "No stack trace collected yet." }),
151
+ onCollectStack && /* @__PURE__ */ jsxRuntime.jsx(CollectButton, { pid, busy, onClick: onCollectStack, primary: true })
152
+ ] })
360
153
  ] });
361
154
  }
362
- function StackStatusBadge({ status }) {
363
- const cls = status === "ready" ? "bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300" : status === "unsupported" ? "bg-yellow-100 text-yellow-700 dark:bg-yellow-500/20 dark:text-yellow-300" : "bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-300";
364
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: `px-2 py-0.5 rounded-full ${cls}`, children: status });
365
- }
366
155
  function CollectButton({
367
156
  pid,
368
157
  busy,
@@ -408,26 +197,26 @@ function ProcessMetrics({ process }) {
408
197
  const memRatioPct = rss && vms && vms > 0 ? Math.min(100, Math.round(rss / vms * 100)) : 0;
409
198
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-4 gap-density-1", children: [
410
199
  /* @__PURE__ */ jsxRuntime.jsx(
411
- MetricTile,
200
+ MetricTile.MetricTile,
412
201
  {
413
202
  label: "CPU",
414
203
  value: `${cpu.toFixed(1)}%`,
415
204
  barPct: Math.min(100, cpu),
416
- tone: cpuTone(cpu)
205
+ tone: metricTone.cpuTone(cpu)
417
206
  }
418
207
  ),
419
208
  /* @__PURE__ */ jsxRuntime.jsx(
420
- MetricTile,
209
+ MetricTile.MetricTile,
421
210
  {
422
211
  label: "RSS",
423
212
  value: rss !== void 0 ? format.formatBytes(rss) : "n/a",
424
213
  barPct: memRatioPct,
425
- tone: memoryTone(rss, vms)
214
+ tone: metricTone.memoryTone(rss, vms)
426
215
  }
427
216
  ),
428
- /* @__PURE__ */ jsxRuntime.jsx(MetricTile, { label: "VMS", value: vms !== void 0 ? format.formatBytes(vms) : "n/a", tone: "neutral" }),
217
+ /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "VMS", value: vms !== void 0 ? format.formatBytes(vms) : "n/a", tone: "neutral" }),
429
218
  /* @__PURE__ */ jsxRuntime.jsx(
430
- MetricTile,
219
+ MetricTile.MetricTile,
431
220
  {
432
221
  label: "Files",
433
222
  value: process.open_files !== void 0 ? String(process.open_files) : "n/a",
@@ -437,37 +226,5 @@ function ProcessMetrics({ process }) {
437
226
  )
438
227
  ] });
439
228
  }
440
- function MetricTile({
441
- label,
442
- value,
443
- barPct,
444
- tone = "neutral"
445
- }) {
446
- const toneBar = {
447
- neutral: "bg-muted-foreground/40",
448
- success: "bg-green-500",
449
- warning: "bg-yellow-500",
450
- danger: "bg-red-500",
451
- info: "bg-blue-500"
452
- };
453
- const toneText = {
454
- neutral: "text-foreground",
455
- success: "text-green-600 dark:text-green-400",
456
- warning: "text-yellow-600 dark:text-yellow-400",
457
- danger: "text-red-600 dark:text-red-400",
458
- info: "text-blue-600 dark:text-blue-400"
459
- };
460
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-0.5 rounded-md border border-border bg-background px-density-2 py-1 min-w-0", children: [
461
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] uppercase tracking-wide text-muted-foreground leading-none", children: label }),
462
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `text-xs font-semibold tabular-nums truncate ${toneText[tone]}`, children: value }),
463
- barPct !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-0.5 w-full rounded-full bg-muted overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
464
- "div",
465
- {
466
- className: `h-full ${toneBar[tone]} transition-all duration-300`,
467
- style: { width: `${barPct}%` }
468
- }
469
- ) })
470
- ] });
471
- }
472
229
  exports.DiagnosticsDetailPanel = DiagnosticsDetailPanel;
473
230
  //# sourceMappingURL=DiagnosticsDetailPanel.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticsDetailPanel.cjs","sources":["../../../src/data/diagnostics/DiagnosticsDetailPanel.tsx"],"sourcesContent":["import { useEffect, useMemo, useState, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { GaugeTone } from \"../Gauge\";\nimport { UiDebug, UiDebugSmall, UiRefresh, UiSearch, UiServerProcess, UiLoader } from \"../../icons\";\nimport type { ProcessNode, RunMeta } from \"./types\";\nimport { formatBytes, processLabel, processStateColor, processStateIcon } from \"./utils\";\nimport { countStackByState, parseStackDump, type ParsedStack } from \"./stacktrace\";\nimport { GoroutineCard } from \"./GoroutineCard\";\nimport { ThreadCard } from \"./ThreadCard\";\nimport type { StackFrameActions } from \"./StackFrameRow\";\nimport { goroutineStateDot, threadStateDot } from \"./state-styles\";\nimport type { JvmFrameSourceResolver } from \"./JvmStackTrace\";\n\nconst STACK_MIN_LINES = 10;\nconst STACK_LINE_HEIGHT_REM = 1;\nconst STACK_MIN_HEIGHT = `${STACK_MIN_LINES * STACK_LINE_HEIGHT_REM}rem`;\n\nfunction cpuTone(pct: number): GaugeTone {\n if (pct >= 90) return \"danger\";\n if (pct >= 60) return \"warning\";\n if (pct > 0) return \"success\";\n return \"neutral\";\n}\n\nfunction memoryTone(rss: number | undefined, vms: number | undefined): GaugeTone {\n if (!rss || !vms) return \"neutral\";\n const ratio = rss / vms;\n if (ratio >= 0.9) return \"danger\";\n if (ratio >= 0.6) return \"warning\";\n return \"info\";\n}\n\nexport type DiagnosticsDetailPanelProps = {\n /** Selected process; null renders the empty selection state. */\n process: ProcessNode | null;\n /** Shows loading state while stack capture is being collected. */\n collectBusy?: boolean;\n /** Called when the user requests a fresh stack capture. */\n onCollectStack?: (pid: number) => void | Promise<void>;\n /** Optional run metadata rendered above diagnostics. */\n runMeta?: RunMeta;\n /**\n * Optional resolver that supplies inline source under each JVM stack frame,\n * so the rendered thread dump can be augmented in place (e.g. with decompiled\n * source). A missing class must resolve to undefined, never throw.\n */\n resolveSource?: JvmFrameSourceResolver;\n /**\n * Optional trailing actions rendered on each stack frame, revealed on hover.\n * Lets a host app hang per-frame affordances (trace/watch/decompile) off the\n * rendered thread dump.\n */\n frameActions?: StackFrameActions;\n /**\n * Caller-supplied action buttons rendered right-aligned in the header row,\n * next to the title and Refresh. Use for download/decompile-style actions.\n */\n headerActions?: ReactNode;\n /**\n * The capture holds a single, already-selected item (e.g. one thread the\n * caller picked from its own list). Suppresses the redundant per-item filter\n * UI (search box, state chips, hide-runtime, count) and lifts Refresh into\n * the header row so the detail view shows just that item's frames.\n */\n singleItem?: boolean;\n};\n\nexport function DiagnosticsDetailPanel({\n process,\n collectBusy,\n onCollectStack,\n runMeta,\n resolveSource,\n frameActions,\n headerActions,\n singleItem,\n}: DiagnosticsDetailPanelProps) {\n const [search, setSearch] = useState(\"\");\n const [selectedStates, setSelectedStates] = useState<Set<string>>(new Set());\n const [hideRuntimeOnly, setHideRuntimeOnly] = useState(true);\n const stack = process?.stack_capture;\n const parsed = useMemo<ParsedStack>(() => parseStackDump(stack?.text || \"\"), [stack?.text]);\n const stateCounts = useMemo(() => countStackByState(parsed), [parsed]);\n const filtered = useMemo(() => {\n const needle = search.trim().toLowerCase();\n const items: Array<{\n state: string;\n userFrameCount: number;\n searchText: string;\n }> = parsed.format === \"jvm\" ? parsed.threads : parsed.format === \"go\" ? parsed.goroutines : [];\n if (singleItem) return items;\n return items.filter((item) => {\n if (selectedStates.size > 0 && !selectedStates.has(item.state)) return false;\n if (hideRuntimeOnly && item.userFrameCount === 0) return false;\n if (needle && !item.searchText.includes(needle)) return false;\n return true;\n });\n }, [parsed, search, selectedStates, hideRuntimeOnly, singleItem]);\n\n useEffect(() => {\n setSearch(\"\");\n setSelectedStates(new Set());\n setHideRuntimeOnly(true);\n }, [stack?.text, process?.pid]);\n\n if (!process) {\n return (\n <div className=\"flex items-center justify-center h-full text-muted-foreground text-sm\">\n <div className=\"text-center\">\n <Icon icon={UiServerProcess} className=\"text-4xl mb-density-2\" />\n <div>Select a process to view diagnostics</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full min-h-0 flex flex-col gap-density-3 p-density-4\">\n <Header\n process={process}\n actions={\n <div className=\"flex items-center gap-density-2\">\n {singleItem && onCollectStack && (\n <CollectButton pid={process.pid} busy={collectBusy ?? false} onClick={onCollectStack} />\n )}\n {headerActions}\n </div>\n }\n />\n {runMeta && <RunSection runMeta={runMeta} />}\n {process.command && (\n <PanelSection title=\"Command\">\n <pre className=\"text-xs text-foreground whitespace-pre-wrap font-mono bg-blue-50 dark:bg-blue-500/10 rounded p-2 break-all\">\n {process.command}\n </pre>\n </PanelSection>\n )}\n\n <PanelSection title=\"Metrics\">\n <ProcessMetrics process={process} />\n </PanelSection>\n\n <PanelSection title=\"Stack\" grow>\n <StackBlock\n process={process}\n parsed={parsed}\n stateCounts={stateCounts}\n filtered={filtered}\n search={search}\n setSearch={setSearch}\n selectedStates={selectedStates}\n setSelectedStates={setSelectedStates}\n hideRuntimeOnly={hideRuntimeOnly}\n setHideRuntimeOnly={setHideRuntimeOnly}\n collectBusy={collectBusy ?? false}\n singleItem={singleItem ?? false}\n {...(onCollectStack ? { onCollectStack } : {})}\n {...(resolveSource ? { resolveSource } : {})}\n {...(frameActions ? { frameActions } : {})}\n />\n </PanelSection>\n </div>\n );\n}\n\nfunction Header({ process, actions }: { process: ProcessNode; actions?: ReactNode }) {\n return (\n <div className=\"flex items-start justify-between gap-density-3\">\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-density-2 flex-wrap\">\n <Icon\n icon={process.is_root ? UiServerProcess : UiDebug}\n className=\"text-2xl text-blue-600\"\n />\n <h2 className=\"text-lg font-bold text-foreground break-words\">{processLabel(process)}</h2>\n {process.status ? (\n <span\n className={`inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs ${processStateColor(\n process.status,\n )}`}\n >\n <Icon icon={processStateIcon(process.status)} />\n {process.status}\n </span>\n ) : null}\n </div>\n <div className=\"mt-1 flex items-center gap-density-2 flex-wrap text-xs text-muted-foreground\">\n <span className=\"font-mono\">pid {process.pid}</span>\n {process.ppid ? <span className=\"font-mono\">ppid {process.ppid}</span> : null}\n </div>\n </div>\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\n </div>\n );\n}\n\nfunction RunSection({ runMeta }: { runMeta: RunMeta }) {\n return (\n <PanelSection title=\"Run\">\n <div className=\"grid grid-cols-2 gap-density-2 text-sm\">\n <InfoTile\n label={runMeta.kind === \"rerun\" ? `Rerun #${runMeta.sequence}` : \"Initial run\"}\n value={runMeta.started ? new Date(runMeta.started).toLocaleString() : \"Unavailable\"}\n />\n <InfoTile\n label=\"Finished\"\n value={runMeta.ended ? new Date(runMeta.ended).toLocaleString() : \"In progress\"}\n />\n </div>\n </PanelSection>\n );\n}\n\ntype StackFilterItem = {\n state: string;\n userFrameCount: number;\n searchText: string;\n};\n\ntype StackBlockProps = {\n process: ProcessNode;\n parsed: ParsedStack;\n stateCounts: Map<string, number>;\n filtered: StackFilterItem[];\n search: string;\n setSearch: (v: string) => void;\n selectedStates: Set<string>;\n setSelectedStates: (updater: (prev: Set<string>) => Set<string>) => void;\n hideRuntimeOnly: boolean;\n setHideRuntimeOnly: (v: boolean) => void;\n collectBusy?: boolean;\n onCollectStack?: (pid: number) => void | Promise<void>;\n resolveSource?: JvmFrameSourceResolver;\n frameActions?: StackFrameActions;\n singleItem?: boolean;\n};\n\nfunction stackItemCount(parsed: ParsedStack): number {\n if (parsed.format === \"jvm\") return parsed.threads.length;\n if (parsed.format === \"go\") return parsed.goroutines.length;\n return 0;\n}\n\nfunction stackItemLabel(parsed: ParsedStack): string {\n if (parsed.format === \"jvm\") return \"threads\";\n if (parsed.format === \"go\") return \"goroutines\";\n return \"frames\";\n}\n\nfunction stackStateDot(parsed: ParsedStack, state: string): string {\n return parsed.format === \"jvm\" ? threadStateDot(state) : goroutineStateDot(state);\n}\n\nfunction StackBlock(props: StackBlockProps) {\n const {\n process,\n parsed,\n stateCounts,\n filtered,\n search,\n setSearch,\n selectedStates,\n setSelectedStates,\n hideRuntimeOnly,\n setHideRuntimeOnly,\n collectBusy,\n onCollectStack,\n resolveSource,\n frameActions,\n singleItem,\n } = props;\n const stack = process.stack_capture;\n\n if (!stack?.text) {\n return (\n <div className=\"h-full min-h-[14rem] flex flex-col justify-center gap-density-3 p-density-3\">\n <div className=\"space-y-1.5\">\n <div\n className={`h-3 w-40 rounded ${collectBusy ? \"animate-pulse bg-muted\" : \"bg-muted/70\"}`}\n />\n <div\n className={`h-3 w-full rounded ${collectBusy ? \"animate-pulse bg-muted\" : \"bg-muted/70\"}`}\n />\n <div\n className={`h-3 w-5/6 rounded ${collectBusy ? \"animate-pulse bg-muted\" : \"bg-muted/70\"}`}\n />\n </div>\n <div className=\"flex items-center justify-between gap-density-3\">\n <div className=\"text-sm text-muted-foreground\">\n {stack?.error\n ? stack.error\n : collectBusy\n ? \"Collecting stack trace...\"\n : \"No stack trace collected yet.\"}\n </div>\n {onCollectStack && (\n <CollectButton\n pid={process.pid}\n busy={collectBusy ?? false}\n onClick={onCollectStack}\n primary\n />\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"h-full min-h-0 flex flex-col\">\n {!singleItem && (\n <div className=\"px-1 py-1.5 space-y-density-2\">\n <div className=\"flex items-center justify-between gap-density-2 text-[11px] text-muted-foreground flex-wrap\">\n <div className=\"flex items-center gap-density-2 flex-wrap\">\n <StackStatusBadge status={stack.status} />\n {stack.collected_at && <span>{new Date(stack.collected_at).toLocaleString()}</span>}\n {stackItemCount(parsed) > 0 && (\n <span>\n {filtered.length} / {stackItemCount(parsed)} {stackItemLabel(parsed)}\n </span>\n )}\n </div>\n {onCollectStack && (\n <CollectButton pid={process.pid} busy={collectBusy ?? false} onClick={onCollectStack} />\n )}\n </div>\n {stackItemCount(parsed) > 0 && (\n <>\n <div className=\"flex items-center gap-1.5 flex-wrap\">\n <div className=\"relative min-w-[14rem] flex-1\">\n <Icon\n icon={UiSearch}\n className=\"absolute left-2 top-1/2 -translate-y-1/2 text-muted-foreground text-xs\"\n />\n <input\n className=\"w-full rounded-md border border-border bg-muted/50 py-1 pl-7 pr-2 text-xs outline-none focus:border-primary focus:bg-background\"\n placeholder={\n parsed.format === \"jvm\"\n ? \"Filter by thread name, function, or file\"\n : \"Filter by goroutine id, function, or file\"\n }\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n />\n </div>\n <label className=\"inline-flex items-center gap-1.5 rounded-md border border-border bg-muted/50 px-2 py-1 text-[11px] text-muted-foreground\">\n <input\n type=\"checkbox\"\n checked={hideRuntimeOnly}\n onChange={(e) => setHideRuntimeOnly(e.target.checked)}\n />\n Hide runtime-only\n </label>\n {(search || selectedStates.size > 0 || !hideRuntimeOnly) && (\n <button\n className=\"text-[11px] text-muted-foreground hover:text-foreground\"\n onClick={() => {\n setSearch(\"\");\n setSelectedStates(() => new Set());\n setHideRuntimeOnly(true);\n }}\n >\n Clear\n </button>\n )}\n </div>\n <div className=\"flex items-center gap-1 flex-wrap\">\n {Array.from(stateCounts.entries())\n .sort((a, b) => b[1] - a[1])\n .map(([state, count]) => {\n const active = selectedStates.has(state);\n return (\n <button\n key={state}\n className={`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] transition-colors ${\n active\n ? \"border-primary bg-primary/10 text-primary\"\n : \"border-border bg-muted/50 text-muted-foreground hover:bg-background\"\n }`}\n onClick={() => {\n setSelectedStates((prev) => {\n const next = new Set(prev);\n if (next.has(state)) next.delete(state);\n else next.add(state);\n return next;\n });\n }}\n >\n <span className={`h-2 w-2 rounded-full ${stackStateDot(parsed, state)}`} />\n {state}\n <span className=\"text-[10px] opacity-70\">{count}</span>\n </button>\n );\n })}\n </div>\n </>\n )}\n </div>\n )}\n {stack.error && (\n <div className=\"mt-density-2 text-xs text-red-600 whitespace-pre-wrap\">{stack.error}</div>\n )}\n {stackItemCount(parsed) === 0 ? (\n <pre\n className=\"flex-1 min-h-0 overflow-auto py-1 text-[11px] text-foreground whitespace-pre-wrap font-mono leading-4\"\n style={{ minHeight: STACK_MIN_HEIGHT }}\n >\n {stack.text}\n </pre>\n ) : (\n <div\n className=\"flex-1 min-h-0 overflow-auto py-1 space-y-1\"\n style={{ minHeight: STACK_MIN_HEIGHT }}\n >\n {filtered.length === 0 && (\n <div className=\"py-density-3 text-center text-xs text-muted-foreground\">\n No {stackItemLabel(parsed)} match the current filters.\n </div>\n )}\n {parsed.format === \"jvm\" &&\n parsed.threads\n .filter((t) => filtered.includes(t))\n .map((t) => (\n <ThreadCard\n key={t.id}\n thread={t}\n search={search}\n hideRuntimeOnly={hideRuntimeOnly}\n {...(resolveSource ? { resolveSource } : {})}\n {...(frameActions ? { frameActions } : {})}\n />\n ))}\n {parsed.format === \"go\" &&\n parsed.goroutines\n .filter((g) => filtered.includes(g))\n .map((goroutine) => (\n <GoroutineCard\n key={goroutine.id}\n goroutine={goroutine}\n search={search}\n hideRuntimeOnly={hideRuntimeOnly}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction StackStatusBadge({ status }: { status: string }) {\n const cls =\n status === \"ready\"\n ? \"bg-green-100 text-green-700 dark:bg-green-500/20 dark:text-green-300\"\n : status === \"unsupported\"\n ? \"bg-yellow-100 text-yellow-700 dark:bg-yellow-500/20 dark:text-yellow-300\"\n : \"bg-red-100 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n return <span className={`px-2 py-0.5 rounded-full ${cls}`}>{status}</span>;\n}\n\nfunction CollectButton({\n pid,\n busy,\n onClick,\n primary,\n}: {\n pid: number;\n busy?: boolean;\n onClick: (pid: number) => void | Promise<void>;\n primary?: boolean;\n}) {\n const base =\n \"shrink-0 text-[11px] px-2 py-1 rounded disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1\";\n const style = primary\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"border border-border text-muted-foreground hover:bg-accent\";\n return (\n <button\n className={`${base} ${style}`}\n onClick={() => onClick(pid)}\n disabled={busy}\n title={primary ? \"Collect the latest stack trace\" : \"Refresh stack trace\"}\n >\n <Icon icon={busy ? UiLoader : primary ? UiDebugSmall : UiRefresh} />\n {busy ? \"Collecting...\" : primary ? \"Collect stack trace\" : \"Refresh\"}\n </button>\n );\n}\n\nfunction PanelSection({\n title,\n grow,\n children,\n}: {\n title: string;\n grow?: boolean;\n children: ReactNode;\n}) {\n return (\n <section className={grow ? \"flex min-h-0 flex-1 flex-col\" : \"\"}>\n <div className=\"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground mb-1.5\">\n {title}\n </div>\n {grow ? <div className=\"flex-1 min-h-0 overflow-hidden\">{children}</div> : children}\n </section>\n );\n}\n\nfunction InfoTile({ label, value }: { label: string; value: string }) {\n return (\n <div className=\"border border-border rounded-lg bg-muted/50 px-2.5 py-density-2\">\n <div className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{label}</div>\n <div className=\"text-xs font-medium text-foreground mt-0.5\">{value}</div>\n </div>\n );\n}\n\nfunction ProcessMetrics({ process }: { process: ProcessNode }) {\n const cpu = process.cpu_percent || 0;\n const rss = process.rss;\n const vms = process.vms;\n const memRatioPct = rss && vms && vms > 0 ? Math.min(100, Math.round((rss / vms) * 100)) : 0;\n return (\n <div className=\"grid grid-cols-4 gap-density-1\">\n <MetricTile\n label=\"CPU\"\n value={`${cpu.toFixed(1)}%`}\n barPct={Math.min(100, cpu)}\n tone={cpuTone(cpu)}\n />\n <MetricTile\n label=\"RSS\"\n value={rss !== undefined ? formatBytes(rss) : \"n/a\"}\n barPct={memRatioPct}\n tone={memoryTone(rss, vms)}\n />\n <MetricTile label=\"VMS\" value={vms !== undefined ? formatBytes(vms) : \"n/a\"} tone=\"neutral\" />\n <MetricTile\n label=\"Files\"\n value={process.open_files !== undefined ? String(process.open_files) : \"n/a\"}\n barPct={process.open_files ? Math.min(100, (process.open_files / 1024) * 100) : 0}\n tone=\"info\"\n />\n </div>\n );\n}\n\nfunction MetricTile({\n label,\n value,\n barPct,\n tone = \"neutral\",\n}: {\n label: string;\n value: string;\n barPct?: number;\n tone?: GaugeTone;\n}) {\n const toneBar: Record<GaugeTone, string> = {\n neutral: \"bg-muted-foreground/40\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n info: \"bg-blue-500\",\n };\n const toneText: Record<GaugeTone, string> = {\n neutral: \"text-foreground\",\n success: \"text-green-600 dark:text-green-400\",\n warning: \"text-yellow-600 dark:text-yellow-400\",\n danger: \"text-red-600 dark:text-red-400\",\n info: \"text-blue-600 dark:text-blue-400\",\n };\n return (\n <div className=\"flex flex-col gap-0.5 rounded-md border border-border bg-background px-density-2 py-1 min-w-0\">\n <span className=\"text-[9px] uppercase tracking-wide text-muted-foreground leading-none\">\n {label}\n </span>\n <span className={`text-xs font-semibold tabular-nums truncate ${toneText[tone]}`}>\n {value}\n </span>\n {barPct !== undefined && (\n <div className=\"h-0.5 w-full rounded-full bg-muted overflow-hidden\">\n <div\n className={`h-full ${toneBar[tone]} transition-all duration-300`}\n style={{ width: `${barPct}%` }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["useState","useMemo","parseStackDump","countStackByState","useEffect","jsxs","jsx","Icon","UiServerProcess","UiDebug","processLabel","processStateColor","processStateIcon","threadStateDot","goroutineStateDot","Fragment","UiSearch","ThreadCard","GoroutineCard","UiLoader","UiDebugSmall","UiRefresh","formatBytes"],"mappings":"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"}
1
+ {"version":3,"file":"DiagnosticsDetailPanel.cjs","sources":["../../../src/data/diagnostics/DiagnosticsDetailPanel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { UiDebug, UiDebugSmall, UiRefresh, UiServerProcess, UiLoader } from \"../../icons\";\nimport type { ProcessNode, RunMeta } from \"./types\";\nimport { formatBytes, processLabel, processStateColor, processStateIcon } from \"./utils\";\nimport type { StackFrameActions } from \"./StackFrameRow\";\nimport type { JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport { MetricTile } from \"./MetricTile\";\nimport { cpuTone, memoryTone } from \"./metric-tone\";\nimport { StackDumpView } from \"./StackDumpView\";\n\nexport type DiagnosticsDetailPanelProps = {\n /** Selected process; null renders the empty selection state. */\n process: ProcessNode | null;\n /** Shows loading state while stack capture is being collected. */\n collectBusy?: boolean;\n /** Called when the user requests a fresh stack capture. */\n onCollectStack?: (pid: number) => void | Promise<void>;\n /** Optional run metadata rendered above diagnostics. */\n runMeta?: RunMeta;\n /**\n * Optional resolver that supplies inline source under each JVM stack frame,\n * so the rendered thread dump can be augmented in place (e.g. with decompiled\n * source). A missing class must resolve to undefined, never throw.\n */\n resolveSource?: JvmFrameSourceResolver;\n /**\n * Optional trailing actions rendered on each stack frame, revealed on hover.\n * Lets a host app hang per-frame affordances (trace/watch/decompile) off the\n * rendered thread dump.\n */\n frameActions?: StackFrameActions;\n /**\n * Caller-supplied action buttons rendered right-aligned in the header row,\n * next to the title and Refresh. Use for download/decompile-style actions.\n */\n headerActions?: ReactNode;\n /**\n * The capture holds a single, already-selected item (e.g. one thread the\n * caller picked from its own list). Suppresses the redundant per-item filter\n * UI (search box, state chips, hide-runtime, count) and lifts Refresh into\n * the header row so the detail view shows just that item's frames.\n */\n singleItem?: boolean;\n};\n\nexport function DiagnosticsDetailPanel({\n process,\n collectBusy,\n onCollectStack,\n runMeta,\n resolveSource,\n frameActions,\n headerActions,\n singleItem,\n}: DiagnosticsDetailPanelProps) {\n if (!process) {\n return (\n <div className=\"flex items-center justify-center h-full text-muted-foreground text-sm\">\n <div className=\"text-center\">\n <Icon icon={UiServerProcess} className=\"text-4xl mb-density-2\" />\n <div>Select a process to view diagnostics</div>\n </div>\n </div>\n );\n }\n\n const stack = process.stack_capture;\n\n return (\n <div className=\"h-full min-h-0 flex flex-col gap-density-3 p-density-4\">\n <Header\n process={process}\n actions={\n <div className=\"flex items-center gap-density-2\">\n {singleItem && onCollectStack && (\n <CollectButton pid={process.pid} busy={collectBusy ?? false} onClick={onCollectStack} />\n )}\n {headerActions}\n </div>\n }\n />\n {runMeta && <RunSection runMeta={runMeta} />}\n {process.command && (\n <PanelSection title=\"Command\">\n <pre className=\"text-xs text-foreground whitespace-pre-wrap font-mono bg-blue-50 dark:bg-blue-500/10 rounded p-2 break-all\">\n {process.command}\n </pre>\n </PanelSection>\n )}\n\n <PanelSection title=\"Metrics\">\n <ProcessMetrics process={process} />\n </PanelSection>\n\n <PanelSection title=\"Stack\" grow>\n {stack?.text ? (\n <StackDumpView\n key={process.pid}\n text={stack.text}\n status={stack.status}\n singleItem={singleItem ?? false}\n {...(stack.error ? { error: stack.error } : {})}\n {...(stack.collected_at ? { collectedAt: stack.collected_at } : {})}\n {...(resolveSource ? { resolveSource } : {})}\n {...(frameActions ? { frameActions } : {})}\n {...(onCollectStack && !singleItem\n ? {\n headerActions: (\n <CollectButton\n pid={process.pid}\n busy={collectBusy ?? false}\n onClick={onCollectStack}\n />\n ),\n }\n : {})}\n />\n ) : (\n <StackPlaceholder\n error={stack?.error}\n busy={collectBusy ?? false}\n pid={process.pid}\n {...(onCollectStack ? { onCollectStack } : {})}\n />\n )}\n </PanelSection>\n </div>\n );\n}\n\nfunction Header({ process, actions }: { process: ProcessNode; actions?: ReactNode }) {\n return (\n <div className=\"flex items-start justify-between gap-density-3\">\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-density-2 flex-wrap\">\n <Icon\n icon={process.is_root ? UiServerProcess : UiDebug}\n className=\"text-2xl text-blue-600\"\n />\n <h2 className=\"text-lg font-bold text-foreground break-words\">{processLabel(process)}</h2>\n {process.status ? (\n <span\n className={`inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-xs ${processStateColor(\n process.status,\n )}`}\n >\n <Icon icon={processStateIcon(process.status)} />\n {process.status}\n </span>\n ) : null}\n </div>\n <div className=\"mt-1 flex items-center gap-density-2 flex-wrap text-xs text-muted-foreground\">\n <span className=\"font-mono\">pid {process.pid}</span>\n {process.ppid ? <span className=\"font-mono\">ppid {process.ppid}</span> : null}\n </div>\n </div>\n {actions ? <div className=\"shrink-0\">{actions}</div> : null}\n </div>\n );\n}\n\nfunction RunSection({ runMeta }: { runMeta: RunMeta }) {\n return (\n <PanelSection title=\"Run\">\n <div className=\"grid grid-cols-2 gap-density-2 text-sm\">\n <InfoTile\n label={runMeta.kind === \"rerun\" ? `Rerun #${runMeta.sequence}` : \"Initial run\"}\n value={runMeta.started ? new Date(runMeta.started).toLocaleString() : \"Unavailable\"}\n />\n <InfoTile\n label=\"Finished\"\n value={runMeta.ended ? new Date(runMeta.ended).toLocaleString() : \"In progress\"}\n />\n </div>\n </PanelSection>\n );\n}\n\nfunction StackPlaceholder({\n error,\n busy,\n pid,\n onCollectStack,\n}: {\n error: string | undefined;\n busy: boolean;\n pid: number;\n onCollectStack?: (pid: number) => void | Promise<void>;\n}) {\n const bar = busy ? \"animate-pulse bg-muted\" : \"bg-muted/70\";\n return (\n <div className=\"h-full min-h-[14rem] flex flex-col justify-center gap-density-3 p-density-3\">\n <div className=\"space-y-1.5\">\n <div className={`h-3 w-40 rounded ${bar}`} />\n <div className={`h-3 w-full rounded ${bar}`} />\n <div className={`h-3 w-5/6 rounded ${bar}`} />\n </div>\n <div className=\"flex items-center justify-between gap-density-3\">\n <div className=\"text-sm text-muted-foreground\">\n {error ? error : busy ? \"Collecting stack trace...\" : \"No stack trace collected yet.\"}\n </div>\n {onCollectStack && <CollectButton pid={pid} busy={busy} onClick={onCollectStack} primary />}\n </div>\n </div>\n );\n}\n\nfunction CollectButton({\n pid,\n busy,\n onClick,\n primary,\n}: {\n pid: number;\n busy?: boolean;\n onClick: (pid: number) => void | Promise<void>;\n primary?: boolean;\n}) {\n const base =\n \"shrink-0 text-[11px] px-2 py-1 rounded disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1\";\n const style = primary\n ? \"bg-primary text-primary-foreground hover:bg-primary/90\"\n : \"border border-border text-muted-foreground hover:bg-accent\";\n return (\n <button\n className={`${base} ${style}`}\n onClick={() => onClick(pid)}\n disabled={busy}\n title={primary ? \"Collect the latest stack trace\" : \"Refresh stack trace\"}\n >\n <Icon icon={busy ? UiLoader : primary ? UiDebugSmall : UiRefresh} />\n {busy ? \"Collecting...\" : primary ? \"Collect stack trace\" : \"Refresh\"}\n </button>\n );\n}\n\nfunction PanelSection({\n title,\n grow,\n children,\n}: {\n title: string;\n grow?: boolean;\n children: ReactNode;\n}) {\n return (\n <section className={grow ? \"flex min-h-0 flex-1 flex-col\" : \"\"}>\n <div className=\"text-[11px] font-semibold uppercase tracking-wide text-muted-foreground mb-1.5\">\n {title}\n </div>\n {grow ? <div className=\"flex-1 min-h-0 overflow-hidden\">{children}</div> : children}\n </section>\n );\n}\n\nfunction InfoTile({ label, value }: { label: string; value: string }) {\n return (\n <div className=\"border border-border rounded-lg bg-muted/50 px-2.5 py-density-2\">\n <div className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{label}</div>\n <div className=\"text-xs font-medium text-foreground mt-0.5\">{value}</div>\n </div>\n );\n}\n\nfunction ProcessMetrics({ process }: { process: ProcessNode }) {\n const cpu = process.cpu_percent || 0;\n const rss = process.rss;\n const vms = process.vms;\n const memRatioPct = rss && vms && vms > 0 ? Math.min(100, Math.round((rss / vms) * 100)) : 0;\n return (\n <div className=\"grid grid-cols-4 gap-density-1\">\n <MetricTile\n label=\"CPU\"\n value={`${cpu.toFixed(1)}%`}\n barPct={Math.min(100, cpu)}\n tone={cpuTone(cpu)}\n />\n <MetricTile\n label=\"RSS\"\n value={rss !== undefined ? formatBytes(rss) : \"n/a\"}\n barPct={memRatioPct}\n tone={memoryTone(rss, vms)}\n />\n <MetricTile label=\"VMS\" value={vms !== undefined ? formatBytes(vms) : \"n/a\"} tone=\"neutral\" />\n <MetricTile\n label=\"Files\"\n value={process.open_files !== undefined ? String(process.open_files) : \"n/a\"}\n barPct={process.open_files ? Math.min(100, (process.open_files / 1024) * 100) : 0}\n tone=\"info\"\n />\n </div>\n );\n}\n"],"names":["jsxs","jsx","Icon","UiServerProcess","StackDumpView","UiDebug","processLabel","processStateColor","processStateIcon","UiLoader","UiDebugSmall","UiRefresh","MetricTile","cpuTone","formatBytes","memoryTone"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DiagnosticsDetailPanel.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/DiagnosticsDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrE,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAqB9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,gEAAgE;IAChE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,GACX,EAAE,2BAA2B,+BAuF7B"}
1
+ {"version":3,"file":"DiagnosticsDetailPanel.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/DiagnosticsDetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAK9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,gEAAgE;IAChE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,GACX,EAAE,2BAA2B,+BA0E7B"}