@flanksource/clicky-ui 0.3.49 → 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 (384) 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/diagnostics/DiagnosticsDetailPanel.cjs +52 -295
  116. package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
  117. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
  118. package/dist/data/diagnostics/DiagnosticsDetailPanel.js +47 -290
  119. package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
  120. package/dist/data/diagnostics/MetricTile.cjs +44 -0
  121. package/dist/data/diagnostics/MetricTile.cjs.map +1 -0
  122. package/dist/data/diagnostics/MetricTile.d.ts +13 -0
  123. package/dist/data/diagnostics/MetricTile.d.ts.map +1 -0
  124. package/dist/data/diagnostics/MetricTile.js +44 -0
  125. package/dist/data/diagnostics/MetricTile.js.map +1 -0
  126. package/dist/data/diagnostics/StackDumpView.cjs +227 -0
  127. package/dist/data/diagnostics/StackDumpView.cjs.map +1 -0
  128. package/dist/data/diagnostics/StackDumpView.d.ts +53 -0
  129. package/dist/data/diagnostics/StackDumpView.d.ts.map +1 -0
  130. package/dist/data/diagnostics/StackDumpView.js +227 -0
  131. package/dist/data/diagnostics/StackDumpView.js.map +1 -0
  132. package/dist/data/diagnostics/fixtures.d.ts +1 -0
  133. package/dist/data/diagnostics/fixtures.d.ts.map +1 -1
  134. package/dist/data/diagnostics/metric-tone.cjs +18 -0
  135. package/dist/data/diagnostics/metric-tone.cjs.map +1 -0
  136. package/dist/data/diagnostics/metric-tone.d.ts +6 -0
  137. package/dist/data/diagnostics/metric-tone.d.ts.map +1 -0
  138. package/dist/data/diagnostics/metric-tone.js +18 -0
  139. package/dist/data/diagnostics/metric-tone.js.map +1 -0
  140. package/dist/data/diagnostics/stacktrace.cjs +44 -0
  141. package/dist/data/diagnostics/stacktrace.cjs.map +1 -1
  142. package/dist/data/diagnostics/stacktrace.d.ts +7 -0
  143. package/dist/data/diagnostics/stacktrace.d.ts.map +1 -1
  144. package/dist/data/diagnostics/stacktrace.js +44 -0
  145. package/dist/data/diagnostics/stacktrace.js.map +1 -1
  146. package/dist/data/diagnostics/types.d.ts +2 -8
  147. package/dist/data/diagnostics/types.d.ts.map +1 -1
  148. package/dist/data/lint/LintDetail.cjs +339 -0
  149. package/dist/data/lint/LintDetail.cjs.map +1 -0
  150. package/dist/data/lint/LintDetail.d.ts +17 -0
  151. package/dist/data/lint/LintDetail.d.ts.map +1 -0
  152. package/dist/data/lint/LintDetail.js +339 -0
  153. package/dist/data/lint/LintDetail.js.map +1 -0
  154. package/dist/data/lint/LintFilterBar.cjs +103 -0
  155. package/dist/data/lint/LintFilterBar.cjs.map +1 -0
  156. package/dist/data/lint/LintFilterBar.d.ts +16 -0
  157. package/dist/data/lint/LintFilterBar.d.ts.map +1 -0
  158. package/dist/data/lint/LintFilterBar.js +103 -0
  159. package/dist/data/lint/LintFilterBar.js.map +1 -0
  160. package/dist/data/lint/LintResults.cjs +144 -0
  161. package/dist/data/lint/LintResults.cjs.map +1 -0
  162. package/dist/data/lint/LintResults.d.ts +39 -0
  163. package/dist/data/lint/LintResults.d.ts.map +1 -0
  164. package/dist/data/lint/LintResults.fixtures.d.ts +10 -0
  165. package/dist/data/lint/LintResults.fixtures.d.ts.map +1 -0
  166. package/dist/data/lint/LintResults.js +144 -0
  167. package/dist/data/lint/LintResults.js.map +1 -0
  168. package/dist/data/lint/LintTreeNode.cjs +66 -0
  169. package/dist/data/lint/LintTreeNode.cjs.map +1 -0
  170. package/dist/data/lint/LintTreeNode.d.ts +7 -0
  171. package/dist/data/lint/LintTreeNode.d.ts.map +1 -0
  172. package/dist/data/lint/LintTreeNode.js +66 -0
  173. package/dist/data/lint/LintTreeNode.js.map +1 -0
  174. package/dist/data/lint/actions.cjs +195 -0
  175. package/dist/data/lint/actions.cjs.map +1 -0
  176. package/dist/data/lint/actions.d.ts +29 -0
  177. package/dist/data/lint/actions.d.ts.map +1 -0
  178. package/dist/data/lint/actions.js +195 -0
  179. package/dist/data/lint/actions.js.map +1 -0
  180. package/dist/data/lint/grouping-options.cjs +14 -0
  181. package/dist/data/lint/grouping-options.cjs.map +1 -0
  182. package/dist/data/lint/grouping-options.d.ts +9 -0
  183. package/dist/data/lint/grouping-options.d.ts.map +1 -0
  184. package/dist/data/lint/grouping-options.js +14 -0
  185. package/dist/data/lint/grouping-options.js.map +1 -0
  186. package/dist/data/lint/grouping.cjs +450 -0
  187. package/dist/data/lint/grouping.cjs.map +1 -0
  188. package/dist/data/lint/grouping.d.ts +10 -0
  189. package/dist/data/lint/grouping.d.ts.map +1 -0
  190. package/dist/data/lint/grouping.js +450 -0
  191. package/dist/data/lint/grouping.js.map +1 -0
  192. package/dist/data/lint/index.d.ts +10 -0
  193. package/dist/data/lint/index.d.ts.map +1 -0
  194. package/dist/data/lint/paths.cjs +35 -0
  195. package/dist/data/lint/paths.cjs.map +1 -0
  196. package/dist/data/lint/paths.d.ts +13 -0
  197. package/dist/data/lint/paths.d.ts.map +1 -0
  198. package/dist/data/lint/paths.js +35 -0
  199. package/dist/data/lint/paths.js.map +1 -0
  200. package/dist/data/lint/stats.cjs +76 -0
  201. package/dist/data/lint/stats.cjs.map +1 -0
  202. package/dist/data/lint/stats.d.ts +19 -0
  203. package/dist/data/lint/stats.d.ts.map +1 -0
  204. package/dist/data/lint/stats.js +76 -0
  205. package/dist/data/lint/stats.js.map +1 -0
  206. package/dist/data/lint/types.cjs +16 -0
  207. package/dist/data/lint/types.cjs.map +1 -0
  208. package/dist/data/lint/types.d.ts +93 -0
  209. package/dist/data/lint/types.d.ts.map +1 -0
  210. package/dist/data/lint/types.js +16 -0
  211. package/dist/data/lint/types.js.map +1 -0
  212. package/dist/data/test-runner/TestAttemptDetail.cjs +113 -0
  213. package/dist/data/test-runner/TestAttemptDetail.cjs.map +1 -0
  214. package/dist/data/test-runner/TestAttemptDetail.d.ts +19 -0
  215. package/dist/data/test-runner/TestAttemptDetail.d.ts.map +1 -0
  216. package/dist/data/test-runner/TestAttemptDetail.js +113 -0
  217. package/dist/data/test-runner/TestAttemptDetail.js.map +1 -0
  218. package/dist/data/test-runner/TestAttempts.cjs +36 -0
  219. package/dist/data/test-runner/TestAttempts.cjs.map +1 -0
  220. package/dist/data/test-runner/TestAttempts.d.ts +5 -0
  221. package/dist/data/test-runner/TestAttempts.d.ts.map +1 -0
  222. package/dist/data/test-runner/TestAttempts.js +36 -0
  223. package/dist/data/test-runner/TestAttempts.js.map +1 -0
  224. package/dist/data/test-runner/TestDetailPanel.cjs +13 -3
  225. package/dist/data/test-runner/TestDetailPanel.cjs.map +1 -1
  226. package/dist/data/test-runner/TestDetailPanel.d.ts.map +1 -1
  227. package/dist/data/test-runner/TestDetailPanel.js +14 -4
  228. package/dist/data/test-runner/TestDetailPanel.js.map +1 -1
  229. package/dist/data/test-runner/TestFailureDetail.cjs +9 -29
  230. package/dist/data/test-runner/TestFailureDetail.cjs.map +1 -1
  231. package/dist/data/test-runner/TestFailureDetail.d.ts +6 -6
  232. package/dist/data/test-runner/TestFailureDetail.d.ts.map +1 -1
  233. package/dist/data/test-runner/TestFailureDetail.js +9 -29
  234. package/dist/data/test-runner/TestFailureDetail.js.map +1 -1
  235. package/dist/data/test-runner/TestRunSummary.cjs +33 -0
  236. package/dist/data/test-runner/TestRunSummary.cjs.map +1 -1
  237. package/dist/data/test-runner/TestRunSummary.d.ts.map +1 -1
  238. package/dist/data/test-runner/TestRunSummary.js +34 -1
  239. package/dist/data/test-runner/TestRunSummary.js.map +1 -1
  240. package/dist/data/test-runner/TestRunner.cjs +3 -0
  241. package/dist/data/test-runner/TestRunner.cjs.map +1 -1
  242. package/dist/data/test-runner/TestRunner.d.ts +8 -1
  243. package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
  244. package/dist/data/test-runner/TestRunner.js +3 -0
  245. package/dist/data/test-runner/TestRunner.js.map +1 -1
  246. package/dist/data/test-runner/TestTreeNode.cjs +3 -1
  247. package/dist/data/test-runner/TestTreeNode.cjs.map +1 -1
  248. package/dist/data/test-runner/TestTreeNode.d.ts.map +1 -1
  249. package/dist/data/test-runner/TestTreeNode.js +3 -1
  250. package/dist/data/test-runner/TestTreeNode.js.map +1 -1
  251. package/dist/data/test-runner/adapter.cjs +9 -1
  252. package/dist/data/test-runner/adapter.cjs.map +1 -1
  253. package/dist/data/test-runner/adapter.d.ts +5 -0
  254. package/dist/data/test-runner/adapter.d.ts.map +1 -1
  255. package/dist/data/test-runner/adapter.js +9 -1
  256. package/dist/data/test-runner/adapter.js.map +1 -1
  257. package/dist/data/test-runner/attempts.cjs +62 -0
  258. package/dist/data/test-runner/attempts.cjs.map +1 -0
  259. package/dist/data/test-runner/attempts.d.ts +13 -0
  260. package/dist/data/test-runner/attempts.d.ts.map +1 -0
  261. package/dist/data/test-runner/attempts.js +62 -0
  262. package/dist/data/test-runner/attempts.js.map +1 -0
  263. package/dist/data/test-runner/context.cjs.map +1 -1
  264. package/dist/data/test-runner/context.d.ts +6 -0
  265. package/dist/data/test-runner/context.d.ts.map +1 -1
  266. package/dist/data/test-runner/context.js.map +1 -1
  267. package/dist/data/test-runner/index.d.ts +5 -1
  268. package/dist/data/test-runner/index.d.ts.map +1 -1
  269. package/dist/data/test-runner/marks.cjs +2 -0
  270. package/dist/data/test-runner/marks.cjs.map +1 -1
  271. package/dist/data/test-runner/marks.d.ts.map +1 -1
  272. package/dist/data/test-runner/marks.js +2 -0
  273. package/dist/data/test-runner/marks.js.map +1 -1
  274. package/dist/data/test-runner/process-metrics.cjs +15 -0
  275. package/dist/data/test-runner/process-metrics.cjs.map +1 -0
  276. package/dist/data/test-runner/process-metrics.d.ts +22 -0
  277. package/dist/data/test-runner/process-metrics.d.ts.map +1 -0
  278. package/dist/data/test-runner/process-metrics.js +15 -0
  279. package/dist/data/test-runner/process-metrics.js.map +1 -0
  280. package/dist/data/test-runner/status.cjs +11 -3
  281. package/dist/data/test-runner/status.cjs.map +1 -1
  282. package/dist/data/test-runner/status.d.ts +3 -1
  283. package/dist/data/test-runner/status.d.ts.map +1 -1
  284. package/dist/data/test-runner/status.js +11 -3
  285. package/dist/data/test-runner/status.js.map +1 -1
  286. package/dist/data/test-runner/types.d.ts +14 -0
  287. package/dist/data/test-runner/types.d.ts.map +1 -1
  288. package/dist/data/traces/GoProfileView.cjs +176 -0
  289. package/dist/data/traces/GoProfileView.cjs.map +1 -0
  290. package/dist/data/traces/GoProfileView.d.ts +30 -0
  291. package/dist/data/traces/GoProfileView.d.ts.map +1 -0
  292. package/dist/data/traces/GoProfileView.js +176 -0
  293. package/dist/data/traces/GoProfileView.js.map +1 -0
  294. package/dist/data/traces/ProcessFacetTable.cjs +79 -0
  295. package/dist/data/traces/ProcessFacetTable.cjs.map +1 -0
  296. package/dist/data/traces/ProcessFacetTable.d.ts +21 -0
  297. package/dist/data/traces/ProcessFacetTable.d.ts.map +1 -0
  298. package/dist/data/traces/ProcessFacetTable.js +79 -0
  299. package/dist/data/traces/ProcessFacetTable.js.map +1 -0
  300. package/dist/data/traces/ProcessRecordViews.cjs +41 -0
  301. package/dist/data/traces/ProcessRecordViews.cjs.map +1 -0
  302. package/dist/data/traces/ProcessRecordViews.d.ts +16 -0
  303. package/dist/data/traces/ProcessRecordViews.d.ts.map +1 -0
  304. package/dist/data/traces/ProcessRecordViews.js +41 -0
  305. package/dist/data/traces/ProcessRecordViews.js.map +1 -0
  306. package/dist/data/traces/ProcessTraceDetail.cjs +316 -0
  307. package/dist/data/traces/ProcessTraceDetail.cjs.map +1 -0
  308. package/dist/data/traces/ProcessTraceDetail.d.ts +39 -0
  309. package/dist/data/traces/ProcessTraceDetail.d.ts.map +1 -0
  310. package/dist/data/traces/ProcessTraceDetail.js +316 -0
  311. package/dist/data/traces/ProcessTraceDetail.js.map +1 -0
  312. package/dist/data/traces/ProcessTraceTree.cjs +76 -34
  313. package/dist/data/traces/ProcessTraceTree.cjs.map +1 -1
  314. package/dist/data/traces/ProcessTraceTree.d.ts +21 -4
  315. package/dist/data/traces/ProcessTraceTree.d.ts.map +1 -1
  316. package/dist/data/traces/ProcessTraceTree.js +72 -30
  317. package/dist/data/traces/ProcessTraceTree.js.map +1 -1
  318. package/dist/data/traces/Sparkline.cjs +27 -5
  319. package/dist/data/traces/Sparkline.cjs.map +1 -1
  320. package/dist/data/traces/Sparkline.d.ts +17 -1
  321. package/dist/data/traces/Sparkline.d.ts.map +1 -1
  322. package/dist/data/traces/Sparkline.js +28 -6
  323. package/dist/data/traces/Sparkline.js.map +1 -1
  324. package/dist/data/traces/TraceView.cjs +9 -0
  325. package/dist/data/traces/TraceView.cjs.map +1 -1
  326. package/dist/data/traces/TraceView.d.ts +4 -2
  327. package/dist/data/traces/TraceView.d.ts.map +1 -1
  328. package/dist/data/traces/TraceView.js +9 -0
  329. package/dist/data/traces/TraceView.js.map +1 -1
  330. package/dist/data/traces/TraceWindowList.cjs +117 -0
  331. package/dist/data/traces/TraceWindowList.cjs.map +1 -0
  332. package/dist/data/traces/TraceWindowList.d.ts +48 -0
  333. package/dist/data/traces/TraceWindowList.d.ts.map +1 -0
  334. package/dist/data/traces/TraceWindowList.js +117 -0
  335. package/dist/data/traces/TraceWindowList.js.map +1 -0
  336. package/dist/data/traces/fixtures.d.ts +25 -1
  337. package/dist/data/traces/fixtures.d.ts.map +1 -1
  338. package/dist/data/traces/index.d.ts +10 -3
  339. package/dist/data/traces/index.d.ts.map +1 -1
  340. package/dist/data/traces/process-facets.cjs +48 -0
  341. package/dist/data/traces/process-facets.cjs.map +1 -0
  342. package/dist/data/traces/process-facets.d.ts +38 -0
  343. package/dist/data/traces/process-facets.d.ts.map +1 -0
  344. package/dist/data/traces/process-facets.js +48 -0
  345. package/dist/data/traces/process-facets.js.map +1 -0
  346. package/dist/data/traces/process-tree.cjs +36 -4
  347. package/dist/data/traces/process-tree.cjs.map +1 -1
  348. package/dist/data/traces/process-tree.d.ts +20 -1
  349. package/dist/data/traces/process-tree.d.ts.map +1 -1
  350. package/dist/data/traces/process-tree.js +36 -4
  351. package/dist/data/traces/process-tree.js.map +1 -1
  352. package/dist/data/traces/profile-aggregate.cjs +78 -0
  353. package/dist/data/traces/profile-aggregate.cjs.map +1 -0
  354. package/dist/data/traces/profile-aggregate.d.ts +41 -0
  355. package/dist/data/traces/profile-aggregate.d.ts.map +1 -0
  356. package/dist/data/traces/profile-aggregate.js +78 -0
  357. package/dist/data/traces/profile-aggregate.js.map +1 -0
  358. package/dist/data/traces/stack-checkpoints.cjs +22 -0
  359. package/dist/data/traces/stack-checkpoints.cjs.map +1 -0
  360. package/dist/data/traces/stack-checkpoints.d.ts +18 -0
  361. package/dist/data/traces/stack-checkpoints.d.ts.map +1 -0
  362. package/dist/data/traces/stack-checkpoints.js +22 -0
  363. package/dist/data/traces/stack-checkpoints.js.map +1 -0
  364. package/dist/data/traces/types.d.ts +120 -5
  365. package/dist/data/traces/types.d.ts.map +1 -1
  366. package/dist/data/verification/adapters.cjs +1 -0
  367. package/dist/data/verification/adapters.cjs.map +1 -1
  368. package/dist/data/verification/adapters.d.ts.map +1 -1
  369. package/dist/data/verification/adapters.js +1 -0
  370. package/dist/data/verification/adapters.js.map +1 -1
  371. package/dist/data/version-info.cjs +3 -3
  372. package/dist/data/version-info.js +3 -3
  373. package/dist/data.cjs +85 -7
  374. package/dist/data.cjs.map +1 -1
  375. package/dist/data.d.ts +4 -0
  376. package/dist/data.d.ts.map +1 -1
  377. package/dist/data.js +81 -3
  378. package/dist/data.js.map +1 -1
  379. package/dist/index.cjs +87 -9
  380. package/dist/index.cjs.map +1 -1
  381. package/dist/index.js +81 -3
  382. package/dist/index.js.map +1 -1
  383. package/dist/styles.css +1 -1
  384. package/package.json +6 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFacetTable.cjs","sources":["../../../src/data/traces/ProcessFacetTable.tsx"],"sourcesContent":["import { DataTable, type DataTableColumnInput } from \"../DataTable\";\nimport { SAMPLE_FACETS, type FacetReading } from \"./process-facets\";\nimport { formatProcessTimestamp } from \"./process-tree\";\nimport type { ProcessDescriptor, ProcessEnv, ProcessSampleFacet } from \"./types\";\n\ntype EnvRow = { name: string; value: string };\n\nconst addressColumns: Array<DataTableColumnInput<ProcessDescriptor>> = [\n { key: \"fd\", label: \"FD\", sortable: true },\n {\n key: \"protocol\",\n label: \"Protocol\",\n sortable: true,\n filterable: true,\n accessor: (descriptor) => descriptor.protocol || descriptor.type,\n },\n { key: \"state\", label: \"State\", sortable: true, filterable: true },\n {\n key: \"localAddr\",\n label: \"Local\",\n sortable: true,\n grow: true,\n accessor: (descriptor) => descriptor.localAddr || descriptor.name,\n },\n { key: \"remoteAddr\", label: \"Remote\", sortable: true },\n];\n\nconst descriptorColumns: Record<ProcessSampleFacet, Array<DataTableColumnInput<ProcessDescriptor>>> = {\n openFiles: [\n { key: \"fd\", label: \"FD\", sortable: true },\n { key: \"type\", label: \"Type\", sortable: true, filterable: true },\n { key: \"name\", label: \"Path\", sortable: true, grow: true },\n ],\n sockets: addressColumns,\n connections: addressColumns,\n ports: [\n { key: \"port\", label: \"Port\", sortable: true },\n { key: \"protocol\", label: \"Protocol\", sortable: true, filterable: true },\n { key: \"localAddr\", label: \"Address\", sortable: true, grow: true },\n { key: \"fd\", label: \"FD\", sortable: true },\n ],\n};\n\nconst envColumns: Array<DataTableColumnInput<EnvRow>> = [\n { key: \"name\", label: \"Name\", sortable: true },\n { key: \"value\", label: \"Value\", grow: true },\n];\n\nconst tableChrome = { autoFilter: true, showThemeControl: false, showFullscreenControl: false } as const;\n\nexport type ProcessFacetTableProps =\n | {\n facet: \"env\";\n /** The environment recorded on the process's `process_tree` node. */\n environment?: ProcessEnv;\n /** Why the environment could not be read. */\n error?: string;\n }\n | {\n facet: ProcessSampleFacet;\n /** The latest stored list of the facet; undefined when none was stored for this process. */\n reading: FacetReading | undefined;\n };\n\n/**\n * One facet of a process as a trace stored it, in a filterable table: its\n * environment (recorded once on its `process_tree` node) or the latest list of\n * its open files, sockets, listening ports or connections from `process_samples`,\n * with the time that list was read. Presentational: nothing is fetched.\n */\nexport function ProcessFacetTable(props: ProcessFacetTableProps) {\n if (props.facet === \"env\") {\n const rows: EnvRow[] = Object.entries(props.environment ?? {})\n .map(([name, value]) => ({ name, value }))\n .sort((a, b) => a.name.localeCompare(b.name));\n return (\n <div className=\"space-y-2\" data-process-facet=\"env\">\n {props.error && (\n <div className=\"whitespace-pre-wrap text-xs text-red-700 dark:text-red-400\" role=\"alert\">\n {props.error}\n </div>\n )}\n {props.environment && (\n <DataTable<EnvRow>\n data={rows}\n columns={envColumns}\n getRowId={(row) => row.name}\n emptyMessage=\"The process has no environment variables\"\n {...tableChrome}\n />\n )}\n </div>\n );\n }\n\n const { reading, facet } = props;\n return (\n <div className=\"space-y-2\" data-process-facet={facet}>\n <div className=\"text-xs text-muted-foreground\">\n {reading ? `Read at ${formatProcessTimestamp(reading.readAt)}` : \"No reading stored for this process yet\"}\n </div>\n {reading && (\n <DataTable<ProcessDescriptor>\n data={reading.rows}\n columns={descriptorColumns[facet]}\n getRowId={(row, index) => `${row.fd}:${index}`}\n emptyMessage={SAMPLE_FACETS[facet].empty}\n {...tableChrome}\n />\n )}\n </div>\n );\n}\n"],"names":["jsxs","jsx","DataTable","formatProcessTimestamp","SAMPLE_FACETS"],"mappings":";;;;;;AAOA,MAAM,iBAAiE;AAAA,EACrE,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,EACpC;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU,CAAC,eAAe,WAAW,YAAY,WAAW;AAAA,EAAA;AAAA,EAE9D,EAAE,KAAK,SAAS,OAAO,SAAS,UAAU,MAAM,YAAY,KAAA;AAAA,EAC5D;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU,CAAC,eAAe,WAAW,aAAa,WAAW;AAAA,EAAA;AAAA,EAE/D,EAAE,KAAK,cAAc,OAAO,UAAU,UAAU,KAAA;AAClD;AAEA,MAAM,oBAAgG;AAAA,EACpG,WAAW;AAAA,IACT,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,IACpC,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM,YAAY,KAAA;AAAA,IAC1D,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM,MAAM,KAAA;AAAA,EAAK;AAAA,EAE3D,SAAS;AAAA,EACT,aAAa;AAAA,EACb,OAAO;AAAA,IACL,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,KAAA;AAAA,IACxC,EAAE,KAAK,YAAY,OAAO,YAAY,UAAU,MAAM,YAAY,KAAA;AAAA,IAClE,EAAE,KAAK,aAAa,OAAO,WAAW,UAAU,MAAM,MAAM,KAAA;AAAA,IAC5D,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,EAAK;AAE7C;AAEA,MAAM,aAAkD;AAAA,EACtD,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,KAAA;AAAA,EACxC,EAAE,KAAK,SAAS,OAAO,SAAS,MAAM,KAAA;AACxC;AAEA,MAAM,cAAc,EAAE,YAAY,MAAM,kBAAkB,OAAO,uBAAuB,MAAA;AAsBjF,SAAS,kBAAkB,OAA+B;AAC/D,MAAI,MAAM,UAAU,OAAO;AACzB,UAAM,OAAiB,OAAO,QAAQ,MAAM,eAAe,EAAE,EAC1D,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,MAAM,QAAQ,EACxC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC9C,WACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,aAAY,sBAAmB,OAC3C,UAAA;AAAA,MAAA,MAAM,wCACJ,OAAA,EAAI,WAAU,8DAA6D,MAAK,SAC9E,gBAAM,MAAA,CACT;AAAA,MAED,MAAM,eACLC,2BAAAA;AAAAA,QAACC,UAAAA;AAAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU,CAAC,QAAQ,IAAI;AAAA,UACvB,cAAa;AAAA,UACZ,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,IACN,GAEJ;AAAA,EAEJ;AAEA,QAAM,EAAE,SAAS,MAAA,IAAU;AAC3B,SACEF,2BAAAA,KAAC,OAAA,EAAI,WAAU,aAAY,sBAAoB,OAC7C,UAAA;AAAA,IAAAC,2BAAAA,IAAC,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,WAAWE,YAAAA,uBAAuB,QAAQ,MAAM,CAAC,KAAK,yCAAA,CACnE;AAAA,IACC,WACCF,2BAAAA;AAAAA,MAACC,UAAAA;AAAAA,MAAA;AAAA,QACC,MAAM,QAAQ;AAAA,QACd,SAAS,kBAAkB,KAAK;AAAA,QAChC,UAAU,CAAC,KAAK,UAAU,GAAG,IAAI,EAAE,IAAI,KAAK;AAAA,QAC5C,cAAcE,cAAAA,cAAc,KAAK,EAAE;AAAA,QAClC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GAEJ;AAEJ;;"}
