@workflow/web-shared 5.0.0-beta.37 → 5.0.0-beta.39

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 (313) hide show
  1. package/README.md +3 -3
  2. package/dist/components/event-list-view.d.ts.map +1 -1
  3. package/dist/components/event-list-view.js +10 -10
  4. package/dist/components/index.d.ts +4 -5
  5. package/dist/components/index.d.ts.map +1 -1
  6. package/dist/components/index.js +4 -5
  7. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  8. package/dist/components/sidebar/attribute-panel.js +32 -8
  9. package/dist/components/sidebar/attributes-block.js +3 -3
  10. package/dist/components/sidebar/copyable-data-block.js +2 -2
  11. package/dist/components/sidebar/entity-detail-panel.js +3 -3
  12. package/dist/components/sidebar/events-list.js +2 -2
  13. package/dist/components/stream-viewer-skeleton.d.ts +2 -0
  14. package/dist/components/stream-viewer-skeleton.d.ts.map +1 -0
  15. package/dist/components/stream-viewer-skeleton.js +12 -0
  16. package/dist/components/stream-viewer.d.ts +1 -1
  17. package/dist/components/stream-viewer.d.ts.map +1 -1
  18. package/dist/components/stream-viewer.js +9 -26
  19. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  20. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  21. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  22. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  23. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  24. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  25. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  26. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  27. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  28. package/dist/components/trace-viewer/components/event-list.js +47 -0
  29. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  30. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  31. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  32. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  33. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  34. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  35. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  36. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  37. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  38. package/dist/components/trace-viewer/components/minimap.js +337 -0
  39. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  42. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  43. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  44. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  45. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  46. package/dist/components/trace-viewer/components/timeline.js +321 -0
  47. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  48. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  49. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  50. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  51. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  52. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  53. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  54. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  55. package/dist/components/trace-viewer/context.d.ts +14 -182
  56. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  57. package/dist/components/trace-viewer/context.js +44 -351
  58. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  59. package/dist/components/trace-viewer/icons.js +15 -0
  60. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  61. package/dist/components/trace-viewer/search.js +134 -0
  62. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  63. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  64. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  65. package/dist/components/trace-viewer/types.d.ts +2 -211
  66. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  67. package/dist/components/trace-viewer/types.js +1 -1
  68. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  69. package/dist/components/trace-viewer/utils.js +430 -0
  70. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +3 -3
  71. package/dist/components/trace-viewer.d.ts.map +1 -0
  72. package/dist/components/trace-viewer.js +21 -0
  73. package/dist/components/ui/alert.js +2 -2
  74. package/dist/components/ui/button.d.ts +1 -1
  75. package/dist/components/ui/button.d.ts.map +1 -1
  76. package/dist/components/ui/button.js +3 -3
  77. package/dist/components/ui/card.d.ts.map +1 -1
  78. package/dist/components/ui/card.js +3 -3
  79. package/dist/components/ui/error-card.js +2 -2
  80. package/dist/components/ui/error-stack-block.js +4 -4
  81. package/dist/components/ui/kbd.js +3 -3
  82. package/dist/components/ui/timestamp-tooltip.js +3 -3
  83. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  84. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  85. package/dist/lib/trace-builder.d.ts +1 -1
  86. package/dist/lib/trace-builder.d.ts.map +1 -1
  87. package/dist/lib/trace-builder.js +1 -1
  88. package/dist/lib/trace-types.d.ts +54 -0
  89. package/dist/lib/trace-types.d.ts.map +1 -0
  90. package/dist/lib/trace-types.js +2 -0
  91. package/package.json +6 -6
  92. package/src/components/event-list-view.tsx +12 -9
  93. package/src/components/index.ts +4 -5
  94. package/src/components/sidebar/attribute-panel.tsx +46 -8
  95. package/src/components/sidebar/attributes-block.tsx +2 -2
  96. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  97. package/src/components/sidebar/entity-detail-panel.tsx +3 -3
  98. package/src/components/sidebar/events-list.tsx +1 -1
  99. package/src/components/stream-viewer-skeleton.tsx +34 -0
  100. package/src/components/stream-viewer.tsx +34 -106
  101. package/src/components/{new-trace-viewer → trace-viewer}/components/event-list.tsx +1 -1
  102. package/src/components/{new-trace-viewer → trace-viewer}/components/minimap.tsx +1 -4
  103. package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.tsx +2 -5
  104. package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.tsx +1 -1
  105. package/src/components/trace-viewer/context.tsx +63 -656
  106. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  107. package/src/components/trace-viewer/types.ts +2 -234
  108. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +2 -2
  109. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +5 -5
  110. package/src/components/ui/alert.tsx +1 -1
  111. package/src/components/ui/button.tsx +3 -3
  112. package/src/components/ui/card.tsx +2 -9
  113. package/src/components/ui/error-card.tsx +3 -3
  114. package/src/components/ui/error-stack-block.tsx +3 -3
  115. package/src/components/ui/kbd.tsx +2 -2
  116. package/src/components/ui/timestamp-tooltip.tsx +4 -4
  117. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  118. package/src/lib/trace-builder.ts +1 -1
  119. package/src/lib/trace-types.ts +56 -0
  120. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  121. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  122. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +0 -1
  123. package/dist/components/new-trace-viewer/components/detail-panel-width.js +0 -67
  124. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +0 -1
  125. package/dist/components/new-trace-viewer/components/detail-panel.js +0 -122
  126. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +0 -1
  127. package/dist/components/new-trace-viewer/components/draggable-border.js +0 -140
  128. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  129. package/dist/components/new-trace-viewer/components/event-list.js +0 -47
  130. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  131. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  132. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  133. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  134. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  135. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  136. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  137. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  138. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +0 -1
  139. package/dist/components/new-trace-viewer/components/minimap.js +0 -337
  140. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +0 -1
  141. package/dist/components/new-trace-viewer/components/pane-constants.js +0 -16
  142. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +0 -1
  143. package/dist/components/new-trace-viewer/components/span-markers.js +0 -85
  144. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  145. package/dist/components/new-trace-viewer/components/split-pane.js +0 -41
  146. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  147. package/dist/components/new-trace-viewer/components/timeline.js +0 -321
  148. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +0 -1
  149. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +0 -55
  150. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +0 -1
  151. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +0 -26
  152. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +0 -1
  153. package/dist/components/new-trace-viewer/components/use-element-width.js +0 -25
  154. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +0 -1
  155. package/dist/components/new-trace-viewer/components/use-row-window.js +0 -107
  156. package/dist/components/new-trace-viewer/context.d.ts +0 -17
  157. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  158. package/dist/components/new-trace-viewer/context.js +0 -48
  159. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  160. package/dist/components/new-trace-viewer/icons.js +0 -15
  161. package/dist/components/new-trace-viewer/search.d.ts.map +0 -1
  162. package/dist/components/new-trace-viewer/search.js +0 -134
  163. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -11
  164. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  165. package/dist/components/new-trace-viewer/trace-viewer.js +0 -336
  166. package/dist/components/new-trace-viewer/types.d.ts +0 -3
  167. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  168. package/dist/components/new-trace-viewer/types.js +0 -2
  169. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  170. package/dist/components/new-trace-viewer/utils.js +0 -430
  171. package/dist/components/run-trace-view.d.ts +0 -23
  172. package/dist/components/run-trace-view.d.ts.map +0 -1
  173. package/dist/components/run-trace-view.js +0 -11
  174. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  175. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  176. package/dist/components/trace-viewer/components/map.js +0 -162
  177. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  178. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  179. package/dist/components/trace-viewer/components/markers.js +0 -416
  180. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  181. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  182. package/dist/components/trace-viewer/components/node.js +0 -286
  183. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  184. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  185. package/dist/components/trace-viewer/components/search-input.js +0 -9
  186. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  187. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  188. package/dist/components/trace-viewer/components/search.js +0 -25
  189. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  190. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  191. package/dist/components/trace-viewer/components/span-content.js +0 -137
  192. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  193. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  194. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  195. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  196. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  197. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  198. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  199. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  200. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  201. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  202. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  203. package/dist/components/trace-viewer/components/ui.js +0 -39
  204. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  205. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  206. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  207. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  208. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  209. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  210. package/dist/components/trace-viewer/index.d.ts +0 -5
  211. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  212. package/dist/components/trace-viewer/index.js +0 -4
  213. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  214. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  215. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  216. package/dist/components/trace-viewer/util/constants.js +0 -9
  217. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  218. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  219. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  220. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  221. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  222. package/dist/components/trace-viewer/util/tree.js +0 -227
  223. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  224. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  225. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  226. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  227. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  228. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  229. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  230. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  231. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  232. package/dist/components/trace-viewer/worker.d.ts +0 -2
  233. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  234. package/dist/components/trace-viewer/worker.js +0 -109
  235. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  236. package/dist/components/trace-viewer-new.js +0 -21
  237. package/dist/components/workflow-trace-view.d.ts +0 -39
  238. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  239. package/dist/components/workflow-trace-view.js +0 -690
  240. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  241. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  242. package/dist/components/workflow-traces/trace-colors.js +0 -86
  243. package/src/components/new-trace-viewer/context.tsx +0 -93
  244. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -632
  245. package/src/components/new-trace-viewer/types.ts +0 -2
  246. package/src/components/run-trace-view.tsx +0 -80
  247. package/src/components/trace-viewer/components/map.tsx +0 -226
  248. package/src/components/trace-viewer/components/markers.tsx +0 -612
  249. package/src/components/trace-viewer/components/node.tsx +0 -506
  250. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  251. package/src/components/trace-viewer/components/search.tsx +0 -47
  252. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  253. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  254. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  255. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  256. package/src/components/trace-viewer/components/ui.tsx +0 -156
  257. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  258. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  259. package/src/components/trace-viewer/index.tsx +0 -4
  260. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  261. package/src/components/trace-viewer/util/constants.ts +0 -8
  262. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  263. package/src/components/trace-viewer/util/tree.ts +0 -277
  264. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  265. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  266. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  267. package/src/components/trace-viewer/worker.ts +0 -131
  268. package/src/components/workflow-trace-view.tsx +0 -1166
  269. package/src/components/workflow-traces/trace-colors.ts +0 -112
  270. package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  271. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.d.ts +0 -0
  272. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel.d.ts +0 -0
  273. package/dist/components/{new-trace-viewer → trace-viewer}/components/draggable-border.d.ts +0 -0
  274. package/dist/components/{new-trace-viewer → trace-viewer}/components/event-list.d.ts +0 -0
  275. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  276. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  277. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +0 -0
  278. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  279. package/dist/components/{new-trace-viewer → trace-viewer}/components/minimap.d.ts +0 -0
  280. package/dist/components/{new-trace-viewer → trace-viewer}/components/pane-constants.d.ts +0 -0
  281. package/dist/components/{new-trace-viewer → trace-viewer}/components/span-markers.d.ts +0 -0
  282. package/dist/components/{new-trace-viewer → trace-viewer}/components/split-pane.d.ts +0 -0
  283. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.d.ts +0 -0
  284. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  285. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.d.ts +0 -0
  286. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  287. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.d.ts +0 -0
  288. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-element-width.d.ts +0 -0
  289. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-row-window.d.ts +0 -0
  290. package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  291. package/dist/components/{new-trace-viewer → trace-viewer}/search.d.ts +0 -0
  292. package/dist/components/{new-trace-viewer → trace-viewer}/utils.d.ts +0 -0
  293. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +0 -0
  294. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.test.ts +0 -0
  295. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.ts +0 -0
  296. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel.tsx +0 -0
  297. package/src/components/{new-trace-viewer → trace-viewer}/components/draggable-border.tsx +0 -0
  298. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  299. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +1 -1
  300. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +0 -0
  301. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  302. /package/src/components/{new-trace-viewer → trace-viewer}/components/pane-constants.ts +0 -0
  303. /package/src/components/{new-trace-viewer → trace-viewer}/components/span-markers.tsx +0 -0
  304. /package/src/components/{new-trace-viewer → trace-viewer}/components/split-pane.tsx +0 -0
  305. /package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  306. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  307. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.tsx +0 -0
  308. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-element-width.ts +0 -0
  309. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-row-window.ts +0 -0
  310. /package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +0 -0
  311. /package/src/components/{new-trace-viewer → trace-viewer}/search.ts +0 -0
  312. /package/src/components/{new-trace-viewer → trace-viewer}/utils.test.ts +0 -0
  313. /package/src/{components/trace-viewer/modules.d.ts → modules.d.ts} +0 -0
