@workflow/web 5.0.0-beta.38 → 5.0.0-beta.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/build/client/assets/app-BqwHo5GR.css +1 -0
- package/build/client/assets/{arrow-up-right-BRTGGI7c.js → arrow-up-right-Ccx_FPfU.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-DwhUiBi7.js → highlighted-body-B3W2YXNL-DMawUm9n.js} +1 -1
- package/build/client/assets/{home-DBrnNvHF.js → home-B6O_uPSC.js} +3 -3
- package/build/client/assets/{loader-circle-WvWWlrvM.js → loader-circle-BrO0dxVn.js} +1 -1
- package/build/client/assets/{manifest-70ec0eba.js → manifest-7e8691f4.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-xYKZZytQ.js → mermaid-3ZIDBTTL-D20ZkB54.js} +473 -1549
- package/build/client/assets/mermaid-3ZIDBTTL-D8CjRQta.css +1 -0
- package/build/client/assets/root-CxZylOIf.css +1 -0
- package/build/client/assets/{root-Cimnh7R3.js → root-dudvdmvf.js} +3 -3
- package/build/client/assets/{run-detail-Dr7nmBuO.js → run-detail-DtCCxxv2.js} +224 -210
- package/build/client/assets/{workflow-graph-viewer-tTf4FHzV.js → workflow-graph-viewer-B01nH75E.js} +2 -2
- package/build/client/assets/{zstd-browser-decoder-B15ptsR4.js → zstd-browser-decoder-Dw3HhTgO.js} +1 -1
- package/build/server/assets/{app-BUMjG2-y.js → app-Bd12Opaf.js} +7017 -7304
- package/build/server/assets/{highlighted-body-B3W2YXNL-Bkx5Bh9I.js → highlighted-body-B3W2YXNL-CFlRme7u.js} +1 -1
- package/build/server/assets/{index-DVvcuTAp.js → index-B6SJpqpo.js} +62 -59
- package/build/server/assets/{mermaid-3ZIDBTTL-CSJYRI2g.js → mermaid-3ZIDBTTL-CQsU8DGa.js} +1 -1
- package/build/server/assets/{token-BXRDO8X7.js → token-XJr1pjmC.js} +1 -1
- package/build/server/assets/{token-util-2RA-Rh-5.js → token-util-BJaMxWWP.js} +1 -1
- package/build/server/assets/{zstd-browser-decoder-Cqnyq-Ly.js → zstd-browser-decoder-DL7Vc3pV.js} +1 -1
- package/build/server/index.js +3 -3
- package/package.json +7 -7
- package/build/client/assets/app-_i85JgUF.css +0 -1
- package/build/client/assets/mermaid-3ZIDBTTL-DDxQhcP4.css +0 -1
- package/build/client/assets/root-CINgYZFD.css +0 -1
- package/build/client/assets/worker-CqHKTA7D.js +0 -115
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, D as ReactDOM, d as useNavigate, e as useSearchParams, c as Link, w as withComponentProps, G as useParams } from "./index-PFjW8YjQ.js";
|
|
2
|
-
import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, y as cancelRun, a6 as recreateRun } from "./workflow-graph-viewer-
|
|
3
|
-
import { c as createLucideIcon, X as cn, Y as CopyableDataBlock, Z as CollapsibleRoot, $ as CollapsibleTrigger, a0 as CollapsibleContent, a1 as CopyButton, N as cva, a2 as RESERVED_ATTRIBUTE_KEY_PREFIX, a3 as Spinner, a4 as ContextCardProvider, h as useToast, a5 as Skeleton, a6 as DecryptClickContext, a7 as Yr, a8 as isEncryptedMarker, m as ChevronRight, a9 as TimestampTooltip, aa as formatDuration, C as Check, l as Copy, ab as DataInspector, ac as
|
|
4
|
-
import { A as ArrowUpRight } from "./arrow-up-right-
|
|
2
|
+
import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, y as cancelRun, a6 as recreateRun } from "./workflow-graph-viewer-B01nH75E.js";
|
|
3
|
+
import { c as createLucideIcon, X as cn, Y as CopyableDataBlock, Z as CollapsibleRoot, $ as CollapsibleTrigger, a0 as CollapsibleContent, a1 as CopyButton, N as cva, a2 as RESERVED_ATTRIBUTE_KEY_PREFIX, a3 as Spinner, a4 as ContextCardProvider, h as useToast, a5 as Skeleton, a6 as DecryptClickContext, a7 as Yr, a8 as isEncryptedMarker, m as ChevronRight, a9 as TimestampTooltip, aa as formatDuration, C as Check, l as Copy, ab as DataInspector, ac as _r, ad as isHookLifecycleEventType, ae as isTerminalStepEventType, af as isWaitEventType, ag as isStepEventType, ah as RunClickContext, ai as StreamClickContext, aj as Collapsible, ak as isExpiredMarker, al as isDoStreamStep, am as extractConversation, an as EncryptedDataBlock, ao as getEventDataRefFields, ap as hasEncryptedFields, aq as useSidebarDataOptional, ar as isTerminalWorkflowRunStatus, as as clsx, at as useActiveSpan, au as useSidebarData, av as Tooltip, aw as TooltipTrigger, ax as IconButton, ay as TooltipContent, J as ChevronDown, az as useRowWindow, aA as isSpanDimmedBySearch, aB as ROW_HEIGHT_PX, aC as getSpanDurationMs, aD as isSpanErrored, aE as formatDurationPrecise, aF as TooltipProvider, aG as ActiveSpanProvider, aH as useReducedMotion, aI as searchSpans, aJ as computeRootBounds, aK as computeTimeMarkers, aL as clampViewportToRoot, aM as getHighResInMs, aN as scrollRowIntoView, aO as TIMELINE_PADDING_PX, aP as Minimap, aQ as Timeline, aR as TimelineHeader, aS as wheelZoomScaleFactor, aT as wheelDeltaToPixels, aU as SidebarDataProvider, aV as fetchHook, n as fetchEvents, aW as hydrateResourceIOAsync, M as fetchRun, aX as fetchStep, aY as hydrateResourceIO, aZ as fetchStreams, a_ as apiBase, a$ as Slot, L as useComposedRefs, b0 as Slottable, e as cn$1, b1 as buttonVariants, b2 as fetchEvent, b3 as fetchEventsByCorrelationId, b4 as isEncryptedData, b5 as hydrateData, b6 as decrypt, b7 as deriveRunPayloadKeys, b8 as getWebRevivers, T as Tooltip$1, a as TooltipTrigger$1, b as TooltipContent$1, b9 as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, ba as getEncryptionKeyForRun, t as toast, bb as StreamViewerSkeleton, bc as Lock, bd as StreamViewer } from "./mermaid-3ZIDBTTL-D20ZkB54.js";
|
|
4
|
+
import { A as ArrowUpRight } from "./arrow-up-right-Ccx_FPfU.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license lucide-react v0.575.0 - ISC
|
|
7
7
|
*
|
|
@@ -516,14 +516,14 @@ ${stack}` : body;
|
|
|
516
516
|
color: "var(--ds-red-900)",
|
|
517
517
|
borderBottom: "1px solid var(--ds-red-400)"
|
|
518
518
|
}, children: [jsxRuntimeExports.jsx(CircleAlert, { className: "h-4 w-4 shrink-0" }), jsxRuntimeExports.jsx("p", {
|
|
519
|
-
className: "text-
|
|
519
|
+
className: "text-label-12 font-semibold m-0 truncate",
|
|
520
520
|
// The full message or stack is in the body below; the header just
|
|
521
521
|
// shows the first line, single-line, with overflow
|
|
522
522
|
// ellipsised so a long title doesn't push the copy button or
|
|
523
523
|
// wrap into the framed hint/docs lines.
|
|
524
524
|
title: message,
|
|
525
525
|
children: title
|
|
526
|
-
})] }), body && jsxRuntimeExports.jsx("pre", { className: "px-3 py-2.5 text-
|
|
526
|
+
})] }), body && jsxRuntimeExports.jsx("pre", { className: "px-3 py-2.5 text-label-12-mono whitespace-pre-wrap break-words overflow-auto m-0", style: {
|
|
527
527
|
color: "var(--ds-red-900)",
|
|
528
528
|
background: "var(--ds-red-200)"
|
|
529
529
|
}, children: body })] });
|
|
@@ -870,10 +870,10 @@ function PayloadBlock({ data, eventType }) {
|
|
|
870
870
|
if (eventType === "run_cancelled") {
|
|
871
871
|
const cancelReason = cleaned != null && typeof cleaned === "object" && typeof cleaned.cancelReason === "string" ? cleaned.cancelReason : null;
|
|
872
872
|
if (cancelReason) {
|
|
873
|
-
return jsxRuntimeExports.jsxs("div", { className: "p-2 text-
|
|
873
|
+
return jsxRuntimeExports.jsxs("div", { className: "p-2 text-label-12", style: { color: "var(--ds-gray-1000)" }, children: [jsxRuntimeExports.jsx("span", { style: { color: "var(--ds-gray-900)" }, children: "Reason: " }), jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words", children: cancelReason })] });
|
|
874
874
|
}
|
|
875
875
|
}
|
|
876
|
-
return jsxRuntimeExports.jsxs("div", { className: "relative group/payload", children: [jsxRuntimeExports.jsx("div", { className: "overflow-x-auto p-2 text-[11px]", style: { color: "var(--ds-gray-1000)" }, children: jsxRuntimeExports.jsx(DataInspector, { data: cleaned, expandLevel: 2 }) }), jsxRuntimeExports.jsx("button", { type: "button", onClick: handleCopy, className: "absolute bottom-2 right-2 opacity-0 group-hover/payload:opacity-100 transition-opacity flex items-center gap-1 px-2 py-1 rounded-md text-
|
|
876
|
+
return jsxRuntimeExports.jsxs("div", { className: "relative group/payload", children: [jsxRuntimeExports.jsx("div", { className: "overflow-x-auto p-2 text-[11px]", style: { color: "var(--ds-gray-1000)" }, children: jsxRuntimeExports.jsx(DataInspector, { data: cleaned, expandLevel: 2 }) }), jsxRuntimeExports.jsx("button", { type: "button", onClick: handleCopy, className: "absolute bottom-2 right-2 opacity-0 group-hover/payload:opacity-100 transition-opacity flex items-center gap-1 px-2 py-1 rounded-md text-button-12 hover:bg-[var(--ds-gray-alpha-200)]", style: { ...BUTTON_RESET_STYLE, color: "var(--ds-gray-700)" }, "aria-label": "Copy payload", children: copied ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Check, { className: "h-3 w-3", style: { color: "var(--ds-green-700)" } }), jsxRuntimeExports.jsx("span", { style: { color: "var(--ds-green-700)" }, children: "Copied" })] }) : jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Copy, { className: "h-3 w-3" }), jsxRuntimeExports.jsx("span", { children: "Copy" })] }) })] });
|
|
877
877
|
}
|
|
878
878
|
const SORT_OPTIONS = [
|
|
879
879
|
{ value: "desc", label: "Newest" },
|
|
@@ -1006,7 +1006,7 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
1006
1006
|
return jsxRuntimeExports.jsxs("div", { "data-event-id": event.eventId, onMouseEnter: () => onHoverGroup(rowGroupKey), onMouseLeave: () => onHoverGroup(void 0), children: [jsxRuntimeExports.jsxs("div", { role: "button", tabIndex: 0, onClick: handleRowClick, onKeyDown: (e) => {
|
|
1007
1007
|
if (e.key === "Enter" || e.key === " ")
|
|
1008
1008
|
handleRowClick();
|
|
1009
|
-
}, className: "w-full text-left flex items-center gap-0 text-
|
|
1009
|
+
}, className: "w-full text-left flex items-center gap-0 text-label-13 hover:bg-[var(--ds-gray-alpha-100)] transition-colors cursor-pointer", style: { minHeight: 40 }, children: [jsxRuntimeExports.jsx(TreeGutter, { isFirst, isLast: isLast && !isExpanded, isRunLevel: isRun, statusDotColor, pulse: isPulsing, hasSelection: hasActive, showBranch, showLaneLine, isLaneStart, isLaneEnd }), jsxRuntimeExports.jsxs("div", { className: "flex items-center flex-1 min-w-0", style: { opacity: contentOpacity, transition: "opacity 150ms" }, children: [jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center w-5 h-5 flex-shrink-0 rounded", style: {
|
|
1010
1010
|
border: "1px solid var(--ds-gray-400)"
|
|
1011
1011
|
}, children: jsxRuntimeExports.jsx(ChevronRight, { className: "h-3 w-3 transition-transform", style: {
|
|
1012
1012
|
color: "var(--ds-gray-900)",
|
|
@@ -1034,11 +1034,11 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
1034
1034
|
borderColor: "var(--ds-gray-alpha-200)",
|
|
1035
1035
|
opacity: contentOpacity,
|
|
1036
1036
|
transition: "opacity 150ms"
|
|
1037
|
-
}, children: [((durationInfo == null ? void 0 : durationInfo.queued) !== void 0 || (durationInfo == null ? void 0 : durationInfo.ran) !== void 0) && jsxRuntimeExports.jsxs("div", { className: "px-2 pb-1.5 text-
|
|
1037
|
+
}, children: [((durationInfo == null ? void 0 : durationInfo.queued) !== void 0 || (durationInfo == null ? void 0 : durationInfo.ran) !== void 0) && jsxRuntimeExports.jsxs("div", { className: "px-2 pb-1.5 text-label-12 flex gap-3", style: { color: "var(--ds-gray-900)" }, children: [durationInfo.queued !== void 0 && durationInfo.queued > 0 && jsxRuntimeExports.jsxs("span", { children: ["Queued for", " ", jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatDuration(durationInfo.queued) })] }), durationInfo.ran !== void 0 && jsxRuntimeExports.jsxs("span", { children: ["Ran for", " ", jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatDuration(durationInfo.ran) })] })] }), displayPayload != null ? jsxRuntimeExports.jsx(PayloadBlock, { data: displayPayload, eventType: event.eventType }) : loadError ? jsxRuntimeExports.jsx("div", { className: "rounded-md border p-3 text-label-12", style: {
|
|
1038
1038
|
borderColor: "var(--ds-red-400)",
|
|
1039
1039
|
backgroundColor: "var(--ds-red-100)",
|
|
1040
1040
|
color: "var(--ds-red-900)"
|
|
1041
|
-
}, children: loadError }) : isLoading || loadedEventData === null && !hasAttemptedLoad && event.correlationId ? jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 p-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "75%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "50%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "60%" } })] }) : jsxRuntimeExports.jsx("div", { className: "p-2 text-
|
|
1041
|
+
}, children: loadError }) : isLoading || loadedEventData === null && !hasAttemptedLoad && event.correlationId ? jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 p-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "75%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "50%" } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: "60%" } })] }) : jsxRuntimeExports.jsx("div", { className: "p-2 text-label-12", style: { color: "var(--ds-gray-900)" }, children: "No data" })] })] })] });
|
|
1042
1042
|
}
|
|
1043
1043
|
function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = false, isLoadingMoreEvents = false, onLoadMoreEvents, encryptionKey, isLoading = false, sortOrder: sortOrderProp, onSortOrderChange, onDecrypt, isDecrypting = false, hasEncryptedData: hasEncryptedDataProp = false, onExactIdSearch, showSeparateEventOccurrenceTimestamps = false }) {
|
|
1044
1044
|
const toast2 = useToast();
|
|
@@ -1290,11 +1290,11 @@ function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = fals
|
|
|
1290
1290
|
width: "100%",
|
|
1291
1291
|
opacity: onExactIdSearch ? 1 : 0.5,
|
|
1292
1292
|
cursor: onExactIdSearch ? "text" : "not-allowed"
|
|
1293
|
-
} })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange }), (hasEncryptedData || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-
|
|
1293
|
+
} })] }), jsxRuntimeExports.jsx(MenuDropdown, { options: SORT_OPTIONS, value: effectiveSortOrder, onChange: handleSortOrderChange }), (hasEncryptedData || encryptionKey) && onDecrypt && jsxRuntimeExports.jsx(DecryptButton, { decrypted: !!encryptionKey, loading: isDecrypting, onClick: onDecrypt })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0 text-label-13 font-medium h-10 border-b flex-shrink-0", style: {
|
|
1294
1294
|
borderColor: "var(--ds-gray-alpha-200)",
|
|
1295
1295
|
color: "var(--ds-gray-900)",
|
|
1296
1296
|
backgroundColor: "var(--ds-background-100)"
|
|
1297
|
-
}, children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0", style: { width: GUTTER_WIDTH } }), jsxRuntimeExports.jsx("div", { className: "w-5 flex-shrink-0" }), showSeparateEventOccurrenceTimestamps && jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Occurred" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Created" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Event Type" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Name" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Correlation ID" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Event ID" })] }), isRefetching || searchLoading ? jsxRuntimeExports.jsx(RowsSkeleton, { showSeparateEventOccurrenceTimestamps }) : sortedEvents.length === 0 ? jsxRuntimeExports.jsx("div", { className: "flex flex-1 items-center justify-center px-6 text-center text-
|
|
1297
|
+
}, children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0", style: { width: GUTTER_WIDTH } }), jsxRuntimeExports.jsx("div", { className: "w-5 flex-shrink-0" }), showSeparateEventOccurrenceTimestamps && jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Occurred" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Created" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Event Type" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "2 1 0%" }, children: "Name" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Correlation ID" }), jsxRuntimeExports.jsx("div", { className: "min-w-0 px-4", style: { flex: "3 1 0%" }, children: "Event ID" })] }), isRefetching || searchLoading ? jsxRuntimeExports.jsx(RowsSkeleton, { showSeparateEventOccurrenceTimestamps }) : sortedEvents.length === 0 ? jsxRuntimeExports.jsx("div", { className: "flex flex-1 items-center justify-center px-6 text-center text-copy-14", style: { color: "var(--ds-gray-700)" }, children: searchNotFound && searchQuery.trim() ? `No events found for ${searchQuery.trim()}` : searchError ? searchError : parsedSearchId && searchQuery.trim() && !onExactIdSearch ? "Exact ID search is unavailable in this view." : "No events found" }) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: sortedEvents.length, overscan: 20, defaultItemHeight: 40, endReached: () => {
|
|
1298
1298
|
if (isExactSearchActive || !hasMoreEvents || isLoadingMoreEvents) {
|
|
1299
1299
|
return;
|
|
1300
1300
|
}
|
|
@@ -1302,7 +1302,7 @@ function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = fals
|
|
|
1302
1302
|
}, itemContent: (index) => {
|
|
1303
1303
|
const ev = sortedEvents[index];
|
|
1304
1304
|
return jsxRuntimeExports.jsx(EventRow$1, { event: ev, index, isFirst: index === 0, isLast: index === sortedEvents.length - 1, isExpanded: expandedEventIds.has(ev.eventId), onToggleExpand: toggleEventExpanded, activeGroupKey, selectedGroupKey, selectedGroupRange, correlationNameMap, workflowName, durationMap, onSelectGroup, onHoverGroup, onLoadEventData, cachedEventData: eventDataCacheRef.current.get(ev.eventId) ?? null, onCacheEventData: cacheEventData, encryptionKey, onEncryptedDataDetected: handleEncryptedDataDetected, suppressGroupDimming: isExactSearchActive, showSeparateEventOccurrenceTimestamps });
|
|
1305
|
-
}, style: { flex: 1, minHeight: 0 } }), jsxRuntimeExports.jsxs("div", { className: "relative flex-shrink-0 flex items-center h-10 border-t px-4 text-
|
|
1305
|
+
}, style: { flex: 1, minHeight: 0 } }), jsxRuntimeExports.jsxs("div", { className: "relative flex-shrink-0 flex items-center h-10 border-t px-4 text-label-12", style: {
|
|
1306
1306
|
borderColor: "var(--ds-gray-alpha-200)",
|
|
1307
1307
|
color: "var(--ds-gray-900)",
|
|
1308
1308
|
backgroundColor: "var(--ds-background-100)"
|
|
@@ -1311,31 +1311,111 @@ function EventListViewInner({ events, run, onLoadEventData, hasMoreEvents = fals
|
|
|
1311
1311
|
function EventListView(props) {
|
|
1312
1312
|
return jsxRuntimeExports.jsx(ContextCardProvider, { children: jsxRuntimeExports.jsx(EventListViewInner, { ...props }) });
|
|
1313
1313
|
}
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
return
|
|
1314
|
+
function ConversationView({ messages }) {
|
|
1315
|
+
if (messages.length === 0) {
|
|
1316
|
+
return jsxRuntimeExports.jsx("div", { className: "text-center py-8 text-[11px]", style: { color: "var(--ds-gray-600)" }, children: "No messages" });
|
|
1317
|
+
}
|
|
1318
|
+
return jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3 p-3", children: messages.map((message, index) => jsxRuntimeExports.jsx(MessageBubble, { message }, index)) });
|
|
1319
1319
|
}
|
|
1320
|
-
|
|
1321
|
-
const
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
];
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1320
|
+
function MessageBubble({ message }) {
|
|
1321
|
+
const role = message.role;
|
|
1322
|
+
const parts = parseContent(message.content);
|
|
1323
|
+
const style = getRoleStyle(role);
|
|
1324
|
+
return jsxRuntimeExports.jsxs("div", { className: "rounded-md border text-[11px]", style: {
|
|
1325
|
+
backgroundColor: style.bg,
|
|
1326
|
+
borderColor: style.border
|
|
1327
|
+
}, children: [jsxRuntimeExports.jsx("div", { className: "px-2.5 py-1 border-b text-[10px] font-medium uppercase tracking-wide", style: {
|
|
1328
|
+
borderColor: style.border,
|
|
1329
|
+
color: style.label
|
|
1330
|
+
}, children: role }), jsxRuntimeExports.jsx("div", { className: "px-2.5 py-2 space-y-2", children: parts.map((part, i) => jsxRuntimeExports.jsx(ContentPart, { part, role }, i)) })] });
|
|
1331
|
+
}
|
|
1332
|
+
function ContentPart({ part, role }) {
|
|
1333
|
+
if (part.type === "text") {
|
|
1334
|
+
if (!part.text)
|
|
1335
|
+
return null;
|
|
1336
|
+
if (role === "assistant") {
|
|
1337
|
+
return jsxRuntimeExports.jsx("div", { className: "prose prose-sm max-w-none text-[11px] [&>*:first-child]:mt-0 [&>*:last-child]:mb-0", style: { color: "var(--ds-gray-1000)" }, children: jsxRuntimeExports.jsx(_r, { children: part.text }) });
|
|
1338
|
+
}
|
|
1339
|
+
return jsxRuntimeExports.jsx("div", { className: "whitespace-pre-wrap break-words", style: { color: "var(--ds-gray-1000)" }, children: part.text });
|
|
1340
|
+
}
|
|
1341
|
+
if (part.type === "tool-call") {
|
|
1342
|
+
return jsxRuntimeExports.jsxs("div", { className: "rounded border px-2 py-1.5", style: {
|
|
1343
|
+
backgroundColor: "var(--ds-purple-100)",
|
|
1344
|
+
borderColor: "var(--ds-purple-300)"
|
|
1345
|
+
}, children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-[10px] font-medium", children: [jsxRuntimeExports.jsx("span", { children: "🔧" }), jsxRuntimeExports.jsx("span", { style: { color: "var(--ds-purple-900)" }, children: part.toolName })] }), part.input != null && jsxRuntimeExports.jsx("div", { className: "mt-1.5 overflow-x-auto p-1.5 rounded", style: { backgroundColor: "var(--ds-gray-100)" }, children: typeof part.input === "string" ? jsxRuntimeExports.jsx("pre", { className: "text-[10px]", style: { color: "var(--ds-gray-800)" }, children: part.input }) : jsxRuntimeExports.jsx(DataInspector, { data: part.input }) })] });
|
|
1346
|
+
}
|
|
1347
|
+
if (part.type === "tool-result") {
|
|
1348
|
+
return jsxRuntimeExports.jsxs("div", { className: "rounded border px-2 py-1.5", style: {
|
|
1349
|
+
backgroundColor: "var(--ds-green-100)",
|
|
1350
|
+
borderColor: "var(--ds-green-300)"
|
|
1351
|
+
}, children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-[10px] font-medium", children: [jsxRuntimeExports.jsx("span", { children: "✓" }), jsxRuntimeExports.jsxs("span", { style: { color: "var(--ds-green-900)" }, children: [part.toolName, " result"] })] }), part.output != null && jsxRuntimeExports.jsx("div", { className: "mt-1.5 overflow-x-auto max-h-[200px] overflow-y-auto p-1.5 rounded", style: { backgroundColor: "var(--ds-gray-100)" }, children: typeof part.output === "string" ? jsxRuntimeExports.jsx("pre", { className: "text-[10px]", style: { color: "var(--ds-gray-800)" }, children: part.output }) : jsxRuntimeExports.jsx(DataInspector, { data: part.output, expandLevel: 1 }) })] });
|
|
1352
|
+
}
|
|
1353
|
+
return null;
|
|
1354
|
+
}
|
|
1355
|
+
function getRoleStyle(role) {
|
|
1356
|
+
switch (role) {
|
|
1357
|
+
case "user":
|
|
1358
|
+
return {
|
|
1359
|
+
bg: "var(--ds-blue-100)",
|
|
1360
|
+
border: "var(--ds-blue-300)",
|
|
1361
|
+
label: "var(--ds-blue-700)"
|
|
1362
|
+
};
|
|
1363
|
+
case "assistant":
|
|
1364
|
+
return {
|
|
1365
|
+
bg: "var(--ds-gray-100)",
|
|
1366
|
+
border: "var(--ds-gray-300)",
|
|
1367
|
+
label: "var(--ds-gray-700)"
|
|
1368
|
+
};
|
|
1369
|
+
case "system":
|
|
1370
|
+
return {
|
|
1371
|
+
bg: "var(--ds-amber-100)",
|
|
1372
|
+
border: "var(--ds-amber-300)",
|
|
1373
|
+
label: "var(--ds-amber-700)"
|
|
1374
|
+
};
|
|
1375
|
+
case "tool":
|
|
1376
|
+
return {
|
|
1377
|
+
bg: "var(--ds-green-50)",
|
|
1378
|
+
border: "var(--ds-green-300)",
|
|
1379
|
+
label: "var(--ds-green-700)"
|
|
1380
|
+
};
|
|
1381
|
+
default:
|
|
1382
|
+
return {
|
|
1383
|
+
bg: "var(--ds-gray-100)",
|
|
1384
|
+
border: "var(--ds-gray-300)",
|
|
1385
|
+
label: "var(--ds-gray-700)"
|
|
1386
|
+
};
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
function parseContent(content) {
|
|
1390
|
+
if (typeof content === "string") {
|
|
1391
|
+
return [{ type: "text", text: content }];
|
|
1392
|
+
}
|
|
1393
|
+
if (Array.isArray(content)) {
|
|
1394
|
+
return content.map((part) => {
|
|
1395
|
+
if (typeof part === "string") {
|
|
1396
|
+
return { type: "text", text: part };
|
|
1397
|
+
}
|
|
1398
|
+
if ((part == null ? void 0 : part.type) === "text") {
|
|
1399
|
+
return { type: "text", text: String(part.text ?? "") };
|
|
1400
|
+
}
|
|
1401
|
+
if ((part == null ? void 0 : part.type) === "tool-call") {
|
|
1402
|
+
return {
|
|
1403
|
+
type: "tool-call",
|
|
1404
|
+
toolName: part.toolName,
|
|
1405
|
+
input: part.input
|
|
1406
|
+
};
|
|
1407
|
+
}
|
|
1408
|
+
if ((part == null ? void 0 : part.type) === "tool-result") {
|
|
1409
|
+
return {
|
|
1410
|
+
type: "tool-result",
|
|
1411
|
+
toolName: part.toolName,
|
|
1412
|
+
output: part.output
|
|
1413
|
+
};
|
|
1414
|
+
}
|
|
1415
|
+
return { type: "text", text: "" };
|
|
1416
|
+
});
|
|
1417
|
+
}
|
|
1418
|
+
return [];
|
|
1339
1419
|
}
|
|
1340
1420
|
function shouldShowVerticalLine(eventType) {
|
|
1341
1421
|
if (isHookLifecycleEventType(eventType)) {
|
|
@@ -1750,111 +1830,86 @@ function buildTrace(run, events, now) {
|
|
|
1750
1830
|
knownDurationMs: Math.max(0, knownDurationMs)
|
|
1751
1831
|
};
|
|
1752
1832
|
}
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
return
|
|
1833
|
+
const GUTTER_PX = 1;
|
|
1834
|
+
const MIN_PX = 50;
|
|
1835
|
+
const DEFAULT_START_PX = 340;
|
|
1836
|
+
function paneColTemplate(startPx) {
|
|
1837
|
+
return `${startPx}px ${GUTTER_PX}px minmax(${MIN_PX}px, 1fr)`;
|
|
1758
1838
|
}
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1839
|
+
const COL_TEMPLATE = paneColTemplate(DEFAULT_START_PX);
|
|
1840
|
+
const ROWS = [
|
|
1841
|
+
{ id: "r0", name: 62, off: 0, bar: 72 },
|
|
1842
|
+
{ id: "r1", name: 78, off: 6, bar: 48 },
|
|
1843
|
+
{ id: "r2", name: 50, off: 10, bar: 55 },
|
|
1844
|
+
{ id: "r3", name: 84, off: 18, bar: 30 },
|
|
1845
|
+
{ id: "r4", name: 45, off: 18, bar: 42 },
|
|
1846
|
+
{ id: "r5", name: 66, off: 34, bar: 38 },
|
|
1847
|
+
{ id: "r6", name: 55, off: 41, bar: 25 },
|
|
1848
|
+
{ id: "r7", name: 40, off: 50, bar: 30 }
|
|
1849
|
+
];
|
|
1850
|
+
const HEADER_MARKERS = ["m0", "m1", "m2", "m3"];
|
|
1851
|
+
const HeaderDivider = () => jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }) });
|
|
1852
|
+
function TraceViewerSkeleton() {
|
|
1853
|
+
return jsxRuntimeExports.jsxs("output", { "aria-busy": "true", "aria-label": "Loading trace", className: "flex flex-col w-full h-full min-h-0 bg-background-100", children: [jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Loading trace…" }), jsxRuntimeExports.jsx("div", { className: "relative h-10 min-h-10 shrink-0 border-b border-gray-alpha-400", children: jsxRuntimeExports.jsx("div", { className: "absolute inset-x-4 top-[6px]", children: ROWS.map((row, index) => jsxRuntimeExports.jsx(Skeleton, { className: "absolute h-[3px] rounded-full", style: {
|
|
1854
|
+
left: `${row.off}%`,
|
|
1855
|
+
width: `${row.bar}%`,
|
|
1856
|
+
top: index * 3.5
|
|
1857
|
+
} }, row.id)) }) }), jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsxs("div", { className: "h-10 min-h-10 flex items-center border-b border-gray-alpha-400 pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Skeleton, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3.5 w-40" })] }), jsxRuntimeExports.jsx(HeaderDivider, {}), jsxRuntimeExports.jsx("div", { className: "h-10 min-h-10 flex items-end border-b border-gray-alpha-400 px-4 pb-1 gap-2", children: jsxRuntimeExports.jsx("div", { className: "relative flex-1 flex items-end justify-between", children: HEADER_MARKERS.map((id) => jsxRuntimeExports.jsx(Skeleton, { className: "h-3.5 w-9" }, id)) }) })] }), jsxRuntimeExports.jsxs("div", { className: "grid flex-1 min-h-0 overflow-hidden", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx("ul", { className: "block divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: ROWS.map((row) => jsxRuntimeExports.jsxs("li", { className: "h-10 flex items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx(Skeleton, { className: "w-4 h-4 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton, { className: "h-3.5", style: { width: `${row.name}%` } })] }), jsxRuntimeExports.jsx(Skeleton, { className: "ml-2 h-3.5 w-10 shrink-0" })] }, row.id)) }) }), jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }), jsxRuntimeExports.jsx("div", { className: "relative min-h-0", children: ROWS.map((row) => jsxRuntimeExports.jsx("div", { className: "relative h-10", children: jsxRuntimeExports.jsx("div", { className: "absolute inset-x-4 inset-y-0", children: jsxRuntimeExports.jsx(Skeleton, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id)) })] })] });
|
|
1770
1858
|
}
|
|
1771
|
-
function
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
}
|
|
1792
|
-
return null;
|
|
1859
|
+
function useIntersectionObserver(elementRef, { threshold = 0, rootRef, rootMargin = "0%", freezeOnceVisible = false } = {}) {
|
|
1860
|
+
const [entry, setEntry] = reactExports.useState();
|
|
1861
|
+
const frozen = (entry == null ? void 0 : entry.isIntersecting) && freezeOnceVisible;
|
|
1862
|
+
reactExports.useEffect(() => {
|
|
1863
|
+
const node = elementRef == null ? void 0 : elementRef.current;
|
|
1864
|
+
const hasIOSupport = !!window.IntersectionObserver;
|
|
1865
|
+
if (!hasIOSupport || frozen || !node)
|
|
1866
|
+
return;
|
|
1867
|
+
const updateEntry = ([entry2]) => {
|
|
1868
|
+
setEntry(entry2);
|
|
1869
|
+
};
|
|
1870
|
+
const observer = new IntersectionObserver(updateEntry, {
|
|
1871
|
+
threshold,
|
|
1872
|
+
root: (rootRef == null ? void 0 : rootRef.current) ?? null,
|
|
1873
|
+
rootMargin
|
|
1874
|
+
});
|
|
1875
|
+
observer.observe(node);
|
|
1876
|
+
return () => observer.disconnect();
|
|
1877
|
+
}, [elementRef, threshold, rootRef, rootMargin, frozen]);
|
|
1878
|
+
return entry;
|
|
1793
1879
|
}
|
|
1794
|
-
function
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
};
|
|
1808
|
-
case "system":
|
|
1809
|
-
return {
|
|
1810
|
-
bg: "var(--ds-amber-100)",
|
|
1811
|
-
border: "var(--ds-amber-300)",
|
|
1812
|
-
label: "var(--ds-amber-700)"
|
|
1813
|
-
};
|
|
1814
|
-
case "tool":
|
|
1815
|
-
return {
|
|
1816
|
-
bg: "var(--ds-green-50)",
|
|
1817
|
-
border: "var(--ds-green-300)",
|
|
1818
|
-
label: "var(--ds-green-700)"
|
|
1819
|
-
};
|
|
1820
|
-
default:
|
|
1821
|
-
return {
|
|
1822
|
-
bg: "var(--ds-gray-100)",
|
|
1823
|
-
border: "var(--ds-gray-300)",
|
|
1824
|
-
label: "var(--ds-gray-700)"
|
|
1825
|
-
};
|
|
1826
|
-
}
|
|
1880
|
+
function useLoadMoreOnScroll(loadMore, { hasMore, isLoadingMore, rootRef, rootMargin = "400px" }) {
|
|
1881
|
+
const sentinelRef = reactExports.useRef(null);
|
|
1882
|
+
const entry = useIntersectionObserver(sentinelRef, { rootRef, rootMargin });
|
|
1883
|
+
const loadMoreRef = reactExports.useRef(loadMore);
|
|
1884
|
+
reactExports.useEffect(() => {
|
|
1885
|
+
loadMoreRef.current = loadMore;
|
|
1886
|
+
}, [loadMore]);
|
|
1887
|
+
reactExports.useEffect(() => {
|
|
1888
|
+
if ((entry == null ? void 0 : entry.isIntersecting) && hasMore && !isLoadingMore) {
|
|
1889
|
+
loadMoreRef.current();
|
|
1890
|
+
}
|
|
1891
|
+
}, [entry == null ? void 0 : entry.isIntersecting, hasMore, isLoadingMore]);
|
|
1892
|
+
return sentinelRef;
|
|
1827
1893
|
}
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
toolName: part.toolName,
|
|
1844
|
-
input: part.input
|
|
1845
|
-
};
|
|
1846
|
-
}
|
|
1847
|
-
if ((part == null ? void 0 : part.type) === "tool-result") {
|
|
1848
|
-
return {
|
|
1849
|
-
type: "tool-result",
|
|
1850
|
-
toolName: part.toolName,
|
|
1851
|
-
output: part.output
|
|
1852
|
-
};
|
|
1853
|
-
}
|
|
1854
|
-
return { type: "text", text: "" };
|
|
1855
|
-
});
|
|
1894
|
+
const kbdVariants = cva("inline-flex items-center justify-center rounded px-1 text-center font-sans", {
|
|
1895
|
+
variants: {
|
|
1896
|
+
variant: {
|
|
1897
|
+
subtle: "bg-background-100/20",
|
|
1898
|
+
outline: "border border-gray-alpha-400 bg-background-100 font-medium text-gray-900"
|
|
1899
|
+
},
|
|
1900
|
+
size: {
|
|
1901
|
+
default: "h-5 min-w-5 text-label-12 leading-none",
|
|
1902
|
+
compact: "h-4 min-h-4 min-w-4 text-[11px] leading-none",
|
|
1903
|
+
search: "h-5 min-h-5 min-w-5 text-label-13 leading-[1.7em]"
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1906
|
+
defaultVariants: {
|
|
1907
|
+
variant: "subtle",
|
|
1908
|
+
size: "default"
|
|
1856
1909
|
}
|
|
1857
|
-
|
|
1910
|
+
});
|
|
1911
|
+
function Kbd({ children, className, variant, size, ...props }) {
|
|
1912
|
+
return jsxRuntimeExports.jsx("kbd", { className: cn(kbdVariants({ variant, size, className })), ...props, children });
|
|
1858
1913
|
}
|
|
1859
1914
|
function TabButton({ active, onClick, children }) {
|
|
1860
1915
|
return jsxRuntimeExports.jsx("button", { type: "button", role: "tab", "aria-selected": active, tabIndex: active ? 0 : -1, onClick, className: "px-3 py-1.5 text-[11px] font-medium transition-colors -mb-px", style: {
|
|
@@ -1901,7 +1956,7 @@ function EncryptedFieldBlock() {
|
|
|
1901
1956
|
return jsxRuntimeExports.jsx(EncryptedDataBlock, {});
|
|
1902
1957
|
}
|
|
1903
1958
|
function ExpiredFieldBlock() {
|
|
1904
|
-
return jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1.5 rounded-md border px-3 py-2 text-
|
|
1959
|
+
return jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1.5 rounded-md border px-3 py-2 text-label-12", style: {
|
|
1905
1960
|
borderColor: "var(--ds-gray-300)",
|
|
1906
1961
|
backgroundColor: "var(--ds-gray-100)",
|
|
1907
1962
|
color: "var(--ds-gray-700)"
|
|
@@ -1932,12 +1987,16 @@ const attributeOrder = [
|
|
|
1932
1987
|
"runId",
|
|
1933
1988
|
"attempt",
|
|
1934
1989
|
"token",
|
|
1990
|
+
"isWebhook",
|
|
1991
|
+
"isSystem",
|
|
1935
1992
|
"receivedCount",
|
|
1936
1993
|
"lastReceivedAt",
|
|
1937
1994
|
"disposedAt",
|
|
1938
1995
|
"correlationId",
|
|
1939
1996
|
"eventType",
|
|
1940
1997
|
"deploymentId",
|
|
1998
|
+
"vercelId",
|
|
1999
|
+
"computeInstanceId",
|
|
1941
2000
|
"specVersion",
|
|
1942
2001
|
"workflowCoreVersion",
|
|
1943
2002
|
"ownerId",
|
|
@@ -1951,6 +2010,7 @@ const attributeOrder = [
|
|
|
1951
2010
|
"completedAt",
|
|
1952
2011
|
"expiredAt",
|
|
1953
2012
|
"retryAfter",
|
|
2013
|
+
"errorCode",
|
|
1954
2014
|
"error",
|
|
1955
2015
|
"metadata",
|
|
1956
2016
|
"eventData",
|
|
@@ -1959,11 +2019,11 @@ const attributeOrder = [
|
|
|
1959
2019
|
"attributes",
|
|
1960
2020
|
"resumeAt"
|
|
1961
2021
|
];
|
|
1962
|
-
const
|
|
1963
|
-
const
|
|
1964
|
-
|
|
1965
|
-
return aIndex - bIndex;
|
|
2022
|
+
const attributeOrderIndex = (attribute) => {
|
|
2023
|
+
const index = attributeOrder.indexOf(attribute);
|
|
2024
|
+
return index === -1 ? attributeOrder.length : index;
|
|
1966
2025
|
};
|
|
2026
|
+
const sortByAttributeOrder = (a, b) => attributeOrderIndex(a) - attributeOrderIndex(b);
|
|
1967
2027
|
const attributeDisplayNames = {
|
|
1968
2028
|
moduleSpecifier: "Module",
|
|
1969
2029
|
workflowName: "Workflow Name",
|
|
@@ -1978,6 +2038,8 @@ const attributeDisplayNames = {
|
|
|
1978
2038
|
errorCode: "Error Code",
|
|
1979
2039
|
correlationId: "Correlation ID",
|
|
1980
2040
|
deploymentId: "Deployment ID",
|
|
2041
|
+
vercelId: "Request ID",
|
|
2042
|
+
computeInstanceId: "Compute Instance ID",
|
|
1981
2043
|
specVersion: "Spec Version",
|
|
1982
2044
|
workflowCoreVersion: "@workflow/core version",
|
|
1983
2045
|
occurredAt: "Occurred",
|
|
@@ -2034,6 +2096,7 @@ const timestampWithTooltipOrNull = (value) => {
|
|
|
2034
2096
|
return null;
|
|
2035
2097
|
return jsxRuntimeExports.jsx(TimestampTooltip, { date, children: jsxRuntimeExports.jsx("span", { children: formatLocalMillisecondTime(date) }) });
|
|
2036
2098
|
};
|
|
2099
|
+
const opaqueIdOrNull = (value) => hasDisplayContent(value) ? String(value) : null;
|
|
2037
2100
|
const attributeToDisplayFn = {
|
|
2038
2101
|
// Names that need pretty-printing
|
|
2039
2102
|
workflowName: (_value) => null,
|
|
@@ -2056,11 +2119,15 @@ const attributeToDisplayFn = {
|
|
|
2056
2119
|
disposedAt: localMillisecondTimeOrNull,
|
|
2057
2120
|
// Internal resume plumbing — not surfaced in the UI
|
|
2058
2121
|
resumeContext: (_value) => null,
|
|
2122
|
+
resumeId: (_value) => null,
|
|
2123
|
+
resumeCapabilities: (_value) => null,
|
|
2059
2124
|
// Event details
|
|
2060
2125
|
eventType: (value) => String(value),
|
|
2061
2126
|
correlationId: (value) => String(value),
|
|
2062
2127
|
// Project details
|
|
2063
2128
|
deploymentId: (value) => String(value),
|
|
2129
|
+
vercelId: opaqueIdOrNull,
|
|
2130
|
+
computeInstanceId: opaqueIdOrNull,
|
|
2064
2131
|
specVersion: (value) => String(value),
|
|
2065
2132
|
workflowCoreVersion: (value) => String(value),
|
|
2066
2133
|
// Tenancy (we don't show these)
|
|
@@ -2183,7 +2250,7 @@ const selfHeaderedAttributes = /* @__PURE__ */ new Set([
|
|
|
2183
2250
|
"attributes",
|
|
2184
2251
|
"eventData"
|
|
2185
2252
|
]);
|
|
2186
|
-
const ExpiredDataMessage = () => jsxRuntimeExports.jsx("div", { className: "text-
|
|
2253
|
+
const ExpiredDataMessage = () => jsxRuntimeExports.jsx("div", { className: "text-label-12 rounded-md border p-4 my-2", style: {
|
|
2187
2254
|
borderColor: "var(--ds-gray-300)",
|
|
2188
2255
|
backgroundColor: "var(--ds-gray-100)",
|
|
2189
2256
|
color: "var(--ds-gray-700)"
|
|
@@ -2193,6 +2260,8 @@ const copyableBasicAttributes = /* @__PURE__ */ new Set([
|
|
|
2193
2260
|
"hookId",
|
|
2194
2261
|
"eventId",
|
|
2195
2262
|
"deploymentId",
|
|
2263
|
+
"vercelId",
|
|
2264
|
+
"computeInstanceId",
|
|
2196
2265
|
"moduleSpecifier",
|
|
2197
2266
|
"token"
|
|
2198
2267
|
]);
|
|
@@ -2232,7 +2301,7 @@ const AttributeBlock = ({ attribute, value, isLoading, inline = false, context }
|
|
|
2232
2301
|
if (selfHeaderedAttributes.has(attribute)) {
|
|
2233
2302
|
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: displayValue });
|
|
2234
2303
|
}
|
|
2235
|
-
return jsxRuntimeExports.jsxs("div", { className: "relative", children: [typeof isLoading === "boolean" && isLoading && jsxRuntimeExports.jsx("div", { className: "absolute top-9 right-4", children: jsxRuntimeExports.jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: "var(--ds-gray-900)" } }) }), jsxRuntimeExports.jsxs("div", { className: "my-2 flex flex-col gap-0", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-1000 font-medium first-letter:uppercase", children: attribute }), jsxRuntimeExports.jsx("span", { className: "text-
|
|
2304
|
+
return jsxRuntimeExports.jsxs("div", { className: "relative", children: [typeof isLoading === "boolean" && isLoading && jsxRuntimeExports.jsx("div", { className: "absolute top-9 right-4", children: jsxRuntimeExports.jsx("div", { className: "animate-spin rounded-full h-4 w-4 border-b-2", style: { borderColor: "var(--ds-gray-900)" } }) }), jsxRuntimeExports.jsxs("div", { className: "my-2 flex flex-col gap-0", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-1000 font-medium first-letter:uppercase", children: attribute }), jsxRuntimeExports.jsx("span", { className: "text-label-12", style: { color: "var(--ds-gray-1000)" }, children: displayValue })] }, attribute)] });
|
|
2236
2305
|
};
|
|
2237
2306
|
const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoading, error, expiredAt, onStreamClick, onRunClick, onDecrypt, isDecrypting = false, resource }) => {
|
|
2238
2307
|
const displayData = reactExports.useMemo(() => {
|
|
@@ -2391,7 +2460,7 @@ function hasOnlyExpiredFields(data, eventType) {
|
|
|
2391
2460
|
}
|
|
2392
2461
|
function EventDataBlock({ eventType, data }) {
|
|
2393
2462
|
if (isExpiredMarker(data) || hasOnlyExpiredFields(data, eventType)) {
|
|
2394
|
-
return jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1.5 rounded-md border px-3 py-2 text-
|
|
2463
|
+
return jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1.5 rounded-md border px-3 py-2 text-label-12", style: {
|
|
2395
2464
|
borderColor: "var(--ds-gray-300)",
|
|
2396
2465
|
backgroundColor: "var(--ds-gray-100)",
|
|
2397
2466
|
color: "var(--ds-gray-700)"
|
|
@@ -2734,69 +2803,14 @@ function EntityDetailPanel({ run, onStreamClick, onRunClick, fetchSpanDetail, on
|
|
|
2734
2803
|
return jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col", children: [jsxRuntimeExports.jsx(DecryptClickContext.Provider, { value: onDecrypt ? { onDecrypt, isDecrypting, hasEncryptedData } : void 0, children: jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto px-4 pb-8", children: [hasPendingActions && jsxRuntimeExports.jsxs("div", { className: "mb-4 rounded-lg border p-2", style: {
|
|
2735
2804
|
borderColor: "var(--ds-gray-300)",
|
|
2736
2805
|
backgroundColor: "var(--ds-gray-100)"
|
|
2737
|
-
}, children: [jsxRuntimeExports.jsx("p", { className: "mb-2 px-1 text-
|
|
2806
|
+
}, children: [jsxRuntimeExports.jsx("p", { className: "mb-2 px-1 text-label-13 font-medium uppercase tracking-wide", style: { color: "var(--ds-gray-700)" }, children: "Actions" }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [resource === "sleep" && canWakeUp && jsxRuntimeExports.jsxs("button", { type: "button", onClick: handleWakeUp, disabled: stoppingSleep, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-button-14", "disabled:opacity-50 disabled:cursor-not-allowed transition-colors", stoppingSleep ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), style: {
|
|
2738
2807
|
background: "var(--ds-amber-200)",
|
|
2739
2808
|
color: "var(--ds-amber-900)"
|
|
2740
|
-
}, children: [jsxRuntimeExports.jsx(Zap, { className: "h-4 w-4" }), stoppingSleep ? "Waking up..." : "Wake Up Sleep"] }), resource === "hook" && canResolveHook && jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setShowResolveHookModal(true), disabled: resolvingHook, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-
|
|
2809
|
+
}, children: [jsxRuntimeExports.jsx(Zap, { className: "h-4 w-4" }), stoppingSleep ? "Waking up..." : "Wake Up Sleep"] }), resource === "hook" && canResolveHook && jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setShowResolveHookModal(true), disabled: resolvingHook, className: clsx("flex items-center justify-center gap-2 rounded-md px-3 py-2 text-button-14", "disabled:opacity-50 disabled:cursor-not-allowed transition-colors", resolvingHook ? "opacity-50 cursor-not-allowed" : "cursor-pointer"), style: {
|
|
2741
2810
|
background: "var(--ds-gray-1000)",
|
|
2742
2811
|
color: "var(--ds-background-100)"
|
|
2743
2812
|
}, children: [jsxRuntimeExports.jsx(Send, { className: "h-4 w-4" }), "Resolve Hook"] })] })] }), jsxRuntimeExports.jsx(AttributePanel, { data: displayData, moduleSpecifier, moduleSourceUrl, expiredAt: run.expiredAt, isLoading: loading, error: error ?? void 0, onStreamClick, onRunClick, onDecrypt, isDecrypting, resource }), rawEvents && jsxRuntimeExports.jsx(EventsList, { events: rawEvents, onLoadEventData, onStreamClick, onRunClick, encryptionKey, showSeparateEventOccurrenceTimestamps })] }) }), jsxRuntimeExports.jsx(ResolveHookModal, { isOpen: showResolveHookModal, onClose: () => setShowResolveHookModal(false), onSubmit: handleResolveHook, isSubmitting: resolvingHook })] });
|
|
2744
2813
|
}
|
|
2745
|
-
function useIntersectionObserver(elementRef, { threshold = 0, rootRef, rootMargin = "0%", freezeOnceVisible = false } = {}) {
|
|
2746
|
-
const [entry, setEntry] = reactExports.useState();
|
|
2747
|
-
const frozen = (entry == null ? void 0 : entry.isIntersecting) && freezeOnceVisible;
|
|
2748
|
-
reactExports.useEffect(() => {
|
|
2749
|
-
const node = elementRef == null ? void 0 : elementRef.current;
|
|
2750
|
-
const hasIOSupport = !!window.IntersectionObserver;
|
|
2751
|
-
if (!hasIOSupport || frozen || !node)
|
|
2752
|
-
return;
|
|
2753
|
-
const updateEntry = ([entry2]) => {
|
|
2754
|
-
setEntry(entry2);
|
|
2755
|
-
};
|
|
2756
|
-
const observer = new IntersectionObserver(updateEntry, {
|
|
2757
|
-
threshold,
|
|
2758
|
-
root: (rootRef == null ? void 0 : rootRef.current) ?? null,
|
|
2759
|
-
rootMargin
|
|
2760
|
-
});
|
|
2761
|
-
observer.observe(node);
|
|
2762
|
-
return () => observer.disconnect();
|
|
2763
|
-
}, [elementRef, threshold, rootRef, rootMargin, frozen]);
|
|
2764
|
-
return entry;
|
|
2765
|
-
}
|
|
2766
|
-
function useLoadMoreOnScroll(loadMore, { hasMore, isLoadingMore, rootRef, rootMargin = "400px" }) {
|
|
2767
|
-
const sentinelRef = reactExports.useRef(null);
|
|
2768
|
-
const entry = useIntersectionObserver(sentinelRef, { rootRef, rootMargin });
|
|
2769
|
-
const loadMoreRef = reactExports.useRef(loadMore);
|
|
2770
|
-
reactExports.useEffect(() => {
|
|
2771
|
-
loadMoreRef.current = loadMore;
|
|
2772
|
-
}, [loadMore]);
|
|
2773
|
-
reactExports.useEffect(() => {
|
|
2774
|
-
if ((entry == null ? void 0 : entry.isIntersecting) && hasMore && !isLoadingMore) {
|
|
2775
|
-
loadMoreRef.current();
|
|
2776
|
-
}
|
|
2777
|
-
}, [entry == null ? void 0 : entry.isIntersecting, hasMore, isLoadingMore]);
|
|
2778
|
-
return sentinelRef;
|
|
2779
|
-
}
|
|
2780
|
-
const kbdVariants = cva("inline-flex items-center justify-center rounded px-1 text-center font-sans", {
|
|
2781
|
-
variants: {
|
|
2782
|
-
variant: {
|
|
2783
|
-
subtle: "bg-background-100/20",
|
|
2784
|
-
outline: "border border-gray-alpha-400 bg-background-100 font-medium text-gray-900"
|
|
2785
|
-
},
|
|
2786
|
-
size: {
|
|
2787
|
-
default: "h-5 min-w-5 text-xs leading-none",
|
|
2788
|
-
compact: "h-4 min-h-4 min-w-4 text-[11px] leading-none",
|
|
2789
|
-
search: "h-5 min-h-5 min-w-5 text-[13px] leading-[1.7em]"
|
|
2790
|
-
}
|
|
2791
|
-
},
|
|
2792
|
-
defaultVariants: {
|
|
2793
|
-
variant: "subtle",
|
|
2794
|
-
size: "default"
|
|
2795
|
-
}
|
|
2796
|
-
});
|
|
2797
|
-
function Kbd({ children, className, variant, size, ...props }) {
|
|
2798
|
-
return jsxRuntimeExports.jsx("kbd", { className: cn(kbdVariants({ variant, size, className })), ...props, children });
|
|
2799
|
-
}
|
|
2800
2814
|
const PANEL_MIN_WIDTH = 280;
|
|
2801
2815
|
const PANEL_HARD_MAX_WIDTH = 1300;
|
|
2802
2816
|
const PANEL_DEFAULT_WIDTH = 360;
|
|
@@ -3174,7 +3188,7 @@ function TraceShortcutHelper({ hasMultipleSpans, reducedMotion }) {
|
|
|
3174
3188
|
}
|
|
3175
3189
|
setVisible(false);
|
|
3176
3190
|
};
|
|
3177
|
-
return jsxRuntimeExports.jsxs("div", { className: "group pointer-events-auto hidden h-8 w-fit items-center gap-1 text-
|
|
3191
|
+
return jsxRuntimeExports.jsxs("div", { className: "group pointer-events-auto hidden h-8 w-fit items-center gap-1 text-label-12 leading-none text-gray-900 @min-[480px]:flex", children: [jsxRuntimeExports.jsx("span", { "aria-live": "polite", "aria-atomic": "true", className: "inline-flex items-center whitespace-nowrap", children: reducedMotion ? jsxRuntimeExports.jsx(AltHint, {}) : jsxRuntimeExports.jsx("span", { className: `inline-flex items-center ${styles.hint}`, children: index === 0 ? jsxRuntimeExports.jsx(AltHint, {}) : jsxRuntimeExports.jsx(NavHint, {}) }, index) }), jsxRuntimeExports.jsx("button", { type: "button", className: "inline-flex h-5 w-5 items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-foreground group-hover:opacity-100 focus-visible:opacity-100 motion-reduce:transition-none", onClick: dismiss, "aria-label": "Dismiss trace shortcuts helper", children: jsxRuntimeExports.jsx(X, { className: "h-3 w-3" }) })] });
|
|
3178
3192
|
}
|
|
3179
3193
|
const MIN_VIEWPORT_MS = 1e-3;
|
|
3180
3194
|
const ZOOM_DEBOUNCE_MS = 150;
|
|
@@ -3230,10 +3244,10 @@ function useAnimatedViewport(initial) {
|
|
|
3230
3244
|
reactExports.useEffect(() => cancel, [cancel]);
|
|
3231
3245
|
return { viewport, setViewport, animateTo };
|
|
3232
3246
|
}
|
|
3233
|
-
function
|
|
3234
|
-
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace.spans, children: jsxRuntimeExports.jsx(
|
|
3247
|
+
function TraceViewer$1({ trace, onLoadMore, hasMore, isLoadingMore }) {
|
|
3248
|
+
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace.spans, children: jsxRuntimeExports.jsx(TraceViewerContent, { trace, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
3235
3249
|
}
|
|
3236
|
-
function
|
|
3250
|
+
function TraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore }) {
|
|
3237
3251
|
const { activeSpanId, setActiveSpan, clearActiveSpan } = useActiveSpan();
|
|
3238
3252
|
const reducedMotion = useReducedMotion();
|
|
3239
3253
|
const [searchQuery, setSearchQuery] = reactExports.useState("");
|
|
@@ -3470,9 +3484,9 @@ function NewTraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore }) {
|
|
|
3470
3484
|
e.stopPropagation();
|
|
3471
3485
|
setSearchQuery("");
|
|
3472
3486
|
}
|
|
3473
|
-
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-
|
|
3487
|
+
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-label-14 text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-label-16 text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx(Kbd, { variant: "outline", size: "search", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo }), children: [jsxRuntimeExports.jsxs("div", { className: "block overflow-visible", children: [jsxRuntimeExports.jsx(EventList, { spans: trace.spans, activeSpanId, searchResult, onSelectSpan: handleSelectSpan }), jsxRuntimeExports.jsx("div", { ref: loadMoreSentinelRef, className: "flex justify-center", children: isLoadingMore ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-label-14 text-gray-800", children: [jsxRuntimeExports.jsx(Spinner, { size: 14 }), jsxRuntimeExports.jsx("span", { children: "Loading spans…" })] }) : null })] }), jsxRuntimeExports.jsx("div", { ref: timelineRef, id: "trace-timeline", className: "@container block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, onRevealTime: handleRevealTime, hover, altHeld }) }), jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(TraceShortcutHelper, { hasMultipleSpans: trace.spans.length > 1, reducedMotion }), jsxRuntimeExports.jsxs("div", { className: "pointer-events-auto flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, disabled: isAtMinZoom, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, disabled: isAtMaxZoom, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] })] })] }), jsxRuntimeExports.jsx(TraceDetailPanel, { containerRef: paneRootRef, onNavigateToSpan: navigateToSpan, onClose: handleClearActiveSpan })] });
|
|
3474
3488
|
}
|
|
3475
|
-
const
|
|
3489
|
+
const TraceViewer = ({ run, events, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false }) => {
|
|
3476
3490
|
const trace = reactExports.useMemo(() => {
|
|
3477
3491
|
if (!(run == null ? void 0 : run.runId)) {
|
|
3478
3492
|
return void 0;
|
|
@@ -3482,7 +3496,7 @@ const NewTraceViewer = ({ run, events, sidebarData, onLoadMore, hasMore, isLoadi
|
|
|
3482
3496
|
if (!trace || loading && events.length === 0) {
|
|
3483
3497
|
return jsxRuntimeExports.jsx(TraceViewerSkeleton, {});
|
|
3484
3498
|
}
|
|
3485
|
-
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(
|
|
3499
|
+
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(TraceViewer$1, { trace, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
3486
3500
|
};
|
|
3487
3501
|
async function fetchResourceWithCorrelationId(env, resource, resourceId, options = {}) {
|
|
3488
3502
|
const resolveData = options.resolveData ?? "all";
|
|
@@ -5792,7 +5806,7 @@ function RunDetailView({
|
|
|
5792
5806
|
] })
|
|
5793
5807
|
] }),
|
|
5794
5808
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "trace", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary, { title: "Failed to load trace viewer", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full -mx-6 bg-background-100 border-t border-gray-alpha-400 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5795
|
-
|
|
5809
|
+
TraceViewer,
|
|
5796
5810
|
{
|
|
5797
5811
|
run,
|
|
5798
5812
|
events: allEvents ?? [],
|