@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,506 +0,0 @@
1
- 'use client';
2
-
3
- import { clsx } from 'clsx';
4
- import type { CSSProperties, MutableRefObject, ReactNode } from 'react';
5
- import { memo, useEffect, useRef, useState } from 'react';
6
- import styles from '../trace-viewer.module.css';
7
- import type {
8
- MemoCache,
9
- MemoCacheKey,
10
- RootNode,
11
- ScrollSnapshot,
12
- SpanNode,
13
- VisibleSpan,
14
- VisibleSpanEvent,
15
- } from '../types';
16
- import { MARKER_HEIGHT, ROW_HEIGHT, ROW_PADDING } from '../util/constants';
17
- import { formatDuration, getHighResInMs } from '../util/timing';
18
- import { SpanContent } from './span-content';
19
- import { computeSegments } from './span-segments';
20
- import {
21
- getResourceType,
22
- getSpanLayout,
23
- type ResourceType,
24
- type SpanLayout,
25
- } from './span-strategies';
26
-
27
- export const getSpanColorClassName = (node: SpanNode): string => {
28
- if (node.isVercel) return String(styles.colorVercel);
29
- return String(styles[`color${node.resourceIndex % 5}` as 'color0']);
30
- };
31
-
32
- function getTerminalTimestamp(
33
- resourceType: ResourceType,
34
- node: VisibleSpan
35
- ): number | undefined {
36
- const events = node.events;
37
- if (!events?.length) return undefined;
38
-
39
- switch (resourceType) {
40
- case 'hook':
41
- for (let i = events.length; i--; ) {
42
- if (events[i].event.name === 'hook_disposed') {
43
- return events[i].timestamp;
44
- }
45
- }
46
- return undefined;
47
- case 'sleep':
48
- for (let i = events.length; i--; ) {
49
- if (events[i].event.name === 'wait_completed') {
50
- return events[i].timestamp;
51
- }
52
- }
53
- return undefined;
54
- case 'run':
55
- for (let i = events.length; i--; ) {
56
- const name = events[i].event.name;
57
- if (
58
- name === 'run_completed' ||
59
- name === 'run_failed' ||
60
- name === 'run_cancelled'
61
- ) {
62
- return events[i].timestamp;
63
- }
64
- }
65
- return undefined;
66
- case 'step':
67
- for (let i = events.length; i--; ) {
68
- const name = events[i].event.name;
69
- if (name === 'step_completed' || name === 'step_failed') {
70
- return events[i].timestamp;
71
- }
72
- if (name === 'step_started' || name === 'step_retrying') {
73
- return undefined;
74
- }
75
- }
76
- return undefined;
77
- default:
78
- return undefined;
79
- }
80
- }
81
-
82
- export const SpanNodes = memo(function SpanNodes({
83
- root,
84
- scale,
85
- spans,
86
- isLive = false,
87
- scrollSnapshotRef,
88
- cache,
89
- customSpanClassNameFunc,
90
- customSpanEventClassNameFunc,
91
- }: {
92
- root: RootNode;
93
- scale: number;
94
- spans: VisibleSpan[];
95
- isLive?: boolean;
96
- scrollSnapshotRef: MutableRefObject<ScrollSnapshot | undefined>;
97
- /** Not used in the body — exists solely to bust React.memo when the global memo cache changes. */
98
- cacheKey?: MemoCacheKey;
99
- cache: MemoCache;
100
- customSpanClassNameFunc?: (span: SpanNode) => string;
101
- customSpanEventClassNameFunc?: (event: VisibleSpanEvent) => string;
102
- }) {
103
- return spans.map((x) => (
104
- <SpanComponent
105
- cacheKey={cache.get(x.span.spanId)}
106
- customSpanEventClassNameFunc={customSpanEventClassNameFunc}
107
- customSpanClassNameFunc={customSpanClassNameFunc}
108
- key={x.span.spanId}
109
- node={x}
110
- root={root}
111
- scale={scale}
112
- traceIsLive={isLive}
113
- scrollSnapshotRef={scrollSnapshotRef}
114
- />
115
- ));
116
- });
117
-
118
- // ──────────────────────────────────────────────────────────────────────────
119
- // Compute inline styles from a SpanLayout
120
- // ──────────────────────────────────────────────────────────────────────────
121
-
122
- function getSpanStyle(
123
- layout: SpanLayout,
124
- node: VisibleSpan,
125
- root: RootNode,
126
- scale: number
127
- ): CSSProperties {
128
- // Use isExpanded (hovered or selected) for width expansion so that
129
- // selected small spans stay expanded and show their name.
130
- const expanded = layout.isExpanded;
131
- return {
132
- // Use actualWidth for CSS variable so hover expansion is accurate
133
- '--span-width': `${Math.max(layout.actualWidth, 1)}px`,
134
- minWidth: expanded ? layout.width : undefined,
135
- width: expanded ? undefined : layout.width,
136
- height: layout.height,
137
- maxWidth:
138
- expanded && !layout.isNearRightSide
139
- ? (root.endTime - node.startTime) * scale
140
- : undefined,
141
- containIntrinsicWidth: expanded ? undefined : layout.width,
142
- containIntrinsicHeight: layout.height,
143
- left: layout.isNearRightSide ? undefined : layout.left,
144
- right: layout.isNearRightSide
145
- ? (root.endTime - node.endTime) * scale
146
- : undefined,
147
- top: layout.top,
148
- } as CSSProperties;
149
- }
150
-
151
- // ──────────────────────────────────────────────────────────────────────────
152
- // SpanComponent
153
- // ──────────────────────────────────────────────────────────────────────────
154
-
155
- export const SpanComponent = memo(function SpanComponent({
156
- node,
157
- root,
158
- scale,
159
- traceIsLive = false,
160
- scrollSnapshotRef,
161
- customSpanClassNameFunc,
162
- customSpanEventClassNameFunc,
163
- }: {
164
- node: VisibleSpan;
165
- root: RootNode;
166
- scale: number;
167
- traceIsLive?: boolean;
168
- scrollSnapshotRef: MutableRefObject<ScrollSnapshot | undefined>;
169
- /** Not used in the body — exists solely to bust React.memo for this span. */
170
- cacheKey?: MemoCacheKey;
171
- customSpanClassNameFunc?: (span: SpanNode) => string;
172
- customSpanEventClassNameFunc?: (event: VisibleSpanEvent) => string;
173
- }): ReactNode {
174
- const ref = useRef<HTMLButtonElement>(null);
175
-
176
- useEffect(() => {
177
- node.ref = ref;
178
- return () => {
179
- node.ref = undefined;
180
- };
181
- }, [node]);
182
-
183
- const { span } = node;
184
- const resourceType = getResourceType(node);
185
- const [liveNow, setLiveNow] = useState(0);
186
-
187
- // Get custom class name from callback if provided
188
- const customClassName = customSpanClassNameFunc
189
- ? customSpanClassNameFunc(node)
190
- : '';
191
-
192
- // Workflow span types use colored segments + boundary line markers
193
- // Generic OTEL spans use diamond event markers
194
- const isWorkflowSpan = resourceType !== 'default';
195
-
196
- // Determine if this span is still active (live). We require the parent run
197
- // to be explicitly live to avoid completed/cancelled traces continuing to
198
- // grow due to timing heuristics.
199
- const data = span.attributes?.data as Record<string, unknown> | undefined;
200
- const terminalTimestamp = getTerminalTimestamp(resourceType, node);
201
- const hasTerminalEvent = terminalTimestamp != null;
202
- const isCompletedByData =
203
- resourceType === 'hook'
204
- ? Boolean(data?.disposedAt)
205
- : Boolean(data?.completedAt);
206
- const isCompleted = isCompletedByData || hasTerminalEvent;
207
- const isLive = traceIsLive && isWorkflowSpan && !isCompleted;
208
-
209
- useEffect(() => {
210
- if (!isLive) return;
211
- setLiveNow(Date.now());
212
- const interval = setInterval(() => {
213
- setLiveNow(Date.now());
214
- }, 250);
215
- return () => clearInterval(interval);
216
- }, [isLive]);
217
-
218
- const canonicalStartTime = getHighResInMs(span.startTime);
219
- const canonicalEndTime = getHighResInMs(span.endTime);
220
- const canonicalDuration = getHighResInMs(span.duration);
221
- const canonicalActiveStartTime = span.activeStartTime
222
- ? getHighResInMs(span.activeStartTime)
223
- : undefined;
224
-
225
- const durationMs =
226
- terminalTimestamp != null
227
- ? Math.max(0, terminalTimestamp - canonicalStartTime)
228
- : isLive
229
- ? Math.max(0, (liveNow || Date.now()) - canonicalStartTime)
230
- : canonicalDuration;
231
- const duration = node.isInstrumentationHint
232
- ? 'Get Started'
233
- : formatDuration(durationMs);
234
- const baseNode = {
235
- ...node,
236
- startTime: canonicalStartTime,
237
- endTime: canonicalEndTime,
238
- duration: canonicalDuration,
239
- activeStartTime: canonicalActiveStartTime,
240
- } as VisibleSpan;
241
- const segmentNode = isLive
242
- ? ({
243
- ...baseNode,
244
- duration: durationMs,
245
- endTime: canonicalStartTime + durationMs,
246
- } as VisibleSpan)
247
- : baseNode;
248
- const hasSegments =
249
- isWorkflowSpan &&
250
- computeSegments(resourceType, segmentNode).segments.length > 0;
251
- const layout = getSpanLayout(
252
- resourceType,
253
- segmentNode,
254
- root,
255
- scale,
256
- scrollSnapshotRef
257
- );
258
-
259
- // For live spans the data-level `node.duration` can be stale (from the last
260
- // fetch) while the visual width is growing via rAF. Recompute from real
261
- // elapsed time so that:
262
- // - height/isSmall classification stays correct (not shrunken to 40%)
263
- // - React-rendered width matches the rAF-driven width, preventing a brief
264
- // shrink→expand flash on re-render that breaks cursor hit-testing
265
- if (isLive) {
266
- const elapsed = durationMs;
267
- const liveActualWidth = elapsed * scale;
268
- const liveWidth = Math.max(liveActualWidth, 4);
269
- layout.actualWidth = liveActualWidth;
270
- layout.width = liveWidth;
271
- layout.isSmall = liveActualWidth < 64;
272
- layout.isHuge = liveActualWidth >= 500;
273
- if (!layout.isSmall) {
274
- layout.height = ROW_HEIGHT;
275
- layout.top = MARKER_HEIGHT + (ROW_HEIGHT + ROW_PADDING) * segmentNode.row;
276
- }
277
- }
278
-
279
- // Smoothly grow active span width at 60fps using wall clock time
280
- useEffect(() => {
281
- if (!isLive || !ref.current) return;
282
-
283
- let rafId = 0;
284
- const tick = (): void => {
285
- const $el = ref.current;
286
- if (!$el) return;
287
- const elapsed = Date.now() - canonicalStartTime;
288
- const w = Math.max(elapsed * scale, 2);
289
- $el.style.width = `${w}px`;
290
- $el.style.setProperty('--span-width', `${w}px`);
291
- rafId = requestAnimationFrame(tick);
292
- };
293
- rafId = requestAnimationFrame(tick);
294
- return () => cancelAnimationFrame(rafId);
295
- }, [isLive, canonicalStartTime, scale]);
296
-
297
- const renderNode = segmentNode;
298
-
299
- return (
300
- <>
301
- <button
302
- aria-label={`${span.name} - ${duration}`}
303
- className={clsx(
304
- styles.spanNode,
305
- layout.isHuge && styles.huge,
306
- layout.isSmall && styles.small,
307
- layout.isExpanded && styles.xHover,
308
- node.isHighlighted
309
- ? styles.colorHighlight
310
- : getSpanColorClassName(node),
311
- node.isHighlighted === false && styles.unlit,
312
- customClassName,
313
- hasSegments && styles.hasSegments
314
- )}
315
- data-span-id={span.spanId}
316
- data-start-time={segmentNode.startTime - root.startTime}
317
- data-right-side={layout.isNearRightSide}
318
- data-selected={node.isSelected ? '' : undefined}
319
- ref={ref}
320
- style={getSpanStyle(layout, segmentNode, root, scale)}
321
- type="button"
322
- >
323
- <SpanContent
324
- durationMs={durationMs}
325
- resourceType={resourceType}
326
- node={renderNode}
327
- layout={layout}
328
- />
329
- </button>
330
- {segmentNode.events && !layout.isSmall
331
- ? segmentNode.events.map((x) => (
332
- <SpanEventComponent
333
- customSpanEventClassNameFunc={customSpanEventClassNameFunc}
334
- event={x}
335
- key={x.key}
336
- node={segmentNode}
337
- root={root}
338
- scale={scale}
339
- asBoundary={isWorkflowSpan}
340
- />
341
- ))
342
- : null}
343
- </>
344
- );
345
- });
346
-
347
- // ──────────────────────────────────────────────────────────────────────────
348
- // SpanEventComponent
349
- // ──────────────────────────────────────────────────────────────────────────
350
-
351
- /** Human-readable labels for workflow event types */
352
- const BOUNDARY_LABELS: Record<string, string> = {
353
- step_started: 'Started',
354
- step_retrying: 'Retrying',
355
- step_failed: 'Failed',
356
- hook_created: 'Created',
357
- hook_received: 'Received',
358
- hook_disposed: 'Resolved',
359
- wait_created: 'Sleep started',
360
- wait_completed: 'Sleep completed',
361
- run_started: 'Started',
362
- run_completed: 'Completed',
363
- run_failed: 'Run failed',
364
- step_completed: 'Completed',
365
- attr_set: 'Attributes set',
366
- };
367
-
368
- export const SpanEventComponent = memo(function SpanEventComponent({
369
- event,
370
- node,
371
- root,
372
- scale,
373
- customSpanEventClassNameFunc,
374
- asBoundary = false,
375
- }: {
376
- event: VisibleSpanEvent;
377
- node: VisibleSpan;
378
- root: RootNode;
379
- scale: number;
380
- customSpanEventClassNameFunc?: (event: VisibleSpanEvent) => string;
381
- asBoundary?: boolean;
382
- }): ReactNode {
383
- const ref = useRef<HTMLDivElement>(null);
384
-
385
- useEffect(() => {
386
- event.ref = ref;
387
- return () => {
388
- event.ref = undefined;
389
- };
390
- }, [event]);
391
-
392
- const {
393
- event: { name },
394
- } = event;
395
- const timestamp = formatDuration(event.timestamp - root.startTime);
396
- const displayLabel = asBoundary ? (BOUNDARY_LABELS[name] ?? name) : name;
397
-
398
- // For boundary events, compute the duration of the phase.
399
- // "Forward" events (started, retrying) measure until the next event.
400
- // "Terminal" events (completed) measure from the previous started event.
401
- const isForwardEvent =
402
- asBoundary &&
403
- (name === 'step_started' ||
404
- name === 'run_started' ||
405
- name === 'step_retrying');
406
- const isTerminalEvent =
407
- asBoundary && (name === 'step_completed' || name === 'run_completed');
408
-
409
- let phaseDuration: string | null = null;
410
- let phaseLabel: string | null = null;
411
- if ((isForwardEvent || isTerminalEvent) && node.events) {
412
- const sortedNodeEvents = [...node.events].sort(
413
- (a, b) => a.timestamp - b.timestamp
414
- );
415
- const currentIdx = sortedNodeEvents.findIndex((e) => e.key === event.key);
416
-
417
- if (isTerminalEvent) {
418
- // Look backward to find the last step_started
419
- let prevStartTime: number | null = null;
420
- for (let i = currentIdx - 1; i >= 0; i--) {
421
- if (sortedNodeEvents[i].event.name === 'step_started') {
422
- prevStartTime = sortedNodeEvents[i].timestamp;
423
- break;
424
- }
425
- }
426
- if (prevStartTime !== null) {
427
- phaseDuration = formatDuration(event.timestamp - prevStartTime);
428
- phaseLabel = 'Executed';
429
- }
430
- } else {
431
- // Look forward to the next event
432
- const nextEvent = sortedNodeEvents[currentIdx + 1];
433
- const endTime = nextEvent ? nextEvent.timestamp : node.endTime;
434
- phaseDuration = formatDuration(endTime - event.timestamp);
435
- phaseLabel = name === 'step_retrying' ? 'Waited' : 'Executed';
436
- }
437
- }
438
-
439
- const left = (event.timestamp - root.startTime) * scale;
440
- const top = MARKER_HEIGHT + (ROW_HEIGHT + ROW_PADDING) * node.row;
441
- const isLeftAligned =
442
- node.duration <= 0 ||
443
- (event.timestamp - node.startTime) / node.duration < 0.5;
444
-
445
- // Get custom class name from callback if provided
446
- const customClassName = customSpanEventClassNameFunc
447
- ? customSpanEventClassNameFunc(event)
448
- : '';
449
-
450
- return (
451
- <div
452
- title={
453
- phaseDuration
454
- ? `${displayLabel} ${timestamp}\n${phaseLabel} ${phaseDuration}`
455
- : `${displayLabel} ${timestamp}`
456
- }
457
- className={clsx(
458
- styles.spanNodeEvent,
459
- customClassName,
460
- asBoundary && styles.boundaryMarker,
461
- node.isHighlighted
462
- ? styles.colorHighlight
463
- : getSpanColorClassName(node),
464
- node.isHighlighted === false && styles.unlit
465
- )}
466
- data-hovered={event.isHovered}
467
- ref={ref}
468
- style={
469
- {
470
- left,
471
- top,
472
- } as CSSProperties
473
- }
474
- >
475
- <div
476
- className={clsx(
477
- styles.hoverInfo,
478
- isLeftAligned ? styles.alignStart : styles.alignEnd
479
- )}
480
- >
481
- {asBoundary ? (
482
- <>
483
- <span className={styles.eventName}>{displayLabel}</span>
484
- <span className={styles.eventTimestamp}>{timestamp}</span>
485
- {phaseDuration ? (
486
- <>
487
- <span className={styles.eventName}>{phaseLabel}</span>
488
- <span className={styles.eventTimestamp}>{phaseDuration}</span>
489
- </>
490
- ) : null}
491
- </>
492
- ) : (
493
- <>
494
- <span className={styles.eventName}>{name}</span>
495
- <span className={styles.eventTimestamp}>{timestamp}</span>
496
- </>
497
- )}
498
- </div>
499
- {asBoundary ? (
500
- <div className={styles.boundaryLine} />
501
- ) : (
502
- <div className={styles.eventDiamond} />
503
- )}
504
- </div>
505
- );
506
- });
@@ -1,52 +0,0 @@
1
- import type { ChangeEventHandler, ReactNode } from 'react';
2
- import styles from '../trace-viewer.module.css';
3
-
4
- export function SearchInput({
5
- height,
6
- width,
7
- value,
8
- placeholder,
9
- onChange,
10
- }: {
11
- height: number | string;
12
- width?: number | string;
13
- value: string;
14
- placeholder?: string;
15
- onChange: ChangeEventHandler<HTMLInputElement>;
16
- }): ReactNode {
17
- return (
18
- <label className={styles.searchInputLabel}>
19
- <div className={styles.searchInputPrefix}>
20
- <MagnifyingGlassIcon />
21
- </div>
22
- <input
23
- type="search"
24
- value={value}
25
- placeholder={placeholder}
26
- onChange={onChange}
27
- style={{ height, width }}
28
- />
29
- </label>
30
- );
31
- }
32
-
33
- function MagnifyingGlassIcon(): ReactNode {
34
- return (
35
- <svg
36
- width={16}
37
- height={16}
38
- viewBox="0 0 16 16"
39
- fill="none"
40
- aria-hidden="true"
41
- focusable="false"
42
- >
43
- <circle cx="7" cy="7" r="4.5" stroke="currentColor" strokeWidth="1.5" />
44
- <path
45
- d="M11.5 11.5L14 14"
46
- stroke="currentColor"
47
- strokeWidth="1.5"
48
- strokeLinecap="round"
49
- />
50
- </svg>
51
- );
52
- }
@@ -1,47 +0,0 @@
1
- 'use client';
2
-
3
- import { type ReactNode, useEffect, useState } from 'react';
4
- import { useTraceViewer } from '../context';
5
- import styles from '../trace-viewer.module.css';
6
- import { SEARCH_HEIGHT } from '../util/constants';
7
- import { SearchInput } from './search-input';
8
-
9
- export function SearchBar(): ReactNode {
10
- return (
11
- <nav className={styles.searchBar}>
12
- <SearchInputWrapper />
13
- </nav>
14
- );
15
- }
16
-
17
- function SearchInputWrapper(): ReactNode {
18
- const { dispatch } = useTraceViewer();
19
- const [value, setValue] = useState('');
20
-
21
- useEffect(() => {
22
- const timeout = setTimeout(
23
- () =>
24
- dispatch({
25
- type: 'setFilter',
26
- filter: value,
27
- }),
28
- 100
29
- );
30
-
31
- return () => {
32
- clearTimeout(timeout);
33
- };
34
- }, [dispatch, value]);
35
-
36
- return (
37
- <div className={styles.searchInput}>
38
- <SearchInput
39
- height={SEARCH_HEIGHT}
40
- onChange={(e) => setValue(e.target.value)}
41
- placeholder="Search spans…"
42
- value={value}
43
- width="100%"
44
- />
45
- </div>
46
- );
47
- }