@workflow/web-shared 5.0.0-beta.38 → 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 (307) 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 +3 -5
  5. package/dist/components/index.d.ts.map +1 -1
  6. package/dist/components/index.js +3 -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.js +2 -2
  14. package/dist/components/trace-viewer/components/copy-button.d.ts.map +1 -0
  15. package/dist/components/trace-viewer/components/copy-button.js +27 -0
  16. package/dist/components/trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  17. package/dist/components/trace-viewer/components/detail-panel-width.js +67 -0
  18. package/dist/components/trace-viewer/components/detail-panel.d.ts.map +1 -0
  19. package/dist/components/trace-viewer/components/detail-panel.js +122 -0
  20. package/dist/components/trace-viewer/components/draggable-border.d.ts.map +1 -0
  21. package/dist/components/trace-viewer/components/draggable-border.js +140 -0
  22. package/dist/components/trace-viewer/components/event-list.d.ts.map +1 -0
  23. package/dist/components/trace-viewer/components/event-list.js +47 -0
  24. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  25. package/dist/components/trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  26. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  27. package/dist/components/trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  28. package/dist/components/trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  29. package/dist/components/trace-viewer/components/middle-truncate/truncate.js +101 -0
  30. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  31. package/dist/components/trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  32. package/dist/components/trace-viewer/components/minimap.d.ts.map +1 -0
  33. package/dist/components/trace-viewer/components/minimap.js +337 -0
  34. package/dist/components/trace-viewer/components/pane-constants.d.ts.map +1 -0
  35. package/dist/components/trace-viewer/components/pane-constants.js +16 -0
  36. package/dist/components/trace-viewer/components/span-markers.d.ts.map +1 -0
  37. package/dist/components/trace-viewer/components/span-markers.js +85 -0
  38. package/dist/components/trace-viewer/components/split-pane.d.ts.map +1 -0
  39. package/dist/components/trace-viewer/components/split-pane.js +41 -0
  40. package/dist/components/trace-viewer/components/timeline.d.ts.map +1 -0
  41. package/dist/components/trace-viewer/components/timeline.js +321 -0
  42. package/dist/components/trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  43. package/dist/components/trace-viewer/components/trace-shortcut-helper.js +55 -0
  44. package/dist/components/trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  45. package/dist/components/trace-viewer/components/trace-viewer-skeleton.js +26 -0
  46. package/dist/components/trace-viewer/components/use-element-width.d.ts.map +1 -0
  47. package/dist/components/trace-viewer/components/use-element-width.js +25 -0
  48. package/dist/components/trace-viewer/components/use-row-window.d.ts.map +1 -0
  49. package/dist/components/trace-viewer/components/use-row-window.js +107 -0
  50. package/dist/components/trace-viewer/context.d.ts +14 -182
  51. package/dist/components/trace-viewer/context.d.ts.map +1 -1
  52. package/dist/components/trace-viewer/context.js +44 -351
  53. package/dist/components/trace-viewer/icons.d.ts.map +1 -0
  54. package/dist/components/trace-viewer/icons.js +15 -0
  55. package/dist/components/trace-viewer/search.d.ts.map +1 -0
  56. package/dist/components/trace-viewer/search.js +134 -0
  57. package/dist/components/trace-viewer/trace-viewer.d.ts +7 -28
  58. package/dist/components/trace-viewer/trace-viewer.d.ts.map +1 -1
  59. package/dist/components/trace-viewer/trace-viewer.js +306 -356
  60. package/dist/components/trace-viewer/types.d.ts +2 -211
  61. package/dist/components/trace-viewer/types.d.ts.map +1 -1
  62. package/dist/components/trace-viewer/types.js +1 -1
  63. package/dist/components/trace-viewer/utils.d.ts.map +1 -0
  64. package/dist/components/trace-viewer/utils.js +430 -0
  65. package/dist/components/{trace-viewer-new.d.ts → trace-viewer.d.ts} +3 -3
  66. package/dist/components/trace-viewer.d.ts.map +1 -0
  67. package/dist/components/trace-viewer.js +21 -0
  68. package/dist/components/ui/alert.js +2 -2
  69. package/dist/components/ui/button.d.ts +1 -1
  70. package/dist/components/ui/button.d.ts.map +1 -1
  71. package/dist/components/ui/button.js +3 -3
  72. package/dist/components/ui/card.d.ts.map +1 -1
  73. package/dist/components/ui/card.js +3 -3
  74. package/dist/components/ui/error-card.js +2 -2
  75. package/dist/components/ui/error-stack-block.js +4 -4
  76. package/dist/components/ui/kbd.js +3 -3
  77. package/dist/components/ui/timestamp-tooltip.js +3 -3
  78. package/dist/components/workflow-traces/trace-span-construction.d.ts +1 -1
  79. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  80. package/dist/lib/trace-builder.d.ts +1 -1
  81. package/dist/lib/trace-builder.d.ts.map +1 -1
  82. package/dist/lib/trace-builder.js +1 -1
  83. package/dist/lib/trace-types.d.ts +54 -0
  84. package/dist/lib/trace-types.d.ts.map +1 -0
  85. package/dist/lib/trace-types.js +2 -0
  86. package/package.json +5 -5
  87. package/src/components/event-list-view.tsx +12 -9
  88. package/src/components/index.ts +3 -5
  89. package/src/components/sidebar/attribute-panel.tsx +46 -8
  90. package/src/components/sidebar/attributes-block.tsx +2 -2
  91. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  92. package/src/components/sidebar/entity-detail-panel.tsx +3 -3
  93. package/src/components/sidebar/events-list.tsx +1 -1
  94. package/src/components/stream-viewer.tsx +1 -1
  95. package/src/components/{new-trace-viewer → trace-viewer}/components/event-list.tsx +1 -1
  96. package/src/components/{new-trace-viewer → trace-viewer}/components/minimap.tsx +1 -4
  97. package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.tsx +2 -5
  98. package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.tsx +1 -1
  99. package/src/components/trace-viewer/context.tsx +63 -656
  100. package/src/components/trace-viewer/trace-viewer.tsx +563 -531
  101. package/src/components/trace-viewer/types.ts +2 -234
  102. package/src/components/{new-trace-viewer → trace-viewer}/utils.ts +2 -2
  103. package/src/components/{trace-viewer-new.tsx → trace-viewer.tsx} +5 -5
  104. package/src/components/ui/alert.tsx +1 -1
  105. package/src/components/ui/button.tsx +3 -3
  106. package/src/components/ui/card.tsx +2 -9
  107. package/src/components/ui/error-card.tsx +3 -3
  108. package/src/components/ui/error-stack-block.tsx +3 -3
  109. package/src/components/ui/kbd.tsx +2 -2
  110. package/src/components/ui/timestamp-tooltip.tsx +4 -4
  111. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  112. package/src/lib/trace-builder.ts +1 -1
  113. package/src/lib/trace-types.ts +56 -0
  114. package/dist/components/new-trace-viewer/components/copy-button.d.ts.map +0 -1
  115. package/dist/components/new-trace-viewer/components/copy-button.js +0 -27
  116. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +0 -1
  117. package/dist/components/new-trace-viewer/components/detail-panel-width.js +0 -67
  118. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +0 -1
  119. package/dist/components/new-trace-viewer/components/detail-panel.js +0 -122
  120. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +0 -1
  121. package/dist/components/new-trace-viewer/components/draggable-border.js +0 -140
  122. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +0 -1
  123. package/dist/components/new-trace-viewer/components/event-list.js +0 -47
  124. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +0 -1
  125. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +0 -54
  126. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +0 -1
  127. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +0 -81
  128. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +0 -1
  129. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +0 -101
  130. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +0 -1
  131. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +0 -114
  132. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +0 -1
  133. package/dist/components/new-trace-viewer/components/minimap.js +0 -337
  134. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +0 -1
  135. package/dist/components/new-trace-viewer/components/pane-constants.js +0 -16
  136. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +0 -1
  137. package/dist/components/new-trace-viewer/components/span-markers.js +0 -85
  138. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +0 -1
  139. package/dist/components/new-trace-viewer/components/split-pane.js +0 -41
  140. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +0 -1
  141. package/dist/components/new-trace-viewer/components/timeline.js +0 -321
  142. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +0 -1
  143. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +0 -55
  144. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +0 -1
  145. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +0 -26
  146. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +0 -1
  147. package/dist/components/new-trace-viewer/components/use-element-width.js +0 -25
  148. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +0 -1
  149. package/dist/components/new-trace-viewer/components/use-row-window.js +0 -107
  150. package/dist/components/new-trace-viewer/context.d.ts +0 -17
  151. package/dist/components/new-trace-viewer/context.d.ts.map +0 -1
  152. package/dist/components/new-trace-viewer/context.js +0 -48
  153. package/dist/components/new-trace-viewer/icons.d.ts.map +0 -1
  154. package/dist/components/new-trace-viewer/icons.js +0 -15
  155. package/dist/components/new-trace-viewer/search.d.ts.map +0 -1
  156. package/dist/components/new-trace-viewer/search.js +0 -134
  157. package/dist/components/new-trace-viewer/trace-viewer.d.ts +0 -11
  158. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +0 -1
  159. package/dist/components/new-trace-viewer/trace-viewer.js +0 -336
  160. package/dist/components/new-trace-viewer/types.d.ts +0 -3
  161. package/dist/components/new-trace-viewer/types.d.ts.map +0 -1
  162. package/dist/components/new-trace-viewer/types.js +0 -2
  163. package/dist/components/new-trace-viewer/utils.d.ts.map +0 -1
  164. package/dist/components/new-trace-viewer/utils.js +0 -430
  165. package/dist/components/run-trace-view.d.ts +0 -23
  166. package/dist/components/run-trace-view.d.ts.map +0 -1
  167. package/dist/components/run-trace-view.js +0 -11
  168. package/dist/components/trace-viewer/components/map.d.ts +0 -8
  169. package/dist/components/trace-viewer/components/map.d.ts.map +0 -1
  170. package/dist/components/trace-viewer/components/map.js +0 -162
  171. package/dist/components/trace-viewer/components/markers.d.ts +0 -23
  172. package/dist/components/trace-viewer/components/markers.d.ts.map +0 -1
  173. package/dist/components/trace-viewer/components/markers.js +0 -416
  174. package/dist/components/trace-viewer/components/node.d.ts +0 -35
  175. package/dist/components/trace-viewer/components/node.d.ts.map +0 -1
  176. package/dist/components/trace-viewer/components/node.js +0 -286
  177. package/dist/components/trace-viewer/components/search-input.d.ts +0 -9
  178. package/dist/components/trace-viewer/components/search-input.d.ts.map +0 -1
  179. package/dist/components/trace-viewer/components/search-input.js +0 -9
  180. package/dist/components/trace-viewer/components/search.d.ts +0 -3
  181. package/dist/components/trace-viewer/components/search.d.ts.map +0 -1
  182. package/dist/components/trace-viewer/components/search.js +0 -25
  183. package/dist/components/trace-viewer/components/span-content.d.ts +0 -19
  184. package/dist/components/trace-viewer/components/span-content.d.ts.map +0 -1
  185. package/dist/components/trace-viewer/components/span-content.js +0 -137
  186. package/dist/components/trace-viewer/components/span-detail-panel.d.ts +0 -10
  187. package/dist/components/trace-viewer/components/span-detail-panel.d.ts.map +0 -1
  188. package/dist/components/trace-viewer/components/span-detail-panel.js +0 -285
  189. package/dist/components/trace-viewer/components/span-segments.d.ts +0 -50
  190. package/dist/components/trace-viewer/components/span-segments.d.ts.map +0 -1
  191. package/dist/components/trace-viewer/components/span-segments.js +0 -445
  192. package/dist/components/trace-viewer/components/span-strategies.d.ts +0 -46
  193. package/dist/components/trace-viewer/components/span-strategies.d.ts.map +0 -1
  194. package/dist/components/trace-viewer/components/span-strategies.js +0 -108
  195. package/dist/components/trace-viewer/components/ui.d.ts +0 -28
  196. package/dist/components/trace-viewer/components/ui.d.ts.map +0 -1
  197. package/dist/components/trace-viewer/components/ui.js +0 -39
  198. package/dist/components/trace-viewer/components/zoom-button.d.ts +0 -3
  199. package/dist/components/trace-viewer/components/zoom-button.d.ts.map +0 -1
  200. package/dist/components/trace-viewer/components/zoom-button.js +0 -29
  201. package/dist/components/trace-viewer/components/zoom-icons.d.ts +0 -11
  202. package/dist/components/trace-viewer/components/zoom-icons.d.ts.map +0 -1
  203. package/dist/components/trace-viewer/components/zoom-icons.js +0 -11
  204. package/dist/components/trace-viewer/index.d.ts +0 -5
  205. package/dist/components/trace-viewer/index.d.ts.map +0 -1
  206. package/dist/components/trace-viewer/index.js +0 -4
  207. package/dist/components/trace-viewer/trace-viewer.module.css +0 -1465
  208. package/dist/components/trace-viewer/util/constants.d.ts +0 -9
  209. package/dist/components/trace-viewer/util/constants.d.ts.map +0 -1
  210. package/dist/components/trace-viewer/util/constants.js +0 -9
  211. package/dist/components/trace-viewer/util/scrollbar-width.d.ts +0 -2
  212. package/dist/components/trace-viewer/util/scrollbar-width.d.ts.map +0 -1
  213. package/dist/components/trace-viewer/util/scrollbar-width.js +0 -14
  214. package/dist/components/trace-viewer/util/tree.d.ts +0 -13
  215. package/dist/components/trace-viewer/util/tree.d.ts.map +0 -1
  216. package/dist/components/trace-viewer/util/tree.js +0 -227
  217. package/dist/components/trace-viewer/util/use-immediate-style.d.ts +0 -15
  218. package/dist/components/trace-viewer/util/use-immediate-style.d.ts.map +0 -1
  219. package/dist/components/trace-viewer/util/use-immediate-style.js +0 -23
  220. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts +0 -8
  221. package/dist/components/trace-viewer/util/use-streaming-spans.d.ts.map +0 -1
  222. package/dist/components/trace-viewer/util/use-streaming-spans.js +0 -345
  223. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts +0 -6
  224. package/dist/components/trace-viewer/util/use-trackpad-zoom.d.ts.map +0 -1
  225. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +0 -39
  226. package/dist/components/trace-viewer/worker.d.ts +0 -2
  227. package/dist/components/trace-viewer/worker.d.ts.map +0 -1
  228. package/dist/components/trace-viewer/worker.js +0 -109
  229. package/dist/components/trace-viewer-new.d.ts.map +0 -1
  230. package/dist/components/trace-viewer-new.js +0 -21
  231. package/dist/components/workflow-trace-view.d.ts +0 -39
  232. package/dist/components/workflow-trace-view.d.ts.map +0 -1
  233. package/dist/components/workflow-trace-view.js +0 -690
  234. package/dist/components/workflow-traces/trace-colors.d.ts +0 -15
  235. package/dist/components/workflow-traces/trace-colors.d.ts.map +0 -1
  236. package/dist/components/workflow-traces/trace-colors.js +0 -86
  237. package/src/components/new-trace-viewer/context.tsx +0 -93
  238. package/src/components/new-trace-viewer/trace-viewer.tsx +0 -632
  239. package/src/components/new-trace-viewer/types.ts +0 -2
  240. package/src/components/run-trace-view.tsx +0 -80
  241. package/src/components/trace-viewer/components/map.tsx +0 -226
  242. package/src/components/trace-viewer/components/markers.tsx +0 -612
  243. package/src/components/trace-viewer/components/node.tsx +0 -506
  244. package/src/components/trace-viewer/components/search-input.tsx +0 -52
  245. package/src/components/trace-viewer/components/search.tsx +0 -47
  246. package/src/components/trace-viewer/components/span-content.tsx +0 -247
  247. package/src/components/trace-viewer/components/span-detail-panel.tsx +0 -655
  248. package/src/components/trace-viewer/components/span-segments.ts +0 -585
  249. package/src/components/trace-viewer/components/span-strategies.ts +0 -205
  250. package/src/components/trace-viewer/components/ui.tsx +0 -156
  251. package/src/components/trace-viewer/components/zoom-button.tsx +0 -61
  252. package/src/components/trace-viewer/components/zoom-icons.tsx +0 -65
  253. package/src/components/trace-viewer/index.tsx +0 -4
  254. package/src/components/trace-viewer/trace-viewer.module.css +0 -1465
  255. package/src/components/trace-viewer/util/constants.ts +0 -8
  256. package/src/components/trace-viewer/util/scrollbar-width.ts +0 -13
  257. package/src/components/trace-viewer/util/tree.ts +0 -277
  258. package/src/components/trace-viewer/util/use-immediate-style.ts +0 -38
  259. package/src/components/trace-viewer/util/use-streaming-spans.ts +0 -426
  260. package/src/components/trace-viewer/util/use-trackpad-zoom.tsx +0 -51
  261. package/src/components/trace-viewer/worker.ts +0 -131
  262. package/src/components/workflow-trace-view.tsx +0 -1166
  263. package/src/components/workflow-traces/trace-colors.ts +0 -112
  264. package/dist/components/{new-trace-viewer → trace-viewer}/components/copy-button.d.ts +0 -0
  265. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.d.ts +0 -0
  266. package/dist/components/{new-trace-viewer → trace-viewer}/components/detail-panel.d.ts +0 -0
  267. package/dist/components/{new-trace-viewer → trace-viewer}/components/draggable-border.d.ts +0 -0
  268. package/dist/components/{new-trace-viewer → trace-viewer}/components/event-list.d.ts +0 -0
  269. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.d.ts +0 -0
  270. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.d.ts +0 -0
  271. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.d.ts +0 -0
  272. package/dist/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.d.ts +0 -0
  273. package/dist/components/{new-trace-viewer → trace-viewer}/components/minimap.d.ts +0 -0
  274. package/dist/components/{new-trace-viewer → trace-viewer}/components/pane-constants.d.ts +0 -0
  275. package/dist/components/{new-trace-viewer → trace-viewer}/components/span-markers.d.ts +0 -0
  276. package/dist/components/{new-trace-viewer → trace-viewer}/components/split-pane.d.ts +0 -0
  277. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.d.ts +0 -0
  278. package/dist/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  279. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.d.ts +0 -0
  280. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  281. package/dist/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.d.ts +0 -0
  282. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-element-width.d.ts +0 -0
  283. package/dist/components/{new-trace-viewer → trace-viewer}/components/use-row-window.d.ts +0 -0
  284. package/dist/components/{new-trace-viewer → trace-viewer}/icons.d.ts +0 -0
  285. package/dist/components/{new-trace-viewer → trace-viewer}/search.d.ts +0 -0
  286. package/dist/components/{new-trace-viewer → trace-viewer}/utils.d.ts +0 -0
  287. package/src/components/{new-trace-viewer → trace-viewer}/components/copy-button.tsx +0 -0
  288. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.test.ts +0 -0
  289. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel-width.ts +0 -0
  290. package/src/components/{new-trace-viewer → trace-viewer}/components/detail-panel.tsx +0 -0
  291. package/src/components/{new-trace-viewer → trace-viewer}/components/draggable-border.tsx +0 -0
  292. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/copy-selection.ts +0 -0
  293. package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/middle-truncate.tsx +1 -1
  294. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/truncate.ts +0 -0
  295. /package/src/components/{new-trace-viewer → trace-viewer}/components/middle-truncate/use-middle-truncate.ts +0 -0
  296. /package/src/components/{new-trace-viewer → trace-viewer}/components/pane-constants.ts +0 -0
  297. /package/src/components/{new-trace-viewer → trace-viewer}/components/span-markers.tsx +0 -0
  298. /package/src/components/{new-trace-viewer → trace-viewer}/components/split-pane.tsx +0 -0
  299. /package/src/components/{new-trace-viewer → trace-viewer}/components/timeline.module.css +0 -0
  300. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-shortcut-helper.module.css +0 -0
  301. /package/src/components/{new-trace-viewer → trace-viewer}/components/trace-viewer-skeleton.tsx +0 -0
  302. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-element-width.ts +0 -0
  303. /package/src/components/{new-trace-viewer → trace-viewer}/components/use-row-window.ts +0 -0
  304. /package/src/components/{new-trace-viewer → trace-viewer}/icons.tsx +0 -0
  305. /package/src/components/{new-trace-viewer → trace-viewer}/search.ts +0 -0
  306. /package/src/components/{new-trace-viewer → trace-viewer}/utils.test.ts +0 -0
  307. /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
- }