@workflow/web 5.0.0-beta.10 → 5.0.0-beta.11
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/{encryption-B7z5c3Mu.js → encryption-g14N5vQl.js} +2 -2
- package/build/client/assets/{entry.client-DtOpLtMQ.js → entry.client-DOJDY_4b.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-khW-t_B-.js → highlighted-body-B3W2YXNL-ByAVJfTI.js} +2 -2
- package/build/client/assets/{home-DKDz-tU-.js → home-D68s49Hb.js} +4 -14
- package/build/client/assets/{index-CIZByfnL.js → index-B6-SzLmT.js} +1 -1
- package/build/client/assets/{index-BsV8i_Jn.js → index-BXZSIDEp.js} +2 -2
- package/build/client/assets/{manifest-a33ce94a.js → manifest-f3e412ee.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-DPZjJwuX.js → mermaid-3ZIDBTTL-Cg06pRM9.js} +216 -114
- package/build/client/assets/{root-DJKbeamD.js → root-CtIBMIdD.js} +2 -2
- package/build/client/assets/root-D_G0HW97.css +1 -0
- package/build/client/assets/{run-detail-ekQSEj_z.js → run-detail-B1sCKjMc.js} +112 -50
- package/build/client/assets/server-build-DyZioyz3.css +1 -0
- package/build/client/assets/{workflow-graph-viewer-DjlqbXVx.js → workflow-graph-viewer-D4OsX_TE.js} +3 -3
- package/build/server/assets/{app-Cgrcb-fS.js → app-C26OkrrR.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-BCA9A7WB.js → highlighted-body-B3W2YXNL-2D25w_37.js} +2 -2
- package/build/server/assets/{index-VP-TIWDS.js → index-C6jZ_bJo.js} +3 -3
- package/build/server/assets/{mermaid-3ZIDBTTL-CbLetKvR.js → mermaid-3ZIDBTTL-BDYN9XOo.js} +2 -2
- package/build/server/assets/{server-build-ClDPbfo3.js → server-build-D82EKMvZ.js} +346 -149
- package/build/server/assets/{token-BxPrGSQ5.js → token-Bjcyh98U.js} +2 -2
- package/build/server/assets/{token-util-Bmrakd6M.js → token-util-CdvUIKt6.js} +2 -2
- package/build/server/index.js +1 -1
- package/package.json +5 -5
- package/build/client/assets/root-BYtlAgHl.css +0 -1
- package/build/client/assets/server-build-ByHD2s6b.css +0 -1
|
@@ -14,7 +14,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
14
14
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
15
15
|
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
16
|
var _a2, _b, _c, _listeners, _onabort, _reader, _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, canAdoptWithSpace_fn, canAdopt_fn, canAdoptType_fn, adoptWithSpace_fn, adopt_fn, canUsurpType_fn, canUsurp_fn, usurp_fn, flatten_fn, partsToRegExp_fn, parseGlob_fn, _Minimatch_instances, matchGlobstar_fn, matchGlobStarBodySections_fn, matchOne_fn, _worldPromise, _Run_instances, lazyWorldPromise_get, _encryptionKeyPromise, _resilientStart, getEncryptionKey_fn, pollReturnValue_fn;
|
|
17
|
-
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-
|
|
17
|
+
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-C26OkrrR.js";
|
|
18
18
|
import require$$0$3, { PassThrough } from "node:stream";
|
|
19
19
|
import require$$0 from "util";
|
|
20
20
|
import require$$1 from "crypto";
|
|
@@ -26078,7 +26078,7 @@ var Anchor$1 = PopperAnchor$1;
|
|
|
26078
26078
|
var Content$4 = PopperContent$1;
|
|
26079
26079
|
var Arrow$3 = PopperArrow$1;
|
|
26080
26080
|
var PORTAL_NAME$9 = "Portal";
|
|
26081
|
-
var Portal$
|
|
26081
|
+
var Portal$7 = reactExports.forwardRef((props, forwardedRef) => {
|
|
26082
26082
|
var _a3;
|
|
26083
26083
|
const { container: containerProp, ...portalProps } = props;
|
|
26084
26084
|
const [mounted, setMounted] = reactExports.useState(false);
|
|
@@ -26086,7 +26086,7 @@ var Portal$6 = reactExports.forwardRef((props, forwardedRef) => {
|
|
|
26086
26086
|
const container = containerProp || mounted && ((_a3 = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a3.body);
|
|
26087
26087
|
return container ? ReactDOM.createPortal(/* @__PURE__ */ jsxRuntimeExports.jsx(Primitive$2.div, { ...portalProps, ref: forwardedRef }), container) : null;
|
|
26088
26088
|
});
|
|
26089
|
-
Portal$
|
|
26089
|
+
Portal$7.displayName = PORTAL_NAME$9;
|
|
26090
26090
|
function useStateMachine$1(initialState2, machine) {
|
|
26091
26091
|
return reactExports.useReducer((state, event) => {
|
|
26092
26092
|
const nextState = machine[state][event];
|
|
@@ -26312,7 +26312,7 @@ var PROVIDER_NAME = "TooltipProvider";
|
|
|
26312
26312
|
var DEFAULT_DELAY_DURATION = 700;
|
|
26313
26313
|
var TOOLTIP_OPEN = "tooltip.open";
|
|
26314
26314
|
var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
|
|
26315
|
-
var TooltipProvider = (props) => {
|
|
26315
|
+
var TooltipProvider$1 = (props) => {
|
|
26316
26316
|
const {
|
|
26317
26317
|
__scopeTooltip,
|
|
26318
26318
|
delayDuration = DEFAULT_DELAY_DURATION,
|
|
@@ -26353,10 +26353,10 @@ var TooltipProvider = (props) => {
|
|
|
26353
26353
|
}
|
|
26354
26354
|
);
|
|
26355
26355
|
};
|
|
26356
|
-
TooltipProvider.displayName = PROVIDER_NAME;
|
|
26356
|
+
TooltipProvider$1.displayName = PROVIDER_NAME;
|
|
26357
26357
|
var TOOLTIP_NAME = "Tooltip";
|
|
26358
26358
|
var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
|
|
26359
|
-
var Tooltip$
|
|
26359
|
+
var Tooltip$2 = (props) => {
|
|
26360
26360
|
const {
|
|
26361
26361
|
__scopeTooltip,
|
|
26362
26362
|
children: children2,
|
|
@@ -26446,9 +26446,9 @@ var Tooltip$1 = (props) => {
|
|
|
26446
26446
|
}
|
|
26447
26447
|
) });
|
|
26448
26448
|
};
|
|
26449
|
-
Tooltip$
|
|
26449
|
+
Tooltip$2.displayName = TOOLTIP_NAME;
|
|
26450
26450
|
var TRIGGER_NAME$6 = "TooltipTrigger";
|
|
26451
|
-
var TooltipTrigger$
|
|
26451
|
+
var TooltipTrigger$2 = reactExports.forwardRef(
|
|
26452
26452
|
(props, forwardedRef) => {
|
|
26453
26453
|
const { __scopeTooltip, ...triggerProps } = props;
|
|
26454
26454
|
const context = useTooltipContext(TRIGGER_NAME$6, __scopeTooltip);
|
|
@@ -26496,13 +26496,19 @@ var TooltipTrigger$1 = reactExports.forwardRef(
|
|
|
26496
26496
|
) });
|
|
26497
26497
|
}
|
|
26498
26498
|
);
|
|
26499
|
-
TooltipTrigger$
|
|
26499
|
+
TooltipTrigger$2.displayName = TRIGGER_NAME$6;
|
|
26500
26500
|
var PORTAL_NAME$8 = "TooltipPortal";
|
|
26501
26501
|
var [PortalProvider$3, usePortalContext$3] = createTooltipContext(PORTAL_NAME$8, {
|
|
26502
26502
|
forceMount: void 0
|
|
26503
26503
|
});
|
|
26504
|
+
var TooltipPortal$1 = (props) => {
|
|
26505
|
+
const { __scopeTooltip, forceMount, children: children2, container } = props;
|
|
26506
|
+
const context = useTooltipContext(PORTAL_NAME$8, __scopeTooltip);
|
|
26507
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$3, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: children2 }) }) });
|
|
26508
|
+
};
|
|
26509
|
+
TooltipPortal$1.displayName = PORTAL_NAME$8;
|
|
26504
26510
|
var CONTENT_NAME$8 = "TooltipContent";
|
|
26505
|
-
var TooltipContent$
|
|
26511
|
+
var TooltipContent$2 = reactExports.forwardRef(
|
|
26506
26512
|
(props, forwardedRef) => {
|
|
26507
26513
|
const portalContext = usePortalContext$3(CONTENT_NAME$8, props.__scopeTooltip);
|
|
26508
26514
|
const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
|
|
@@ -26637,7 +26643,7 @@ var TooltipContentImpl = reactExports.forwardRef(
|
|
|
26637
26643
|
);
|
|
26638
26644
|
}
|
|
26639
26645
|
);
|
|
26640
|
-
TooltipContent$
|
|
26646
|
+
TooltipContent$2.displayName = CONTENT_NAME$8;
|
|
26641
26647
|
var ARROW_NAME$4 = "TooltipArrow";
|
|
26642
26648
|
var TooltipArrow = reactExports.forwardRef(
|
|
26643
26649
|
(props, forwardedRef) => {
|
|
@@ -26766,9 +26772,12 @@ function getHullPresorted(points) {
|
|
|
26766
26772
|
return upperHull.concat(lowerHull);
|
|
26767
26773
|
}
|
|
26768
26774
|
}
|
|
26769
|
-
var
|
|
26770
|
-
var
|
|
26771
|
-
var
|
|
26775
|
+
var Provider$2 = TooltipProvider$1;
|
|
26776
|
+
var Root3$1 = Tooltip$2;
|
|
26777
|
+
var Trigger$4 = TooltipTrigger$2;
|
|
26778
|
+
var Portal$6 = TooltipPortal$1;
|
|
26779
|
+
var Content2$4 = TooltipContent$2;
|
|
26780
|
+
var Arrow2$1 = TooltipArrow;
|
|
26772
26781
|
var M$2 = (e, i, s2, u4, m2, a2, l, h2) => {
|
|
26773
26782
|
let d2 = document.documentElement, w2 = ["light", "dark"];
|
|
26774
26783
|
function p2(n) {
|
|
@@ -80618,7 +80627,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
80618
80627
|
var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
|
|
80619
80628
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
80620
80629
|
var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
|
|
80621
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
80630
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-2D25w_37.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
80622
80631
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
80623
80632
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
80624
80633
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
|
|
@@ -80940,7 +80949,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
|
|
|
80940
80949
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
80941
80950
|
};
|
|
80942
80951
|
var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
|
|
80943
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
80952
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-BDYN9XOo.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
80944
80953
|
function ke(e, t) {
|
|
80945
80954
|
if (!(e != null && e.position || t != null && t.position)) return true;
|
|
80946
80955
|
if (!(e != null && e.position && (t != null && t.position))) return false;
|
|
@@ -83585,8 +83594,58 @@ const iconButtonVariants = cva([
|
|
|
83585
83594
|
size: "tiny"
|
|
83586
83595
|
}
|
|
83587
83596
|
});
|
|
83588
|
-
|
|
83589
|
-
|
|
83597
|
+
const IconButton = reactExports.forwardRef(({ className, variant, size: size2, type = "button", ...props }, ref) => jsxRuntimeExports.jsx("button", { ref, type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props }));
|
|
83598
|
+
IconButton.displayName = "IconButton";
|
|
83599
|
+
const COL_TEMPLATE = "340px 1px minmax(50px, 1fr)";
|
|
83600
|
+
const ROWS = [
|
|
83601
|
+
{ id: "r0", name: 62, off: 0, bar: 72 },
|
|
83602
|
+
{ id: "r1", name: 78, off: 6, bar: 48 },
|
|
83603
|
+
{ id: "r2", name: 50, off: 10, bar: 55 },
|
|
83604
|
+
{ id: "r3", name: 84, off: 18, bar: 30 },
|
|
83605
|
+
{ id: "r4", name: 45, off: 18, bar: 42 },
|
|
83606
|
+
{ id: "r5", name: 66, off: 34, bar: 38 },
|
|
83607
|
+
{ id: "r6", name: 55, off: 41, bar: 25 },
|
|
83608
|
+
{ id: "r7", name: 40, off: 50, bar: 30 }
|
|
83609
|
+
];
|
|
83610
|
+
const HEADER_MARKERS = ["m0", "m1", "m2", "m3"];
|
|
83611
|
+
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" }) });
|
|
83612
|
+
function TraceViewerSkeleton() {
|
|
83613
|
+
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.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$2, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { 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((id2) => jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5 w-9" }, id2)) }) })] }), 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$2, { className: "w-4 h-4 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5", style: { width: `${row.name}%` } })] }), jsxRuntimeExports.jsx(Skeleton$2, { 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$2, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id)) })] })] });
|
|
83614
|
+
}
|
|
83615
|
+
function useIntersectionObserver(elementRef, { threshold = 0, rootRef, rootMargin = "0%", freezeOnceVisible = false } = {}) {
|
|
83616
|
+
const [entry2, setEntry] = reactExports.useState();
|
|
83617
|
+
const frozen = (entry2 == null ? void 0 : entry2.isIntersecting) && freezeOnceVisible;
|
|
83618
|
+
reactExports.useEffect(() => {
|
|
83619
|
+
const node2 = elementRef == null ? void 0 : elementRef.current;
|
|
83620
|
+
const hasIOSupport = !!window.IntersectionObserver;
|
|
83621
|
+
if (!hasIOSupport || frozen || !node2)
|
|
83622
|
+
return;
|
|
83623
|
+
const updateEntry = ([entry3]) => {
|
|
83624
|
+
setEntry(entry3);
|
|
83625
|
+
};
|
|
83626
|
+
const observer = new IntersectionObserver(updateEntry, {
|
|
83627
|
+
threshold,
|
|
83628
|
+
root: (rootRef == null ? void 0 : rootRef.current) ?? null,
|
|
83629
|
+
rootMargin
|
|
83630
|
+
});
|
|
83631
|
+
observer.observe(node2);
|
|
83632
|
+
return () => observer.disconnect();
|
|
83633
|
+
}, [elementRef, threshold, rootRef, rootMargin, frozen]);
|
|
83634
|
+
return entry2;
|
|
83635
|
+
}
|
|
83636
|
+
function useLoadMoreOnScroll(loadMore, { hasMore, isLoadingMore, rootRef, rootMargin = "400px" }) {
|
|
83637
|
+
const sentinelRef = reactExports.useRef(null);
|
|
83638
|
+
const entry2 = useIntersectionObserver(sentinelRef, { rootRef, rootMargin });
|
|
83639
|
+
const loadMoreRef = reactExports.useRef(loadMore);
|
|
83640
|
+
reactExports.useEffect(() => {
|
|
83641
|
+
loadMoreRef.current = loadMore;
|
|
83642
|
+
}, [loadMore]);
|
|
83643
|
+
reactExports.useEffect(() => {
|
|
83644
|
+
if ((entry2 == null ? void 0 : entry2.isIntersecting) && hasMore && !isLoadingMore) {
|
|
83645
|
+
loadMoreRef.current();
|
|
83646
|
+
}
|
|
83647
|
+
}, [entry2 == null ? void 0 : entry2.isIntersecting, hasMore, isLoadingMore]);
|
|
83648
|
+
return sentinelRef;
|
|
83590
83649
|
}
|
|
83591
83650
|
const QUERY = "(prefers-reduced-motion: reduce)";
|
|
83592
83651
|
const useReducedMotion = () => {
|
|
@@ -83606,6 +83665,9 @@ const useReducedMotion = () => {
|
|
|
83606
83665
|
}, []);
|
|
83607
83666
|
return reduced;
|
|
83608
83667
|
};
|
|
83668
|
+
function Kbd({ children: children2, className }) {
|
|
83669
|
+
return jsxRuntimeExports.jsx("kbd", { className: cn$4("inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-100/20 px-1 text-center font-sans text-xs leading-none", className), children: children2 });
|
|
83670
|
+
}
|
|
83609
83671
|
const WorkflowIcon = () => {
|
|
83610
83672
|
return jsxRuntimeExports.jsx("svg", { "data-testid": "geist-icon", height: "16", "stroke-linejoin": "round", style: { color: "currentColor" }, viewBox: "0 0 16 16", width: "16", children: jsxRuntimeExports.jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) });
|
|
83611
83673
|
};
|
|
@@ -84063,6 +84125,54 @@ function computeSpanSegments(span) {
|
|
|
84063
84125
|
return [];
|
|
84064
84126
|
}
|
|
84065
84127
|
}
|
|
84128
|
+
const INITIAL_VISIBLE_ROWS = 60;
|
|
84129
|
+
function getScrollParent(el) {
|
|
84130
|
+
let node2 = (el == null ? void 0 : el.parentElement) ?? null;
|
|
84131
|
+
while (node2) {
|
|
84132
|
+
const overflowY = getComputedStyle(node2).overflowY;
|
|
84133
|
+
if (overflowY === "auto" || overflowY === "scroll")
|
|
84134
|
+
return node2;
|
|
84135
|
+
node2 = node2.parentElement;
|
|
84136
|
+
}
|
|
84137
|
+
return null;
|
|
84138
|
+
}
|
|
84139
|
+
function useRowWindow(ref, rowCount, rowHeight, overscan = 12) {
|
|
84140
|
+
const [range2, setRange] = reactExports.useState(() => ({
|
|
84141
|
+
start: 0,
|
|
84142
|
+
end: Math.min(rowCount, INITIAL_VISIBLE_ROWS)
|
|
84143
|
+
}));
|
|
84144
|
+
reactExports.useEffect(() => {
|
|
84145
|
+
const self2 = ref.current;
|
|
84146
|
+
const el = getScrollParent(self2);
|
|
84147
|
+
if (!self2 || !el)
|
|
84148
|
+
return;
|
|
84149
|
+
let raf = 0;
|
|
84150
|
+
const measure = () => {
|
|
84151
|
+
raf = 0;
|
|
84152
|
+
const offset2 = self2.getBoundingClientRect().top - el.getBoundingClientRect().top + el.scrollTop;
|
|
84153
|
+
const top = el.scrollTop - offset2;
|
|
84154
|
+
const start2 = Math.max(0, Math.floor(top / rowHeight) - overscan);
|
|
84155
|
+
const end = Math.min(rowCount, Math.ceil((top + el.clientHeight) / rowHeight) + overscan);
|
|
84156
|
+
setRange((prev) => prev.start === start2 && prev.end === end ? prev : { start: start2, end });
|
|
84157
|
+
};
|
|
84158
|
+
const onScroll = () => {
|
|
84159
|
+
if (!raf)
|
|
84160
|
+
raf = requestAnimationFrame(measure);
|
|
84161
|
+
};
|
|
84162
|
+
measure();
|
|
84163
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
84164
|
+
const ro2 = new ResizeObserver(measure);
|
|
84165
|
+
ro2.observe(el);
|
|
84166
|
+
return () => {
|
|
84167
|
+
el.removeEventListener("scroll", onScroll);
|
|
84168
|
+
ro2.disconnect();
|
|
84169
|
+
if (raf)
|
|
84170
|
+
cancelAnimationFrame(raf);
|
|
84171
|
+
};
|
|
84172
|
+
}, [ref, rowCount, rowHeight, overscan]);
|
|
84173
|
+
return range2;
|
|
84174
|
+
}
|
|
84175
|
+
const ROW_HEIGHT_PX = 40;
|
|
84066
84176
|
const eventStyles = {
|
|
84067
84177
|
run: { icon: WorkflowIcon, className: "text-blue-900" },
|
|
84068
84178
|
step: { icon: StepForwardIcon, className: "text-green-900" },
|
|
@@ -84088,14 +84198,17 @@ const EventRow = ({ span, isSelected, isDimmed, onSelectSpan }) => {
|
|
|
84088
84198
|
return jsxRuntimeExports.jsx("li", { className: cn$4("relative overflow-clip group transition-opacity", ROW_HEIGHT_CLASS, isDimmed && "opacity-35"), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: jsxRuntimeExports.jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: jsxRuntimeExports.jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx("span", { className: cn$4("shrink-0", tagClassName), children: jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("span", { className: "min-w-0 text-label-14", children: jsxRuntimeExports.jsx(MiddleTruncate, { value: span.name }) })] }), jsxRuntimeExports.jsx("div", { className: "ml-2 shrink-0", children: jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) });
|
|
84089
84199
|
};
|
|
84090
84200
|
const EventList = ({ spans, activeSpanId, searchResult, onSelectSpan }) => {
|
|
84091
|
-
|
|
84092
|
-
|
|
84093
|
-
|
|
84201
|
+
const listRef = reactExports.useRef(null);
|
|
84202
|
+
const { start: start2, end } = useRowWindow(listRef, spans.length, ROW_HEIGHT_PX);
|
|
84203
|
+
return jsxRuntimeExports.jsx("ul", { ref: listRef, id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", style: {
|
|
84204
|
+
paddingTop: start2 * ROW_HEIGHT_PX,
|
|
84205
|
+
paddingBottom: (spans.length - end) * ROW_HEIGHT_PX
|
|
84206
|
+
}, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan }, span.spanId)) });
|
|
84094
84207
|
};
|
|
84095
84208
|
const GUTTER_PX = 1;
|
|
84096
84209
|
const MIN_PX = 50;
|
|
84097
84210
|
const DEFAULT_START_PX = 340;
|
|
84098
|
-
function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader }) {
|
|
84211
|
+
function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader, scrollContainerRef }) {
|
|
84099
84212
|
const parts = reactExports.Children.toArray(children2);
|
|
84100
84213
|
if (parts.length !== 2) {
|
|
84101
84214
|
throw new Error("SplitPane expects exactly two children");
|
|
@@ -84114,6 +84227,12 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
|
|
|
84114
84227
|
cancelAnimationFrame(rafRef.current);
|
|
84115
84228
|
};
|
|
84116
84229
|
}, []);
|
|
84230
|
+
const setContainerRef = reactExports.useCallback((node2) => {
|
|
84231
|
+
containerRef.current = node2;
|
|
84232
|
+
if (scrollContainerRef) {
|
|
84233
|
+
scrollContainerRef.current = node2;
|
|
84234
|
+
}
|
|
84235
|
+
}, [scrollContainerRef]);
|
|
84117
84236
|
const clampPx = reactExports.useCallback((px) => {
|
|
84118
84237
|
const el = containerRef.current;
|
|
84119
84238
|
if (!el)
|
|
@@ -84179,9 +84298,9 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
|
|
|
84179
84298
|
const hasHeaders = startHeader != null || endHeader != null;
|
|
84180
84299
|
const gutter = jsxRuntimeExports.jsx("div", { ref: gutterRef, className: "relative z-20 isolate flex shrink-0 cursor-col-resize justify-center", onPointerDown: handlePointerDown, onLostPointerCapture: handleLostPointerCapture, children: jsxRuntimeExports.jsx("span", { className: "pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400", "aria-hidden": true }) });
|
|
84181
84300
|
if (hasHeaders) {
|
|
84182
|
-
return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref:
|
|
84301
|
+
return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto", isDragging && "select-none"), style: { gridTemplateColumns: colTemplate }, children: [start2, gutter, end] })] });
|
|
84183
84302
|
}
|
|
84184
|
-
return jsxRuntimeExports.jsxs("div", { ref:
|
|
84303
|
+
return jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto", isDragging && "select-none", className), style: { gridTemplateColumns: colTemplate, height: "100%" }, children: [start2, gutter, end] });
|
|
84185
84304
|
}
|
|
84186
84305
|
const TINY_BAR_BOX_SIZE_PX = 24;
|
|
84187
84306
|
const TINY_BAR_WIDTH_PX = 4;
|
|
@@ -84309,11 +84428,10 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
|
|
|
84309
84428
|
}, [onSelect, span.spanId]);
|
|
84310
84429
|
return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }) }) });
|
|
84311
84430
|
});
|
|
84312
|
-
const DELTA_ROW_HEIGHT_PX = 40;
|
|
84313
84431
|
const DELTA_CAP_HEIGHT_PX = 8;
|
|
84314
84432
|
const DELTA_ROW_OFFSET_PX = 8;
|
|
84315
84433
|
const DeltaIndicator = reactExports.memo(function DeltaIndicator2({ leftFrac, rightFrac, label, rowIndex }) {
|
|
84316
|
-
const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) *
|
|
84434
|
+
const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * ROW_HEIGHT_PX;
|
|
84317
84435
|
return jsxRuntimeExports.jsxs("div", { className: "absolute pointer-events-none", style: {
|
|
84318
84436
|
left: `${leftFrac * 100}%`,
|
|
84319
84437
|
width: `${(rightFrac - leftFrac) * 100}%`,
|
|
@@ -84329,6 +84447,7 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
|
|
|
84329
84447
|
const [containerWidth, setContainerWidth] = reactExports.useState(0);
|
|
84330
84448
|
const viewDuration = viewEnd - viewStart;
|
|
84331
84449
|
const timelineWidth = Math.max(0, containerWidth - TIMELINE_PADDING_PX * 2);
|
|
84450
|
+
const { start: start2, end } = useRowWindow(containerRef, spans.length, ROW_HEIGHT_PX);
|
|
84332
84451
|
reactExports.useEffect(() => {
|
|
84333
84452
|
const el = containerRef.current;
|
|
84334
84453
|
if (!el)
|
|
@@ -84340,16 +84459,20 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
|
|
|
84340
84459
|
return () => ro2.disconnect();
|
|
84341
84460
|
}, []);
|
|
84342
84461
|
const gaps = reactExports.useMemo(() => computeSpanGaps(spans, viewStart, viewEnd), [spans, viewStart, viewEnd]);
|
|
84343
|
-
return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
|
|
84462
|
+
return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
|
|
84344
84463
|
// Skip the "0s" origin marker since the left edge already implies it.
|
|
84345
84464
|
Math.abs(marker2.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker2.position * 100}%` } }, `${marker2.position}-${marker2.label}`) : null
|
|
84346
|
-
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), spans.map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84465
|
+
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), jsxRuntimeExports.jsx("div", { style: { transform: `translateY(${start2 * ROW_HEIGHT_PX}px)` }, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)) }), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84347
84466
|
}
|
|
84467
|
+
const TooltipProvider = Provider$2;
|
|
84468
|
+
const Tooltip$1 = Root3$1;
|
|
84469
|
+
const TooltipTrigger$1 = Trigger$4;
|
|
84470
|
+
const TooltipContent$1 = reactExports.forwardRef(({ className, sideOffset = 8, showArrow = true, children: children2, ...props }, ref) => jsxRuntimeExports.jsx(Portal$6, { children: jsxRuntimeExports.jsxs(Content2$4, { ref, sideOffset, className: cn$4("z-[99999] flex items-center gap-1 rounded-[10px] bg-gray-1000 px-2 py-1.5 !text-label-13 text-background-100 shadow-md select-none", className), ...props, children: [children2, showArrow ? jsxRuntimeExports.jsx(Arrow2$1, { width: 11, height: 5, className: "fill-gray-1000" }) : null] }) }));
|
|
84471
|
+
TooltipContent$1.displayName = Content2$4.displayName;
|
|
84348
84472
|
const ActiveSpanContext = reactExports.createContext(null);
|
|
84349
84473
|
ActiveSpanContext.displayName = "ActiveSpanContext";
|
|
84350
84474
|
function ActiveSpanProvider({ spans, children: children2 }) {
|
|
84351
|
-
|
|
84352
|
-
const [activeSpanId, setActiveSpanId] = reactExports.useState(((_a3 = spans[0]) == null ? void 0 : _a3.spanId) ?? null);
|
|
84475
|
+
const [activeSpanId, setActiveSpanId] = reactExports.useState(null);
|
|
84353
84476
|
reactExports.useEffect(() => {
|
|
84354
84477
|
setActiveSpanId((currentSpanId) => {
|
|
84355
84478
|
if (!currentSpanId) {
|
|
@@ -84465,10 +84588,10 @@ function useSelectedSpanInfo() {
|
|
|
84465
84588
|
};
|
|
84466
84589
|
}, [activeSpan, sidebar]);
|
|
84467
84590
|
}
|
|
84468
|
-
function NewTraceViewer$1({ trace: trace2 }) {
|
|
84469
|
-
return jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2 }) });
|
|
84591
|
+
function NewTraceViewer$1({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
|
|
84592
|
+
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
84470
84593
|
}
|
|
84471
|
-
function NewTraceViewerContent({ trace: trace2 }) {
|
|
84594
|
+
function NewTraceViewerContent({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
|
|
84472
84595
|
const { activeSpan, activeSpanId, setActiveSpan, clearActiveSpan } = useActiveSpan();
|
|
84473
84596
|
const sidebar = useSidebarDataOptional();
|
|
84474
84597
|
const selectedSpan = useSelectedSpanInfo();
|
|
@@ -84476,6 +84599,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84476
84599
|
const deferredSearchQuery = reactExports.useDeferredValue(searchQuery);
|
|
84477
84600
|
const searchResult = reactExports.useMemo(() => searchSpans(trace2.spans, deferredSearchQuery), [trace2.spans, deferredSearchQuery]);
|
|
84478
84601
|
const root2 = reactExports.useMemo(() => computeRootBounds(trace2.spans), [trace2.spans]);
|
|
84602
|
+
const scrollContainerRef = reactExports.useRef(null);
|
|
84603
|
+
const loadMore = reactExports.useCallback(() => {
|
|
84604
|
+
void (onLoadMore == null ? void 0 : onLoadMore());
|
|
84605
|
+
}, [onLoadMore]);
|
|
84606
|
+
const loadMoreSentinelRef = useLoadMoreOnScroll(loadMore, {
|
|
84607
|
+
hasMore: Boolean(onLoadMore && hasMore),
|
|
84608
|
+
isLoadingMore: Boolean(isLoadingMore),
|
|
84609
|
+
rootRef: scrollContainerRef
|
|
84610
|
+
});
|
|
84479
84611
|
const { viewport, setViewport, animateTo } = useAnimatedViewport({
|
|
84480
84612
|
start: root2.startTime,
|
|
84481
84613
|
end: root2.startTime + root2.duration
|
|
@@ -84737,15 +84869,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84737
84869
|
prevSpanIdRef.current = prevSpanId;
|
|
84738
84870
|
nextSpanIdRef.current = nextSpanId;
|
|
84739
84871
|
handleSelectSpanRef.current = handleSelectSpan;
|
|
84740
|
-
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
84872
|
+
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { scrollContainerRef, startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
84741
84873
|
if (e.key === "Escape" && searchQuery) {
|
|
84742
84874
|
e.preventDefault();
|
|
84743
84875
|
e.stopPropagation();
|
|
84744
84876
|
setSearchQuery("");
|
|
84745
84877
|
}
|
|
84746
|
-
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm 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-base 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", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.
|
|
84878
|
+
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm 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-base 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", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsxs("div", { className: "block overflow-visible", children: [jsxRuntimeExports.jsx(EventList, { spans: trace2.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-sm text-gray-800", children: [jsxRuntimeExports.jsx(Spinner, { size: 14 }), jsxRuntimeExports.jsx("span", { children: "Loading spans…" })] }) : null })] }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace2.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] 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, "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, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate up", jsxRuntimeExports.jsx(Kbd, { children: "K" })] }) : null] }), jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate down", jsxRuntimeExports.jsx(Kbd, { children: "J" })] }) : null] }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary$1, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root2.startTime, onClose: clearActiveSpan }) : null] });
|
|
84747
84879
|
}
|
|
84748
|
-
const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
|
|
84880
|
+
const NewTraceViewer = ({ run, events: events2, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false }) => {
|
|
84749
84881
|
const traceWithMeta = reactExports.useMemo(() => {
|
|
84750
84882
|
if (!(run == null ? void 0 : run.runId)) {
|
|
84751
84883
|
return void 0;
|
|
@@ -84753,10 +84885,10 @@ const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
|
|
|
84753
84885
|
return buildTrace(run, events2, /* @__PURE__ */ new Date());
|
|
84754
84886
|
}, [run, events2]);
|
|
84755
84887
|
const trace2 = traceWithMeta;
|
|
84756
|
-
if (!trace2) {
|
|
84757
|
-
return jsxRuntimeExports.jsx(
|
|
84888
|
+
if (!trace2 || loading && events2.length === 0) {
|
|
84889
|
+
return jsxRuntimeExports.jsx(TraceViewerSkeleton, {});
|
|
84758
84890
|
}
|
|
84759
|
-
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2 }) }) });
|
|
84891
|
+
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
84760
84892
|
};
|
|
84761
84893
|
function analyzeEvents(events2) {
|
|
84762
84894
|
if (!events2 || events2.length === 0) {
|
|
@@ -88729,7 +88861,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
88729
88861
|
encrypt: encrypt$1,
|
|
88730
88862
|
importKey
|
|
88731
88863
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
88732
|
-
const version$1 = "5.0.0-beta.
|
|
88864
|
+
const version$1 = "5.0.0-beta.11";
|
|
88733
88865
|
const WorldCacheKey = Symbol.for("@workflow/world//cache");
|
|
88734
88866
|
const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
|
|
88735
88867
|
const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
|
|
@@ -89064,6 +89196,7 @@ const STABLE_ULID = Symbol.for("WORKFLOW_STABLE_ULID");
|
|
|
89064
89196
|
const STREAM_NAME_SYMBOL = Symbol.for("WORKFLOW_STREAM_NAME");
|
|
89065
89197
|
const STREAM_TYPE_SYMBOL = Symbol.for("WORKFLOW_STREAM_TYPE");
|
|
89066
89198
|
const STREAM_SERVER_RUN_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_RUN_ID");
|
|
89199
|
+
const STREAM_SERVER_DEPLOYMENT_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_DEPLOYMENT_ID");
|
|
89067
89200
|
const BODY_INIT_SYMBOL = Symbol.for("BODY_INIT");
|
|
89068
89201
|
const WEBHOOK_RESPONSE_WRITABLE = Symbol.for("WEBHOOK_RESPONSE_WRITABLE");
|
|
89069
89202
|
const WORKFLOW_CLASS_REGISTRY = Symbol.for("workflow-class-registry");
|
|
@@ -91322,7 +91455,15 @@ function getExternalReducers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91322
91455
|
const existingName = value[STREAM_NAME_SYMBOL];
|
|
91323
91456
|
const existingRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
|
|
91324
91457
|
if (typeof existingName === "string" && typeof existingRunId === "string") {
|
|
91325
|
-
|
|
91458
|
+
const descriptor = {
|
|
91459
|
+
name: existingName,
|
|
91460
|
+
runId: existingRunId
|
|
91461
|
+
};
|
|
91462
|
+
const existingDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91463
|
+
if (typeof existingDeploymentId === "string") {
|
|
91464
|
+
descriptor.deploymentId = existingDeploymentId;
|
|
91465
|
+
}
|
|
91466
|
+
return descriptor;
|
|
91326
91467
|
}
|
|
91327
91468
|
const streamId = (global2[STABLE_ULID] || defaultUlid)();
|
|
91328
91469
|
const name2 = `strm_${streamId}`;
|
|
@@ -91375,6 +91516,10 @@ function getWorkflowReducers(global2 = globalThis) {
|
|
|
91375
91516
|
const foreignRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
|
|
91376
91517
|
if (typeof foreignRunId === "string")
|
|
91377
91518
|
s2.runId = foreignRunId;
|
|
91519
|
+
const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91520
|
+
if (typeof foreignDeploymentId === "string") {
|
|
91521
|
+
s2.deploymentId = foreignDeploymentId;
|
|
91522
|
+
}
|
|
91378
91523
|
return s2;
|
|
91379
91524
|
},
|
|
91380
91525
|
// AbortController/AbortSignal in workflow context — just read symbols (handles).
|
|
@@ -91444,6 +91589,10 @@ function getStepReducers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91444
91589
|
const s2 = { name: name2 };
|
|
91445
91590
|
if (typeof foreignRunId === "string")
|
|
91446
91591
|
s2.runId = foreignRunId;
|
|
91592
|
+
const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91593
|
+
if (typeof foreignDeploymentId === "string") {
|
|
91594
|
+
s2.deploymentId = foreignDeploymentId;
|
|
91595
|
+
}
|
|
91447
91596
|
return s2;
|
|
91448
91597
|
},
|
|
91449
91598
|
AbortController: (value) => {
|
|
@@ -91577,6 +91726,13 @@ function getCommonRevivers(global2 = globalThis) {
|
|
|
91577
91726
|
...getCommonRevivers$1(global2)
|
|
91578
91727
|
};
|
|
91579
91728
|
}
|
|
91729
|
+
async function getForwardedWritableEncryptionKey(runId, deploymentId) {
|
|
91730
|
+
const world = await getWorldLazy();
|
|
91731
|
+
if (!world.getEncryptionKeyForRun)
|
|
91732
|
+
return void 0;
|
|
91733
|
+
const rawKey = deploymentId ? await world.getEncryptionKeyForRun(runId, { deploymentId }) : await world.getEncryptionKeyForRun(await world.runs.get(runId));
|
|
91734
|
+
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91735
|
+
}
|
|
91580
91736
|
function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
91581
91737
|
return {
|
|
91582
91738
|
...getCommonRevivers(global2),
|
|
@@ -91639,12 +91795,7 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91639
91795
|
},
|
|
91640
91796
|
WritableStream: (value) => {
|
|
91641
91797
|
const targetRunId = typeof value.runId === "string" ? value.runId : runId;
|
|
91642
|
-
const targetKey = targetRunId === runId ? cryptoKey : (
|
|
91643
|
-
var _a3;
|
|
91644
|
-
const world = await getWorldLazy();
|
|
91645
|
-
const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
|
|
91646
|
-
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91647
|
-
})();
|
|
91798
|
+
const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, value.deploymentId);
|
|
91648
91799
|
const serialize2 = getSerializeStream(getExternalReducers(global2, ops, targetRunId, targetKey), targetKey);
|
|
91649
91800
|
const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
|
|
91650
91801
|
const state = createFlushableState();
|
|
@@ -91660,6 +91811,12 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91660
91811
|
value: targetRunId,
|
|
91661
91812
|
writable: false
|
|
91662
91813
|
});
|
|
91814
|
+
if (typeof value.deploymentId === "string") {
|
|
91815
|
+
Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
|
|
91816
|
+
value: value.deploymentId,
|
|
91817
|
+
writable: false
|
|
91818
|
+
});
|
|
91819
|
+
}
|
|
91663
91820
|
return serialize2.writable;
|
|
91664
91821
|
},
|
|
91665
91822
|
AbortController: (value) => reviveAbortController(value, ops, runId),
|
|
@@ -91730,6 +91887,12 @@ function getWorkflowRevivers(global2 = globalThis) {
|
|
|
91730
91887
|
writable: false
|
|
91731
91888
|
};
|
|
91732
91889
|
}
|
|
91890
|
+
if (typeof value.deploymentId === "string") {
|
|
91891
|
+
descriptor[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL] = {
|
|
91892
|
+
value: value.deploymentId,
|
|
91893
|
+
writable: false
|
|
91894
|
+
};
|
|
91895
|
+
}
|
|
91733
91896
|
return Object.create(global2.WritableStream.prototype, descriptor);
|
|
91734
91897
|
},
|
|
91735
91898
|
// AbortController/AbortSignal revived inside the workflow VM. Use the
|
|
@@ -91759,7 +91922,7 @@ function getWorkflowRevivers(global2 = globalThis) {
|
|
|
91759
91922
|
}
|
|
91760
91923
|
};
|
|
91761
91924
|
}
|
|
91762
|
-
function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
91925
|
+
function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey, deploymentId) {
|
|
91763
91926
|
return {
|
|
91764
91927
|
...getCommonRevivers(global2),
|
|
91765
91928
|
// StepFunction reviver for step context - returns raw step function
|
|
@@ -91875,7 +92038,7 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91875
92038
|
pollReadableLock(userReadable, state);
|
|
91876
92039
|
return userReadable;
|
|
91877
92040
|
} else {
|
|
91878
|
-
const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey), cryptoKey);
|
|
92041
|
+
const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey, deploymentId), cryptoKey);
|
|
91879
92042
|
const state = createFlushableState();
|
|
91880
92043
|
ops.push(state.promise);
|
|
91881
92044
|
flushablePipe(readable2, transform2.writable, state).catch(() => {
|
|
@@ -91886,12 +92049,8 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91886
92049
|
},
|
|
91887
92050
|
WritableStream: (value) => {
|
|
91888
92051
|
const targetRunId = typeof value.runId === "string" ? value.runId : runId;
|
|
91889
|
-
const
|
|
91890
|
-
|
|
91891
|
-
const world = await getWorldLazy();
|
|
91892
|
-
const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
|
|
91893
|
-
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91894
|
-
})();
|
|
92052
|
+
const targetDeploymentId = typeof value.deploymentId === "string" ? value.deploymentId : targetRunId === runId ? deploymentId : void 0;
|
|
92053
|
+
const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, targetDeploymentId);
|
|
91895
92054
|
const serialize2 = getSerializeStream(getStepReducers(global2, ops, targetRunId, targetKey), targetKey);
|
|
91896
92055
|
const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
|
|
91897
92056
|
const state = createFlushableState();
|
|
@@ -91907,6 +92066,12 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91907
92066
|
value: targetRunId,
|
|
91908
92067
|
writable: false
|
|
91909
92068
|
});
|
|
92069
|
+
if (targetDeploymentId) {
|
|
92070
|
+
Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
|
|
92071
|
+
value: targetDeploymentId,
|
|
92072
|
+
writable: false
|
|
92073
|
+
});
|
|
92074
|
+
}
|
|
91910
92075
|
return serialize2.writable;
|
|
91911
92076
|
},
|
|
91912
92077
|
AbortController: (value) => reviveAbortController(value, ops, runId),
|
|
@@ -91966,11 +92131,11 @@ async function dehydrateStepArguments(value, _runId, key, global2 = globalThis,
|
|
|
91966
92131
|
throw new SerializationError(message2, { hint: hint2, cause });
|
|
91967
92132
|
}
|
|
91968
92133
|
}
|
|
91969
|
-
async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
92134
|
+
async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}, deploymentId) {
|
|
91970
92135
|
return deserialize$1(value, key, {
|
|
91971
92136
|
global: global2,
|
|
91972
92137
|
extraRevivers: {
|
|
91973
|
-
...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key)),
|
|
92138
|
+
...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key, deploymentId)),
|
|
91974
92139
|
...extraRevivers
|
|
91975
92140
|
}
|
|
91976
92141
|
});
|
|
@@ -118649,7 +118814,7 @@ function createLocalWorld(args) {
|
|
|
118649
118814
|
const basedir = mergedConfig.dataDir;
|
|
118650
118815
|
const hooksDir = path$3.join(basedir, "hooks");
|
|
118651
118816
|
const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
|
|
118652
|
-
const { HookSchema: HookSchema2 } = await import("./index-
|
|
118817
|
+
const { HookSchema: HookSchema2 } = await import("./index-C6jZ_bJo.js");
|
|
118653
118818
|
await Promise.all(taggedHookFiles.map(async (hookFile) => {
|
|
118654
118819
|
const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
|
|
118655
118820
|
if (hook == null ? void 0 : hook.token) {
|
|
@@ -118801,8 +118966,8 @@ function requireGetVercelOidcToken() {
|
|
|
118801
118966
|
}
|
|
118802
118967
|
try {
|
|
118803
118968
|
const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
|
|
118804
|
-
await import("./token-util-
|
|
118805
|
-
await import("./token-
|
|
118969
|
+
await import("./token-util-CdvUIKt6.js").then((n) => n.t),
|
|
118970
|
+
await import("./token-Bjcyh98U.js").then((n) => n.t)
|
|
118806
118971
|
]);
|
|
118807
118972
|
if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
|
|
118808
118973
|
await refreshToken(options);
|
|
@@ -123973,7 +124138,7 @@ var QueueClient = class {
|
|
|
123973
124138
|
setApi(this, new ApiClient({ ...options, region }));
|
|
123974
124139
|
}
|
|
123975
124140
|
};
|
|
123976
|
-
const version = "5.0.0-beta.
|
|
124141
|
+
const version = "5.0.0-beta.10";
|
|
123977
124142
|
const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
|
|
123978
124143
|
function httpLog(method, endpoint, status, ms2) {
|
|
123979
124144
|
if (HTTP_DEBUG_ENABLED) {
|
|
@@ -123981,6 +124146,9 @@ function httpLog(method, endpoint, status, ms2) {
|
|
|
123981
124146
|
}
|
|
123982
124147
|
}
|
|
123983
124148
|
const REQUEST_TIMEOUT_MS = 6e4;
|
|
124149
|
+
const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
|
|
124150
|
+
const MAX_BODY_PARSE_RETRIES = 2;
|
|
124151
|
+
const BODY_PARSE_RETRY_BASE_MS = 100;
|
|
123984
124152
|
const getWorkflowServerUrlOverride = () => process.env.VERCEL_WORKFLOW_SERVER_URL || "";
|
|
123985
124153
|
const DEFAULT_RESOLVE_DATA_OPTION = "all";
|
|
123986
124154
|
function deserializeError(obj) {
|
|
@@ -124070,101 +124238,116 @@ async function makeRequest({ endpoint, options = {}, config: config2 = {}, schem
|
|
|
124070
124238
|
...RpcService("workflow-server")
|
|
124071
124239
|
});
|
|
124072
124240
|
headers2.set("Accept", "application/cbor");
|
|
124073
|
-
headers2.set("X-Request-Time", Date.now().toString());
|
|
124074
124241
|
let body2;
|
|
124075
124242
|
if (data !== void 0) {
|
|
124076
124243
|
headers2.set("Content-Type", "application/cbor");
|
|
124077
124244
|
body2 = encode(data);
|
|
124078
124245
|
}
|
|
124079
|
-
const
|
|
124080
|
-
|
|
124081
|
-
|
|
124082
|
-
|
|
124083
|
-
|
|
124084
|
-
|
|
124085
|
-
|
|
124086
|
-
|
|
124087
|
-
|
|
124088
|
-
|
|
124089
|
-
|
|
124090
|
-
response2 = await fetch(request2, {
|
|
124091
|
-
dispatcher: getDispatcher()
|
|
124246
|
+
const canRetryBody = IDEMPOTENT_METHODS.has(method.toUpperCase());
|
|
124247
|
+
let parseResult;
|
|
124248
|
+
for (let attempt = 0; ; attempt++) {
|
|
124249
|
+
headers2.set("X-Request-Time", Date.now().toString());
|
|
124250
|
+
const timeoutSignal = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
|
|
124251
|
+
const signal = options.signal ? AbortSignal.any([options.signal, timeoutSignal]) : timeoutSignal;
|
|
124252
|
+
const request2 = new Request(url2, {
|
|
124253
|
+
...options,
|
|
124254
|
+
body: body2,
|
|
124255
|
+
headers: headers2,
|
|
124256
|
+
signal
|
|
124092
124257
|
});
|
|
124093
|
-
|
|
124094
|
-
|
|
124095
|
-
|
|
124096
|
-
|
|
124097
|
-
|
|
124098
|
-
(_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
|
|
124099
|
-
throw timeoutError;
|
|
124100
|
-
}
|
|
124101
|
-
throw error2;
|
|
124102
|
-
}
|
|
124103
|
-
const fetchMs = Date.now() - fetchStart;
|
|
124104
|
-
httpLog(method, endpoint, response2.status, fetchMs);
|
|
124105
|
-
span == null ? void 0 : span.setAttributes({
|
|
124106
|
-
...HttpResponseStatusCode(response2.status)
|
|
124107
|
-
});
|
|
124108
|
-
if (!response2.ok) {
|
|
124109
|
-
const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
|
|
124110
|
-
if (process.env.DEBUG) {
|
|
124111
|
-
const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
|
|
124112
|
-
console.error(`Failed to fetch, reproduce with:
|
|
124113
|
-
curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
|
|
124114
|
-
}
|
|
124115
|
-
let retryAfter;
|
|
124116
|
-
const retryAfterHeader = response2.headers.get("Retry-After");
|
|
124117
|
-
if (retryAfterHeader) {
|
|
124118
|
-
const parsed = parseInt(retryAfterHeader, 10);
|
|
124119
|
-
if (!Number.isNaN(parsed)) {
|
|
124120
|
-
retryAfter = parsed;
|
|
124121
|
-
}
|
|
124122
|
-
}
|
|
124123
|
-
const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
|
|
124124
|
-
const throwWithTrace = (error2) => {
|
|
124125
|
-
var _a4;
|
|
124126
|
-
span == null ? void 0 : span.setAttributes({
|
|
124127
|
-
...ErrorType(errorData.code || `HTTP ${response2.status}`)
|
|
124258
|
+
const fetchStart = Date.now();
|
|
124259
|
+
let response2;
|
|
124260
|
+
try {
|
|
124261
|
+
response2 = await fetch(request2, {
|
|
124262
|
+
dispatcher: getDispatcher()
|
|
124128
124263
|
});
|
|
124129
|
-
|
|
124264
|
+
} catch (error2) {
|
|
124265
|
+
const elapsed = Date.now() - fetchStart;
|
|
124266
|
+
if (error2 instanceof Error && (error2.name === "TimeoutError" || error2.name === "AbortError")) {
|
|
124267
|
+
const timeoutError = new WorkflowWorldError(`${method} ${endpoint} timed out after ${elapsed}ms`, { url: url2, cause: error2 });
|
|
124268
|
+
span == null ? void 0 : span.setAttributes({ ...ErrorType("TIMEOUT") });
|
|
124269
|
+
(_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
|
|
124270
|
+
throw timeoutError;
|
|
124271
|
+
}
|
|
124130
124272
|
throw error2;
|
|
124131
|
-
};
|
|
124132
|
-
if (response2.status === 409) {
|
|
124133
|
-
throwWithTrace(new EntityConflictError(defaultMessage));
|
|
124134
|
-
}
|
|
124135
|
-
if (response2.status === 410) {
|
|
124136
|
-
throwWithTrace(new RunExpiredError(defaultMessage));
|
|
124137
124273
|
}
|
|
124138
|
-
|
|
124139
|
-
|
|
124140
|
-
|
|
124141
|
-
|
|
124142
|
-
|
|
124274
|
+
const fetchMs = Date.now() - fetchStart;
|
|
124275
|
+
httpLog(method, endpoint, response2.status, fetchMs);
|
|
124276
|
+
span == null ? void 0 : span.setAttributes({
|
|
124277
|
+
...HttpResponseStatusCode(response2.status)
|
|
124278
|
+
});
|
|
124279
|
+
if (!response2.ok) {
|
|
124280
|
+
const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
|
|
124281
|
+
if (process.env.DEBUG) {
|
|
124282
|
+
const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
|
|
124283
|
+
console.error(`Failed to fetch, reproduce with:
|
|
124284
|
+
curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
|
|
124285
|
+
}
|
|
124286
|
+
let retryAfter;
|
|
124287
|
+
const retryAfterHeader = response2.headers.get("Retry-After");
|
|
124288
|
+
if (retryAfterHeader) {
|
|
124289
|
+
const parsed = parseInt(retryAfterHeader, 10);
|
|
124290
|
+
if (!Number.isNaN(parsed)) {
|
|
124291
|
+
retryAfter = parsed;
|
|
124292
|
+
}
|
|
124293
|
+
}
|
|
124294
|
+
const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
|
|
124295
|
+
const throwWithTrace = (error2) => {
|
|
124296
|
+
var _a4;
|
|
124297
|
+
span == null ? void 0 : span.setAttributes({
|
|
124298
|
+
...ErrorType(errorData.code || `HTTP ${response2.status}`)
|
|
124299
|
+
});
|
|
124300
|
+
(_a4 = span == null ? void 0 : span.recordException) == null ? void 0 : _a4.call(span, error2);
|
|
124301
|
+
throw error2;
|
|
124302
|
+
};
|
|
124303
|
+
if (response2.status === 409) {
|
|
124304
|
+
throwWithTrace(new EntityConflictError(defaultMessage));
|
|
124305
|
+
}
|
|
124306
|
+
if (response2.status === 410) {
|
|
124307
|
+
throwWithTrace(new RunExpiredError(defaultMessage));
|
|
124308
|
+
}
|
|
124309
|
+
if (response2.status === 425) {
|
|
124310
|
+
throwWithTrace(new TooEarlyError(defaultMessage, { retryAfter }));
|
|
124311
|
+
}
|
|
124312
|
+
if (response2.status === 429) {
|
|
124313
|
+
throwWithTrace(new ThrottleError(defaultMessage, { retryAfter }));
|
|
124314
|
+
}
|
|
124315
|
+
throwWithTrace(new WorkflowWorldError(defaultMessage, {
|
|
124316
|
+
url: url2,
|
|
124317
|
+
status: response2.status,
|
|
124318
|
+
code: errorData.code,
|
|
124319
|
+
retryAfter
|
|
124320
|
+
}));
|
|
124143
124321
|
}
|
|
124144
|
-
|
|
124145
|
-
|
|
124146
|
-
|
|
124147
|
-
|
|
124148
|
-
|
|
124149
|
-
|
|
124150
|
-
|
|
124151
|
-
|
|
124152
|
-
|
|
124153
|
-
|
|
124154
|
-
parseResult = await trace("world.parse", async (parseSpan) => {
|
|
124155
|
-
const result2 = await parseResponseBody(response2);
|
|
124156
|
-
const contentType = response2.headers.get("Content-Type") || "";
|
|
124157
|
-
const isCbor = contentType.includes("application/cbor");
|
|
124158
|
-
parseSpan == null ? void 0 : parseSpan.setAttributes({
|
|
124159
|
-
...WorldParseFormat(isCbor ? "cbor" : "json")
|
|
124322
|
+
onResponse == null ? void 0 : onResponse(response2);
|
|
124323
|
+
try {
|
|
124324
|
+
parseResult = await trace("world.parse", async (parseSpan) => {
|
|
124325
|
+
const result2 = await parseResponseBody(response2);
|
|
124326
|
+
const contentType = response2.headers.get("Content-Type") || "";
|
|
124327
|
+
const isCbor = contentType.includes("application/cbor");
|
|
124328
|
+
parseSpan == null ? void 0 : parseSpan.setAttributes({
|
|
124329
|
+
...WorldParseFormat(isCbor ? "cbor" : "json")
|
|
124330
|
+
});
|
|
124331
|
+
return result2;
|
|
124160
124332
|
});
|
|
124161
|
-
|
|
124162
|
-
})
|
|
124163
|
-
|
|
124164
|
-
|
|
124165
|
-
|
|
124333
|
+
break;
|
|
124334
|
+
} catch (error2) {
|
|
124335
|
+
if (canRetryBody && attempt < MAX_BODY_PARSE_RETRIES) {
|
|
124336
|
+
const backoffMs = BODY_PARSE_RETRY_BASE_MS * 2 ** attempt;
|
|
124337
|
+
span == null ? void 0 : span.setAttributes({
|
|
124338
|
+
...ErrorType("PARSE_ERROR_RETRYING")
|
|
124339
|
+
});
|
|
124340
|
+
if (HTTP_DEBUG_ENABLED) {
|
|
124341
|
+
console.debug(`[workflow:world-vercel:http] ${method} ${endpoint} body parse failed (attempt ${attempt + 1}/${MAX_BODY_PARSE_RETRIES + 1}); retrying in ${backoffMs}ms: ${error2}`);
|
|
124342
|
+
}
|
|
124343
|
+
await new Promise((resolve2) => setTimeout(resolve2, backoffMs));
|
|
124344
|
+
continue;
|
|
124345
|
+
}
|
|
124346
|
+
const contentType = response2.headers.get("Content-Type") || "unknown";
|
|
124347
|
+
throw new WorkflowWorldError(`Failed to parse response body for ${method} ${endpoint} (Content-Type: ${contentType}):
|
|
124166
124348
|
|
|
124167
124349
|
${error2}`, { url: url2, code: "PARSE_ERROR", cause: error2 });
|
|
124350
|
+
}
|
|
124168
124351
|
}
|
|
124169
124352
|
const result = await trace("world.validate", async () => {
|
|
124170
124353
|
const validationResult = schema.safeParse(parseResult.data);
|
|
@@ -129538,7 +129721,7 @@ function LayoutContent({
|
|
|
129538
129721
|
}, [resource, id2, runId, stepId, hookId, navigate]);
|
|
129539
129722
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
129540
129723
|
className: "min-h-screen flex flex-col",
|
|
129541
|
-
children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, {
|
|
129724
|
+
children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider$1, {
|
|
129542
129725
|
delayDuration: 0,
|
|
129543
129726
|
children: [/* @__PURE__ */ jsxRuntimeExports.jsx("div", {
|
|
129544
129727
|
className: "sticky top-0 z-50 bg-background border-b px-6 py-4",
|
|
@@ -135351,6 +135534,7 @@ const LIVE_POLL_LIMIT = 100;
|
|
|
135351
135534
|
const INITIAL_PAGE_SIZE$1 = 500;
|
|
135352
135535
|
const LOAD_MORE_PAGE_SIZE$1 = 100;
|
|
135353
135536
|
const LIVE_UPDATE_INTERVAL_MS = 5e3;
|
|
135537
|
+
const AUTO_LOAD_MAX_EVENTS = 500;
|
|
135354
135538
|
function useWorkflowTraceViewerData(env2, runId, options = {}) {
|
|
135355
135539
|
const { live = false } = options;
|
|
135356
135540
|
const [run, setRun] = reactExports.useState(null);
|
|
@@ -135459,6 +135643,12 @@ function useWorkflowTraceViewerData(env2, runId, options = {}) {
|
|
|
135459
135643
|
eventsHasMore,
|
|
135460
135644
|
eventsCursor
|
|
135461
135645
|
]);
|
|
135646
|
+
reactExports.useEffect(() => {
|
|
135647
|
+
if (events2.length >= AUTO_LOAD_MAX_EVENTS) {
|
|
135648
|
+
return;
|
|
135649
|
+
}
|
|
135650
|
+
loadMoreTraceData();
|
|
135651
|
+
}, [events2.length, loadMoreTraceData]);
|
|
135462
135652
|
const pollRun = reactExports.useCallback(async () => {
|
|
135463
135653
|
if (run == null ? void 0 : run.completedAt) {
|
|
135464
135654
|
return false;
|
|
@@ -136416,7 +136606,7 @@ var SelectIcon = reactExports.forwardRef(
|
|
|
136416
136606
|
SelectIcon.displayName = ICON_NAME;
|
|
136417
136607
|
var PORTAL_NAME$4 = "SelectPortal";
|
|
136418
136608
|
var SelectPortal = (props) => {
|
|
136419
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$
|
|
136609
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, ...props });
|
|
136420
136610
|
};
|
|
136421
136611
|
SelectPortal.displayName = PORTAL_NAME$4;
|
|
136422
136612
|
var CONTENT_NAME$4 = "SelectContent";
|
|
@@ -148959,7 +149149,7 @@ var [PortalProvider$1, usePortalContext$1] = createDialogContext$1(PORTAL_NAME$3
|
|
|
148959
149149
|
var DialogPortal$1 = (props) => {
|
|
148960
149150
|
const { __scopeDialog, forceMount, children: children2, container } = props;
|
|
148961
149151
|
const context = useDialogContext$1(PORTAL_NAME$3, __scopeDialog);
|
|
148962
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$
|
|
149152
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: child }) })) });
|
|
148963
149153
|
};
|
|
148964
149154
|
DialogPortal$1.displayName = PORTAL_NAME$3;
|
|
148965
149155
|
var OVERLAY_NAME$2 = "DialogOverlay";
|
|
@@ -151326,7 +151516,10 @@ function RunDetailView({
|
|
|
151326
151516
|
loading,
|
|
151327
151517
|
error: error2,
|
|
151328
151518
|
update,
|
|
151329
|
-
hasEncryptedData
|
|
151519
|
+
hasEncryptedData,
|
|
151520
|
+
loadMoreTraceData,
|
|
151521
|
+
hasMoreTraceData,
|
|
151522
|
+
isLoadingMoreTraceData
|
|
151330
151523
|
} = useWorkflowTraceViewerData(env2, runId, { live: true });
|
|
151331
151524
|
const run = runData ?? {};
|
|
151332
151525
|
const [encryptionKey, setEncryptionKey] = reactExports.useState(null);
|
|
@@ -151621,7 +151814,11 @@ function RunDetailView({
|
|
|
151621
151814
|
{
|
|
151622
151815
|
run,
|
|
151623
151816
|
events: allEvents ?? [],
|
|
151624
|
-
|
|
151817
|
+
loading,
|
|
151818
|
+
sidebarData,
|
|
151819
|
+
onLoadMore: loadMoreTraceData,
|
|
151820
|
+
hasMore: hasMoreTraceData,
|
|
151821
|
+
isLoadingMore: isLoadingMoreTraceData
|
|
151625
151822
|
}
|
|
151626
151823
|
) }) }) }),
|
|
151627
151824
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "events", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary$1, { title: "Failed to load events list", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -151935,7 +152132,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
151935
152132
|
__proto__: null,
|
|
151936
152133
|
loader
|
|
151937
152134
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
151938
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-
|
|
152135
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-DOJDY_4b.js", "imports": ["/assets/index-BXZSIDEp.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-CtIBMIdD.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/mermaid-3ZIDBTTL-Cg06pRM9.js"], "css": ["/assets/root-D_G0HW97.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-D68s49Hb.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-D4OsX_TE.js", "/assets/mermaid-3ZIDBTTL-Cg06pRM9.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-B1sCKjMc.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-D4OsX_TE.js", "/assets/mermaid-3ZIDBTTL-Cg06pRM9.js", "/assets/encryption-g14N5vQl.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-f3e412ee.js", "version": "f3e412ee", "sri": void 0 };
|
|
151939
152136
|
const assetsBuildDirectory = "build/client";
|
|
151940
152137
|
const basename = "/";
|
|
151941
152138
|
const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
|