@@ -0,0 +1,21 @@
1
+ import { FacetReading } from './process-facets.js';
2
+ import { ProcessEnv, ProcessSampleFacet } from './types.js';
3
+ export type ProcessFacetTableProps = {
4
+ facet: "env";
5
+ /** The environment recorded on the process's `process_tree` node. */
6
+ environment?: ProcessEnv;
7
+ /** Why the environment could not be read. */
8
+ error?: string;
9
+ } | {
10
+ facet: ProcessSampleFacet;
11
+ /** The latest stored list of the facet; undefined when none was stored for this process. */
12
+ reading: FacetReading | undefined;
13
+ };
14
+ /**
15
+ * One facet of a process as a trace stored it, in a filterable table: its
16
+ * environment (recorded once on its `process_tree` node) or the latest list of
17
+ * its open files, sockets, listening ports or connections from `process_samples`,
18
+ * with the time that list was read. Presentational: nothing is fetched.
19
+ */
20
+ export declare function ProcessFacetTable(props: ProcessFacetTableProps): import("react").JSX.Element;
21
+ //# sourceMappingURL=ProcessFacetTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFacetTable.d.ts","sourceRoot":"","sources":["../../../src/data/traces/ProcessFacetTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAqB,UAAU,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AA+CjF,MAAM,MAAM,sBAAsB,GAC9B;IACE,KAAK,EAAE,KAAK,CAAC;IACb,qEAAqE;IACrE,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,KAAK,EAAE,kBAAkB,CAAC;IAC1B,4FAA4F;IAC5F,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;CACnC,CAAC;AAEN;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BA0C9D"}
@@ -0,0 +1,79 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { DataTable } from "../DataTable.js";
3
+ import { SAMPLE_FACETS } from "./process-facets.js";
4
+ import { formatProcessTimestamp } from "./process-tree.js";
5
+ const addressColumns = [
6
+ { key: "fd", label: "FD", sortable: true },
7
+ {
8
+ key: "protocol",
9
+ label: "Protocol",
10
+ sortable: true,
11
+ filterable: true,
12
+ accessor: (descriptor) => descriptor.protocol || descriptor.type
13
+ },
14
+ { key: "state", label: "State", sortable: true, filterable: true },
15
+ {
16
+ key: "localAddr",
17
+ label: "Local",
18
+ sortable: true,
19
+ grow: true,
20
+ accessor: (descriptor) => descriptor.localAddr || descriptor.name
21
+ },
22
+ { key: "remoteAddr", label: "Remote", sortable: true }
23
+ ];
24
+ const descriptorColumns = {
25
+ openFiles: [
26
+ { key: "fd", label: "FD", sortable: true },
27
+ { key: "type", label: "Type", sortable: true, filterable: true },
28
+ { key: "name", label: "Path", sortable: true, grow: true }
29
+ ],
30
+ sockets: addressColumns,
31
+ connections: addressColumns,
32
+ ports: [
33
+ { key: "port", label: "Port", sortable: true },
34
+ { key: "protocol", label: "Protocol", sortable: true, filterable: true },
35
+ { key: "localAddr", label: "Address", sortable: true, grow: true },
36
+ { key: "fd", label: "FD", sortable: true }
37
+ ]
38
+ };
39
+ const envColumns = [
40
+ { key: "name", label: "Name", sortable: true },
41
+ { key: "value", label: "Value", grow: true }
42
+ ];
43
+ const tableChrome = { autoFilter: true, showThemeControl: false, showFullscreenControl: false };
44
+ function ProcessFacetTable(props) {
45
+ if (props.facet === "env") {
46
+ const rows = Object.entries(props.environment ?? {}).map(([name, value]) => ({ name, value })).sort((a, b) => a.name.localeCompare(b.name));
47
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-process-facet": "env", children: [
48
+ props.error && /* @__PURE__ */ jsx("div", { className: "whitespace-pre-wrap text-xs text-red-700 dark:text-red-400", role: "alert", children: props.error }),
49
+ props.environment && /* @__PURE__ */ jsx(
50
+ DataTable,
51
+ {
52
+ data: rows,
53
+ columns: envColumns,
54
+ getRowId: (row) => row.name,
55
+ emptyMessage: "The process has no environment variables",
56
+ ...tableChrome
57
+ }
58
+ )
59
+ ] });
60
+ }
61
+ const { reading, facet } = props;
62
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-process-facet": facet, children: [
63
+ /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: reading ? `Read at ${formatProcessTimestamp(reading.readAt)}` : "No reading stored for this process yet" }),
64
+ reading && /* @__PURE__ */ jsx(
65
+ DataTable,
66
+ {
67
+ data: reading.rows,
68
+ columns: descriptorColumns[facet],
69
+ getRowId: (row, index) => `${row.fd}:${index}`,
70
+ emptyMessage: SAMPLE_FACETS[facet].empty,
71
+ ...tableChrome
72
+ }
73
+ )
74
+ ] });
75
+ }
76
+ export {
77
+ ProcessFacetTable
78
+ };
79
+ //# sourceMappingURL=ProcessFacetTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessFacetTable.js","sources":["../../../src/data/traces/ProcessFacetTable.tsx"],"sourcesContent":["import { DataTable, type DataTableColumnInput } from \"../DataTable\";\nimport { SAMPLE_FACETS, type FacetReading } from \"./process-facets\";\nimport { formatProcessTimestamp } from \"./process-tree\";\nimport type { ProcessDescriptor, ProcessEnv, ProcessSampleFacet } from \"./types\";\n\ntype EnvRow = { name: string; value: string };\n\nconst addressColumns: Array<DataTableColumnInput<ProcessDescriptor>> = [\n { key: \"fd\", label: \"FD\", sortable: true },\n {\n key: \"protocol\",\n label: \"Protocol\",\n sortable: true,\n filterable: true,\n accessor: (descriptor) => descriptor.protocol || descriptor.type,\n },\n { key: \"state\", label: \"State\", sortable: true, filterable: true },\n {\n key: \"localAddr\",\n label: \"Local\",\n sortable: true,\n grow: true,\n accessor: (descriptor) => descriptor.localAddr || descriptor.name,\n },\n { key: \"remoteAddr\", label: \"Remote\", sortable: true },\n];\n\nconst descriptorColumns: Record<ProcessSampleFacet, Array<DataTableColumnInput<ProcessDescriptor>>> = {\n openFiles: [\n { key: \"fd\", label: \"FD\", sortable: true },\n { key: \"type\", label: \"Type\", sortable: true, filterable: true },\n { key: \"name\", label: \"Path\", sortable: true, grow: true },\n ],\n sockets: addressColumns,\n connections: addressColumns,\n ports: [\n { key: \"port\", label: \"Port\", sortable: true },\n { key: \"protocol\", label: \"Protocol\", sortable: true, filterable: true },\n { key: \"localAddr\", label: \"Address\", sortable: true, grow: true },\n { key: \"fd\", label: \"FD\", sortable: true },\n ],\n};\n\nconst envColumns: Array<DataTableColumnInput<EnvRow>> = [\n { key: \"name\", label: \"Name\", sortable: true },\n { key: \"value\", label: \"Value\", grow: true },\n];\n\nconst tableChrome = { autoFilter: true, showThemeControl: false, showFullscreenControl: false } as const;\n\nexport type ProcessFacetTableProps =\n | {\n facet: \"env\";\n /** The environment recorded on the process's `process_tree` node. */\n environment?: ProcessEnv;\n /** Why the environment could not be read. */\n error?: string;\n }\n | {\n facet: ProcessSampleFacet;\n /** The latest stored list of the facet; undefined when none was stored for this process. */\n reading: FacetReading | undefined;\n };\n\n/**\n * One facet of a process as a trace stored it, in a filterable table: its\n * environment (recorded once on its `process_tree` node) or the latest list of\n * its open files, sockets, listening ports or connections from `process_samples`,\n * with the time that list was read. Presentational: nothing is fetched.\n */\nexport function ProcessFacetTable(props: ProcessFacetTableProps) {\n if (props.facet === \"env\") {\n const rows: EnvRow[] = Object.entries(props.environment ?? {})\n .map(([name, value]) => ({ name, value }))\n .sort((a, b) => a.name.localeCompare(b.name));\n return (\n <div className=\"space-y-2\" data-process-facet=\"env\">\n {props.error && (\n <div className=\"whitespace-pre-wrap text-xs text-red-700 dark:text-red-400\" role=\"alert\">\n {props.error}\n </div>\n )}\n {props.environment && (\n <DataTable<EnvRow>\n data={rows}\n columns={envColumns}\n getRowId={(row) => row.name}\n emptyMessage=\"The process has no environment variables\"\n {...tableChrome}\n />\n )}\n </div>\n );\n }\n\n const { reading, facet } = props;\n return (\n <div className=\"space-y-2\" data-process-facet={facet}>\n <div className=\"text-xs text-muted-foreground\">\n {reading ? `Read at ${formatProcessTimestamp(reading.readAt)}` : \"No reading stored for this process yet\"}\n </div>\n {reading && (\n <DataTable<ProcessDescriptor>\n data={reading.rows}\n columns={descriptorColumns[facet]}\n getRowId={(row, index) => `${row.fd}:${index}`}\n emptyMessage={SAMPLE_FACETS[facet].empty}\n {...tableChrome}\n />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAOA,MAAM,iBAAiE;AAAA,EACrE,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,EACpC;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,UAAU,CAAC,eAAe,WAAW,YAAY,WAAW;AAAA,EAAA;AAAA,EAE9D,EAAE,KAAK,SAAS,OAAO,SAAS,UAAU,MAAM,YAAY,KAAA;AAAA,EAC5D;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU,CAAC,eAAe,WAAW,aAAa,WAAW;AAAA,EAAA;AAAA,EAE/D,EAAE,KAAK,cAAc,OAAO,UAAU,UAAU,KAAA;AAClD;AAEA,MAAM,oBAAgG;AAAA,EACpG,WAAW;AAAA,IACT,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,IACpC,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM,YAAY,KAAA;AAAA,IAC1D,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,MAAM,MAAM,KAAA;AAAA,EAAK;AAAA,EAE3D,SAAS;AAAA,EACT,aAAa;AAAA,EACb,OAAO;AAAA,IACL,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,KAAA;AAAA,IACxC,EAAE,KAAK,YAAY,OAAO,YAAY,UAAU,MAAM,YAAY,KAAA;AAAA,IAClE,EAAE,KAAK,aAAa,OAAO,WAAW,UAAU,MAAM,MAAM,KAAA;AAAA,IAC5D,EAAE,KAAK,MAAM,OAAO,MAAM,UAAU,KAAA;AAAA,EAAK;AAE7C;AAEA,MAAM,aAAkD;AAAA,EACtD,EAAE,KAAK,QAAQ,OAAO,QAAQ,UAAU,KAAA;AAAA,EACxC,EAAE,KAAK,SAAS,OAAO,SAAS,MAAM,KAAA;AACxC;AAEA,MAAM,cAAc,EAAE,YAAY,MAAM,kBAAkB,OAAO,uBAAuB,MAAA;AAsBjF,SAAS,kBAAkB,OAA+B;AAC/D,MAAI,MAAM,UAAU,OAAO;AACzB,UAAM,OAAiB,OAAO,QAAQ,MAAM,eAAe,EAAE,EAC1D,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,MAAM,QAAQ,EACxC,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC9C,WACE,qBAAC,OAAA,EAAI,WAAU,aAAY,sBAAmB,OAC3C,UAAA;AAAA,MAAA,MAAM,6BACJ,OAAA,EAAI,WAAU,8DAA6D,MAAK,SAC9E,gBAAM,MAAA,CACT;AAAA,MAED,MAAM,eACL;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU,CAAC,QAAQ,IAAI;AAAA,UACvB,cAAa;AAAA,UACZ,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,IACN,GAEJ;AAAA,EAEJ;AAEA,QAAM,EAAE,SAAS,MAAA,IAAU;AAC3B,SACE,qBAAC,OAAA,EAAI,WAAU,aAAY,sBAAoB,OAC7C,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAI,WAAU,iCACZ,UAAA,UAAU,WAAW,uBAAuB,QAAQ,MAAM,CAAC,KAAK,yCAAA,CACnE;AAAA,IACC,WACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ;AAAA,QACd,SAAS,kBAAkB,KAAK;AAAA,QAChC,UAAU,CAAC,KAAK,UAAU,GAAG,IAAI,EAAE,IAAI,KAAK;AAAA,QAC5C,cAAc,cAAc,KAAK,EAAE;AAAA,QAClC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GAEJ;AAEJ;"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const StackDumpView = require("../diagnostics/StackDumpView.cjs");
6
+ const GoProfileView = require("./GoProfileView.cjs");
7
+ const stackCheckpoints = require("./stack-checkpoints.cjs");
8
+ function byProcess(records) {
9
+ const groups = /* @__PURE__ */ new Map();
10
+ for (const record of records) groups.set(record.key, [...groups.get(record.key) ?? [], record]);
11
+ return [...groups];
12
+ }
13
+ function ProcessSections({ processes, render }) {
14
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 space-y-density-3 overflow-auto p-density-2", children: processes.map(([key, own]) => /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-trace-process": key, children: [
15
+ processes.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1 font-mono text-xs text-muted-foreground", children: key }),
16
+ render(key, own)
17
+ ] }, key)) });
18
+ }
19
+ function GoProfileTraceView({ rows }) {
20
+ const processes = react.useMemo(() => byProcess(rows), [rows]);
21
+ return /* @__PURE__ */ jsxRuntime.jsx(ProcessSections, { processes, render: (key, own) => /* @__PURE__ */ jsxRuntime.jsx(GoProfileView.GoProfileView, { records: own, processKey: key }) });
22
+ }
23
+ function StackTraceView({ rows }) {
24
+ const processes = react.useMemo(() => byProcess(rows).map(([key]) => [key, stackCheckpoints.stackCheckpoints(rows, key).reverse()]), [rows]);
25
+ return /* @__PURE__ */ jsxRuntime.jsx(
26
+ ProcessSections,
27
+ {
28
+ processes,
29
+ render: (_key, checkpoints) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-density-2", children: checkpoints.map((checkpoint) => /* @__PURE__ */ jsxRuntime.jsx("section", { className: "rounded border border-border px-density-2", "data-stack-checkpoint": checkpoint.checkpointId, children: /* @__PURE__ */ jsxRuntime.jsx(
30
+ StackDumpView.StackDumpView,
31
+ {
32
+ records: checkpoint.records,
33
+ headerActions: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-[11px] text-muted-foreground", children: checkpoint.transport })
34
+ }
35
+ ) }, checkpoint.checkpointId)) })
36
+ }
37
+ );
38
+ }
39
+ exports.GoProfileTraceView = GoProfileTraceView;
40
+ exports.StackTraceView = StackTraceView;
41
+ //# sourceMappingURL=ProcessRecordViews.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessRecordViews.cjs","sources":["../../../src/data/traces/ProcessRecordViews.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { StackDumpView } from \"../diagnostics/StackDumpView\";\nimport { GoProfileView } from \"./GoProfileView\";\nimport { stackCheckpoints } from \"./stack-checkpoints\";\nimport type { GoProfileRecord, StackRecord } from \"./types\";\n\n/** Splits records by the `process_tree` key they belong to, in the order the keys first appear. */\nfunction byProcess<T extends { key: string }>(records: T[]): Array<[string, T[]]> {\n const groups = new Map<string, T[]>();\n for (const record of records) groups.set(record.key, [...(groups.get(record.key) ?? []), record]);\n return [...groups];\n}\n\n/** One section per process; the key is only named when the records span several processes. */\nfunction ProcessSections<T>({ processes, render }: { processes: Array<readonly [string, T]>; render: (key: string, own: T) => ReactNode }) {\n return (\n <div className=\"min-h-0 flex-1 space-y-density-3 overflow-auto p-density-2\">\n {processes.map(([key, own]) => (\n <div key={key} data-trace-process={key}>\n {processes.length > 1 && <div className=\"mb-1 font-mono text-xs text-muted-foreground\">{key}</div>}\n {render(key, own)}\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * The `goprof` records of a trace window: one `GoProfileView` per process key,\n * because a profile view shows the checkpoints of one process.\n */\nexport function GoProfileTraceView({ rows }: { rows: GoProfileRecord[] }) {\n const processes = useMemo(() => byProcess(rows), [rows]);\n return <ProcessSections processes={processes} render={(key, own) => <GoProfileView records={own} processKey={key} />} />;\n}\n\n/**\n * The `stacks` records of a trace window: for each process, one `StackDumpView`\n * per checkpoint, latest first, each labelled with the transport it was taken by.\n */\nexport function StackTraceView({ rows }: { rows: StackRecord[] }) {\n const processes = useMemo(() => byProcess(rows).map(([key]) => [key, stackCheckpoints(rows, key).reverse()] as const), [rows]);\n return (\n <ProcessSections\n processes={processes}\n render={(_key, checkpoints) => (\n <div className=\"space-y-density-2\">\n {checkpoints.map((checkpoint) => (\n <section key={checkpoint.checkpointId} className=\"rounded border border-border px-density-2\" data-stack-checkpoint={checkpoint.checkpointId}>\n <StackDumpView\n records={checkpoint.records}\n headerActions={<span className=\"font-mono text-[11px] text-muted-foreground\">{checkpoint.transport}</span>}\n />\n </section>\n ))}\n </div>\n )}\n />\n );\n}\n"],"names":["jsx","jsxs","useMemo","GoProfileView","stackCheckpoints","StackDumpView"],"mappings":";;;;;;;AAOA,SAAS,UAAqC,SAAoC;AAChF,QAAM,6BAAa,IAAA;AACnB,aAAW,UAAU,QAAS,QAAO,IAAI,OAAO,KAAK,CAAC,GAAI,OAAO,IAAI,OAAO,GAAG,KAAK,CAAA,GAAK,MAAM,CAAC;AAChG,SAAO,CAAC,GAAG,MAAM;AACnB;AAGA,SAAS,gBAAmB,EAAE,WAAW,UAAkG;AACzI,SACEA,2BAAAA,IAAC,OAAA,EAAI,WAAU,8DACZ,oBAAU,IAAI,CAAC,CAAC,KAAK,GAAG,MACvBC,2BAAAA,KAAC,OAAA,EAAc,sBAAoB,KAChC,UAAA;AAAA,IAAA,UAAU,SAAS,KAAKD,+BAAC,OAAA,EAAI,WAAU,gDAAgD,UAAA,KAAI;AAAA,IAC3F,OAAO,KAAK,GAAG;AAAA,EAAA,KAFR,GAGV,CACD,GACH;AAEJ;AAMO,SAAS,mBAAmB,EAAE,QAAqC;AACxE,QAAM,YAAYE,MAAAA,QAAQ,MAAM,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC;AACvD,SAAOF,2BAAAA,IAAC,iBAAA,EAAgB,WAAsB,QAAQ,CAAC,KAAK,QAAQA,2BAAAA,IAACG,cAAAA,eAAA,EAAc,SAAS,KAAK,YAAY,KAAK,GAAI;AACxH;AAMO,SAAS,eAAe,EAAE,QAAiC;AAChE,QAAM,YAAYD,MAAAA,QAAQ,MAAM,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAKE,iBAAAA,iBAAiB,MAAM,GAAG,EAAE,QAAA,CAAS,CAAU,GAAG,CAAC,IAAI,CAAC;AAC7H,SACEJ,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,QAAQ,CAAC,MAAM,gBACbA,2BAAAA,IAAC,OAAA,EAAI,WAAU,qBACZ,UAAA,YAAY,IAAI,CAAC,eAChBA,2BAAAA,IAAC,WAAA,EAAsC,WAAU,6CAA4C,yBAAuB,WAAW,cAC7H,UAAAA,2BAAAA;AAAAA,QAACK,cAAAA;AAAAA,QAAA;AAAA,UACC,SAAS,WAAW;AAAA,UACpB,eAAeL,2BAAAA,IAAC,QAAA,EAAK,WAAU,+CAA+C,qBAAW,UAAA,CAAU;AAAA,QAAA;AAAA,MAAA,KAHzF,WAAW,YAKzB,CACD,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAIR;;;"}
@@ -0,0 +1,16 @@
1
+ import { GoProfileRecord, StackRecord } from './types.js';
2
+ /**
3
+ * The `goprof` records of a trace window: one `GoProfileView` per process key,
4
+ * because a profile view shows the checkpoints of one process.
5
+ */
6
+ export declare function GoProfileTraceView({ rows }: {
7
+ rows: GoProfileRecord[];
8
+ }): import("react").JSX.Element;
9
+ /**
10
+ * The `stacks` records of a trace window: for each process, one `StackDumpView`
11
+ * per checkpoint, latest first, each labelled with the transport it was taken by.
12
+ */
13
+ export declare function StackTraceView({ rows }: {
14
+ rows: StackRecord[];
15
+ }): import("react").JSX.Element;
16
+ //# sourceMappingURL=ProcessRecordViews.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessRecordViews.d.ts","sourceRoot":"","sources":["../../../src/data/traces/ProcessRecordViews.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAuB5D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,eAAe,EAAE,CAAA;CAAE,+BAGvE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,+BAmB/D"}
@@ -0,0 +1,41 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { StackDumpView } from "../diagnostics/StackDumpView.js";
4
+ import { GoProfileView } from "./GoProfileView.js";
5
+ import { stackCheckpoints } from "./stack-checkpoints.js";
6
+ function byProcess(records) {
7
+ const groups = /* @__PURE__ */ new Map();
8
+ for (const record of records) groups.set(record.key, [...groups.get(record.key) ?? [], record]);
9
+ return [...groups];
10
+ }
11
+ function ProcessSections({ processes, render }) {
12
+ return /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 space-y-density-3 overflow-auto p-density-2", children: processes.map(([key, own]) => /* @__PURE__ */ jsxs("div", { "data-trace-process": key, children: [
13
+ processes.length > 1 && /* @__PURE__ */ jsx("div", { className: "mb-1 font-mono text-xs text-muted-foreground", children: key }),
14
+ render(key, own)
15
+ ] }, key)) });
16
+ }
17
+ function GoProfileTraceView({ rows }) {
18
+ const processes = useMemo(() => byProcess(rows), [rows]);
19
+ return /* @__PURE__ */ jsx(ProcessSections, { processes, render: (key, own) => /* @__PURE__ */ jsx(GoProfileView, { records: own, processKey: key }) });
20
+ }
21
+ function StackTraceView({ rows }) {
22
+ const processes = useMemo(() => byProcess(rows).map(([key]) => [key, stackCheckpoints(rows, key).reverse()]), [rows]);
23
+ return /* @__PURE__ */ jsx(
24
+ ProcessSections,
25
+ {
26
+ processes,
27
+ render: (_key, checkpoints) => /* @__PURE__ */ jsx("div", { className: "space-y-density-2", children: checkpoints.map((checkpoint) => /* @__PURE__ */ jsx("section", { className: "rounded border border-border px-density-2", "data-stack-checkpoint": checkpoint.checkpointId, children: /* @__PURE__ */ jsx(
28
+ StackDumpView,
29
+ {
30
+ records: checkpoint.records,
31
+ headerActions: /* @__PURE__ */ jsx("span", { className: "font-mono text-[11px] text-muted-foreground", children: checkpoint.transport })
32
+ }
33
+ ) }, checkpoint.checkpointId)) })
34
+ }
35
+ );
36
+ }
37
+ export {
38
+ GoProfileTraceView,
39
+ StackTraceView
40
+ };
41
+ //# sourceMappingURL=ProcessRecordViews.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessRecordViews.js","sources":["../../../src/data/traces/ProcessRecordViews.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport { StackDumpView } from \"../diagnostics/StackDumpView\";\nimport { GoProfileView } from \"./GoProfileView\";\nimport { stackCheckpoints } from \"./stack-checkpoints\";\nimport type { GoProfileRecord, StackRecord } from \"./types\";\n\n/** Splits records by the `process_tree` key they belong to, in the order the keys first appear. */\nfunction byProcess<T extends { key: string }>(records: T[]): Array<[string, T[]]> {\n const groups = new Map<string, T[]>();\n for (const record of records) groups.set(record.key, [...(groups.get(record.key) ?? []), record]);\n return [...groups];\n}\n\n/** One section per process; the key is only named when the records span several processes. */\nfunction ProcessSections<T>({ processes, render }: { processes: Array<readonly [string, T]>; render: (key: string, own: T) => ReactNode }) {\n return (\n <div className=\"min-h-0 flex-1 space-y-density-3 overflow-auto p-density-2\">\n {processes.map(([key, own]) => (\n <div key={key} data-trace-process={key}>\n {processes.length > 1 && <div className=\"mb-1 font-mono text-xs text-muted-foreground\">{key}</div>}\n {render(key, own)}\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * The `goprof` records of a trace window: one `GoProfileView` per process key,\n * because a profile view shows the checkpoints of one process.\n */\nexport function GoProfileTraceView({ rows }: { rows: GoProfileRecord[] }) {\n const processes = useMemo(() => byProcess(rows), [rows]);\n return <ProcessSections processes={processes} render={(key, own) => <GoProfileView records={own} processKey={key} />} />;\n}\n\n/**\n * The `stacks` records of a trace window: for each process, one `StackDumpView`\n * per checkpoint, latest first, each labelled with the transport it was taken by.\n */\nexport function StackTraceView({ rows }: { rows: StackRecord[] }) {\n const processes = useMemo(() => byProcess(rows).map(([key]) => [key, stackCheckpoints(rows, key).reverse()] as const), [rows]);\n return (\n <ProcessSections\n processes={processes}\n render={(_key, checkpoints) => (\n <div className=\"space-y-density-2\">\n {checkpoints.map((checkpoint) => (\n <section key={checkpoint.checkpointId} className=\"rounded border border-border px-density-2\" data-stack-checkpoint={checkpoint.checkpointId}>\n <StackDumpView\n records={checkpoint.records}\n headerActions={<span className=\"font-mono text-[11px] text-muted-foreground\">{checkpoint.transport}</span>}\n />\n </section>\n ))}\n </div>\n )}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAOA,SAAS,UAAqC,SAAoC;AAChF,QAAM,6BAAa,IAAA;AACnB,aAAW,UAAU,QAAS,QAAO,IAAI,OAAO,KAAK,CAAC,GAAI,OAAO,IAAI,OAAO,GAAG,KAAK,CAAA,GAAK,MAAM,CAAC;AAChG,SAAO,CAAC,GAAG,MAAM;AACnB;AAGA,SAAS,gBAAmB,EAAE,WAAW,UAAkG;AACzI,SACE,oBAAC,OAAA,EAAI,WAAU,8DACZ,oBAAU,IAAI,CAAC,CAAC,KAAK,GAAG,MACvB,qBAAC,OAAA,EAAc,sBAAoB,KAChC,UAAA;AAAA,IAAA,UAAU,SAAS,KAAK,oBAAC,OAAA,EAAI,WAAU,gDAAgD,UAAA,KAAI;AAAA,IAC3F,OAAO,KAAK,GAAG;AAAA,EAAA,KAFR,GAGV,CACD,GACH;AAEJ;AAMO,SAAS,mBAAmB,EAAE,QAAqC;AACxE,QAAM,YAAY,QAAQ,MAAM,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC;AACvD,SAAO,oBAAC,iBAAA,EAAgB,WAAsB,QAAQ,CAAC,KAAK,QAAQ,oBAAC,eAAA,EAAc,SAAS,KAAK,YAAY,KAAK,GAAI;AACxH;AAMO,SAAS,eAAe,EAAE,QAAiC;AAChE,QAAM,YAAY,QAAQ,MAAM,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,iBAAiB,MAAM,GAAG,EAAE,QAAA,CAAS,CAAU,GAAG,CAAC,IAAI,CAAC;AAC7H,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,QAAQ,CAAC,MAAM,gBACb,oBAAC,OAAA,EAAI,WAAU,qBACZ,UAAA,YAAY,IAAI,CAAC,eAChB,oBAAC,WAAA,EAAsC,WAAU,6CAA4C,yBAAuB,WAAW,cAC7H,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,WAAW;AAAA,UACpB,eAAe,oBAAC,QAAA,EAAK,WAAU,+CAA+C,qBAAW,UAAA,CAAU;AAAA,QAAA;AAAA,MAAA,KAHzF,WAAW,YAKzB,CACD,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const react = require("react");
5
+ const button = require("../../components/button.cjs");
6
+ const select = require("../../components/select.cjs");
7
+ const Tabs = require("../../layout/Tabs.cjs");
8
+ const format = require("../../lib/format.cjs");
9
+ const utils = require("../../lib/utils.cjs");
10
+ const ConfirmDialog = require("../../overlay/ConfirmDialog.cjs");
11
+ const MetricTile = require("../diagnostics/MetricTile.cjs");
12
+ const metricTone = require("../diagnostics/metric-tone.cjs");
13
+ const StackDumpView = require("../diagnostics/StackDumpView.cjs");
14
+ const utils$1 = require("../diagnostics/utils.cjs");
15
+ const Icon = require("../Icon.cjs");
16
+ const processFacets = require("./process-facets.cjs");
17
+ const processTree = require("./process-tree.cjs");
18
+ const ProcessFacetTable = require("./ProcessFacetTable.cjs");
19
+ const stackCheckpoints = require("./stack-checkpoints.cjs");
20
+ const Sparkline = require("./Sparkline.cjs");
21
+ const UiServerProcess = require("../../icons/components/UiServerProcess.cjs");
22
+ const UiDebug = require("../../icons/components/UiDebug.cjs");
23
+ const UiLoader = require("../../icons/components/UiLoader.cjs");
24
+ const UiDebugSmall = require("../../icons/components/UiDebugSmall.cjs");
25
+ const STACK_TRANSPORTS = {
26
+ inprocess: {
27
+ label: (hasStack) => hasStack ? "Refresh stack trace" : "Collect stack trace",
28
+ title: "Take a fresh observation and dump the goroutine stacks"
29
+ },
30
+ native: {
31
+ label: () => "Native sample",
32
+ title: "Sample the process's native threads without interrupting it"
33
+ },
34
+ pprof: {
35
+ label: () => "Collect via pprof",
36
+ title: "Read the goroutine profile from the process's pprof endpoint"
37
+ },
38
+ gops: {
39
+ label: () => "Collect via gops",
40
+ title: "Read the goroutine stacks from the process's gops agent"
41
+ },
42
+ sigquit: {
43
+ label: () => "Dump goroutines & kill",
44
+ title: "Send SIGQUIT: the process prints every goroutine's stack and exits",
45
+ warning: (pid) => `This sends SIGQUIT to pid ${pid}. The process prints every goroutine's stack and exits.`
46
+ }
47
+ };
48
+ function transportSpec(transport) {
49
+ const spec = STACK_TRANSPORTS[transport];
50
+ if (!spec) {
51
+ throw new Error(`unknown stack transport "${transport}"; expected one of ${Object.keys(STACK_TRANSPORTS).join(", ")}`);
52
+ }
53
+ return spec;
54
+ }
55
+ const NO_STACKS = [];
56
+ function Section({ title, children }) {
57
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
58
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground", children: title }),
59
+ children
60
+ ] });
61
+ }
62
+ function InfoTile({ label, value, wide }) {
63
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `rounded-lg border border-border bg-muted/50 px-2.5 py-density-2 ${wide ? "col-span-2" : ""}`, children: [
64
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: label }),
65
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 break-all text-xs font-medium text-foreground", children: value })
66
+ ] });
67
+ }
68
+ function Header({ node }) {
69
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
70
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-density-2", children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: node.isRoot ? UiServerProcess.UiServerProcess : UiDebug.UiDebug, className: "shrink-0 text-2xl text-blue-600" }),
72
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "break-words text-lg font-bold text-foreground", children: utils$1.processLabel(node) })
73
+ ] }),
74
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-density-2 text-xs text-muted-foreground", children: [
75
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono", children: [
76
+ "pid ",
77
+ node.pid
78
+ ] }),
79
+ node.ppid ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono", children: [
80
+ "ppid ",
81
+ node.ppid
82
+ ] }) : null,
83
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 ${utils$1.processStateColor(node.status)}`, children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: utils$1.processStateIcon(node.status) }),
85
+ node.status
86
+ ] })
87
+ ] })
88
+ ] });
89
+ }
90
+ function CollectButtons({
91
+ transports,
92
+ hasStack,
93
+ collecting,
94
+ onCollect
95
+ }) {
96
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-density-1", "data-stack-actions": "", children: transports.map((transport) => {
97
+ const spec = transportSpec(transport.transport);
98
+ return /* @__PURE__ */ jsxRuntime.jsxs(
99
+ button.Button,
100
+ {
101
+ size: "sm",
102
+ variant: transport.destructive ? "destructive" : hasStack ? "outline" : "default",
103
+ disabled: collecting,
104
+ title: spec.title,
105
+ onClick: () => onCollect(transport),
106
+ children: [
107
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: collecting ? UiLoader.UiLoader : UiDebugSmall.UiDebugSmall, className: collecting ? "mr-1 animate-spin" : "mr-1" }),
108
+ spec.label(hasStack)
109
+ ]
110
+ },
111
+ transport.transport
112
+ );
113
+ }) });
114
+ }
115
+ function StackSection({
116
+ node,
117
+ stacks,
118
+ onCollectStack,
119
+ collecting,
120
+ collectError
121
+ }) {
122
+ var _a;
123
+ const [confirming, setConfirming] = react.useState(null);
124
+ const [picked, setPicked] = react.useState(null);
125
+ const checkpoints = react.useMemo(() => stackCheckpoints.stackCheckpoints(stacks, node.key), [stacks, node.key]);
126
+ const transports = node.stackTransports ?? [];
127
+ const canCollect = Boolean(onCollectStack) && transports.length > 0;
128
+ if (checkpoints.length === 0 && !canCollect) return null;
129
+ const selected = checkpoints.find((checkpoint) => checkpoint.checkpointId === picked) ?? checkpoints[checkpoints.length - 1];
130
+ const buttons = canCollect ? /* @__PURE__ */ jsxRuntime.jsx(
131
+ CollectButtons,
132
+ {
133
+ transports,
134
+ hasStack: Boolean(selected),
135
+ collecting: Boolean(collecting),
136
+ onCollect: (transport) => transport.destructive ? setConfirming(transport) : void (onCollectStack == null ? void 0 : onCollectStack(node.key, transport.transport))
137
+ }
138
+ ) : null;
139
+ const confirmingSpec = confirming ? transportSpec(confirming.transport) : null;
140
+ return /* @__PURE__ */ jsxRuntime.jsxs(Section, { title: "Stack", children: [
141
+ collectError && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 whitespace-pre-wrap text-xs text-red-700 dark:text-red-400", role: "alert", children: collectError }),
142
+ selected ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-density-1", children: [
143
+ checkpoints.length > 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(
144
+ select.Select,
145
+ {
146
+ "aria-label": "Stack checkpoint",
147
+ value: selected.checkpointId,
148
+ onChange: (event) => setPicked(event.target.value),
149
+ options: [...checkpoints].reverse().map((checkpoint) => ({
150
+ value: checkpoint.checkpointId,
151
+ label: [
152
+ processTree.formatProcessTimestamp(checkpoint.takenAt),
153
+ checkpoint.reason,
154
+ checkpoint.transport,
155
+ checkpoint.failed ? "failed" : ""
156
+ ].filter(Boolean).join(" · ")
157
+ }))
158
+ }
159
+ ) }),
160
+ /* @__PURE__ */ jsxRuntime.jsx(
161
+ StackDumpView.StackDumpView,
162
+ {
163
+ records: selected.records,
164
+ ...buttons ? { headerActions: buttons } : {}
165
+ },
166
+ `${node.key}:${selected.checkpointId}`
167
+ )
168
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
169
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-muted-foreground", children: collecting ? "Collecting stack trace..." : "No stack trace collected yet." }),
170
+ buttons
171
+ ] }),
172
+ /* @__PURE__ */ jsxRuntime.jsx(
173
+ ConfirmDialog.ConfirmDialog,
174
+ {
175
+ open: confirming !== null,
176
+ title: `${(confirmingSpec == null ? void 0 : confirmingSpec.label(false)) ?? ""}?`,
177
+ warning: ((_a = confirmingSpec == null ? void 0 : confirmingSpec.warning) == null ? void 0 : _a.call(confirmingSpec, node.pid)) ?? `Collecting this stack over ${(confirming == null ? void 0 : confirming.transport) ?? ""} terminates pid ${node.pid}.`,
178
+ message: "The stack is shown here once the dump arrives. Use a non-destructive transport to look without killing.",
179
+ confirmLabel: (confirmingSpec == null ? void 0 : confirmingSpec.label(false)) ?? "Collect",
180
+ variant: "destructive",
181
+ onCancel: () => setConfirming(null),
182
+ onConfirm: () => {
183
+ const transport = confirming;
184
+ setConfirming(null);
185
+ if (transport) void (onCollectStack == null ? void 0 : onCollectStack(node.key, transport.transport));
186
+ }
187
+ }
188
+ )
189
+ ] });
190
+ }
191
+ function Overview({
192
+ node,
193
+ samples,
194
+ links,
195
+ ...stack
196
+ }) {
197
+ const exited = processTree.isProcessExited(node);
198
+ const series = processTree.processSeries(samples, node.key);
199
+ const disk = processFacets.diskSeries(samples, node.key);
200
+ const lastDisk = { read: disk.read[disk.read.length - 1], write: disk.write[disk.write.length - 1] };
201
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-density-3", children: [
202
+ links,
203
+ /* @__PURE__ */ jsxRuntime.jsx(Section, { title: "Command", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap break-all rounded bg-blue-50 p-2 font-mono text-xs text-foreground dark:bg-blue-500/10", children: node.command }) }),
204
+ /* @__PURE__ */ jsxRuntime.jsx(Section, { title: "Process", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-density-2 text-sm", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx(InfoTile, { label: "Cwd", value: node.cwd || "Unavailable", wide: true }),
206
+ /* @__PURE__ */ jsxRuntime.jsx(InfoTile, { label: "Started", value: processTree.formatProcessTimestamp(node.startedAt) }),
207
+ /* @__PURE__ */ jsxRuntime.jsx(
208
+ InfoTile,
209
+ {
210
+ label: "Exited",
211
+ value: exited ? processTree.formatProcessTimestamp(node.exitedAt ?? node.lastSeenAt) : "running"
212
+ }
213
+ ),
214
+ /* @__PURE__ */ jsxRuntime.jsx(
215
+ InfoTile,
216
+ {
217
+ label: "Lifetime",
218
+ value: `${format.formatDuration(processTree.processLifetimeMs(node))}${exited ? "" : " so far"}`
219
+ }
220
+ )
221
+ ] }) }),
222
+ /* @__PURE__ */ jsxRuntime.jsxs(Section, { title: "Resources", children: [
223
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-density-1 sm:grid-cols-4", children: [
224
+ /* @__PURE__ */ jsxRuntime.jsx(
225
+ MetricTile.MetricTile,
226
+ {
227
+ label: "CPU",
228
+ value: processTree.formatCpuPercent(node.cpuPercent),
229
+ barPct: Math.min(100, node.cpuPercent ?? 0),
230
+ tone: metricTone.cpuTone(node.cpuPercent ?? 0)
231
+ }
232
+ ),
233
+ /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "RSS", value: format.formatBytes(node.rssBytes) }),
234
+ /* @__PURE__ */ jsxRuntime.jsx(
235
+ MetricTile.MetricTile,
236
+ {
237
+ label: "Peak CPU",
238
+ value: processTree.formatCpuPercent(node.peakCpuPercent),
239
+ tone: metricTone.cpuTone(node.peakCpuPercent ?? 0)
240
+ }
241
+ ),
242
+ /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Peak RSS", value: format.formatBytes(node.peakRssBytes) }),
243
+ lastDisk.read !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Disk read", value: format.formatBytes(lastDisk.read) }),
244
+ lastDisk.write !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(MetricTile.MetricTile, { label: "Disk write", value: format.formatBytes(lastDisk.write) })
245
+ ] }),
246
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 grid grid-cols-2 gap-density-2", children: [
247
+ /* @__PURE__ */ jsxRuntime.jsx(Sparkline.LabeledSparkline, { label: "CPU %", values: series.cpu, format: (value) => `${value.toFixed(1)}%` }),
248
+ /* @__PURE__ */ jsxRuntime.jsx(Sparkline.LabeledSparkline, { label: "RSS", values: series.rss, format: format.formatBytes }),
249
+ disk.read.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Sparkline.LabeledSparkline, { label: "Disk read", values: disk.read, format: format.formatBytes }),
250
+ disk.write.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Sparkline.LabeledSparkline, { label: "Disk write", values: disk.write, format: format.formatBytes })
251
+ ] })
252
+ ] }),
253
+ /* @__PURE__ */ jsxRuntime.jsx(StackSection, { node, ...stack }, node.key)
254
+ ] });
255
+ }
256
+ function FacetTab({
257
+ node,
258
+ samples,
259
+ facet
260
+ }) {
261
+ const { label } = processFacets.SAMPLE_FACETS[facet];
262
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-density-3", children: [
263
+ /* @__PURE__ */ jsxRuntime.jsx(Sparkline.LabeledSparkline, { label, values: processFacets.facetCountSeries(samples, node.key, facet), format: String }),
264
+ /* @__PURE__ */ jsxRuntime.jsx(ProcessFacetTable.ProcessFacetTable, { facet, reading: processFacets.latestFacetReading(samples, node.key, facet) })
265
+ ] });
266
+ }
267
+ function ProcessTraceDetail({
268
+ node,
269
+ samples,
270
+ stacks = NO_STACKS,
271
+ links,
272
+ onCollectStack,
273
+ collecting,
274
+ collectError,
275
+ className
276
+ }) {
277
+ const [tab, setTab] = react.useState("overview");
278
+ if (!node) {
279
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center text-sm text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
280
+ /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { icon: UiServerProcess.UiServerProcess, className: "mb-2 block text-4xl" }),
281
+ "Select a process to view its trace"
282
+ ] }) });
283
+ }
284
+ const hasEnvironment = Boolean(node.environment || node.environmentError);
285
+ const tabs = [
286
+ { id: "overview", label: "Overview" },
287
+ ...hasEnvironment ? [{ id: "env", label: "Environment" }] : [],
288
+ ...processFacets.armedFacets(samples).map((facet) => ({ id: facet, label: processFacets.SAMPLE_FACETS[facet].label }))
289
+ ];
290
+ const active = tabs.some((item) => item.id === tab) ? tab : "overview";
291
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("h-full space-y-density-3 overflow-y-auto p-density-4", className), "data-process-detail": node.key, children: [
292
+ /* @__PURE__ */ jsxRuntime.jsx(Header, { node }),
293
+ tabs.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(Tabs.Tabs, { tabs, value: active, onChange: (id) => setTab(id) }),
294
+ active === "overview" ? /* @__PURE__ */ jsxRuntime.jsx(
295
+ Overview,
296
+ {
297
+ node,
298
+ samples,
299
+ stacks,
300
+ links,
301
+ ...onCollectStack ? { onCollectStack } : {},
302
+ ...collecting !== void 0 ? { collecting } : {},
303
+ ...collectError ? { collectError } : {}
304
+ }
305
+ ) : active === "env" ? /* @__PURE__ */ jsxRuntime.jsx(
306
+ ProcessFacetTable.ProcessFacetTable,
307
+ {
308
+ facet: "env",
309
+ ...node.environment ? { environment: node.environment } : {},
310
+ ...node.environmentError ? { error: node.environmentError } : {}
311
+ }
312
+ ) : /* @__PURE__ */ jsxRuntime.jsx(FacetTab, { node, samples, facet: active }, `${node.key}:${active}`)
313
+ ] });
314
+ }
315
+ exports.ProcessTraceDetail = ProcessTraceDetail;
316
+ //# sourceMappingURL=ProcessTraceDetail.cjs.map