@@ -1,585 +0,0 @@
1
- import type { SpanNode, SpanNodeEvent } from '../types';
2
- import type { ResourceType } from './span-strategies';
3
-
4
- // ──────────────────────────────────────────────────────────────────────────
5
- // Segment types
6
- // ──────────────────────────────────────────────────────────────────────────
7
-
8
- /**
9
- * Visual status of a segment within a span bar.
10
- *
11
- * - queued: Waiting to start (hatched pattern)
12
- * - running: Actively executing (solid blue)
13
- * - failed: Attempt that ended in failure (soft red)
14
- * - retrying: Waiting between retry attempts (hatched pattern)
15
- * - succeeded: Final successful attempt (soft green)
16
- * - waiting: Passive waiting, e.g. hook waiting for payload (hatched pattern)
17
- * - sleeping: Sleep in progress (soft amber)
18
- * - received: Hook received a payload (soft blue)
19
- */
20
- export type SegmentStatus =
21
- | 'queued'
22
- | 'running'
23
- | 'failed'
24
- | 'retrying'
25
- | 'succeeded'
26
- | 'waiting'
27
- | 'sleeping'
28
- | 'received';
29
-
30
- export interface Segment {
31
- /** Fraction of span width where this segment starts (0–1) */
32
- startFraction: number;
33
- /** Fraction of span width where this segment ends (0–1) */
34
- endFraction: number;
35
- /** Visual status controlling color/pattern */
36
- status: SegmentStatus;
37
- }
38
-
39
- /**
40
- * A boundary between two segments, representing an event that caused
41
- * a transition. Rendered as a hoverable divider with a tooltip.
42
- */
43
- export interface SegmentBoundary {
44
- /** Fractional position along the span (0–1) */
45
- fraction: number;
46
- /** Display label for the tooltip (e.g. "step_started") */
47
- label: string;
48
- /** Formatted timestamp relative to span start */
49
- offsetMs: number;
50
- }
51
-
52
- // ──────────────────────────────────────────────────────────────────────────
53
- // CSS class mapping (segment status → module CSS class name)
54
- // ──────────────────────────────────────────────────────────────────────────
55
-
56
- /**
57
- * Maps a SegmentStatus to the CSS module class name to use.
58
- * These class names must exist in trace-viewer.module.css.
59
- */
60
- export const SEGMENT_CLASS_MAP: Record<SegmentStatus, string> = {
61
- queued: 'segQueued',
62
- running: 'segRunning',
63
- failed: 'segFailed',
64
- retrying: 'segRetrying',
65
- succeeded: 'segSucceeded',
66
- waiting: 'segWaiting',
67
- sleeping: 'segSleeping',
68
- received: 'segReceived',
69
- };
70
-
71
- // ──────────────────────────────────────────────────────────────────────────
72
- // Helpers
73
- // ──────────────────────────────────────────────────────────────────────────
74
-
75
- function clampFraction(value: number): number {
76
- return Math.max(0, Math.min(1, value));
77
- }
78
-
79
- function timeToFraction(
80
- time: number,
81
- spanStart: number,
82
- spanDuration: number
83
- ): number {
84
- if (spanDuration <= 0) return 0;
85
- return clampFraction((time - spanStart) / spanDuration);
86
- }
87
-
88
- /**
89
- * Sort events by timestamp ascending.
90
- */
91
- function sortedEvents(events: SpanNodeEvent[]): SpanNodeEvent[] {
92
- return [...events].sort((a, b) => a.timestamp - b.timestamp);
93
- }
94
-
95
- // ──────────────────────────────────────────────────────────────────────────
96
- // Step segments
97
- // ──────────────────────────────────────────────────────────────────────────
98
-
99
- /**
100
- * Compute segments for a step span.
101
- *
102
- * Timeline: [queued] → [attempt₁ (fail)] → [retry wait] → [attempt₂ (fail)] → ... → [attemptₙ (success)]
103
- *
104
- * Events used: step_started, step_retrying, step_failed, step_completed
105
- * The final segment is 'succeeded' if no trailing step_retrying/step_failed.
106
- */
107
- function computeStepSegments(node: SpanNode): Segment[] {
108
- const events = node.events ? sortedEvents(node.events) : [];
109
- const { startTime, duration } = node;
110
- const segments: Segment[] = [];
111
-
112
- if (duration <= 0) return segments;
113
-
114
- // Build a timeline of event boundaries
115
- interface EventMark {
116
- time: number;
117
- type: string;
118
- }
119
- const marks: EventMark[] = events
120
- .filter((e) =>
121
- [
122
- 'step_started',
123
- 'step_retrying',
124
- 'step_failed',
125
- 'step_completed',
126
- ].includes(e.event.name)
127
- )
128
- .map((e) => ({ time: e.timestamp, type: e.event.name }));
129
-
130
- if (marks.length === 0) {
131
- // No events — show entire span as running
132
- segments.push({ startFraction: 0, endFraction: 1, status: 'running' });
133
- return segments;
134
- }
135
-
136
- // Queued period: from span start to first event
137
- const firstMark = marks[0];
138
- const firstFraction = timeToFraction(firstMark.time, startTime, duration);
139
- if (firstFraction > 0.001) {
140
- segments.push({
141
- startFraction: 0,
142
- endFraction: firstFraction,
143
- status: 'queued',
144
- });
145
- }
146
-
147
- // Walk through events to build attempt/retry segments
148
- for (let i = 0; i < marks.length; i++) {
149
- const mark = marks[i];
150
- const markFraction = timeToFraction(mark.time, startTime, duration);
151
- const nextMark = marks[i + 1];
152
- const nextFraction = nextMark
153
- ? timeToFraction(nextMark.time, startTime, duration)
154
- : 1;
155
-
156
- if (mark.type === 'step_started') {
157
- // This is the start of an execution attempt.
158
- // It runs until the next event (step_retrying or step_failed) or end of span.
159
- const isLastMark = i === marks.length - 1;
160
- if (isLastMark) {
161
- // Last event is step_started — this attempt is either still running or succeeded
162
- segments.push({
163
- startFraction: markFraction,
164
- endFraction: 1,
165
- status: 'succeeded',
166
- });
167
- } else {
168
- // Attempt runs until the next event
169
- const nextType = nextMark.type;
170
- const attemptStatus: SegmentStatus =
171
- nextType === 'step_retrying' || nextType === 'step_failed'
172
- ? 'failed'
173
- : nextType === 'step_completed'
174
- ? 'succeeded'
175
- : 'running';
176
- segments.push({
177
- startFraction: markFraction,
178
- endFraction: nextFraction,
179
- status: attemptStatus,
180
- });
181
- }
182
- } else if (mark.type === 'step_retrying') {
183
- // Retry wait: from this event to the next step_started (or end)
184
- segments.push({
185
- startFraction: markFraction,
186
- endFraction: nextFraction,
187
- status: 'retrying',
188
- });
189
- } else if (mark.type === 'step_failed') {
190
- // Terminal failure: from this event to the end
191
- if (markFraction < 0.999) {
192
- segments.push({
193
- startFraction: markFraction,
194
- endFraction: 1,
195
- status: 'failed',
196
- });
197
- }
198
- } else if (mark.type === 'step_completed') {
199
- // Terminal success: do nothing here since the preceding step_started
200
- // segment already terminates at this marker.
201
- }
202
- }
203
-
204
- return segments;
205
- }
206
-
207
- // ──────────────────────────────────────────────────────────────────────────
208
- // Hook segments
209
- // ──────────────────────────────────────────────────────────────────────────
210
-
211
- /**
212
- * Compute segments for a hook span.
213
- *
214
- * Timeline: [waiting] → [received] → [disposed]
215
- */
216
- function computeHookSegments(node: SpanNode): Segment[] {
217
- const events = node.events ? sortedEvents(node.events) : [];
218
- const { startTime, duration } = node;
219
- const segments: Segment[] = [];
220
-
221
- if (duration <= 0) return segments;
222
-
223
- const receivedEvent = events.find((e) => e.event.name === 'hook_received');
224
- const disposedEvent = events.find((e) => e.event.name === 'hook_disposed');
225
-
226
- if (!receivedEvent && !disposedEvent) {
227
- // Still waiting
228
- segments.push({ startFraction: 0, endFraction: 1, status: 'waiting' });
229
- return segments;
230
- }
231
-
232
- const receivedFraction = receivedEvent
233
- ? timeToFraction(receivedEvent.timestamp, startTime, duration)
234
- : null;
235
- const disposedFraction = disposedEvent
236
- ? timeToFraction(disposedEvent.timestamp, startTime, duration)
237
- : null;
238
-
239
- // Waiting period (before received)
240
- if (receivedFraction !== null && receivedFraction > 0.001) {
241
- segments.push({
242
- startFraction: 0,
243
- endFraction: receivedFraction,
244
- status: 'waiting',
245
- });
246
- } else if (receivedFraction === null && disposedFraction !== null) {
247
- // Disposed without receiving — waiting the whole time
248
- segments.push({
249
- startFraction: 0,
250
- endFraction: disposedFraction,
251
- status: 'waiting',
252
- });
253
- }
254
-
255
- // Received period
256
- if (receivedFraction !== null) {
257
- const end = disposedFraction ?? 1;
258
- segments.push({
259
- startFraction: receivedFraction,
260
- endFraction: end,
261
- status: 'received',
262
- });
263
- }
264
-
265
- // Post-disposed (if there's remaining span after disposal)
266
- if (disposedFraction !== null && disposedFraction < 0.999) {
267
- segments.push({
268
- startFraction: disposedFraction,
269
- endFraction: 1,
270
- status: 'succeeded',
271
- });
272
- }
273
-
274
- return segments;
275
- }
276
-
277
- // ──────────────────────────────────────────────────────────────────────────
278
- // Sleep segments
279
- // ──────────────────────────────────────────────────────────────────────────
280
-
281
- /**
282
- * Compute segments for a sleep span.
283
- *
284
- * Timeline: [sleeping] → [completed]
285
- */
286
- function computeSleepSegments(node: SpanNode): Segment[] {
287
- const events = node.events ? sortedEvents(node.events) : [];
288
- const { startTime, duration } = node;
289
- const segments: Segment[] = [];
290
-
291
- if (duration <= 0) return segments;
292
-
293
- const completedEvent = events.find((e) => e.event.name === 'wait_completed');
294
-
295
- if (!completedEvent) {
296
- // Still sleeping
297
- segments.push({ startFraction: 0, endFraction: 1, status: 'sleeping' });
298
- return segments;
299
- }
300
-
301
- const completedFraction = timeToFraction(
302
- completedEvent.timestamp,
303
- startTime,
304
- duration
305
- );
306
-
307
- if (completedFraction > 0.001) {
308
- segments.push({
309
- startFraction: 0,
310
- endFraction: completedFraction,
311
- status: 'sleeping',
312
- });
313
- }
314
-
315
- segments.push({
316
- startFraction: completedFraction,
317
- endFraction: 1,
318
- status: 'succeeded',
319
- });
320
-
321
- return segments;
322
- }
323
-
324
- // ──────────────────────────────────────────────────────────────────────────
325
- // Run segments
326
- // ──────────────────────────────────────────────────────────────────────────
327
-
328
- /**
329
- * Compute segments for a run span.
330
- *
331
- * Timeline: [queued] → [running] → [completed/failed]
332
- *
333
- * The queued period is derived from activeStartTime (run.startedAt).
334
- * A synthetic run_started event is injected at that timestamp so
335
- * the boundary is hoverable in the trace viewer.
336
- */
337
- function computeRunSegments(node: SpanNode): Segment[] {
338
- const events = node.events ? sortedEvents(node.events) : [];
339
- const { startTime, duration, activeStartTime } = node;
340
- const segments: Segment[] = [];
341
-
342
- if (duration <= 0) return segments;
343
-
344
- // V1 runs (specVersion 1) don't emit run lifecycle events (run_created,
345
- // run_started, run_completed). Detect this by checking for the absence of
346
- // run_created — it's always the first event for v2 runs and is always
347
- // loaded in the first page, so its absence reliably signals a v1 run.
348
- // For v1, fall back to the run entity's status from span.attributes.data.
349
- const hasRunCreated = events.some((e) => e.event.name === 'run_created');
350
-
351
- if (!hasRunCreated) {
352
- const runData = node.span.attributes?.data as
353
- | Record<string, unknown>
354
- | undefined;
355
- const runStatus = runData?.status as string | undefined;
356
- return computeV1RunSegments(
357
- startTime,
358
- duration,
359
- activeStartTime,
360
- runStatus
361
- );
362
- }
363
-
364
- const failedEvent = events.find((e) => e.event.name === 'run_failed');
365
- const completedEvent = events.find((e) => e.event.name === 'run_completed');
366
-
367
- // Queued period (from span start to activeStartTime)
368
- let cursor = 0;
369
- if (activeStartTime && activeStartTime > startTime) {
370
- const queuedFraction = timeToFraction(activeStartTime, startTime, duration);
371
- if (queuedFraction > 0.001) {
372
- segments.push({
373
- startFraction: 0,
374
- endFraction: queuedFraction,
375
- status: 'queued',
376
- });
377
- cursor = queuedFraction;
378
- }
379
- }
380
-
381
- if (failedEvent) {
382
- const failedFraction = timeToFraction(
383
- failedEvent.timestamp,
384
- startTime,
385
- duration
386
- );
387
- // Running until failure
388
- if (failedFraction > cursor + 0.001) {
389
- segments.push({
390
- startFraction: cursor,
391
- endFraction: failedFraction,
392
- status: 'running',
393
- });
394
- }
395
- segments.push({
396
- startFraction: failedFraction,
397
- endFraction: 1,
398
- status: 'failed',
399
- });
400
- } else if (completedEvent) {
401
- const completedFraction = timeToFraction(
402
- completedEvent.timestamp,
403
- startTime,
404
- duration
405
- );
406
- if (completedFraction > cursor + 0.001) {
407
- segments.push({
408
- startFraction: cursor,
409
- endFraction: completedFraction,
410
- status: 'running',
411
- });
412
- }
413
- segments.push({
414
- startFraction: completedFraction,
415
- endFraction: 1,
416
- status: 'succeeded',
417
- });
418
- } else {
419
- // Running to completion (or terminal events haven't loaded yet)
420
- segments.push({
421
- startFraction: cursor,
422
- endFraction: 1,
423
- status: 'running',
424
- });
425
- }
426
-
427
- return segments;
428
- }
429
-
430
- /**
431
- * Compute segments for a v1 run using only the run entity's status and
432
- * activeStartTime (derived from run.startedAt). V1 runs have no run
433
- * lifecycle events, so we infer the visual segments from entity fields.
434
- */
435
- function computeV1RunSegments(
436
- startTime: number,
437
- duration: number,
438
- activeStartTime: number | undefined,
439
- runStatus: string | undefined
440
- ): Segment[] {
441
- const segments: Segment[] = [];
442
-
443
- let cursor = 0;
444
- if (activeStartTime && activeStartTime > startTime) {
445
- const queuedFraction = timeToFraction(activeStartTime, startTime, duration);
446
- if (queuedFraction > 0.001) {
447
- segments.push({
448
- startFraction: 0,
449
- endFraction: queuedFraction,
450
- status: 'queued',
451
- });
452
- cursor = queuedFraction;
453
- }
454
- }
455
-
456
- if (runStatus === 'failed') {
457
- segments.push({
458
- startFraction: cursor,
459
- endFraction: 1,
460
- status: 'failed',
461
- });
462
- } else if (runStatus === 'completed' || runStatus === 'cancelled') {
463
- segments.push({
464
- startFraction: cursor,
465
- endFraction: 1,
466
- status: 'succeeded',
467
- });
468
- } else {
469
- segments.push({
470
- startFraction: cursor,
471
- endFraction: 1,
472
- status: 'running',
473
- });
474
- }
475
-
476
- return segments;
477
- }
478
-
479
- // ──────────────────────────────────────────────────────────────────────────
480
- // Dispatcher
481
- // ──────────────────────────────────────────────────────────────────────────
482
-
483
- export interface SegmentResult {
484
- segments: Segment[];
485
- boundaries: SegmentBoundary[];
486
- }
487
-
488
- // ──────────────────────────────────────────────────────────────────────────
489
- // Boundary computation
490
- // ──────────────────────────────────────────────────────────────────────────
491
-
492
- /** Event names to human-readable labels */
493
- const EVENT_LABELS: Record<string, string> = {
494
- step_started: 'Started',
495
- step_retrying: 'Retrying',
496
- step_failed: 'Failed',
497
- hook_created: 'Created',
498
- hook_received: 'Received',
499
- hook_disposed: 'Resolved',
500
- wait_created: 'Sleep started',
501
- wait_completed: 'Sleep completed',
502
- run_completed: 'Completed',
503
- run_failed: 'Run failed',
504
- step_completed: 'Completed',
505
- };
506
-
507
- /**
508
- * Extract boundaries from a span's events. Each boundary sits at the
509
- * fractional position of a relevant event within the span duration.
510
- * Only includes events that are used as segment boundaries (not at the
511
- * very start or very end of the span, to avoid edge clutter).
512
- */
513
- function computeBoundaries(
514
- node: SpanNode,
515
- relevantEventNames: string[]
516
- ): SegmentBoundary[] {
517
- const events = node.events ? sortedEvents(node.events) : [];
518
- const { startTime, duration } = node;
519
-
520
- if (duration <= 0) return [];
521
-
522
- const boundaries: SegmentBoundary[] = [];
523
- for (const e of events) {
524
- if (!relevantEventNames.includes(e.event.name)) continue;
525
-
526
- const fraction = timeToFraction(e.timestamp, startTime, duration);
527
- // Skip boundaries at the very edges (< 1% or > 99%) to avoid clutter
528
- if (fraction < 0.01 || fraction > 0.99) continue;
529
-
530
- boundaries.push({
531
- fraction,
532
- label: EVENT_LABELS[e.event.name] ?? e.event.name,
533
- offsetMs: e.timestamp - startTime,
534
- });
535
- }
536
-
537
- return boundaries;
538
- }
539
-
540
- // ──────────────────────────────────────────────────────────────────────────
541
- // Dispatcher
542
- // ──────────────────────────────────────────────────────────────────────────
543
-
544
- /**
545
- * Compute the event-based segments and boundaries for a span based on its resource type.
546
- * Returns empty arrays for 'default' (generic OTEL) spans.
547
- */
548
- export function computeSegments(
549
- resourceType: ResourceType,
550
- node: SpanNode
551
- ): SegmentResult {
552
- switch (resourceType) {
553
- case 'step':
554
- return {
555
- segments: computeStepSegments(node),
556
- boundaries: computeBoundaries(node, [
557
- 'step_started',
558
- 'step_retrying',
559
- 'step_failed',
560
- 'step_completed',
561
- ]),
562
- };
563
- case 'hook':
564
- return {
565
- segments: computeHookSegments(node),
566
- boundaries: computeBoundaries(node, [
567
- 'hook_created',
568
- 'hook_received',
569
- 'hook_disposed',
570
- ]),
571
- };
572
- case 'sleep':
573
- return {
574
- segments: computeSleepSegments(node),
575
- boundaries: computeBoundaries(node, ['wait_created', 'wait_completed']),
576
- };
577
- case 'run':
578
- return {
579
- segments: computeRunSegments(node),
580
- boundaries: computeBoundaries(node, ['run_completed', 'run_failed']),
581
- };
582
- default:
583
- return { segments: [], boundaries: [] };
584
- }
585
- }