@workflow/web-shared 5.0.0-beta.0 → 5.0.0-beta.2

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 (106) hide show
  1. package/README.md +1 -1
  2. package/dist/components/error-boundary.js.map +1 -1
  3. package/dist/components/event-list-view.d.ts +3 -1
  4. package/dist/components/event-list-view.d.ts.map +1 -1
  5. package/dist/components/event-list-view.js +76 -70
  6. package/dist/components/event-list-view.js.map +1 -1
  7. package/dist/components/hook-actions.js.map +1 -1
  8. package/dist/components/index.d.ts +1 -1
  9. package/dist/components/index.d.ts.map +1 -1
  10. package/dist/components/index.js +1 -1
  11. package/dist/components/index.js.map +1 -1
  12. package/dist/components/run-trace-view.d.ts +2 -1
  13. package/dist/components/run-trace-view.d.ts.map +1 -1
  14. package/dist/components/run-trace-view.js +2 -2
  15. package/dist/components/run-trace-view.js.map +1 -1
  16. package/dist/components/sidebar/attribute-panel.d.ts +7 -1
  17. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  18. package/dist/components/sidebar/attribute-panel.js +36 -26
  19. package/dist/components/sidebar/attribute-panel.js.map +1 -1
  20. package/dist/components/sidebar/conversation-view.js.map +1 -1
  21. package/dist/components/sidebar/copyable-data-block.js.map +1 -1
  22. package/dist/components/sidebar/detail-card.js.map +1 -1
  23. package/dist/components/sidebar/entity-detail-panel.d.ts +5 -1
  24. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  25. package/dist/components/sidebar/entity-detail-panel.js +18 -16
  26. package/dist/components/sidebar/entity-detail-panel.js.map +1 -1
  27. package/dist/components/sidebar/events-list.d.ts +1 -1
  28. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  29. package/dist/components/sidebar/events-list.js +26 -18
  30. package/dist/components/sidebar/events-list.js.map +1 -1
  31. package/dist/components/sidebar/resolve-hook-modal.js.map +1 -1
  32. package/dist/components/stream-viewer.js.map +1 -1
  33. package/dist/components/trace-viewer/components/map.js.map +1 -1
  34. package/dist/components/trace-viewer/components/markers.js.map +1 -1
  35. package/dist/components/trace-viewer/components/node.js.map +1 -1
  36. package/dist/components/trace-viewer/components/search-input.js.map +1 -1
  37. package/dist/components/trace-viewer/components/search.js.map +1 -1
  38. package/dist/components/trace-viewer/components/span-content.js.map +1 -1
  39. package/dist/components/trace-viewer/components/span-detail-panel.js.map +1 -1
  40. package/dist/components/trace-viewer/components/span-segments.js.map +1 -1
  41. package/dist/components/trace-viewer/components/span-strategies.js.map +1 -1
  42. package/dist/components/trace-viewer/components/ui.js.map +1 -1
  43. package/dist/components/trace-viewer/components/zoom-button.js.map +1 -1
  44. package/dist/components/trace-viewer/components/zoom-icons.js.map +1 -1
  45. package/dist/components/trace-viewer/context.js.map +1 -1
  46. package/dist/components/trace-viewer/index.js.map +1 -1
  47. package/dist/components/trace-viewer/trace-viewer.js.map +1 -1
  48. package/dist/components/trace-viewer/types.js.map +1 -1
  49. package/dist/components/trace-viewer/util/constants.js.map +1 -1
  50. package/dist/components/trace-viewer/util/scrollbar-width.js.map +1 -1
  51. package/dist/components/trace-viewer/util/timing.js.map +1 -1
  52. package/dist/components/trace-viewer/util/tree.js.map +1 -1
  53. package/dist/components/trace-viewer/util/use-immediate-style.js.map +1 -1
  54. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +1 -1
  55. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +1 -1
  56. package/dist/components/trace-viewer/worker.js.map +1 -1
  57. package/dist/components/ui/alert.js.map +1 -1
  58. package/dist/components/ui/card.js.map +1 -1
  59. package/dist/components/ui/data-inspector.d.ts +17 -1
  60. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  61. package/dist/components/ui/data-inspector.js +116 -21
  62. package/dist/components/ui/data-inspector.js.map +1 -1
  63. package/dist/components/ui/decrypt-button.js.map +1 -1
  64. package/dist/components/ui/error-card.js.map +1 -1
  65. package/dist/components/ui/error-stack-block.js.map +1 -1
  66. package/dist/components/ui/inspector-theme.js.map +1 -1
  67. package/dist/components/ui/load-more-button.js.map +1 -1
  68. package/dist/components/ui/menu-dropdown.js.map +1 -1
  69. package/dist/components/ui/skeleton.js.map +1 -1
  70. package/dist/components/ui/spinner.js.map +1 -1
  71. package/dist/components/ui/timestamp-tooltip.js.map +1 -1
  72. package/dist/components/workflow-trace-view.d.ts +5 -1
  73. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  74. package/dist/components/workflow-trace-view.js +7 -2
  75. package/dist/components/workflow-trace-view.js.map +1 -1
  76. package/dist/components/workflow-traces/event-colors.js.map +1 -1
  77. package/dist/components/workflow-traces/trace-colors.js.map +1 -1
  78. package/dist/components/workflow-traces/trace-span-construction.js +1 -1
  79. package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
  80. package/dist/components/workflow-traces/trace-time-utils.js.map +1 -1
  81. package/dist/hooks/use-dark-mode.js.map +1 -1
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +1 -1
  85. package/dist/index.js.map +1 -1
  86. package/dist/lib/event-analysis.js.map +1 -1
  87. package/dist/lib/event-materialization.js.map +1 -1
  88. package/dist/lib/hydration.d.ts +9 -2
  89. package/dist/lib/hydration.d.ts.map +1 -1
  90. package/dist/lib/hydration.js +43 -14
  91. package/dist/lib/hydration.js.map +1 -1
  92. package/dist/lib/toast.js.map +1 -1
  93. package/dist/lib/trace-builder.js.map +1 -1
  94. package/dist/lib/utils.js.map +1 -1
  95. package/package.json +4 -4
  96. package/src/components/event-list-view.tsx +207 -193
  97. package/src/components/index.ts +6 -1
  98. package/src/components/run-trace-view.tsx +3 -0
  99. package/src/components/sidebar/attribute-panel.tsx +160 -109
  100. package/src/components/sidebar/entity-detail-panel.tsx +111 -96
  101. package/src/components/sidebar/events-list.tsx +42 -32
  102. package/src/components/ui/data-inspector.tsx +205 -31
  103. package/src/components/workflow-trace-view.tsx +14 -0
  104. package/src/components/workflow-traces/trace-span-construction.ts +1 -1
  105. package/src/index.ts +1 -0
  106. package/src/lib/hydration.ts +50 -13
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-trace-view.js","sourceRoot":"","sources":["../../src/components/workflow-trace-view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-trace-view.js","sourceRoot":"","sources":["../../src/components/workflow-trace-view.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';\nimport type { Event, Hook, Step, WorkflowRun } from '@workflow/world';\nimport {\n ChevronDown,\n ChevronUp,\n Clock,\n Copy,\n Info,\n Send,\n Type,\n X,\n XCircle,\n} from 'lucide-react';\nimport type { MouseEvent as ReactMouseEvent, ReactNode } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useToast } from '../lib/toast';\nimport { ErrorBoundary } from './error-boundary';\nimport {\n EntityDetailPanel,\n type SelectedSpanInfo,\n type SpanSelectionInfo,\n} from './sidebar/entity-detail-panel';\nimport { ResolveHookModal } from './sidebar/resolve-hook-modal';\nimport {\n TraceViewerContextProvider,\n TraceViewerTimeline,\n useTraceViewer,\n} from './trace-viewer';\nimport type { Span } from './trace-viewer/types';\nimport { Skeleton } from './ui/skeleton';\nimport { Spinner } from './ui/spinner';\nimport {\n getCustomSpanClassName,\n getCustomSpanEventClassName,\n} from './workflow-traces/trace-colors';\nimport { buildTrace, type TraceWithMeta } from '../lib/trace-builder';\n\n/**\n * While a run is live, continuously grow root.duration and rescale so the\n * trace always fits within the viewport. Individual span widths are grown\n * by each SpanComponent's own useEffect (see node.tsx).\n */\nfunction useLiveTick(isLive: boolean): void {\n const { state, dispatch } = useTraceViewer();\n const stateRef = useRef(state);\n stateRef.current = state;\n\n useEffect(() => {\n if (!isLive) return;\n\n // Grow root.duration on every frame so span rAFs see the latest time\n let rafId = 0;\n const tick = (): void => {\n const { root } = stateRef.current;\n if (root.startTime) {\n const nowMs = Date.now();\n if (nowMs > root.endTime) {\n root.endTime = nowMs;\n root.duration = root.endTime - root.startTime;\n }\n }\n rafId = requestAnimationFrame(tick);\n };\n rafId = requestAnimationFrame(tick);\n\n // Re-scale smoothly so the trace fits the viewport as it grows.\n // We dispatch detectBaseScale only when the computed baseScale has\n // changed enough to matter visually (>0.1% shift), avoiding\n // unnecessary React re-renders while keeping things smooth.\n let scaleRafId = 0;\n let lastBaseScale = 0;\n const scaleTick = (): void => {\n const s = stateRef.current;\n if (s.root.duration > 0) {\n const newBaseScale = (s.width - s.scrollbarWidth) / s.root.duration;\n const delta = Math.abs(newBaseScale - lastBaseScale);\n if (delta > lastBaseScale * 0.001 || lastBaseScale === 0) {\n lastBaseScale = newBaseScale;\n dispatch({ type: 'detectBaseScale' });\n }\n }\n scaleRafId = requestAnimationFrame(scaleTick);\n };\n scaleRafId = requestAnimationFrame(scaleTick);\n\n return () => {\n cancelAnimationFrame(rafId);\n cancelAnimationFrame(scaleRafId);\n };\n }, [isLive, dispatch]);\n}\n\nconst DEFAULT_PANEL_WIDTH = 450;\nconst MIN_PANEL_WIDTH = 240;\n\n// ──────────────────────────────────────────────────────────────────────────\n// Right-click context menu for spans\n// ──────────────────────────────────────────────────────────────────────────\n\ntype ResourceType = 'sleep' | 'step' | 'hook' | 'run' | 'unknown';\n\ninterface ContextMenuState {\n x: number;\n y: number;\n spanId: string;\n spanName: string;\n resourceType: ResourceType;\n /** Whether the span represents an active/pending resource (not yet completed) */\n isActive: boolean;\n}\n\ninterface ContextMenuItem {\n label: string;\n icon?: ReactNode;\n action: () => void;\n destructive?: boolean;\n disabled?: boolean;\n}\n\nfunction SpanContextMenu({\n menu,\n items,\n onClose,\n}: {\n menu: ContextMenuState;\n items: ContextMenuItem[];\n onClose: () => void;\n}): ReactNode {\n const menuRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n const handleClick = (e: MouseEvent): void => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n onClose();\n }\n };\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n onClose();\n }\n };\n const handleScroll = (): void => {\n onClose();\n };\n // Use a timeout so we don't close immediately from the same event\n const timeout = setTimeout(() => {\n window.addEventListener('mousedown', handleClick);\n window.addEventListener('keydown', handleKeyDown);\n window.addEventListener('scroll', handleScroll, true);\n }, 0);\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('mousedown', handleClick);\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, [onClose]);\n\n // Adjust position if menu would overflow viewport\n const [adjustedPos, setAdjustedPos] = useState({ x: menu.x, y: menu.y });\n useEffect(() => {\n const el = menuRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n let { x, y } = menu;\n if (rect.right > window.innerWidth) {\n x = window.innerWidth - rect.width - 8;\n }\n if (rect.bottom > window.innerHeight) {\n y = window.innerHeight - rect.height - 8;\n }\n if (x !== menu.x || y !== menu.y) {\n setAdjustedPos({ x, y });\n }\n }, [menu]);\n\n if (items.length === 0) return null;\n\n return createPortal(\n <div\n ref={menuRef}\n style={{\n position: 'fixed',\n left: adjustedPos.x,\n top: adjustedPos.y,\n zIndex: 99999,\n boxShadow: 'var(--ds-shadow-menu)',\n borderRadius: 12,\n background: 'var(--ds-background-100)',\n padding: 'var(--geist-space-gap-quarter, 4px)',\n fontSize: 14,\n minWidth: 180,\n overflowX: 'hidden',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n display: 'block',\n color: 'var(--ds-gray-900)',\n fontSize: '0.75rem',\n padding: 'var(--geist-gap-quarter, 4px) var(--geist-space-2x, 8px)',\n fontWeight: 500,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: 240,\n borderBottom: '1px solid var(--ds-gray-alpha-400)',\n marginBottom: 4,\n }}\n >\n {menu.spanName}\n </div>\n {items.map((item) => (\n <button\n key={item.label}\n type=\"button\"\n style={{\n outline: 'none',\n cursor: item.disabled ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '0 var(--geist-space-2x, 8px)',\n height: 40,\n textDecoration: 'none',\n borderRadius: 6,\n color: item.destructive\n ? 'var(--ds-red-900)'\n : 'var(--ds-gray-1000)',\n width: '100%',\n background: 'transparent',\n border: 'none',\n fontSize: 14,\n textAlign: 'left',\n opacity: item.disabled ? 0.4 : 1,\n transition: 'background 0.15s',\n }}\n disabled={item.disabled}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLButtonElement).style.background =\n 'var(--ds-gray-alpha-100)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.background =\n 'transparent';\n }}\n onClick={() => {\n item.action();\n onClose();\n }}\n >\n {item.icon ?? null}\n {item.label}\n </button>\n ))}\n </div>,\n document.body\n );\n}\n\n/** Inner wrapper that has access to the TraceViewer context */\nfunction TraceViewerWithContextMenu({\n trace,\n run,\n isLive,\n onWakeUpSleep,\n onCancelRun,\n onResolveHook,\n onLoadMoreSpans,\n hasMoreSpans = false,\n isLoadingMoreSpans = false,\n children,\n}: {\n trace: { spans: Span[] };\n run: WorkflowRun;\n isLive: boolean;\n onWakeUpSleep?: (\n runId: string,\n correlationId: string\n ) => Promise<{ stoppedCount: number }>;\n onCancelRun?: (runId: string) => Promise<void>;\n onResolveHook?: (\n hookToken: string,\n payload: unknown,\n hook?: Hook\n ) => Promise<void>;\n onLoadMoreSpans?: () => void | Promise<void>;\n hasMoreSpans?: boolean;\n isLoadingMoreSpans?: boolean;\n children: ReactNode;\n}): ReactNode {\n const toast = useToast();\n const { state, dispatch } = useTraceViewer();\n\n // Drive active span widths at 60fps without React re-renders\n useLiveTick(isLive);\n const [contextMenu, setContextMenu] = useState<ContextMenuState | null>(null);\n const [resolveHookTarget, setResolveHookTarget] = useState<{\n hookId: string;\n token: string;\n } | null>(null);\n const [resolvingHook, setResolvingHook] = useState(false);\n // Track hooks resolved in this session so the context menu item hides immediately\n const [resolvedHookIds, setResolvedHookIds] = useState<Set<string>>(\n new Set()\n );\n\n // Build a lookup map: spanId -> span\n const spanLookup = useMemo(() => {\n const map = new Map<string, Span>();\n for (const span of trace.spans) {\n map.set(span.spanId, span);\n }\n return map;\n }, [trace.spans]);\n\n const handleResolveHook = useCallback(\n async (payload: unknown) => {\n if (resolvingHook || !resolveHookTarget || !onResolveHook) return;\n if (!resolveHookTarget.token) {\n toast.error('Unable to resolve hook', {\n description:\n 'Missing hook token. Try refreshing the run data and retry.',\n });\n return;\n }\n try {\n setResolvingHook(true);\n await onResolveHook(resolveHookTarget.token, payload);\n toast.success('Hook resolved', {\n description: 'The payload has been sent and the hook resolved.',\n });\n // Mark this hook as resolved locally so the menu item hides immediately\n setResolvedHookIds((prev) =>\n new Set(prev).add(resolveHookTarget.hookId)\n );\n setResolveHookTarget(null);\n } catch (err) {\n console.error('Failed to resolve hook:', err);\n toast.error('Failed to resolve hook', {\n description:\n err instanceof Error ? err.message : 'An unknown error occurred',\n });\n } finally {\n setResolvingHook(false);\n }\n },\n [onResolveHook, resolveHookTarget, resolvingHook]\n );\n\n const handleContextMenu = useCallback(\n (e: ReactMouseEvent | MouseEvent): void => {\n const target = e.target as HTMLElement;\n const $button = target.closest<HTMLButtonElement>('[data-span-id]');\n if (!$button) return;\n\n const spanId = $button.dataset.spanId;\n if (!spanId) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n const span = spanLookup.get(spanId);\n if (!span) return;\n\n const resourceType =\n (span.attributes.resource as ResourceType) ?? 'unknown';\n const spanData = span.attributes.data as\n | Record<string, unknown>\n | undefined;\n const isActive = !spanData?.completedAt && !spanData?.disposedAt;\n\n setContextMenu({\n x: e.clientX,\n y: e.clientY,\n spanId,\n spanName: span.name,\n resourceType,\n isActive,\n });\n },\n [spanLookup]\n );\n\n const containerRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const $container = containerRef.current;\n if (!$container) return;\n\n const onContextMenu = (event: MouseEvent): void => {\n handleContextMenu(event);\n };\n $container.addEventListener('contextmenu', onContextMenu);\n\n return () => {\n $container.removeEventListener('contextmenu', onContextMenu);\n };\n }, [handleContextMenu]);\n\n const loadingMoreRef = useRef(false);\n useEffect(() => {\n const timeline = state.timelineRef.current;\n if (!timeline || !onLoadMoreSpans || !hasMoreSpans) {\n return;\n }\n\n const thresholdPx = 200;\n const maybeLoadMore = () => {\n if (loadingMoreRef.current || isLoadingMoreSpans || !hasMoreSpans) {\n return;\n }\n const remaining =\n timeline.scrollHeight - timeline.scrollTop - timeline.clientHeight;\n if (remaining > thresholdPx) {\n return;\n }\n\n loadingMoreRef.current = true;\n Promise.resolve(onLoadMoreSpans()).finally(() => {\n loadingMoreRef.current = false;\n });\n };\n\n timeline.addEventListener('scroll', maybeLoadMore);\n maybeLoadMore();\n return () => {\n timeline.removeEventListener('scroll', maybeLoadMore);\n };\n }, [state.timelineRef, onLoadMoreSpans, hasMoreSpans, isLoadingMoreSpans]);\n\n const closeMenu = useCallback(() => {\n setContextMenu(null);\n }, []);\n\n const getMenuItems = useCallback(\n (menu: ContextMenuState): ContextMenuItem[] => {\n const items: ContextMenuItem[] = [];\n\n // Sleep-specific: Wake Up (only on active runs)\n const isRunActive = !run.completedAt;\n if (\n menu.resourceType === 'sleep' &&\n menu.isActive &&\n isRunActive &&\n onWakeUpSleep\n ) {\n items.push({\n label: 'Wake Up Sleep',\n icon: <Clock className=\"h-3.5 w-3.5\" />,\n action: () => {\n onWakeUpSleep(run.runId, menu.spanId)\n .then((result) => {\n if (result.stoppedCount > 0) {\n toast.success('Sleep woken up', {\n description: `Woke up ${String(result.stoppedCount)} sleep${result.stoppedCount > 1 ? 's' : ''}`,\n });\n } else {\n toast.info('No active sleeps found', {\n description: 'The sleep may have already completed.',\n });\n }\n })\n .catch((err: unknown) => {\n toast.error('Failed to wake up sleep', {\n description:\n err instanceof Error\n ? err.message\n : 'An unknown error occurred',\n });\n });\n },\n });\n }\n\n // Hook-specific: Resolve Hook (only on active, unresolved hooks)\n if (menu.resourceType === 'hook' && isRunActive && onResolveHook) {\n const span = spanLookup.get(menu.spanId);\n const hookData = span?.attributes?.data as\n | { token?: string; disposedAt?: unknown }\n | undefined;\n // Check data-level disposedAt, span events, AND local resolved state\n const isDisposed =\n Boolean(hookData?.disposedAt) ||\n Boolean(span?.events?.some((e) => e.name === 'hook_disposed')) ||\n resolvedHookIds.has(menu.spanId);\n if (hookData?.token && !isDisposed) {\n items.push({\n label: 'Resolve Hook',\n icon: <Send className=\"h-3.5 w-3.5\" />,\n action: () => {\n setResolveHookTarget({\n hookId: menu.spanId,\n token: hookData.token!,\n });\n },\n });\n }\n }\n\n // Run-specific: Cancel (only on active runs)\n if (menu.resourceType === 'run' && isRunActive && onCancelRun) {\n items.push({\n label: 'Cancel Run',\n icon: <XCircle className=\"h-3.5 w-3.5\" />,\n destructive: true,\n action: () => {\n onCancelRun(run.runId).catch((err: unknown) => {\n toast.error('Failed to cancel run', {\n description:\n err instanceof Error\n ? err.message\n : 'An unknown error occurred',\n });\n });\n },\n });\n }\n\n // Common actions\n items.push({\n label: 'View Details',\n icon: <Info className=\"h-3.5 w-3.5\" />,\n action: () => {\n dispatch({ type: 'select', id: menu.spanId });\n },\n });\n\n items.push({\n label: 'Copy Name',\n icon: <Type className=\"h-3.5 w-3.5\" />,\n action: () => {\n navigator.clipboard\n .writeText(menu.spanName)\n .then(() => {\n toast.success('Name copied to clipboard');\n })\n .catch(() => {\n toast.error('Failed to copy name');\n });\n },\n });\n\n items.push({\n label: 'Copy ID',\n icon: <Copy className=\"h-3.5 w-3.5\" />,\n action: () => {\n navigator.clipboard\n .writeText(menu.spanId)\n .then(() => {\n toast.success('ID copied to clipboard');\n })\n .catch(() => {\n toast.error('Failed to copy ID');\n });\n },\n });\n\n return items;\n },\n [\n dispatch,\n onWakeUpSleep,\n onCancelRun,\n onResolveHook,\n spanLookup,\n resolvedHookIds,\n run.runId,\n run.completedAt,\n ]\n );\n\n return (\n <div className=\"relative w-full h-full\" ref={containerRef}>\n {children}\n {contextMenu ? (\n <SpanContextMenu\n menu={contextMenu}\n items={getMenuItems(contextMenu)}\n onClose={closeMenu}\n />\n ) : null}\n <ResolveHookModal\n isOpen={resolveHookTarget !== null}\n onClose={() => setResolveHookTarget(null)}\n onSubmit={handleResolveHook}\n isSubmitting={resolvingHook}\n />\n </div>\n );\n}\n\n/** Re-export SpanSelectionInfo for consumers */\nexport type { SpanSelectionInfo };\n\n// ---------------------------------------------------------------------------\n// Bridge: reads selected span from trace viewer context and notifies parent\n// ---------------------------------------------------------------------------\n\n/**\n * Bridge component that lives INSIDE the TraceViewerContextProvider and\n * reads the selected span info, passing it up to the parent via callback.\n * This allows the parent to render the detail panel OUTSIDE the context.\n */\nfunction SelectionBridge({\n onSelectionChange,\n}: {\n onSelectionChange: (info: SelectedSpanInfo | null) => void;\n}) {\n const { state } = useTraceViewer();\n const { selected } = state;\n const onSelectionChangeRef = useRef(onSelectionChange);\n onSelectionChangeRef.current = onSelectionChange;\n const prevSpanIdRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n const currentSpanId = selected?.span.spanId;\n if (currentSpanId === prevSpanIdRef.current) return;\n prevSpanIdRef.current = currentSpanId;\n\n if (selected) {\n onSelectionChangeRef.current({\n data: selected.span.attributes?.data,\n resource: selected.span.attributes?.resource as string | undefined,\n spanId: selected.span.spanId,\n });\n } else {\n onSelectionChangeRef.current(null);\n }\n }, [selected]);\n\n return null;\n}\n\n/**\n * Bridge component to deselect from outside the context.\n */\nfunction DeselectBridge({ triggerDeselect }: { triggerDeselect: number }) {\n const { dispatch } = useTraceViewer();\n\n useEffect(() => {\n if (triggerDeselect > 0) {\n dispatch({ type: 'deselect' });\n }\n }, [triggerDeselect, dispatch]);\n\n return null;\n}\n\n/**\n * Bridge component to select a span from outside the context.\n */\nfunction SelectBridge({\n selectRequest,\n}: {\n selectRequest: { id: string; token: number } | null;\n}) {\n const { dispatch } = useTraceViewer();\n\n useEffect(() => {\n if (selectRequest?.id) {\n dispatch({ type: 'select', id: selectRequest.id });\n }\n }, [dispatch, selectRequest]);\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Panel chrome (header with name/duration, close button)\n// ---------------------------------------------------------------------------\n\nfunction PanelResizeHandle({\n onResize,\n}: {\n onResize: (deltaX: number) => void;\n}) {\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n let lastX = e.clientX;\n const onPointerMove = (moveEvent: PointerEvent) => {\n const deltaX = lastX - moveEvent.clientX;\n lastX = moveEvent.clientX;\n onResize(deltaX);\n };\n const onPointerUp = () => {\n document.removeEventListener('pointermove', onPointerMove);\n document.removeEventListener('pointerup', onPointerUp);\n };\n document.addEventListener('pointermove', onPointerMove);\n document.addEventListener('pointerup', onPointerUp);\n },\n [onResize]\n );\n\n return (\n <div\n className=\"absolute left-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-blue-400/50 z-10\"\n onPointerDown={handlePointerDown}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Trace viewer footer — loading / waiting indicator\n// ---------------------------------------------------------------------------\n\nfunction TraceViewerFooter({\n hasMore,\n isLive,\n isInitialLoading,\n}: {\n hasMore: boolean;\n isLive: boolean;\n isInitialLoading: boolean;\n}): ReactNode {\n const style = { color: 'var(--ds-gray-900)' };\n if (hasMore || isInitialLoading) {\n return (\n <div\n className=\"flex items-center justify-center gap-2 py-3 text-xs\"\n style={style}\n >\n <Spinner size={14} />\n Loading more events…\n </div>\n );\n }\n if (isLive) {\n return (\n <div\n className=\"flex items-center justify-center py-3 text-xs\"\n style={style}\n >\n Waiting for more events…\n </div>\n );\n }\n return (\n <div\n className=\"flex items-center justify-center py-3 text-xs\"\n style={style}\n >\n End of run\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Main component\n// ---------------------------------------------------------------------------\n\nexport const WorkflowTraceViewer = ({\n run,\n events,\n isLoading,\n error,\n spanDetailData,\n spanDetailLoading,\n spanDetailError,\n onWakeUpSleep,\n onResolveHook,\n onCancelRun,\n onStreamClick,\n onRunClick,\n onSpanSelect,\n onLoadEventData,\n onLoadMoreSpans,\n hasMoreSpans = false,\n isLoadingMoreSpans = false,\n encryptionKey,\n onDecrypt,\n isDecrypting = false,\n hasEncryptedData = false,\n}: {\n run: WorkflowRun;\n events: Event[];\n isLoading?: boolean;\n error?: Error | null;\n spanDetailData?: WorkflowRun | Step | Hook | Event | null;\n spanDetailLoading?: boolean;\n spanDetailError?: Error | null;\n onWakeUpSleep?: (\n runId: string,\n correlationId: string\n ) => Promise<{ stoppedCount: number }>;\n onResolveHook?: (\n hookToken: string,\n payload: unknown,\n hook?: Hook\n ) => Promise<void>;\n /** Callback to cancel the current run */\n onCancelRun?: (runId: string) => Promise<void>;\n /** Callback when a stream reference is clicked in the detail panel */\n onStreamClick?: (streamId: string) => void;\n /** Callback when a run reference is clicked in the detail panel */\n onRunClick?: (runId: string) => void;\n /** Callback when a span is selected. */\n onSpanSelect?: (info: SpanSelectionInfo) => void;\n /** Callback to load event data for a specific event (lazy loading in sidebar) */\n onLoadEventData?: (\n correlationId: string,\n eventId: string\n ) => Promise<unknown | null>;\n /** Load next trace page when vertical scroll reaches bottom. */\n onLoadMoreSpans?: () => void | Promise<void>;\n /** Whether trace pagination has more data to load. */\n hasMoreSpans?: boolean;\n /** Whether trace pagination is currently fetching another page. */\n isLoadingMoreSpans?: boolean;\n /** Encryption key (available after Decrypt), threaded to event list for re-loading */\n encryptionKey?: Uint8Array;\n /** Callback to initiate decryption of encrypted run data */\n onDecrypt?: () => void;\n /** Whether the encryption key is currently being fetched */\n isDecrypting?: boolean;\n /** Run-level hint: the run contains encrypted data (from probe). */\n hasEncryptedData?: boolean;\n}) => {\n const toast = useToast();\n const [selectedSpan, setSelectedSpan] = useState<SelectedSpanInfo | null>(\n null\n );\n const [panelWidth, setPanelWidth] = useState(DEFAULT_PANEL_WIDTH);\n const [deselectTrigger, setDeselectTrigger] = useState(0);\n const [selectRequest, setSelectRequest] = useState<{\n id: string;\n token: number;\n } | null>(null);\n\n const isLive = Boolean(run && !run.completedAt);\n\n // Build trace only when actual data changes — no timer-driven rebuilds.\n // Active span widths are animated imperatively by useLiveTick at 60fps.\n const traceWithMeta: TraceWithMeta | undefined = useMemo(() => {\n if (!run?.runId) {\n return undefined;\n }\n return buildTrace(run, events, new Date());\n // eslint-disable-next-line react-hooks/exhaustive-deps -- `new Date()` is intentionally not a dep; useLiveTick handles live growth\n }, [run, events]);\n const trace = traceWithMeta;\n\n useEffect(() => {\n if (error && !isLoading) {\n console.error(error);\n toast.error('Error loading workflow trace data', {\n description: error.message,\n });\n }\n }, [error, isLoading]);\n\n const handleSpanSelect = useCallback(\n (info: SpanSelectionInfo) => {\n onSpanSelect?.(info);\n },\n [onSpanSelect]\n );\n\n const handleSelectionChange = useCallback(\n (info: SelectedSpanInfo | null) => {\n if (info) {\n // Filter raw events by the selected span's correlationId (stepId/hookId)\n // This bypasses the trace worker pipeline entirely.\n const correlationId = info.spanId;\n const rawEvents = correlationId\n ? events.filter((e) => e.correlationId === correlationId)\n : [];\n setSelectedSpan({ ...info, rawEvents });\n } else {\n setSelectedSpan(null);\n }\n },\n [events]\n );\n\n // Keep selected span raw events live as polling updates arrive.\n useEffect(() => {\n const correlationId = selectedSpan?.spanId;\n if (!correlationId) return;\n\n const nextRawEvents = events.filter(\n (e) => e.correlationId === correlationId\n );\n setSelectedSpan((prev) => {\n if (!prev || prev.spanId !== correlationId) {\n return prev;\n }\n\n const prevRawEvents = prev.rawEvents ?? [];\n const isSame =\n prevRawEvents.length === nextRawEvents.length &&\n prevRawEvents.every(\n (event, index) => event.eventId === nextRawEvents[index]?.eventId\n );\n if (isSame) {\n return prev;\n }\n\n return {\n ...prev,\n rawEvents: nextRawEvents,\n };\n });\n }, [events, selectedSpan?.spanId]);\n\n // Reset selected span when navigating to a different run\n useEffect(() => {\n setSelectedSpan(null);\n setDeselectTrigger((n) => n + 1);\n }, [run?.runId]);\n\n const handleClose = useCallback(() => {\n setSelectedSpan(null);\n setDeselectTrigger((n) => n + 1);\n }, []);\n\n const handleResize = useCallback((deltaX: number) => {\n setPanelWidth((w) => Math.max(MIN_PANEL_WIDTH, w + deltaX));\n }, []);\n const selectedSpanIndex = useMemo(() => {\n if (!selectedSpan?.spanId || !trace) return -1;\n return trace.spans.findIndex((span) => span.spanId === selectedSpan.spanId);\n }, [selectedSpan?.spanId, trace]);\n const canSelectPrevSpan = selectedSpanIndex > 0;\n const canSelectNextSpan =\n selectedSpanIndex >= 0 &&\n trace != null &&\n selectedSpanIndex < trace.spans.length - 1;\n const handleSelectPrevSpan = useCallback(() => {\n if (!trace || selectedSpanIndex <= 0) return;\n const targetId = trace.spans[selectedSpanIndex - 1]?.spanId;\n if (!targetId) return;\n setSelectRequest({ id: targetId, token: Date.now() });\n }, [selectedSpanIndex, trace]);\n const handleSelectNextSpan = useCallback(() => {\n if (!trace || selectedSpanIndex < 0) return;\n const targetId = trace.spans[selectedSpanIndex + 1]?.spanId;\n if (!targetId) return;\n setSelectRequest({ id: targetId, token: Date.now() });\n }, [selectedSpanIndex, trace]);\n\n // Get the selected span name for the panel header\n const selectedSpanName = useMemo(() => {\n if (!selectedSpan?.data) return undefined;\n const data = selectedSpan.data as Record<string, unknown>;\n const stepName = data.stepName as string | undefined;\n const workflowName = data.workflowName as string | undefined;\n return (\n (stepName ? parseStepName(stepName)?.shortName : undefined) ??\n (workflowName ? parseWorkflowName(workflowName)?.shortName : undefined) ??\n stepName ??\n workflowName ??\n (data.hookId as string) ??\n 'Details'\n );\n }, [selectedSpan?.data]);\n\n if (!trace) {\n return (\n <div className=\"relative w-full h-full\">\n <div className=\"border-b border-gray-alpha-400 w-full\" />\n <Skeleton className=\"w-full ml-2 mt-1 mb-1 h-[56px]\" />\n <div className=\"p-2 relative w-full\">\n <Skeleton className=\"w-full mt-6 h-[20px]\" />\n <Skeleton className=\"w-[10%] mt-2 ml-6 h-[20px]\" />\n <Skeleton className=\"w-[10%] mt-2 ml-12 h-[20px]\" />\n <Skeleton className=\"w-[20%] mt-2 ml-16 h-[20px]\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"relative w-full h-full flex\">\n {/* Timeline (takes remaining space) */}\n <div className=\"flex-1 min-w-0 relative\">\n <TraceViewerContextProvider\n customSpanClassNameFunc={getCustomSpanClassName}\n customSpanEventClassNameFunc={getCustomSpanEventClassName}\n >\n <SelectionBridge onSelectionChange={handleSelectionChange} />\n <DeselectBridge triggerDeselect={deselectTrigger} />\n <SelectBridge selectRequest={selectRequest} />\n <TraceViewerWithContextMenu\n trace={trace}\n run={run}\n isLive={isLive}\n onWakeUpSleep={onWakeUpSleep}\n onCancelRun={onCancelRun}\n onResolveHook={onResolveHook}\n onLoadMoreSpans={onLoadMoreSpans}\n hasMoreSpans={hasMoreSpans}\n isLoadingMoreSpans={isLoadingMoreSpans}\n >\n <TraceViewerTimeline\n eagerRender\n height=\"100%\"\n isLive={isLive}\n trace={trace}\n knownDurationMs={traceWithMeta?.knownDurationMs}\n hasMoreData={hasMoreSpans || Boolean(isLoading)}\n footer={\n <TraceViewerFooter\n hasMore={hasMoreSpans}\n isLive={isLive}\n isInitialLoading={Boolean(isLoading)}\n />\n }\n />\n </TraceViewerWithContextMenu>\n </TraceViewerContextProvider>\n </div>\n\n {/* Detail panel (rendered outside the context, as a sibling) */}\n {selectedSpan && (\n <div\n className=\"relative border-l flex-shrink-0 flex flex-col\"\n style={{\n width: panelWidth,\n borderColor: 'var(--ds-gray-200)',\n backgroundColor: 'var(--ds-background-100)',\n }}\n >\n <PanelResizeHandle onResize={handleResize} />\n {/* Panel header */}\n <div\n className=\"flex items-center justify-between px-3 py-2 border-y flex-shrink-0\"\n style={{ borderColor: 'var(--ds-gray-200)' }}\n >\n <div className=\"min-w-0 flex-1\">\n <div\n className=\"text-sm font-medium truncate\"\n style={{ color: 'var(--ds-gray-1000)' }}\n title={selectedSpanName}\n >\n {selectedSpanName}\n </div>\n </div>\n <div className=\"flex items-center\">\n <button\n type=\"button\"\n aria-label=\"Previous span\"\n onClick={handleSelectPrevSpan}\n disabled={!canSelectPrevSpan}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 6,\n width: 24,\n height: 24,\n padding: 0,\n borderRadius: 6,\n border: 'none',\n background: 'transparent',\n color: 'var(--ds-gray-700)',\n cursor: canSelectPrevSpan ? 'pointer' : 'not-allowed',\n opacity: canSelectPrevSpan ? 1 : 0.45,\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n onMouseEnter={(e) => {\n if (!canSelectPrevSpan) return;\n e.currentTarget.style.background = 'var(--ds-gray-alpha-100)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'transparent';\n }}\n >\n <ChevronUp size={16} />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next span\"\n onClick={handleSelectNextSpan}\n disabled={!canSelectNextSpan}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 2,\n width: 24,\n height: 24,\n padding: 0,\n borderRadius: 6,\n border: 'none',\n background: 'transparent',\n color: 'var(--ds-gray-700)',\n cursor: canSelectNextSpan ? 'pointer' : 'not-allowed',\n opacity: canSelectNextSpan ? 1 : 0.45,\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n onMouseEnter={(e) => {\n if (!canSelectNextSpan) return;\n e.currentTarget.style.background = 'var(--ds-gray-alpha-100)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'transparent';\n }}\n >\n <ChevronDown size={16} />\n </button>\n </div>\n <div\n className=\"flex items-center\"\n style={{\n borderLeft: '1px solid var(--ds-gray-300)',\n marginLeft: 6,\n }}\n >\n <button\n type=\"button\"\n aria-label=\"Close panel\"\n onClick={handleClose}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 6,\n width: 24,\n height: 24,\n padding: 0,\n borderRadius: 6,\n border: 'none',\n background: 'transparent',\n color: 'var(--ds-gray-700)',\n cursor: 'pointer',\n flexShrink: 0,\n transition: 'background 0.15s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = 'var(--ds-gray-alpha-100)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'transparent';\n }}\n >\n <X size={16} />\n </button>\n </div>\n </div>\n {/* Panel body */}\n <div className=\"flex-1 overflow-y-auto\">\n <ErrorBoundary title=\"Failed to load entity details\">\n <EntityDetailPanel\n run={run}\n onStreamClick={onStreamClick}\n onRunClick={onRunClick}\n spanDetailData={spanDetailData ?? null}\n spanDetailError={spanDetailError}\n spanDetailLoading={spanDetailLoading}\n onSpanSelect={handleSpanSelect}\n onWakeUpSleep={onWakeUpSleep}\n onLoadEventData={onLoadEventData}\n onResolveHook={onResolveHook}\n encryptionKey={encryptionKey}\n onDecrypt={onDecrypt}\n isDecrypting={isDecrypting}\n selectedSpan={selectedSpan}\n hasEncryptedData={hasEncryptedData}\n />\n </ErrorBoundary>\n </div>\n </div>\n )}\n </div>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"event-colors.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/event-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,SAA6B;IAE7B,iBAAiB;IACjB,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC9D,OAAO;YACL,KAAK,EAAE,mBAAmB;YAC1B,UAAU,EAAE,mBAAmB;YAC/B,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,mBAAmB;SAC/B,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,qBAAqB;YAC5B,UAAU,EAAE,qBAAqB;YACjC,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,UAAU,EAAE,sBAAsB;YAClC,MAAM,EAAE,sBAAsB;YAC9B,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,sBAAsB;SAClC,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,oBAAoB;KAChC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,8CAA8C;IAC9C,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"event-colors.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/event-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,SAA6B;IAE7B,iBAAiB;IACjB,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC9D,OAAO;YACL,KAAK,EAAE,mBAAmB;YAC1B,UAAU,EAAE,mBAAmB;YAC/B,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,mBAAmB;SAC/B,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO;YACL,KAAK,EAAE,qBAAqB;YAC5B,UAAU,EAAE,qBAAqB;YACjC,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,qBAAqB;SACjC,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,UAAU,EAAE,sBAAsB;YAClC,MAAM,EAAE,sBAAsB;YAC9B,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,sBAAsB;SAClC,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,SAAS,EAAE,oBAAoB;KAChC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAA6B;IAClE,8CAA8C;IAC9C,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/**\n * Color utilities for workflow event markers\n */\n\nimport type { Event } from '@workflow/world';\n\nexport interface EventColorPalette {\n /** Color of the diamond/marker itself */\n color: string;\n /** Background color for hover info popup */\n background: string;\n /** Border color for hover info popup */\n border: string;\n /** Text color for event name in hover popup */\n text: string;\n /** Secondary text color for timestamp in hover popup */\n secondary: string;\n}\n\n/**\n * Get the color palette for an event based on its type\n * - Red for failures (step_failed, run_failed)\n * - Orange/yellow for retries (step_retrying)\n * - Purple for webhook-related events\n * - Blue otherwise (default)\n */\nexport function getEventColor(\n eventType: Event['eventType']\n): EventColorPalette {\n // Failures - Red\n if (eventType === 'step_failed' || eventType === 'run_failed') {\n return {\n color: 'var(--ds-red-600)',\n background: 'var(--ds-red-100)',\n border: 'var(--ds-red-500)',\n text: 'var(--ds-red-900)',\n secondary: 'var(--ds-red-700)',\n };\n }\n\n // Retries - Orange/Yellow\n if (eventType === 'step_retrying') {\n return {\n color: 'var(--ds-amber-600)',\n background: 'var(--ds-amber-100)',\n border: 'var(--ds-amber-500)',\n text: 'var(--ds-amber-900)',\n secondary: 'var(--ds-amber-700)',\n };\n }\n\n // Webhook-related - Purple\n if (\n eventType === 'hook_created' ||\n eventType === 'hook_received' ||\n eventType === 'hook_disposed'\n ) {\n return {\n color: 'var(--ds-purple-600)',\n background: 'var(--ds-purple-100)',\n border: 'var(--ds-purple-500)',\n text: 'var(--ds-purple-900)',\n secondary: 'var(--ds-purple-700)',\n };\n }\n\n // Default - Blue\n return {\n color: 'var(--ds-blue-600)',\n background: 'var(--ds-blue-100)',\n border: 'var(--ds-blue-500)',\n text: 'var(--ds-blue-900)',\n secondary: 'var(--ds-blue-700)',\n };\n}\n\n/**\n * Determine whether to show a vertical line for an event\n * - Show vertical lines for hook-related events\n * - Hide vertical lines for all other workflow events by default\n */\nexport function shouldShowVerticalLine(eventType: Event['eventType']): boolean {\n // Show vertical lines for hook-related events\n if (\n eventType === 'hook_created' ||\n eventType === 'hook_received' ||\n eventType === 'hook_disposed'\n ) {\n return true;\n }\n\n // Hide vertical lines for all other workflow events\n return false;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"trace-colors.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAG7D;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAA8C,EAC9C,UAAU,GAAG,KAAK;IAElB,IAAI,UAAU,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,CAAC;IAEtC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAY,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;QAEpC,yCAAyC;QACzC,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAED,mCAAmC;QACnC,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;QAClD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAmB,CAAC;QAC/C,OAAO,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAwB,EAChB,EAAE;IACV,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAEvC,uBAAuB;IACvB,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,kCAAkC;IAClC,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,iBAAiB;IACjB,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC,CAAC"}
1
+ {"version":3,"file":"trace-colors.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,MAAM,MAAM,yCAAyC,CAAC;AAG7D;;GAEG;AACH,SAAS,kBAAkB,CACzB,MAA8C,EAC9C,UAAU,GAAG,KAAK;IAElB,IAAI,UAAU,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,aAAa,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAc,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,EAAE,QAAQ,CAAC;IAEtC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAY,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;QAEpC,yCAAyC;QACzC,IAAI,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAED,mCAAmC;QACnC,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;QAClD,OAAO,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAmB,CAAC;QAC/C,OAAO,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,2BAA2B;IAC3B,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,SAAwB,EAChB,EAAE;IACV,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAEvC,uBAAuB;IACvB,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,+BAA+B;IAC/B,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,kCAAkC;IAClC,IACE,SAAS,KAAK,cAAc;QAC5B,SAAS,KAAK,eAAe;QAC7B,SAAS,KAAK,eAAe,EAC7B,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,iBAAiB;IACjB,OAAO,MAAM,CAAC,YAAY,CAAC;AAC7B,CAAC,CAAC","sourcesContent":["/**\n * Color utilities for workflow traces\n */\n\nimport type { Step, WorkflowRun } from '@workflow/world';\nimport styles from '../trace-viewer/trace-viewer.module.css';\nimport type { SpanNode, SpanNodeEvent } from '../trace-viewer/types';\n\n/**\n * Get the CSS class name for a workflow entity based on its status\n */\nfunction getStatusClassName(\n status: Step['status'] | WorkflowRun['status'],\n isStripped = false\n): string {\n if (isStripped && status === 'pending') {\n return styles.spanPendingStriped;\n }\n\n switch (status) {\n case 'running':\n return styles.spanRunning;\n case 'pending':\n return styles.spanPending;\n case 'completed':\n return styles.spanCompleted;\n case 'cancelled':\n return styles.spanCancelled;\n case 'failed':\n return styles.spanFailed;\n default:\n return '';\n }\n}\n\n/**\n * Check if a step name indicates it's a sleep step\n */\nfunction isSleepStep(stepName: string): boolean {\n return String(stepName).toLowerCase().endsWith('sleep');\n}\n\n/**\n * Get custom CSS class name for a span based on its attributes\n * This is called dynamically by the trace viewer to style spans\n */\nexport const getCustomSpanClassName = (span: SpanNode): string => {\n const attributes = span.span.attributes;\n const resource = attributes?.resource;\n\n if (resource === 'step') {\n const stepData = attributes.data as Step;\n const stepName = stepData?.stepName;\n\n // DEPRECATED: Check if it's a sleep step\n if (stepName && isSleepStep(stepName)) {\n return styles.spanSleep;\n }\n\n // Regular step - use status colors\n const isStripped = stepData?.status === 'pending';\n return getStatusClassName(stepData?.status, isStripped);\n }\n\n if (resource === 'run') {\n const runData = attributes.data as WorkflowRun;\n return getStatusClassName(runData?.status, false);\n }\n\n if (resource === 'hook') {\n return styles.spanHook;\n }\n\n if (resource === 'sleep') {\n return styles.spanSleep;\n }\n\n // Default: no custom class\n return '';\n};\n\n/**\n * Get custom CSS class name for a span event based on its type\n * This is called dynamically by the trace viewer to style event markers\n */\nexport const getCustomSpanEventClassName = (\n spanEvent: SpanNodeEvent\n): string => {\n const eventName = spanEvent.event.name;\n\n // Failure events - Red\n if (eventName === 'step_failed' || eventName === 'run_failed') {\n return styles.eventFailed;\n }\n\n // Retry events - Orange/Yellow\n if (eventName === 'step_retrying') {\n return styles.eventRetrying;\n }\n\n // Webhook-related events - Purple\n if (\n eventName === 'hook_created' ||\n eventName === 'hook_received' ||\n eventName === 'hook_disposed'\n ) {\n return styles.eventHook;\n }\n\n // Default - Blue\n return styles.eventDefault;\n};\n"]}
@@ -174,7 +174,7 @@ export function stepToSpan(stepEvents, maxEndTime) {
174
174
  }
175
175
  return {
176
176
  spanId: String(step.stepId),
177
- name: parsedName?.shortName ?? '',
177
+ name: parsedName?.shortName ?? String(step.stepName),
178
178
  kind: 1, // INTERNAL span kind
179
179
  resource,
180
180
  library: WORKFLOW_LIBRARY,
@@ -1 +1 @@
1
- {"version":3,"file":"trace-span-construction.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-span-construction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAA4B,IAAI,GAAG,CAAC;IAC1D,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,eAAe;IACf,aAAa;IACb,YAAY;IACZ,cAAc;IACd,gBAAgB;CACjB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAe,EACf,WAAW,GAAG,IAAI;IAElB,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAChB,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7D;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1C,UAAU,EAAE;YACV,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAC9D;QACD,oDAAoD;QACpD,gBAAgB,EAAE,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC;KAC1D,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAe,EAOR,EAAE;IACT,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;IAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,gBAAgB,CAChD,CAAC;IACF,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,aAAa;QAChC,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,QAAQ;QACxC,WAAW,EAAE,cAAc,EAAE,SAAS;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,UAAgB;IAC1D,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC;IAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QACnB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE;YACV,QAAQ,EAAE,OAAgB;YAC1B,IAAI,EAAE,IAAI,EAAE,mEAAmE;SAChF;QACD,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,UAAU;QAClB,QAAQ;QACR,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,GAAG;KACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAe,EAYR,EAAE;IACT,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,cAAc,CAC9C,CAAC;IAEF,0EAA0E;IAC1E,kDAAkD;IAClD,MAAM,WAAW,GAAG,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,MAAM,GACR,SAAS,CAAC;IACZ,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,SAA2B,CAAC;IAChC,IAAI,WAA6B,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,cAAc;gBACjB,MAAM,GAAG,SAAS,CAAC;gBACnB,OAAO,IAAI,CAAC,CAAC;gBACb,IAAI,CAAC,SAAS;oBAAE,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;gBACxC,WAAW,GAAG,SAAS,CAAC;gBACxB,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,WAAW,CAAC;gBACrB,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACR,KAAK,aAAa;gBAChB,MAAM,GAAG,QAAQ,CAAC;gBAClB,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACR,KAAK,eAAe;gBAClB,MAAM,GAAG,SAAS,CAAC;gBACnB,WAAW,GAAG,SAAS,CAAC;gBACxB,MAAM;QACV,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,aAAa,IAAI,EAAE;QACvC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE;QACjD,MAAM;QACN,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,WAAW,CAAC,SAAS;QACxD,SAAS;QACT,WAAW;QACX,WAAW,EAAE,WAAW,CAAC,WAAW;KACrC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB,EAAE,UAAgB;IAC9D,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE,MAAe;QACzB,IAAI,EAAE,IAAI;KACX,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;IAEzD,uEAAuE;IACvE,qEAAqE;IACrE,4CAA4C;IAC5C,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE5D,kFAAkF;IAClF,oEAAoE;IACpE,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,cAAc,CAC9C,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,mFAAmF;QACnF,kFAAkF;QAClF,qFAAqF;QACrF,eAAe,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,UAAU,EAAE,SAAS,IAAI,EAAE;QACjC,IAAI,EAAE,CAAC,EAAE,qBAAqB;QAC9B,QAAQ;QACR,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QACnB,UAAU,EAAE,CAAC;QACb,UAAU;QACV,KAAK,EAAE,EAAE;QACT,MAAM;QACN,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;QAChC,QAAQ,EAAE,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC;QACnD,0FAA0F;QAC1F,eAAe,EACb,eAAe,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE;YACpE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC;YACjC,CAAC,CAAC,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAe,EASR,EAAE;IACT,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,cAAc,CAC9C,CAAC;IACF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,eAAe,CAC/C,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,eAAe,CAC/C,CAAC;IACF,MAAM,iBAAiB,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,aAAa;QAClC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,KAAK,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK;QACpC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,aAAa,EAAE,cAAc,CAAC,MAAM;QACpC,cAAc,EAAE,iBAAiB,EAAE,SAAS,IAAI,SAAS;QACzD,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,SAAS;KAC1D,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,UAAmB,EAAE,UAAgB;IAC9D,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,yBAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC;IAE9C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,CAAC,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QACnB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE;YACV,QAAQ,EAAE,MAAe;YACzB,IAAI,EAAE,IAAI;SACX;QACD,KAAK,EAAE,EAAE;QACT,MAAM;QACN,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QACzC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;QAChC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,GAAgB,EAChB,SAAkB,EAClB,OAAc;IAEd,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;IAElC,8DAA8D;IAC9D,4DAA4D;IAC5D,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,GAAG,CAAC;IACjE,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE,KAAc;QACxB,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,kFAAkF;IAClF,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;IAEvC,0CAA0C;IAC1C,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE3D,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,SAAS,IAAI,GAAG,CAAC;QACnE,IAAI,EAAE,CAAC,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;QACnB,UAAU,EAAE,CAAC;QACb,UAAU;QACV,KAAK,EAAE,EAAE;QACT,MAAM;QACN,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC;QACxC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;QAChC,QAAQ,EAAE,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC;QACnD,0FAA0F;QAC1F,eAAe,EACb,eAAe,IAAI,eAAe,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE;YACpE,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC;YACjC,CAAC,CAAC,SAAS;KAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"trace-span-construction.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-span-construction.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Functions for constructing OpenTelemetry spans from workflow entities\n */\n\nimport { parseStepName, parseWorkflowName } from '@workflow/utils/parse-name';\nimport type { Event, WorkflowRun } from '@workflow/world';\nimport type { Span, SpanEvent } from '../trace-viewer/types';\nimport { shouldShowVerticalLine } from './event-colors';\nimport { calculateDuration, dateToOtelTime } from './trace-time-utils';\n\nexport const WORKFLOW_LIBRARY = {\n name: 'workflow-development-kit',\n version: '4.0.0',\n};\n\n/**\n * Event types that should be displayed as visual markers in the trace viewer\n */\nconst MARKER_EVENT_TYPES: Set<Event['eventType']> = new Set([\n 'hook_created',\n 'hook_received',\n 'hook_disposed',\n 'step_started',\n 'step_retrying',\n 'step_failed',\n 'run_failed',\n 'wait_created',\n 'wait_completed',\n]);\n\n/**\n * Convert workflow events to span events\n * Only includes events that should be displayed as markers\n */\nexport function convertEventsToSpanEvents(\n events: Event[],\n filterTypes = true\n): SpanEvent[] {\n return events\n .filter((event) =>\n filterTypes ? MARKER_EVENT_TYPES.has(event.eventType) : true\n )\n .map((event) => ({\n name: event.eventType,\n timestamp: dateToOtelTime(event.createdAt),\n attributes: {\n eventId: event.eventId,\n correlationId: event.correlationId,\n eventData: 'eventData' in event ? event.eventData : undefined,\n },\n // Control whether to show vertical line in timeline\n showVerticalLine: shouldShowVerticalLine(event.eventType),\n }));\n}\n\nexport const waitEventsToWaitEntity = (\n events: Event[]\n): {\n waitId: string;\n runId: string;\n createdAt: Date;\n resumeAt: Date;\n completedAt?: Date;\n} | null => {\n const startEvent = events.find((event) => event.eventType === 'wait_created');\n if (!startEvent) {\n return null;\n }\n const completedEvent = events.find(\n (event) => event.eventType === 'wait_completed'\n );\n return {\n waitId: startEvent.correlationId,\n runId: startEvent.runId,\n createdAt: startEvent.createdAt,\n resumeAt: startEvent.eventData?.resumeAt,\n completedAt: completedEvent?.createdAt,\n };\n};\n\n/**\n * Converts a workflow Wait to an OpenTelemetry Span\n */\nexport function waitToSpan(events: Event[], maxEndTime: Date): Span | null {\n const wait = waitEventsToWaitEntity(events);\n if (!wait) {\n return null;\n }\n const startTime = wait.createdAt;\n const endTime = wait.completedAt ?? maxEndTime;\n const start = dateToOtelTime(startTime);\n const end = dateToOtelTime(endTime);\n const duration = calculateDuration(startTime, endTime);\n const spanEvents = convertEventsToSpanEvents(events, false);\n return {\n spanId: wait.waitId,\n name: 'sleep',\n kind: 1, // INTERNAL span kind\n resource: 'sleep',\n library: WORKFLOW_LIBRARY,\n status: { code: 0 },\n traceFlags: 1,\n attributes: {\n resource: 'sleep' as const,\n data: wait, // wait is a plain object built from events, no non-cloneable types\n },\n links: [],\n events: spanEvents,\n duration,\n startTime: start,\n endTime: end,\n };\n}\n\nexport const stepEventsToStepEntity = (\n events: Event[]\n): {\n stepId: string;\n runId: string;\n stepName: string;\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n attempt: number;\n createdAt: Date;\n updatedAt: Date;\n startedAt?: Date;\n completedAt?: Date;\n specVersion?: number;\n} | null => {\n const createdEvent = events.find(\n (event) => event.eventType === 'step_created'\n );\n\n // V1 runs don't emit step_created events. Fall back to the earliest event\n // in the group so we can still build a step span.\n const anchorEvent = createdEvent ?? events[0];\n if (!anchorEvent) {\n return null;\n }\n\n // Walk events in order to derive status, attempt count, and timestamps.\n // Handles both step_retrying and consecutive step_started as retry signals.\n let status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled' =\n 'pending';\n let attempt = 0;\n let startedAt: Date | undefined;\n let completedAt: Date | undefined;\n\n for (const e of events) {\n switch (e.eventType) {\n case 'step_started':\n status = 'running';\n attempt += 1;\n if (!startedAt) startedAt = e.createdAt;\n completedAt = undefined;\n break;\n case 'step_completed':\n status = 'completed';\n completedAt = e.createdAt;\n break;\n case 'step_failed':\n status = 'failed';\n completedAt = e.createdAt;\n break;\n case 'step_retrying':\n status = 'pending';\n completedAt = undefined;\n break;\n }\n }\n\n // Ensure at least attempt 1 if we never saw step_started\n if (attempt === 0) attempt = 1;\n\n const lastEvent = events[events.length - 1];\n return {\n stepId: anchorEvent.correlationId ?? '',\n runId: anchorEvent.runId,\n stepName: createdEvent?.eventData?.stepName ?? '',\n status,\n attempt,\n createdAt: anchorEvent.createdAt,\n updatedAt: lastEvent?.createdAt ?? anchorEvent.createdAt,\n startedAt,\n completedAt,\n specVersion: anchorEvent.specVersion,\n };\n};\n\n/**\n * Converts step events to an OpenTelemetry Span\n */\nexport function stepToSpan(stepEvents: Event[], maxEndTime: Date): Span | null {\n const step = stepEventsToStepEntity(stepEvents);\n if (!step) {\n return null;\n }\n const parsedName = parseStepName(String(step.stepName));\n\n const attributes = {\n resource: 'step' as const,\n data: step,\n };\n\n const resource = 'step';\n const endTime = new Date(step.completedAt ?? maxEndTime);\n\n // Include ALL correlated events on the span so the sidebar detail view\n // can display them. The timeline uses the `showVerticalLine` flag to\n // determine which events appear as markers.\n const events = convertEventsToSpanEvents(stepEvents, false);\n\n // Use createdAt as span start time, with activeStartTime for when execution began\n // This allows visualization of the \"queued\" period before execution\n const spanStartTime = new Date(step.createdAt);\n let activeStartTime = step.startedAt ? new Date(step.startedAt) : undefined;\n const firstStartEvent = stepEvents.find(\n (event) => event.eventType === 'step_started'\n );\n if (firstStartEvent) {\n // `step.startedAt` is the server-side creation timestamp, and `event.createdAt` is\n // the client-side creation timestamp. For now, to align the event marker with the\n // line we show for step.startedAt, we overwrite here to always use client-side time.\n activeStartTime = new Date(firstStartEvent.createdAt);\n }\n\n return {\n spanId: String(step.stepId),\n name: parsedName?.shortName ?? String(step.stepName),\n kind: 1, // INTERNAL span kind\n resource,\n library: WORKFLOW_LIBRARY,\n status: { code: 0 },\n traceFlags: 1,\n attributes,\n links: [],\n events,\n startTime: dateToOtelTime(spanStartTime),\n endTime: dateToOtelTime(endTime),\n duration: calculateDuration(spanStartTime, endTime),\n // Only set activeStartTime if it differs from startTime (i.e., there was a queued period)\n activeStartTime:\n activeStartTime && activeStartTime.getTime() > spanStartTime.getTime()\n ? dateToOtelTime(activeStartTime)\n : undefined,\n };\n}\n\nexport const hookEventsToHookEntity = (\n events: Event[]\n): {\n hookId: string;\n runId: string;\n token?: string;\n createdAt: Date;\n receivedCount: number;\n lastReceivedAt?: Date;\n disposedAt?: Date;\n} | null => {\n const createdEvent = events.find(\n (event) => event.eventType === 'hook_created'\n );\n if (!createdEvent) {\n return null;\n }\n const receivedEvents = events.filter(\n (event) => event.eventType === 'hook_received'\n );\n const disposedEvents = events.filter(\n (event) => event.eventType === 'hook_disposed'\n );\n const lastReceivedEvent = receivedEvents.at(-1);\n return {\n hookId: createdEvent.correlationId,\n runId: createdEvent.runId,\n token: createdEvent.eventData?.token,\n createdAt: createdEvent.createdAt,\n receivedCount: receivedEvents.length,\n lastReceivedAt: lastReceivedEvent?.createdAt || undefined,\n disposedAt: disposedEvents.at(-1)?.createdAt || undefined,\n };\n};\n\n/**\n * Converts a workflow Hook to an OpenTelemetry Span\n */\nexport function hookToSpan(hookEvents: Event[], maxEndTime: Date): Span | null {\n const hook = hookEventsToHookEntity(hookEvents);\n if (!hook) {\n return null;\n }\n\n // Convert hook-related events to span events\n const events = convertEventsToSpanEvents(hookEvents, false);\n\n const endTime = hook.disposedAt || maxEndTime;\n\n return {\n spanId: String(hook.hookId),\n name: String(hook.hookId),\n kind: 1, // INTERNAL span kind\n resource: 'hook',\n library: WORKFLOW_LIBRARY,\n status: { code: 1 },\n traceFlags: 1,\n attributes: {\n resource: 'hook' as const,\n data: hook,\n },\n links: [],\n events,\n startTime: dateToOtelTime(hook.createdAt),\n endTime: dateToOtelTime(endTime),\n duration: calculateDuration(hook.createdAt, endTime),\n };\n}\n\n/**\n * Creates a root span for the workflow run\n */\nexport function runToSpan(\n run: WorkflowRun,\n runEvents: Event[],\n nowTime?: Date\n): Span {\n const now = nowTime ?? new Date();\n\n // Only embed identification fields — not the full object with\n // input/output/error which may contain non-cloneable types.\n const { input: _i, output: _o, error: _e, ...runIdentity } = run;\n const attributes = {\n resource: 'run' as const,\n data: runIdentity,\n };\n\n // Use createdAt as span start time, with activeStartTime for when execution began\n const spanStartTime = new Date(run.createdAt);\n const activeStartTime = run.startedAt ? new Date(run.startedAt) : undefined;\n const endTime = run.completedAt ?? now;\n\n // Convert run-level events to span events\n const events = convertEventsToSpanEvents(runEvents, false);\n\n return {\n spanId: String(run.runId),\n name: String(parseWorkflowName(run.workflowName)?.shortName ?? '?'),\n kind: 1, // INTERNAL span kind\n resource: 'run',\n library: WORKFLOW_LIBRARY,\n status: { code: 0 },\n traceFlags: 1,\n attributes,\n links: [],\n events,\n startTime: dateToOtelTime(spanStartTime),\n endTime: dateToOtelTime(endTime),\n duration: calculateDuration(spanStartTime, endTime),\n // Only set activeStartTime if it differs from startTime (i.e., there was a queued period)\n activeStartTime:\n activeStartTime && activeStartTime.getTime() > spanStartTime.getTime()\n ? dateToOtelTime(activeStartTime)\n : undefined,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"trace-time-utils.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-time-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA6B;IAE7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5C,OAAO,WAAW,GAAG,eAAe,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,GAA4B;IAE5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"trace-time-utils.js","sourceRoot":"","sources":["../../../src/components/workflow-traces/trace-time-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA6B;IAE7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5C,OAAO,WAAW,GAAG,eAAe,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8B,EAC9B,GAA4B;IAE5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAChC,CAAC","sourcesContent":["/**\n * Time conversion utilities for workflow trace construction\n */\n\n/**\n * Converts a Date to OpenTelemetry time format [seconds, nanoseconds]\n */\nexport function dateToOtelTime(\n date: Date | string | unknown\n): [number, number] {\n if (typeof date === 'string') {\n date = new Date(date);\n }\n if (!date || !(date instanceof Date)) {\n return [0, 0];\n }\n const ms = date.getTime();\n const seconds = Math.floor(ms / 1000);\n const nanoseconds = (ms % 1000) * 1_000_000;\n return [seconds, nanoseconds];\n}\n\nexport function otelTimeToMs(time: [number, number]): number {\n const secondsToMs = time[0] * 1_000;\n const nanosecondsToMs = time[1] / 1_000_000;\n return secondsToMs + nanosecondsToMs;\n}\n\n/**\n * Calculates duration in [seconds, nanoseconds] format\n */\nexport function calculateDuration(\n start: Date | string | unknown,\n end: Date | string | unknown\n): [number, number] {\n if (typeof start === 'string') {\n start = new Date(start);\n }\n if (typeof end === 'string') {\n end = new Date(end);\n }\n if (!start || !(start instanceof Date)) {\n return [0, 0];\n }\n const endTime = end && end instanceof Date ? end : new Date();\n const durationMs = endTime.getTime() - start.getTime();\n const seconds = Math.floor(durationMs / 1000);\n const nanoseconds = (durationMs % 1000) * 1_000_000;\n return [seconds, nanoseconds];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-dark-mode.js","sourceRoot":"","sources":["../../src/hooks/use-dark-mode.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACvC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACxC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAE5C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YACzC,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"use-dark-mode.js","sourceRoot":"","sources":["../../src/hooks/use-dark-mode.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;IACvC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QACxC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAE5C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACzC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YACzC,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook that detects if dark mode is active and reacts to theme changes.\n * Observes the 'dark' class on the document element, which is how\n * next-themes and similar libraries apply the theme.\n *\n * @returns `true` if dark mode is active, `false` otherwise\n */\nexport const useDarkMode = (): boolean => {\n const [isDark, setIsDark] = useState(() => {\n if (typeof document === 'undefined') return false;\n return document.documentElement.classList.contains('dark');\n });\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n\n const observer = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains('dark'));\n });\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return isDark;\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { analyzeEvents, hasPendingHooksFromEvents, hasPendingStepsFromEvents, is
8
8
  export type { MaterializedEntities, MaterializedHook, MaterializedStep, MaterializedWait, } from './lib/event-materialization';
9
9
  export { materializeAll, materializeHooks, materializeSteps, materializeWaits, } from './lib/event-materialization';
10
10
  export type { Revivers, StreamRef } from './lib/hydration';
11
- export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
11
+ export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hasEncryptedFields, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
12
12
  export type { ToastAdapter } from './lib/toast';
13
13
  export { ToastProvider, useToast } from './lib/toast';
14
14
  export type { StreamStep } from './lib/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ export * from './components';
3
3
  export { hookEventsToHookEntity, stepEventsToStepEntity, waitEventsToWaitEntity, } from './components/workflow-traces/trace-span-construction';
4
4
  export { analyzeEvents, hasPendingHooksFromEvents, hasPendingStepsFromEvents, isTerminalStatus, shouldShowReenqueueButton, } from './lib/event-analysis';
5
5
  export { materializeAll, materializeHooks, materializeSteps, materializeWaits, } from './lib/event-materialization';
6
- export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
6
+ export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hasEncryptedFields, hydrateResourceIO, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
7
7
  export { ToastProvider, useToast } from './lib/toast';
8
8
  export { extractConversation, formatDuration, identifyStreamSteps, isDoStreamStep, } from './lib/utils';
9
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC","sourcesContent":["export type {\n HealthCheckEndpoint,\n HealthCheckResult,\n} from '@workflow/core/runtime';\nexport {\n parseStepName,\n parseWorkflowName,\n} from '@workflow/utils/parse-name';\nexport type { Event, Hook, Step, WorkflowRun } from '@workflow/world';\nexport * from './components';\nexport {\n hookEventsToHookEntity,\n stepEventsToStepEntity,\n waitEventsToWaitEntity,\n} from './components/workflow-traces/trace-span-construction';\nexport type { EventAnalysis } from './lib/event-analysis';\nexport {\n analyzeEvents,\n hasPendingHooksFromEvents,\n hasPendingStepsFromEvents,\n isTerminalStatus,\n shouldShowReenqueueButton,\n} from './lib/event-analysis';\nexport type {\n MaterializedEntities,\n MaterializedHook,\n MaterializedStep,\n MaterializedWait,\n} from './lib/event-materialization';\nexport {\n materializeAll,\n materializeHooks,\n materializeSteps,\n materializeWaits,\n} from './lib/event-materialization';\nexport type { Revivers, StreamRef } from './lib/hydration';\nexport {\n CLASS_INSTANCE_REF_TYPE,\n ClassInstanceRef,\n ENCRYPTED_PLACEHOLDER,\n extractStreamIds,\n getWebRevivers,\n hasEncryptedFields,\n hydrateResourceIO,\n hydrateResourceIOWithKey,\n isClassInstanceRef,\n isEncryptedMarker,\n isStreamId,\n isStreamRef,\n STREAM_REF_TYPE,\n truncateId,\n} from './lib/hydration';\nexport type { ToastAdapter } from './lib/toast';\nexport { ToastProvider, useToast } from './lib/toast';\nexport type { StreamStep } from './lib/utils';\nexport {\n extractConversation,\n formatDuration,\n identifyStreamSteps,\n isDoStreamStep,\n} from './lib/utils';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"event-analysis.js","sourceRoot":"","sources":["../../src/lib/event-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-analysis.js","sourceRoot":"","sources":["../../src/lib/event-analysis.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared utilities for analyzing workflow events.\n * Used by run-actions and trace viewer components.\n */\n\nimport type { Event, WorkflowRunStatus } from '@workflow/world';\n\n// Time thresholds for Re-enqueue button visibility\nconst STEP_ACTIVITY_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes\nconst STEP_IDLE_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Result of analyzing events for a workflow run\n */\nexport interface EventAnalysis {\n /** Whether there are pending sleep/wait calls */\n hasPendingSleeps: boolean;\n /** Whether there are pending steps (started but not completed/failed) */\n hasPendingSteps: boolean;\n /** Whether there are pending hooks (created but not disposed) */\n hasPendingHooks: boolean;\n /** Correlation IDs of pending sleeps */\n pendingSleepIds: string[];\n /** Correlation IDs of pending steps */\n pendingStepIds: string[];\n /** Correlation IDs of pending hooks */\n pendingHookIds: string[];\n /** Timestamp of the last step_started or step_retrying event */\n lastStepActivityAt: Date | null;\n /** Timestamp of the last step completion (step_completed or step_failed) */\n lastStepCompletionAt: Date | null;\n}\n\n/**\n * Analyze events to determine pending sleeps, steps, and hooks.\n */\nexport function analyzeEvents(events: Event[] | undefined): EventAnalysis {\n if (!events || events.length === 0) {\n return {\n hasPendingSleeps: false,\n hasPendingSteps: false,\n hasPendingHooks: false,\n pendingSleepIds: [],\n pendingStepIds: [],\n pendingHookIds: [],\n lastStepActivityAt: null,\n lastStepCompletionAt: null,\n };\n }\n\n // Group events by correlation ID for each type\n const waitCreated = new Map<string, Event>();\n const waitCompleted = new Set<string>();\n const stepStarted = new Map<string, Event>();\n const stepCompleted = new Set<string>();\n const hookCreated = new Map<string, Event>();\n const hookDisposed = new Set<string>();\n\n let lastStepActivityAt: Date | null = null;\n let lastStepCompletionAt: Date | null = null;\n\n for (const event of events) {\n const correlationId = event.correlationId;\n if (!correlationId) continue;\n\n switch (event.eventType) {\n // Sleeps/Waits\n case 'wait_created':\n waitCreated.set(correlationId, event);\n break;\n case 'wait_completed':\n waitCompleted.add(correlationId);\n break;\n\n // Steps\n case 'step_started':\n stepStarted.set(correlationId, event);\n if (\n !lastStepActivityAt ||\n new Date(event.createdAt) > lastStepActivityAt\n ) {\n lastStepActivityAt = new Date(event.createdAt);\n }\n break;\n case 'step_retrying':\n if (\n !lastStepActivityAt ||\n new Date(event.createdAt) > lastStepActivityAt\n ) {\n lastStepActivityAt = new Date(event.createdAt);\n }\n break;\n case 'step_completed':\n case 'step_failed':\n stepCompleted.add(correlationId);\n if (\n !lastStepCompletionAt ||\n new Date(event.createdAt) > lastStepCompletionAt\n ) {\n lastStepCompletionAt = new Date(event.createdAt);\n }\n break;\n\n // Hooks\n case 'hook_created':\n hookCreated.set(correlationId, event);\n break;\n case 'hook_disposed':\n hookDisposed.add(correlationId);\n break;\n }\n }\n\n // Find pending items (created but not completed)\n const pendingSleepIds = Array.from(waitCreated.keys()).filter(\n (id) => !waitCompleted.has(id)\n );\n const pendingStepIds = Array.from(stepStarted.keys()).filter(\n (id) => !stepCompleted.has(id)\n );\n const pendingHookIds = Array.from(hookCreated.keys()).filter(\n (id) => !hookDisposed.has(id)\n );\n\n return {\n hasPendingSleeps: pendingSleepIds.length > 0,\n hasPendingSteps: pendingStepIds.length > 0,\n hasPendingHooks: pendingHookIds.length > 0,\n pendingSleepIds,\n pendingStepIds,\n pendingHookIds,\n lastStepActivityAt,\n lastStepCompletionAt,\n };\n}\n\n/**\n * Check if a workflow run status is terminal (completed, failed, or cancelled)\n */\nexport function isTerminalStatus(\n status: WorkflowRunStatus | undefined\n): boolean {\n return (\n status === 'completed' || status === 'failed' || status === 'cancelled'\n );\n}\n\n/**\n * Determine if the Re-enqueue button should be shown without the debug flag.\n *\n * The Re-enqueue button is shown when the workflow appears to be stuck:\n * - The workflow is not in a terminal state\n * - There are no pending sleeps (which would show the Wake up button instead)\n * - There are no pending hooks (which are waiting for external input)\n * - Either:\n * - The last step_started or step_retrying event was >30 minutes ago, OR\n * - There have been no pending steps for >5 minutes (all steps completed/failed)\n */\nexport function shouldShowReenqueueButton(\n events: Event[] | undefined,\n status: WorkflowRunStatus | undefined\n): boolean {\n // Never show if in terminal state\n if (isTerminalStatus(status)) {\n return false;\n }\n\n const analysis = analyzeEvents(events);\n\n // Don't show if there are pending sleeps (Wake up button handles this)\n if (analysis.hasPendingSleeps) {\n return false;\n }\n\n // Don't show if there are pending hooks (waiting for external input)\n if (analysis.hasPendingHooks) {\n return false;\n }\n\n const now = Date.now();\n\n // Check if last step activity was >30 minutes ago\n if (analysis.lastStepActivityAt) {\n const timeSinceLastActivity = now - analysis.lastStepActivityAt.getTime();\n if (timeSinceLastActivity > STEP_ACTIVITY_TIMEOUT_MS) {\n return true;\n }\n }\n\n // Check if there are no pending steps and last completion was >5 minutes ago\n if (!analysis.hasPendingSteps && analysis.lastStepCompletionAt) {\n const timeSinceLastCompletion =\n now - analysis.lastStepCompletionAt.getTime();\n if (timeSinceLastCompletion > STEP_IDLE_TIMEOUT_MS) {\n return true;\n }\n }\n\n // If there's no step activity at all but the run is not terminal,\n // and we've been waiting for a while, show the button\n if (\n !analysis.lastStepActivityAt &&\n !analysis.hasPendingSteps &&\n !analysis.hasPendingSleeps &&\n !analysis.hasPendingHooks\n ) {\n // This case handles runs that haven't started any steps yet\n // but aren't in a terminal state - they might be stuck\n return true;\n }\n\n return false;\n}\n\n/**\n * Check if there are pending steps from an events list.\n */\nexport function hasPendingStepsFromEvents(\n events: Event[] | undefined\n): boolean {\n return analyzeEvents(events).hasPendingSteps;\n}\n\n/**\n * Check if there are pending hooks from an events list.\n */\nexport function hasPendingHooksFromEvents(\n events: Event[] | undefined\n): boolean {\n return analyzeEvents(events).hasPendingHooks;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"event-materialization.js","sourceRoot":"","sources":["../../src/lib/event-materialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-materialization.js","sourceRoot":"","sources":["../../src/lib/event-materialization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmDH,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,SAAS,oBAAoB,CAC3B,MAAe,EACf,QAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IAAI,MAAM,GAAe,SAAS,CAAC;QACnC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,SAA2B,CAAC;QAChC,IAAI,WAA6B,CAAC;QAClC,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAElC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;gBACpB,KAAK,cAAc;oBACjB,MAAM,GAAG,SAAS,CAAC;oBACnB,OAAO,IAAI,CAAC,CAAC;oBACb,IAAI,CAAC,SAAS;wBAAE,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBACxC,WAAW,GAAG,SAAS,CAAC;oBACxB,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBACxB,MAAM;gBACR,KAAK,gBAAgB;oBACnB,MAAM,GAAG,WAAW,CAAC;oBACrB,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC1B,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBACxB,MAAM;gBACR,KAAK,aAAa;oBAChB,MAAM,GAAG,QAAQ,CAAC;oBAClB,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;oBAC1B,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBACxB,MAAM;gBACR,KAAK,eAAe;oBAClB,MAAM,GAAG,SAAS,CAAC;oBACnB,WAAW,GAAG,SAAS,CAAC;oBACxB,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;oBACxB,MAAM;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EACN,OAAO,CAAC,SAAS,KAAK,cAAc;gBAClC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,IAAI,aAAa,CAAC;gBAChD,CAAC,CAAC,aAAa;YACnB,MAAM;YACN,OAAO;YACP,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS;YACT,WAAW;YACX,SAAS;YACT,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,CACvC,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EACH,OAAO,CAAC,SAAS,KAAK,cAAc;gBAClC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK;gBAC1B,CAAC,CAAC,SAAS;YACf,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,cAAc,CAAC,MAAM;YACpC,cAAc,EAAE,YAAY,EAAE,SAAS;YACvC,UAAU,EAAE,QAAQ,EAAE,SAAS;YAC/B,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC,CAAC;QAE3E,KAAK,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EACN,OAAO,CAAC,SAAS,KAAK,cAAc;gBAClC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ;gBAC7B,CAAC,CAAC,SAAS;YACf,WAAW,EAAE,SAAS,EAAE,SAAS;YACjC,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,OAAO;QACL,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAC/B,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAC/B,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;KAChC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Event materialization helpers.\n *\n * These functions convert a flat list of workflow events into entity-like\n * objects (steps, hooks, waits) by grouping events by correlationId and\n * stitching together lifecycle events.\n *\n * This enables a \"top-down\" data fetching pattern where the client fetches\n * all events for a run once, then materializes entities client-side instead\n * of making separate API calls for each entity type.\n */\n\nimport type { Event, StepStatus } from '@workflow/world';\n\n// ---------------------------------------------------------------------------\n// Materialized entity types\n// ---------------------------------------------------------------------------\n\nexport interface MaterializedStep {\n stepId: string;\n runId: string;\n stepName: string;\n status: StepStatus;\n attempt: number;\n createdAt: Date;\n startedAt?: Date;\n completedAt?: Date;\n updatedAt: Date;\n /** All events for this step, in insertion order */\n events: Event[];\n}\n\nexport interface MaterializedHook {\n hookId: string;\n runId: string;\n token?: string;\n createdAt: Date;\n receivedCount: number;\n lastReceivedAt?: Date;\n disposedAt?: Date;\n /** All events for this hook, in insertion order */\n events: Event[];\n}\n\nexport interface MaterializedWait {\n waitId: string;\n runId: string;\n status: 'waiting' | 'completed';\n createdAt: Date;\n resumeAt?: Date;\n completedAt?: Date;\n /** All events for this wait, in insertion order */\n events: Event[];\n}\n\nexport interface MaterializedEntities {\n steps: MaterializedStep[];\n hooks: MaterializedHook[];\n waits: MaterializedWait[];\n}\n\n// ---------------------------------------------------------------------------\n// Helper: group events by correlationId prefix\n// ---------------------------------------------------------------------------\n\nfunction groupByCorrelationId(\n events: Event[],\n prefixes: string[]\n): Map<string, Event[]> {\n const groups = new Map<string, Event[]>();\n for (const event of events) {\n const cid = event.correlationId;\n if (!cid) continue;\n if (!prefixes.some((p) => cid.startsWith(p))) continue;\n const existing = groups.get(cid);\n if (existing) {\n existing.push(event);\n } else {\n groups.set(cid, [event]);\n }\n }\n return groups;\n}\n\n// ---------------------------------------------------------------------------\n// materializeSteps\n// ---------------------------------------------------------------------------\n\n/**\n * Group step_* events by correlationId and build Step-like entities.\n *\n * Handles partial event lists gracefully: a step may only have a\n * step_created event with no completion yet.\n */\nexport function materializeSteps(events: Event[]): MaterializedStep[] {\n const groups = groupByCorrelationId(events, ['step_']);\n const steps: MaterializedStep[] = [];\n\n for (const [correlationId, stepEvents] of groups) {\n const created = stepEvents.find((e) => e.eventType === 'step_created');\n if (!created) continue;\n\n let status: StepStatus = 'pending';\n let attempt = 0;\n let startedAt: Date | undefined;\n let completedAt: Date | undefined;\n let updatedAt = created.createdAt;\n\n for (const e of stepEvents) {\n switch (e.eventType) {\n case 'step_started':\n status = 'running';\n attempt += 1;\n if (!startedAt) startedAt = e.createdAt;\n completedAt = undefined;\n updatedAt = e.createdAt;\n break;\n case 'step_completed':\n status = 'completed';\n completedAt = e.createdAt;\n updatedAt = e.createdAt;\n break;\n case 'step_failed':\n status = 'failed';\n completedAt = e.createdAt;\n updatedAt = e.createdAt;\n break;\n case 'step_retrying':\n status = 'pending';\n completedAt = undefined;\n updatedAt = e.createdAt;\n break;\n }\n }\n\n steps.push({\n stepId: correlationId,\n runId: created.runId,\n stepName:\n created.eventType === 'step_created'\n ? (created.eventData?.stepName ?? correlationId)\n : correlationId,\n status,\n attempt,\n createdAt: created.createdAt,\n startedAt,\n completedAt,\n updatedAt,\n events: stepEvents,\n });\n }\n\n return steps;\n}\n\n// ---------------------------------------------------------------------------\n// materializeHooks\n// ---------------------------------------------------------------------------\n\n/**\n * Group hook_* events by correlationId and build Hook-like entities.\n */\nexport function materializeHooks(events: Event[]): MaterializedHook[] {\n const groups = groupByCorrelationId(events, ['hook_']);\n const hooks: MaterializedHook[] = [];\n\n for (const [correlationId, hookEvents] of groups) {\n const created = hookEvents.find((e) => e.eventType === 'hook_created');\n if (!created) continue;\n\n const receivedEvents = hookEvents.filter(\n (e) => e.eventType === 'hook_received'\n );\n const disposed = hookEvents.find((e) => e.eventType === 'hook_disposed');\n const lastReceived = receivedEvents.at(-1);\n\n hooks.push({\n hookId: correlationId,\n runId: created.runId,\n token:\n created.eventType === 'hook_created'\n ? created.eventData?.token\n : undefined,\n createdAt: created.createdAt,\n receivedCount: receivedEvents.length,\n lastReceivedAt: lastReceived?.createdAt,\n disposedAt: disposed?.createdAt,\n events: hookEvents,\n });\n }\n\n return hooks;\n}\n\n// ---------------------------------------------------------------------------\n// materializeWaits\n// ---------------------------------------------------------------------------\n\n/**\n * Group wait_* events by correlationId and build Wait-like entities.\n */\nexport function materializeWaits(events: Event[]): MaterializedWait[] {\n const groups = groupByCorrelationId(events, ['wait_']);\n const waits: MaterializedWait[] = [];\n\n for (const [correlationId, waitEvents] of groups) {\n const created = waitEvents.find((e) => e.eventType === 'wait_created');\n if (!created) continue;\n\n const completed = waitEvents.find((e) => e.eventType === 'wait_completed');\n\n waits.push({\n waitId: correlationId,\n runId: created.runId,\n status: completed ? 'completed' : 'waiting',\n createdAt: created.createdAt,\n resumeAt:\n created.eventType === 'wait_created'\n ? created.eventData?.resumeAt\n : undefined,\n completedAt: completed?.createdAt,\n events: waitEvents,\n });\n }\n\n return waits;\n}\n\n// ---------------------------------------------------------------------------\n// materializeAll\n// ---------------------------------------------------------------------------\n\n/**\n * Convenience function that materializes all entity types from a flat\n * event list.\n */\nexport function materializeAll(events: Event[]): MaterializedEntities {\n return {\n steps: materializeSteps(events),\n hooks: materializeHooks(events),\n waits: materializeWaits(events),\n };\n}\n"]}
@@ -6,7 +6,7 @@
6
6
  * objects for UI rendering.
7
7
  */
8
8
  import { type Revivers } from '@workflow/core/serialization-format';
9
- export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isStreamId, isStreamRef, type Revivers, STREAM_REF_TYPE, type StreamRef, truncateId, } from '@workflow/core/serialization-format';
9
+ export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isRunRef, isStreamId, isStreamRef, type Revivers, RUN_REF_TYPE, type RunRef, STREAM_REF_TYPE, type StreamRef, serializedInstanceToRef, truncateId, } from '@workflow/core/serialization-format';
10
10
  /**
11
11
  * Get the web-specific revivers for hydrating serialized data.
12
12
  *
@@ -36,7 +36,14 @@ export declare function isExpiredMarker(value: unknown): boolean;
36
36
  * This is the async version used when the user clicks "Decrypt" in the web UI.
37
37
  *
38
38
  * Handles both top-level fields (input, output, metadata) and nested
39
- * eventData subfields (result, input, output, metadata, payload).
39
+ * eventData subfields per `EVENT_DATA_REF_FIELDS` from `@workflow/world` for that event type.
40
40
  */
41
41
  export declare function hydrateResourceIOWithKey<T>(resource: T, key: Uint8Array): Promise<T>;
42
+ /**
43
+ * Check whether a hydrated resource (event, step, run, etc.) contains any
44
+ * encrypted display markers. Inspects the standard top-level fields
45
+ * (`input`, `output`, `error`, `metadata`) as well as the event-type-specific
46
+ * `eventData` ref fields.
47
+ */
48
+ export declare function hasEncryptedFields(resource: unknown): boolean;
42
49
  //# sourceMappingURL=hydration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,SAAS,EACd,UAAU,GACX,MAAM,qCAAqC,CAAC;AAsB7C;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA4FzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AA0CD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAqDZ"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAsB7C;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAiGzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAwDZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}