@workflow/web 5.0.0-beta.46 → 5.0.0-beta.48
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/build/client/assets/{arrow-up-right-UOc2WcaC.js → arrow-up-right-CSovqivK.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-D78gcP7S.js → highlighted-body-B3W2YXNL-BO5_Ufo-.js} +1 -1
- package/build/client/assets/{home-DYB1uz9w.js → home-BbyW_T74.js} +3 -3
- package/build/client/assets/{loader-circle-oscnpy3L.js → loader-circle-BX6ycuOI.js} +1 -1
- package/build/client/assets/{manifest-a701502a.js → manifest-34c486ef.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-BKGEyEYb.js → mermaid-3ZIDBTTL-BKwl_LgA.js} +282 -124
- package/build/client/assets/{root-Zvnb602n.js → root-qx_45_fH.js} +3 -3
- package/build/client/assets/{run-detail-CedyZW9h.js → run-detail-BoGFG1Fe.js} +59 -38
- package/build/client/assets/{workflow-graph-viewer-Du0ztkb8.js → workflow-graph-viewer-C-1D0sAn.js} +1 -1
- package/build/client/assets/{zstd-browser-decoder-DafWVuEG.js → zstd-browser-decoder-By3hr1F0.js} +1 -1
- package/build/server/assets/{app-BpmEMaiu.js → app-CeZRs20L.js} +1276 -599
- package/build/server/assets/{highlighted-body-B3W2YXNL-C6ES2Pzm.js → highlighted-body-B3W2YXNL-jO_hupW2.js} +1 -1
- package/build/server/assets/index-DshIaniU.js +169 -0
- package/build/server/assets/{index-QOlZC9D-.js → index-dJuvq1GP.js} +1 -1
- package/build/server/assets/{mermaid-3ZIDBTTL-X6IEJ8gj.js → mermaid-3ZIDBTTL-2Pe4e_TP.js} +1 -1
- package/build/server/assets/{token-CrxXUTBD.js → token-DAVWictz.js} +1 -1
- package/build/server/assets/{token-util-DuToe55u.js → token-util-BMRcW3Qd.js} +1 -1
- package/build/server/assets/{websocket-server-CTnzV_B7.js → websocket-server-DXnHomzQ.js} +1 -1
- package/build/server/assets/{wrapper-Bjff6YRz.js → wrapper-Bw3PP1up.js} +3 -3
- package/build/server/assets/{ws-transport-ByYax88V.js → ws-transport-Dv7yY5un.js} +5 -5
- package/build/server/assets/{zstd-browser-decoder-Bfk1d5vU.js → zstd-browser-decoder-DJTnP4ZA.js} +1 -1
- package/build/server/index.js +3 -3
- package/package.json +10 -10
- package/build/server/assets/index-BtQfiVUN.js +0 -163
|
@@ -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, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-
|
|
3
|
-
import { c as createLucideIcon, Y 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, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-C-1D0sAn.js";
|
|
3
|
+
import { c as createLucideIcon, Y as classifyEntityEvent, Z as TERMINAL_EVENT_CLASSES, $ as isSealedNoopEvent$1, a0 as cn, a1 as CopyableDataBlock, a2 as CollapsibleRoot, a3 as CollapsibleTrigger, a4 as CollapsibleContent, a5 as CopyButton, O as cva, a6 as RESERVED_ATTRIBUTE_KEY_PREFIX, a7 as Spinner, a8 as TooltipProvider, a9 as Tooltip, aa as TooltipTrigger, ab as TooltipContent, ac as ContextCardProvider, h as useToast, ad as Skeleton, ae as DecryptClickContext, af as Yr, ag as isEncryptedMarker, m as ChevronRight, ah as TimestampTooltip, ai as formatDuration, C as Check, l as Copy, aj as DataInspector, ak as _r, al as isHookLifecycleEventType, am as isTerminalStepEventType, an as isWaitEventType, ao as isStepEventType, ap as RunClickContext, aq as StreamClickContext, ar as Collapsible, as as isExpiredMarker, at as isDoStreamStep, au as extractConversation, av as EncryptedDataBlock, aw as getEventDataRefFields, ax as hasEncryptedFields, ay as useSidebarDataOptional, az as isTerminalWorkflowRunStatus, aA as clsx, aB as useActiveSpan, aC as useSidebarData, aD as IconButton, J as ChevronDown, aE as useRowWindow, aF as isSpanDimmedBySearch, aG as ROW_HEIGHT_PX, aH as getSpanDurationMs, aI as isSpanErrored, aJ as formatDurationPrecise, aK as ActiveSpanProvider, aL as useReducedMotion, aM as searchSpans, aN as computeRootBounds, aO as computeTimeMarkers, aP as clampViewportToRoot, aQ as getHighResInMs, aR as scrollRowIntoView, aS as TIMELINE_PADDING_PX, aT as Minimap, aU as Timeline, aV as TimelineHeader, aW as wheelZoomScaleFactor, aX as wheelDeltaToPixels, aY as SidebarDataProvider, aZ as fetchHook, n as fetchEvents, a_ as hydrateResourceIOAsync, N as fetchRun, a$ as fetchStep, b0 as hydrateResourceIO, b1 as fetchStreams, b2 as apiBase, b3 as Slot, L as useComposedRefs, b4 as Slottable, e as cn$1, b5 as buttonVariants, b6 as fetchEvent, b7 as fetchEventsByCorrelationId, b8 as isEncryptedData, b9 as hydrateData, ba as decrypt, bb as deriveRunPayloadKeys, bc as getWebRevivers, T as Tooltip$1, a as TooltipTrigger$1, b as TooltipContent$1, bd as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, be as getEncryptionKeyForRun, t as toast, bf as StreamViewerSkeleton, bg as Lock, bh as StreamViewer } from "./mermaid-3ZIDBTTL-BKwl_LgA.js";
|
|
4
|
+
import { A as ArrowUpRight } from "./arrow-up-right-CSovqivK.js";
|
|
5
5
|
/**
|
|
6
6
|
* @license lucide-react v0.575.0 - ISC
|
|
7
7
|
*
|
|
@@ -99,15 +99,9 @@ function stripEventIdPrefix(eventId) {
|
|
|
99
99
|
function isSlotEventId(eventId) {
|
|
100
100
|
return isSlotBody(stripEventIdPrefix(eventId));
|
|
101
101
|
}
|
|
102
|
-
const TERMINAL_EVENT_CLASSES = /* @__PURE__ */ new Set([
|
|
103
|
-
"step_terminal",
|
|
104
|
-
"wait_completed",
|
|
105
|
-
"hook_disposed"
|
|
106
|
-
]);
|
|
107
102
|
const SINGLETON_EVENT_CLASSES = /* @__PURE__ */ new Set([
|
|
108
103
|
"run_started"
|
|
109
104
|
]);
|
|
110
|
-
const RUN_ENTITY_KEY = "";
|
|
111
105
|
const DUPLICATE_EVENT_MESSAGE = "Written by a concurrent replay after an event of the same kind was already recorded and acted on. The run follows the earlier one.";
|
|
112
106
|
function compareEventId(a, b) {
|
|
113
107
|
if (a.eventId.length !== b.eventId.length) {
|
|
@@ -137,10 +131,10 @@ function foldDuplicates(ordered) {
|
|
|
137
131
|
const seenClasses = /* @__PURE__ */ new Set();
|
|
138
132
|
const closedEntities = /* @__PURE__ */ new Set();
|
|
139
133
|
for (const event of ordered) {
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
134
|
+
const classification = classifyEntityEvent(event);
|
|
135
|
+
if (classification === void 0)
|
|
142
136
|
continue;
|
|
143
|
-
const entity =
|
|
137
|
+
const { eventClass, entity } = classification;
|
|
144
138
|
const classKey = `${eventClass}:${entity}`;
|
|
145
139
|
const repeatsClass = seenClasses.has(classKey);
|
|
146
140
|
const entityWasClosed = closedEntities.has(entity);
|
|
@@ -1150,7 +1144,6 @@ function EventRow$1({ event, index, isFirst, isLast, isExpanded, onToggleExpand,
|
|
|
1150
1144
|
}, []);
|
|
1151
1145
|
reactExports.useEffect(() => {
|
|
1152
1146
|
if (encryptionKey && hasAttemptedLoad && onLoadEventData) {
|
|
1153
|
-
setLoadedEventData(null);
|
|
1154
1147
|
setHasAttemptedLoad(false);
|
|
1155
1148
|
onLoadEventData(event).then((data) => {
|
|
1156
1149
|
if (data !== null && data !== void 0) {
|
|
@@ -1765,7 +1758,7 @@ const stepEventsToStepEntity = (events) => {
|
|
|
1765
1758
|
specVersion: anchorEvent.specVersion
|
|
1766
1759
|
};
|
|
1767
1760
|
};
|
|
1768
|
-
function stepToSpan(stepEvents, maxEndTime) {
|
|
1761
|
+
function stepToSpan(stepEvents, maxEndTime, getStepAttributes) {
|
|
1769
1762
|
const step = stepEventsToStepEntity(stepEvents);
|
|
1770
1763
|
if (!step) {
|
|
1771
1764
|
return null;
|
|
@@ -1773,7 +1766,11 @@ function stepToSpan(stepEvents, maxEndTime) {
|
|
|
1773
1766
|
const parsedName = parseStepName(String(step.stepName)) ?? parseWorkflowName(String(step.stepName));
|
|
1774
1767
|
const attributes = {
|
|
1775
1768
|
resource: "step",
|
|
1776
|
-
data:
|
|
1769
|
+
data: {
|
|
1770
|
+
...getStepAttributes == null ? void 0 : getStepAttributes(stepEvents),
|
|
1771
|
+
// Canonical event-derived fields cannot be overridden by extensions.
|
|
1772
|
+
...step
|
|
1773
|
+
}
|
|
1777
1774
|
};
|
|
1778
1775
|
const resource = "step";
|
|
1779
1776
|
const events = convertEventsToSpanEvents(stepEvents, false, {
|
|
@@ -1951,10 +1948,10 @@ function computeLatestKnownTime(events, run) {
|
|
|
1951
1948
|
}
|
|
1952
1949
|
return new Date(latest);
|
|
1953
1950
|
}
|
|
1954
|
-
function buildSpans(run, groupedEvents, now, latestKnownTime) {
|
|
1951
|
+
function buildSpans(run, groupedEvents, now, latestKnownTime, getStepAttributes) {
|
|
1955
1952
|
const childMaxEnd = latestKnownTime;
|
|
1956
1953
|
const runMaxEnd = run.completedAt ?? now;
|
|
1957
|
-
const stepSpans = Array.from(groupedEvents.eventsByStepId.values()).map((events) => stepToSpan(events, childMaxEnd)).filter((span) => span !== null);
|
|
1954
|
+
const stepSpans = Array.from(groupedEvents.eventsByStepId.values()).map((events) => stepToSpan(events, childMaxEnd, getStepAttributes)).filter((span) => span !== null);
|
|
1958
1955
|
const hookSpans = Array.from(groupedEvents.hookEvents.values()).map((events) => hookToSpan(events, childMaxEnd)).filter((span) => span !== null);
|
|
1959
1956
|
const waitSpans = Array.from(groupedEvents.timerEvents.values()).map((events) => waitToSpan(events, childMaxEnd, runMaxEnd)).filter((span) => span !== null);
|
|
1960
1957
|
return {
|
|
@@ -1979,14 +1976,14 @@ function cascadeSpans(runSpan, spans) {
|
|
|
1979
1976
|
};
|
|
1980
1977
|
});
|
|
1981
1978
|
}
|
|
1982
|
-
function buildTrace(run, events, now, { isCompleteHistory = false } = {}) {
|
|
1979
|
+
function buildTrace(run, events, now, { isCompleteHistory = false, getStepAttributes } = {}) {
|
|
1983
1980
|
const duplicateEventIds = findDuplicateEventIds(events, {
|
|
1984
1981
|
isCompleteHistory
|
|
1985
1982
|
});
|
|
1986
1983
|
const actedOnEvents = events.filter((event) => !duplicateEventIds.has(event.eventId) && !isSealedNoopEvent(event));
|
|
1987
1984
|
const groupedEvents = groupEventsByCorrelation(actedOnEvents);
|
|
1988
1985
|
const latestKnownTime = computeLatestKnownTime(actedOnEvents, run);
|
|
1989
|
-
const { runSpan, spans } = buildSpans(run, groupedEvents, now, latestKnownTime);
|
|
1986
|
+
const { runSpan, spans } = buildSpans(run, groupedEvents, now, latestKnownTime, getStepAttributes);
|
|
1990
1987
|
const sortedCascadingSpans = cascadeSpans(runSpan, spans);
|
|
1991
1988
|
const traceStartMs = otelTimeToMs(runSpan.startTime);
|
|
1992
1989
|
const knownDurationMs = latestKnownTime.getTime() - traceStartMs;
|
|
@@ -3422,6 +3419,42 @@ function TraceShortcutHelper({ hasMultipleSpans, reducedMotion }) {
|
|
|
3422
3419
|
};
|
|
3423
3420
|
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" }) })] });
|
|
3424
3421
|
}
|
|
3422
|
+
function isAltModifierKey(key) {
|
|
3423
|
+
return key === "Alt" || key === "AltGraph";
|
|
3424
|
+
}
|
|
3425
|
+
function isTypingTarget(target) {
|
|
3426
|
+
return target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLElement && target.isContentEditable;
|
|
3427
|
+
}
|
|
3428
|
+
function useAltHeld() {
|
|
3429
|
+
const [altHeld, setAltHeld] = reactExports.useState(false);
|
|
3430
|
+
reactExports.useEffect(() => {
|
|
3431
|
+
const onKeyDown = (e) => {
|
|
3432
|
+
if (!isAltModifierKey(e.key))
|
|
3433
|
+
return;
|
|
3434
|
+
if (!isTypingTarget(e.target)) {
|
|
3435
|
+
e.preventDefault();
|
|
3436
|
+
}
|
|
3437
|
+
setAltHeld(true);
|
|
3438
|
+
};
|
|
3439
|
+
const onKeyUp = (e) => {
|
|
3440
|
+
if (isAltModifierKey(e.key))
|
|
3441
|
+
setAltHeld(false);
|
|
3442
|
+
};
|
|
3443
|
+
const onBlur = () => setAltHeld(false);
|
|
3444
|
+
const onPointerMove = (e) => setAltHeld(e.altKey);
|
|
3445
|
+
window.addEventListener("keydown", onKeyDown, true);
|
|
3446
|
+
window.addEventListener("keyup", onKeyUp, true);
|
|
3447
|
+
window.addEventListener("blur", onBlur);
|
|
3448
|
+
window.addEventListener("pointermove", onPointerMove, true);
|
|
3449
|
+
return () => {
|
|
3450
|
+
window.removeEventListener("keydown", onKeyDown, true);
|
|
3451
|
+
window.removeEventListener("keyup", onKeyUp, true);
|
|
3452
|
+
window.removeEventListener("blur", onBlur);
|
|
3453
|
+
window.removeEventListener("pointermove", onPointerMove, true);
|
|
3454
|
+
};
|
|
3455
|
+
}, []);
|
|
3456
|
+
return { altHeld };
|
|
3457
|
+
}
|
|
3425
3458
|
const MIN_VIEWPORT_MS = 1e-3;
|
|
3426
3459
|
const ZOOM_DEBOUNCE_MS = 150;
|
|
3427
3460
|
function useAnimatedViewport(initial) {
|
|
@@ -3621,28 +3654,15 @@ function TraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore }) {
|
|
|
3621
3654
|
focusViewportOnSpan(spanId);
|
|
3622
3655
|
}, ZOOM_DEBOUNCE_MS);
|
|
3623
3656
|
}, [setActiveSpan, scrollSpanIntoView, cancelPendingZoom, focusViewportOnSpan]);
|
|
3624
|
-
const
|
|
3657
|
+
const { altHeld } = useAltHeld();
|
|
3625
3658
|
reactExports.useEffect(() => {
|
|
3626
3659
|
const onKeyDown = (e) => {
|
|
3627
3660
|
if (e.key === "Escape") {
|
|
3628
3661
|
handleClearActiveSpan();
|
|
3629
|
-
} else if (e.key === "Alt") {
|
|
3630
|
-
setAltHeld(true);
|
|
3631
3662
|
}
|
|
3632
3663
|
};
|
|
3633
|
-
const onKeyUp = (e) => {
|
|
3634
|
-
if (e.key === "Alt")
|
|
3635
|
-
setAltHeld(false);
|
|
3636
|
-
};
|
|
3637
|
-
const onBlur = () => setAltHeld(false);
|
|
3638
3664
|
window.addEventListener("keydown", onKeyDown);
|
|
3639
|
-
window.
|
|
3640
|
-
window.addEventListener("blur", onBlur);
|
|
3641
|
-
return () => {
|
|
3642
|
-
window.removeEventListener("keydown", onKeyDown);
|
|
3643
|
-
window.removeEventListener("keyup", onKeyUp);
|
|
3644
|
-
window.removeEventListener("blur", onBlur);
|
|
3645
|
-
};
|
|
3665
|
+
return () => window.removeEventListener("keydown", onKeyDown);
|
|
3646
3666
|
}, [handleClearActiveSpan]);
|
|
3647
3667
|
const timelineRef = reactExports.useRef(null);
|
|
3648
3668
|
const [hover, setHover] = reactExports.useState(null);
|
|
@@ -3718,15 +3738,16 @@ function TraceViewerContent({ trace, onLoadMore, hasMore, isLoadingMore }) {
|
|
|
3718
3738
|
}
|
|
3719
3739
|
}, 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 })] });
|
|
3720
3740
|
}
|
|
3721
|
-
const TraceViewer = ({ run, events, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false }) => {
|
|
3741
|
+
const TraceViewer = ({ run, events, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false, getStepAttributes }) => {
|
|
3722
3742
|
const trace = reactExports.useMemo(() => {
|
|
3723
3743
|
if (!(run == null ? void 0 : run.runId)) {
|
|
3724
3744
|
return void 0;
|
|
3725
3745
|
}
|
|
3726
3746
|
return buildTrace(run, events, /* @__PURE__ */ new Date(), {
|
|
3727
|
-
isCompleteHistory: !hasMore
|
|
3747
|
+
isCompleteHistory: !hasMore,
|
|
3748
|
+
getStepAttributes
|
|
3728
3749
|
});
|
|
3729
|
-
}, [run, events, hasMore]);
|
|
3750
|
+
}, [run, events, hasMore, getStepAttributes]);
|
|
3730
3751
|
const sidebarValue = reactExports.useMemo(() => ({ ...sidebarData, duplicateEventIds: trace == null ? void 0 : trace.duplicateEventIds }), [sidebarData, trace]);
|
|
3731
3752
|
if (!trace || loading && events.length === 0) {
|
|
3732
3753
|
return jsxRuntimeExports.jsx(TraceViewerSkeleton, {});
|
|
@@ -5213,7 +5234,7 @@ function BreadcrumbSeparator({
|
|
|
5213
5234
|
}
|
|
5214
5235
|
const INITIAL_PAGE_SIZE = 100;
|
|
5215
5236
|
const LOAD_MORE_PAGE_SIZE = 100;
|
|
5216
|
-
const MAX_CORRELATION_SEARCH_PAGES =
|
|
5237
|
+
const MAX_CORRELATION_SEARCH_PAGES = 5;
|
|
5217
5238
|
function useEventsListData(env, runId, options = {}) {
|
|
5218
5239
|
const { sortOrder = "asc", encryptionKey, enabled = true } = options;
|
|
5219
5240
|
const [events, setEvents] = reactExports.useState([]);
|
package/build/client/assets/{workflow-graph-viewer-Du0ztkb8.js → workflow-graph-viewer-C-1D0sAn.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { c as createLucideIcon, J as ChevronDown,
|
|
4
|
+
import { c as createLucideIcon, J as ChevronDown, a0 as cn, e as cn$1, O as cva, bi as composeRefs, L as useComposedRefs, bj as useFloating, bk as offset, bl as shift, bm as limitShift, bn as flip, bo as size, bp as arrow, bq as hide, br as autoUpdate, m as ChevronRight, C as Check, bs as VERCEL_403_ERROR_MESSAGE, bt as bulkCancelRuns$1, bu as reenqueueRun$1, bv as wakeUpRun$1, bw as resumeHook$1, bx as fetchHookToken$1, by as cancelRun$1, bz as recreateRun$1, T as Tooltip, a as TooltipTrigger, l as Copy, b as TooltipContent, z as createContextScope$1, p as useComposedRefs$1, E as createSlot, ai as formatDuration, B as Button, t as toast, w as useId$1, P as Primitive$1, q as composeEventHandlers$1, G as useControllableState$1, o as useCallbackRef$2, U as Presence$1 } from "./mermaid-3ZIDBTTL-BKwl_LgA.js";
|
|
5
5
|
import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, R as ReactExports, H as React, D as ReactDOM, f as requireReact, I as getDefaultExportFromCjs } from "./index-PFjW8YjQ.js";
|
|
6
6
|
function parseName(tag, name) {
|
|
7
7
|
if (typeof name !== "string") {
|