@workflow/web-shared 5.0.0-beta.1 → 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.
- package/README.md +1 -1
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/event-list-view.d.ts +3 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +53 -53
- package/dist/components/event-list-view.js.map +1 -1
- package/dist/components/hook-actions.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/run-trace-view.d.ts +2 -1
- package/dist/components/run-trace-view.d.ts.map +1 -1
- package/dist/components/run-trace-view.js +2 -2
- package/dist/components/run-trace-view.js.map +1 -1
- package/dist/components/sidebar/attribute-panel.d.ts +7 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +36 -26
- package/dist/components/sidebar/attribute-panel.js.map +1 -1
- package/dist/components/sidebar/conversation-view.js.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js.map +1 -1
- package/dist/components/sidebar/detail-card.js.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.d.ts +5 -1
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +18 -16
- package/dist/components/sidebar/entity-detail-panel.js.map +1 -1
- package/dist/components/sidebar/events-list.js.map +1 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +1 -1
- package/dist/components/stream-viewer.js.map +1 -1
- package/dist/components/trace-viewer/components/map.js.map +1 -1
- package/dist/components/trace-viewer/components/markers.js.map +1 -1
- package/dist/components/trace-viewer/components/node.js.map +1 -1
- package/dist/components/trace-viewer/components/search-input.js.map +1 -1
- package/dist/components/trace-viewer/components/search.js.map +1 -1
- package/dist/components/trace-viewer/components/span-content.js.map +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +1 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +1 -1
- package/dist/components/trace-viewer/components/ui.js.map +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +1 -1
- package/dist/components/trace-viewer/context.js.map +1 -1
- package/dist/components/trace-viewer/index.js.map +1 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +1 -1
- package/dist/components/trace-viewer/types.js.map +1 -1
- package/dist/components/trace-viewer/util/constants.js.map +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +1 -1
- package/dist/components/trace-viewer/util/timing.js.map +1 -1
- package/dist/components/trace-viewer/util/tree.js.map +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +1 -1
- package/dist/components/trace-viewer/worker.js.map +1 -1
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/data-inspector.d.ts +17 -1
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +116 -21
- package/dist/components/ui/data-inspector.js.map +1 -1
- package/dist/components/ui/decrypt-button.js.map +1 -1
- package/dist/components/ui/error-card.js.map +1 -1
- package/dist/components/ui/error-stack-block.js.map +1 -1
- package/dist/components/ui/inspector-theme.js.map +1 -1
- package/dist/components/ui/load-more-button.js.map +1 -1
- package/dist/components/ui/menu-dropdown.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/timestamp-tooltip.js.map +1 -1
- package/dist/components/workflow-trace-view.d.ts +5 -1
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +7 -2
- package/dist/components/workflow-trace-view.js.map +1 -1
- package/dist/components/workflow-traces/event-colors.js.map +1 -1
- package/dist/components/workflow-traces/trace-colors.js.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +1 -1
- package/dist/hooks/use-dark-mode.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/event-analysis.js.map +1 -1
- package/dist/lib/event-materialization.js.map +1 -1
- package/dist/lib/hydration.d.ts +8 -1
- package/dist/lib/hydration.d.ts.map +1 -1
- package/dist/lib/hydration.js +32 -2
- package/dist/lib/hydration.js.map +1 -1
- package/dist/lib/toast.js.map +1 -1
- package/dist/lib/trace-builder.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/components/event-list-view.tsx +181 -173
- package/src/components/index.ts +6 -1
- package/src/components/run-trace-view.tsx +3 -0
- package/src/components/sidebar/attribute-panel.tsx +160 -109
- package/src/components/sidebar/entity-detail-panel.tsx +111 -96
- package/src/components/ui/data-inspector.tsx +205 -31
- package/src/components/workflow-trace-view.tsx +14 -0
- package/src/components/workflow-traces/trace-span-construction.ts +1 -1
- package/src/index.ts +1 -0
- package/src/lib/hydration.ts +37 -0
|
@@ -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":"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"}
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"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","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"]}
|
package/dist/lib/hydration.d.ts
CHANGED
|
@@ -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
|
*
|
|
@@ -39,4 +39,11 @@ export declare function isExpiredMarker(value: unknown): boolean;
|
|
|
39
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,
|
|
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"}
|
package/dist/lib/hydration.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* `Buffer` dependency). Produces `ClassInstanceRef` objects and `StreamRef`
|
|
6
6
|
* objects for UI rendering.
|
|
7
7
|
*/
|
|
8
|
-
import { extractClassName, hydrateResourceIO as hydrateResourceIOGeneric, isEncryptedData, isExpiredStub, observabilityRevivers, } from '@workflow/core/serialization-format';
|
|
8
|
+
import { extractClassName, hydrateResourceIO as hydrateResourceIOGeneric, isEncryptedData, isExpiredStub, isRunRef, observabilityRevivers, serializedInstanceToRef, } from '@workflow/core/serialization-format';
|
|
9
9
|
import { EVENT_DATA_REF_FIELDS } from '@workflow/world';
|
|
10
10
|
// Re-export types and utilities that consumers need
|
|
11
|
-
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from '@workflow/core/serialization-format';
|
|
11
|
+
export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, isClassInstanceRef, isEncryptedData, isRunRef, isStreamId, isStreamRef, RUN_REF_TYPE, STREAM_REF_TYPE, serializedInstanceToRef, truncateId, } from '@workflow/core/serialization-format';
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
13
|
// Browser-safe base64 decode
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
@@ -104,6 +104,11 @@ export function getWebRevivers() {
|
|
|
104
104
|
// react-inspector shows the class name (it reads constructor.name).
|
|
105
105
|
Class: (value) => `<class:${extractClassName(value.classId)}>`,
|
|
106
106
|
Instance: (value) => {
|
|
107
|
+
// Run instances are rendered as clickable RunRef badges
|
|
108
|
+
const runRef = serializedInstanceToRef(value);
|
|
109
|
+
if (isRunRef(runRef)) {
|
|
110
|
+
return runRef;
|
|
111
|
+
}
|
|
107
112
|
const className = extractClassName(value.classId);
|
|
108
113
|
const data = value.data;
|
|
109
114
|
const props = data && typeof data === 'object' ? { ...data } : { value: data };
|
|
@@ -278,4 +283,29 @@ export async function hydrateResourceIOWithKey(resource, key) {
|
|
|
278
283
|
}
|
|
279
284
|
return result;
|
|
280
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Check whether a hydrated resource (event, step, run, etc.) contains any
|
|
288
|
+
* encrypted display markers. Inspects the standard top-level fields
|
|
289
|
+
* (`input`, `output`, `error`, `metadata`) as well as the event-type-specific
|
|
290
|
+
* `eventData` ref fields.
|
|
291
|
+
*/
|
|
292
|
+
export function hasEncryptedFields(resource) {
|
|
293
|
+
if (!resource || typeof resource !== 'object')
|
|
294
|
+
return false;
|
|
295
|
+
const r = resource;
|
|
296
|
+
for (const key of ['input', 'output', 'metadata', 'error']) {
|
|
297
|
+
if (isEncryptedMarker(r[key]))
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
if (r.eventData && typeof r.eventData === 'object') {
|
|
301
|
+
const eventType = typeof r.eventType === 'string' ? r.eventType : '';
|
|
302
|
+
const refKeys = EVENT_DATA_REF_FIELDS[eventType] ?? [];
|
|
303
|
+
const ed = r.eventData;
|
|
304
|
+
for (const key of refKeys) {
|
|
305
|
+
if (key in ed && isEncryptedMarker(ed[key]))
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
281
311
|
//# sourceMappingURL=hydration.js.map
|