@workflow/web 5.0.0-beta.5 → 5.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. package/build/client/assets/{encryption-CEh0YXii.js → encryption-DU49MAQV.js} +1 -1
  2. package/build/client/assets/{highlighted-body-B3W2YXNL-L1CrwoL_.js → highlighted-body-B3W2YXNL-BZLzBNxn.js} +1 -1
  3. package/build/client/assets/{home-B6UmDDP6.js → home-DmK2qlF4.js} +3 -3
  4. package/build/client/assets/{index-B4xuge0I.js → index-Byi8AWfe.js} +31 -0
  5. package/build/client/assets/{manifest-e4c1c787.js → manifest-f8f46e3c.js} +1 -1
  6. package/build/client/assets/{mermaid-3ZIDBTTL-BQLU7GUr.js → mermaid-3ZIDBTTL-D3hhpLut.js} +8 -5
  7. package/build/client/assets/{root-C0Tu5TVN.css → root-5XHFuftH.css} +1 -1
  8. package/build/client/assets/{root-Yk3JVwUh.js → root-DCSDR-Tx.js} +1 -1
  9. package/build/client/assets/{run-detail-DMUaWXhb.js → run-detail-qu2t8u4x.js} +5 -5
  10. package/build/client/assets/{server-build-DqaxIrF0.css → server-build-olrGumlh.css} +1 -1
  11. package/build/client/assets/{workflow-graph-viewer-yqeN-U_2.js → workflow-graph-viewer-Bl8eU-PY.js} +2 -2
  12. package/build/server/assets/{app-L1V62FgT.js → app-C_Lhht8k.js} +1 -1
  13. package/build/server/assets/{highlighted-body-B3W2YXNL-CZjJIpdD.js → highlighted-body-B3W2YXNL-DOOlKIMb.js} +2 -2
  14. package/build/server/assets/{index-BwtNigf1.js → index-CRYPN_tt.js} +3 -3
  15. package/build/server/assets/{mermaid-3ZIDBTTL-Cc8IPTBj.js → mermaid-3ZIDBTTL-CglyhPap.js} +2 -2
  16. package/build/server/assets/{server-build-DtcOUEHS.js → server-build-CeQwCbX_.js} +139 -20
  17. package/build/server/assets/{token-DHnArVm7.js → token-CZpVopko.js} +2 -2
  18. package/build/server/assets/{token-util-B3uKeZ0s.js → token-util-DUvMx9Gj.js} +2 -2
  19. package/build/server/index.js +1 -1
  20. package/package.json +6 -6
@@ -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-L1V62FgT.js";
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-C_Lhht8k.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";
@@ -48697,7 +48697,10 @@ const HookConflictEventSchema = BaseEventSchema.extend({
48697
48697
  eventType: literal("hook_conflict"),
48698
48698
  correlationId: string$3(),
48699
48699
  eventData: object$1({
48700
- token: string$3()
48700
+ token: string$3(),
48701
+ // TODO: Make this required once all persisted hook_conflict events and
48702
+ // remote World implementations always include the active hook owner's run ID.
48703
+ conflictingRunId: string$3().optional()
48701
48704
  })
48702
48705
  });
48703
48706
  const WaitCreatedEventSchema = BaseEventSchema.extend({
@@ -80048,7 +80051,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
80048
80051
  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 });
80049
80052
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
80050
80053
  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 }) });
80051
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CZjJIpdD.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
80054
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DOOlKIMb.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
80052
80055
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
80053
80056
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
80054
80057
  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 }) })] }) });
@@ -80370,7 +80373,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
80370
80373
  }, []), 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] });
80371
80374
  };
80372
80375
  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 }) })] });
80373
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Cc8IPTBj.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
80376
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CglyhPap.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
80374
80377
  function ke(e, t) {
80375
80378
  if (!(e != null && e.position || t != null && t.position)) return true;
80376
80379
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -84166,7 +84169,7 @@ function NewTraceViewerContent({ trace: trace2 }) {
84166
84169
  }
84167
84170
  return data.stepId ?? data.runId ?? data.hookId ?? selectedSpan.spanId;
84168
84171
  }, [selectedSpan == null ? void 0 : selectedSpan.data, selectedSpan == null ? void 0 : selectedSpan.resource, selectedSpan == null ? void 0 : selectedSpan.spanId]);
84169
- 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 px-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), 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", onClick: () => setSearchQuery(""), className: "shrink-0 p-0.5 rounded-sm text-gray-800 hover:text-gray-1000 hover:bg-gray-200 transition-colors", children: jsxRuntimeExports.jsx(X$3, { className: "w-3 h-3" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx(EventList, { spans: filteredSpans, activeSpanId, onSelectSpan: handleSelectSpan }) }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: filteredSpans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-lg bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", 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.jsx("div", { className: "flex-shrink-0 px-4 pt-4 pb-3", children: jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [jsxRuntimeExports.jsx("span", { className: "text-[15px] font-semibold text-gray-1000 truncate block", children: selectedSpanName }), selectedResourceId && jsxRuntimeExports.jsxs("div", { className: "mt-1 flex items-center gap-2", children: [selectedResource && jsxRuntimeExports.jsx("span", { className: `inline-flex items-center rounded-md px-1.5 py-0.5 text-[11px] font-medium leading-none shrink-0 ${selectedResource === "step" ? "bg-green-200 text-green-900" : selectedResource === "run" ? "bg-blue-200 text-blue-900" : selectedResource === "hook" ? "bg-yellow-200 text-yellow-900" : "bg-gray-200 text-gray-900"}`, children: selectedResource.charAt(0).toUpperCase() + selectedResource.slice(1) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-[13px] font-mono text-gray-700 min-w-0", title: selectedResourceId, children: [jsxRuntimeExports.jsx("span", { className: "truncate", children: selectedResourceId }), jsxRuntimeExports.jsx(CopyButton, { copyText: selectedResourceId, ariaLabel: "Copy ID", className: "shrink-0" })] })] })] }), jsxRuntimeExports.jsx("button", { type: "button", className: "p-1 rounded-md text-gray-900 hover:text-gray-1000 hover:bg-gray-alpha-200 transition-colors shrink-0", 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] });
84172
+ 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 px-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), 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", onClick: () => setSearchQuery(""), className: "shrink-0 p-0.5 rounded-sm text-gray-800 hover:text-gray-1000 hover:bg-gray-200 transition-colors", children: jsxRuntimeExports.jsx(X$3, { className: "w-3 h-3" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx(EventList, { spans: filteredSpans, activeSpanId, onSelectSpan: handleSelectSpan }) }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: filteredSpans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-lg bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[time:120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[time:120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[time:120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", 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.jsx("div", { className: "flex-shrink-0 px-4 pt-4 pb-3", children: jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [jsxRuntimeExports.jsx("span", { className: "text-[15px] font-semibold text-gray-1000 truncate block", children: selectedSpanName }), selectedResourceId && jsxRuntimeExports.jsxs("div", { className: "mt-1 flex items-center gap-2", children: [selectedResource && jsxRuntimeExports.jsx("span", { className: `inline-flex items-center rounded-md px-1.5 py-0.5 text-[11px] font-medium leading-none shrink-0 ${selectedResource === "step" ? "bg-green-200 text-green-900" : selectedResource === "run" ? "bg-blue-200 text-blue-900" : selectedResource === "hook" ? "bg-yellow-200 text-yellow-900" : "bg-gray-200 text-gray-900"}`, children: selectedResource.charAt(0).toUpperCase() + selectedResource.slice(1) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-[13px] font-mono text-gray-700 min-w-0", title: selectedResourceId, children: [jsxRuntimeExports.jsx("span", { className: "truncate", children: selectedResourceId }), jsxRuntimeExports.jsx(CopyButton, { copyText: selectedResourceId, ariaLabel: "Copy ID", className: "shrink-0" })] })] })] }), jsxRuntimeExports.jsx("button", { type: "button", className: "p-1 rounded-md text-gray-900 hover:text-gray-1000 hover:bg-gray-alpha-200 transition-colors shrink-0", 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] });
84170
84173
  }
84171
84174
  const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
84172
84175
  const traceWithMeta = reactExports.useMemo(() => {
@@ -87383,7 +87386,8 @@ function buildFramedDetails(hint2, slug) {
87383
87386
  }
87384
87387
  const ERROR_SLUGS = {
87385
87388
  WEBHOOK_INVALID_RESPOND_WITH_VALUE: "webhook-invalid-respond-with-value",
87386
- WEBHOOK_RESPONSE_NOT_SENT: "webhook-response-not-sent"
87389
+ WEBHOOK_RESPONSE_NOT_SENT: "webhook-response-not-sent",
87390
+ HOOK_CONFLICT: "hook-conflict"
87387
87391
  };
87388
87392
  class WorkflowError extends Error {
87389
87393
  constructor(message2, options) {
@@ -87500,6 +87504,25 @@ class WorkflowRunNotFoundError extends WorkflowError {
87500
87504
  return isError(value) && value.name === "WorkflowRunNotFoundError";
87501
87505
  }
87502
87506
  }
87507
+ class HookConflictError extends WorkflowError {
87508
+ constructor(token, conflictingRunId) {
87509
+ super(`Hook token "${token}" is already in use by another workflow${conflictingRunId ? ` (run "${conflictingRunId}")` : ""}`, {
87510
+ slug: ERROR_SLUGS.HOOK_CONFLICT
87511
+ });
87512
+ __publicField(this, "token");
87513
+ // TODO: Make this required once all persisted hook_conflict events and World
87514
+ // implementations always include the active hook owner's run ID.
87515
+ __publicField(this, "conflictingRunId");
87516
+ this.name = "HookConflictError";
87517
+ this.token = token;
87518
+ if (conflictingRunId !== void 0) {
87519
+ this.conflictingRunId = conflictingRunId;
87520
+ }
87521
+ }
87522
+ static is(value) {
87523
+ return isError(value) && value.name === "HookConflictError";
87524
+ }
87525
+ }
87503
87526
  class HookNotFoundError extends WorkflowError {
87504
87527
  constructor(token) {
87505
87528
  super("Hook not found", {});
@@ -87608,6 +87631,7 @@ class RetryableError extends Error {
87608
87631
  const VERCEL_403_ERROR_MESSAGE = "Your current vercel account does not have access to this resource. Use `vercel login` or `vercel switch` to ensure you are linked to the right account.";
87609
87632
  const FATAL_ERROR_KEY = Symbol.for("@workflow/errors//FatalError");
87610
87633
  const RETRYABLE_ERROR_KEY = Symbol.for("@workflow/errors//RetryableError");
87634
+ const HOOK_CONFLICT_ERROR_KEY = Symbol.for("@workflow/errors//HookConflictError");
87611
87635
  if (typeof globalThis !== "undefined") {
87612
87636
  if (!Object.hasOwn(globalThis, FATAL_ERROR_KEY)) {
87613
87637
  Object.defineProperty(globalThis, FATAL_ERROR_KEY, {
@@ -87625,6 +87649,14 @@ if (typeof globalThis !== "undefined") {
87625
87649
  configurable: false
87626
87650
  });
87627
87651
  }
87652
+ if (!Object.hasOwn(globalThis, HOOK_CONFLICT_ERROR_KEY)) {
87653
+ Object.defineProperty(globalThis, HOOK_CONFLICT_ERROR_KEY, {
87654
+ value: HookConflictError,
87655
+ writable: false,
87656
+ enumerable: false,
87657
+ configurable: false
87658
+ });
87659
+ }
87628
87660
  }
87629
87661
  const colorEnabled = (() => {
87630
87662
  var _a3;
@@ -88095,7 +88127,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
88095
88127
  encrypt: encrypt$1,
88096
88128
  importKey
88097
88129
  }, Symbol.toStringTag, { value: "Module" }));
88098
- const version$1 = "5.0.0-beta.5";
88130
+ const version$1 = "5.0.0-beta.6";
88099
88131
  const WorldCacheKey = Symbol.for("@workflow/world//cache");
88100
88132
  const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
88101
88133
  const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
@@ -89691,6 +89723,20 @@ function getCommonReducers(global2 = globalThis) {
89691
89723
  // See `makeErrorSubclassReducer` for implementation details.
89692
89724
  EvalError: makeErrorSubclassReducer("EvalError"),
89693
89725
  FatalError: makeErrorSubclassReducer("FatalError"),
89726
+ HookConflictError: (value) => {
89727
+ const base = reduceNamedErrorSubclassBase("HookConflictError", value);
89728
+ if (!base)
89729
+ return false;
89730
+ const error2 = value;
89731
+ const reduced = {
89732
+ ...base,
89733
+ token: error2.token
89734
+ };
89735
+ if (error2.conflictingRunId !== void 0) {
89736
+ reduced.conflictingRunId = error2.conflictingRunId;
89737
+ }
89738
+ return reduced;
89739
+ },
89694
89740
  RangeError: makeErrorSubclassReducer("RangeError"),
89695
89741
  ReferenceError: makeErrorSubclassReducer("ReferenceError"),
89696
89742
  // RetryableError carries an extra `retryAfter` Date that we serialize as
@@ -89821,6 +89867,16 @@ function getCommonRevivers$1(global2 = globalThis) {
89821
89867
  error2.cause = value.cause;
89822
89868
  return error2;
89823
89869
  },
89870
+ HookConflictError: (value) => {
89871
+ const Ctor = global2[Symbol.for("@workflow/errors//HookConflictError")] ?? HookConflictError;
89872
+ const error2 = new Ctor(value.token, value.conflictingRunId);
89873
+ if (value.stack !== void 0)
89874
+ error2.stack = value.stack;
89875
+ if ("cause" in value) {
89876
+ error2.cause = value.cause;
89877
+ }
89878
+ return error2;
89879
+ },
89824
89880
  RangeError: makeErrorSubclassReviver(global2, "RangeError"),
89825
89881
  ReferenceError: makeErrorSubclassReviver(global2, "ReferenceError"),
89826
89882
  RetryableError: (value) => {
@@ -116276,6 +116332,20 @@ const LOCAL_QUEUE_MAX_VISIBILITY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX
116276
116332
  const MAX_SAFE_TIMEOUT_MS = 2147483647;
116277
116333
  const DEFAULT_CONCURRENCY_LIMIT = 1e3;
116278
116334
  const WORKFLOW_LOCAL_QUEUE_CONCURRENCY = parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY ?? "0", 10) || DEFAULT_CONCURRENCY_LIMIT;
116335
+ const DETACHED_ARRAYBUFFER_ERROR = "Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer";
116336
+ const PROXY_HANDLER_DOCS_URL = "https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler";
116337
+ function isDetachedArrayBufferQueueError(error2) {
116338
+ let current = error2;
116339
+ const visited = /* @__PURE__ */ new Set();
116340
+ while (current && typeof current === "object" && !visited.has(current)) {
116341
+ visited.add(current);
116342
+ if ("message" in current && typeof current.message === "string" && current.message.includes(DETACHED_ARRAYBUFFER_ERROR)) {
116343
+ return true;
116344
+ }
116345
+ current = "cause" in current ? current.cause : void 0;
116346
+ }
116347
+ return false;
116348
+ }
116279
116349
  function getQueueRoute(queueName) {
116280
116350
  if (queueName.startsWith("__wkf_step_")) {
116281
116351
  return { pathname: "step", prefix: "__wkf_step_" };
@@ -116388,7 +116458,17 @@ function createQueue$2(config2) {
116388
116458
  })().catch((err) => {
116389
116459
  const isAbortError = (err == null ? void 0 : err.name) === "AbortError" || (err == null ? void 0 : err.name) === "ResponseAborted";
116390
116460
  if (!isAbortError) {
116391
- console.error("[local world] Queue operation failed:", err);
116461
+ if (isDetachedArrayBufferQueueError(err)) {
116462
+ console.error(`[local world] Queue operation failed: detected "${DETACHED_ARRAYBUFFER_ERROR}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See ${PROXY_HANDLER_DOCS_URL}`, {
116463
+ queueName,
116464
+ messageId,
116465
+ ...runId && { runId },
116466
+ ...stepId && { stepId },
116467
+ originalError: err
116468
+ });
116469
+ } else {
116470
+ console.error("[local world] Queue operation failed:", err);
116471
+ }
116392
116472
  }
116393
116473
  }).finally(() => {
116394
116474
  for (const fn2 of cleanup) {
@@ -116617,6 +116697,19 @@ async function handleLegacyEvent(basedir, runId, data, currentRun, params) {
116617
116697
  }
116618
116698
  }
116619
116699
  const stepLocks = /* @__PURE__ */ new Map();
116700
+ const HookTokenClaimSchema = object$1({
116701
+ runId: string$3()
116702
+ });
116703
+ async function readHookTokenClaim(constraintPath) {
116704
+ try {
116705
+ return await readJSON(constraintPath, HookTokenClaimSchema);
116706
+ } catch (error2) {
116707
+ if (error2 instanceof SyntaxError || error2 instanceof ZodError) {
116708
+ return null;
116709
+ }
116710
+ throw error2;
116711
+ }
116712
+ }
116620
116713
  function withStepLock(key, fn2) {
116621
116714
  const prev = stepLocks.get(key);
116622
116715
  const taskBox = {};
@@ -117053,11 +117146,13 @@ function createEventsStorage(basedir, tag) {
117053
117146
  runId: effectiveRunId
117054
117147
  }));
117055
117148
  if (!tokenClaimed) {
117149
+ const existingClaim = await readHookTokenClaim(constraintPath);
117056
117150
  const conflictEvent = {
117057
117151
  eventType: "hook_conflict",
117058
117152
  correlationId: data.correlationId,
117059
117153
  eventData: {
117060
- token: hookData.token
117154
+ token: hookData.token,
117155
+ ...existingClaim ? { conflictingRunId: existingClaim.runId } : {}
117061
117156
  },
117062
117157
  runId: effectiveRunId,
117063
117158
  eventId,
@@ -117740,7 +117835,7 @@ function createLocalWorld(args) {
117740
117835
  const basedir = mergedConfig.dataDir;
117741
117836
  const hooksDir = path$3.join(basedir, "hooks");
117742
117837
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
117743
- const { HookSchema: HookSchema2 } = await import("./index-BwtNigf1.js");
117838
+ const { HookSchema: HookSchema2 } = await import("./index-CRYPN_tt.js");
117744
117839
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
117745
117840
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
117746
117841
  if (hook == null ? void 0 : hook.token) {
@@ -117892,8 +117987,8 @@ function requireGetVercelOidcToken() {
117892
117987
  }
117893
117988
  try {
117894
117989
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
117895
- await import("./token-util-B3uKeZ0s.js").then((n) => n.t),
117896
- await import("./token-DHnArVm7.js").then((n) => n.t)
117990
+ await import("./token-util-DUvMx9Gj.js").then((n) => n.t),
117991
+ await import("./token-CZpVopko.js").then((n) => n.t)
117897
117992
  ]);
117898
117993
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
117899
117994
  await refreshToken(options);
@@ -118935,16 +119030,22 @@ var StreamingMultipartParser = class {
118935
119030
  let index2 = 0;
118936
119031
  let chunkLength = chunk.length;
118937
119032
  if (this.buffer !== null) {
118938
- const newSize = this.buffer.length + chunkLength;
118939
- const maxAllowedSize = this.state === 2 ? this.maxHeaderSize : this.maxBoundaryBuffer;
118940
- if (newSize > maxAllowedSize) {
119033
+ const bufferLength = this.buffer.length;
119034
+ const newSize = bufferLength + chunkLength;
119035
+ if (this.state === 2) {
119036
+ if (newSize > this.maxHeaderSize) {
119037
+ throw new MultipartParseError(
119038
+ `Buffer size limit exceeded: ${newSize} bytes > ${this.maxHeaderSize} bytes. This may indicate malformed multipart data with oversized headers.`
119039
+ );
119040
+ }
119041
+ } else if (bufferLength > this.maxBoundaryBuffer) {
118941
119042
  throw new MultipartParseError(
118942
- `Buffer size limit exceeded: ${newSize} bytes > ${maxAllowedSize} bytes. This may indicate malformed multipart data with ${this.state === 2 ? "oversized headers" : "invalid boundaries"}.`
119043
+ `Boundary buffer limit exceeded: ${bufferLength} bytes > ${this.maxBoundaryBuffer} bytes. This may indicate malformed multipart data with invalid boundaries.`
118943
119044
  );
118944
119045
  }
118945
119046
  const newChunk = new Uint8Array(newSize);
118946
119047
  newChunk.set(this.buffer, 0);
118947
- newChunk.set(chunk, this.buffer.length);
119048
+ newChunk.set(chunk, bufferLength);
118948
119049
  chunk = newChunk;
118949
119050
  chunkLength = chunk.length;
118950
119051
  this.buffer = null;
@@ -122516,7 +122617,7 @@ Cause: ${cause}`
122516
122617
  }
122517
122618
  console.debug("[VQS Debug] Request:", JSON.stringify(logData, null, 2));
122518
122619
  }
122519
- init2.headers.set("User-Agent", `@vercel/queue/${"0.1.4"}`);
122620
+ init2.headers.set("User-Agent", `@vercel/queue/${"0.1.7"}`);
122520
122621
  init2.headers.set("Vqs-Client-Ts", (/* @__PURE__ */ new Date()).toISOString());
122521
122622
  const fetchInit = this.dispatcher ? { ...init2, dispatcher: this.dispatcher } : init2;
122522
122623
  const response2 = await fetch(url2, fetchInit);
@@ -123058,7 +123159,7 @@ var QueueClient = class {
123058
123159
  setApi(this, new ApiClient({ ...options, region }));
123059
123160
  }
123060
123161
  };
123061
- const version = "5.0.0-beta.4";
123162
+ const version = "5.0.0-beta.5";
123062
123163
  const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
123063
123164
  function httpLog(method, endpoint, status, ms2) {
123064
123165
  if (HTTP_DEBUG_ENABLED) {
@@ -123367,6 +123468,14 @@ const MAX_DELAY_SECONDS = Number(
123367
123468
  process.env.VERCEL_QUEUE_MAX_DELAY_SECONDS || 82800
123368
123469
  // 23 hours - leave 1h buffer before 24h retention limit
123369
123470
  );
123471
+ const HANDLER_ERROR_RETRY_AFTER_SECONDS = 1;
123472
+ const HANDLER_ERROR_MAX_RETRY_AFTER_SECONDS = 60;
123473
+ const HANDLER_ERROR_RETRY_JITTER_RATIO = 0.25;
123474
+ function getHandlerErrorRetryAfterSeconds(deliveryCount) {
123475
+ const backoffSeconds = Math.min(Math.max(HANDLER_ERROR_RETRY_AFTER_SECONDS, 2 ** (deliveryCount - 1)), HANDLER_ERROR_MAX_RETRY_AFTER_SECONDS);
123476
+ const jitterSeconds = Math.floor(Math.random() * (Math.ceil(backoffSeconds * HANDLER_ERROR_RETRY_JITTER_RATIO) + 1));
123477
+ return Math.max(HANDLER_ERROR_RETRY_AFTER_SECONDS, backoffSeconds - jitterSeconds);
123478
+ }
123370
123479
  function getHeadersFromPayload(payload) {
123371
123480
  const headers2 = {};
123372
123481
  if ("runId" in payload && typeof payload.runId === "string") {
@@ -123459,6 +123568,16 @@ function createQueue$1(config2) {
123459
123568
  const delaySeconds = result.timeoutSeconds > 0 ? Math.min(result.timeoutSeconds, MAX_DELAY_SECONDS) : void 0;
123460
123569
  await queue(queueName, payload, { deploymentId, delaySeconds });
123461
123570
  }
123571
+ }, {
123572
+ // Without an explicit retry directive, @vercel/queue leaves failed
123573
+ // handler messages invisible until the default 300s visibility timeout
123574
+ // expires. Start retrying quickly, then back off by delivery count
123575
+ // with jitter so an outage or poison message cannot hot-loop or
123576
+ // redrive in lockstep. Workflow handlers are event-sourced and must
123577
+ // remain idempotent because queue retries can happen close together.
123578
+ retry: (_error, { deliveryCount }) => ({
123579
+ afterSeconds: getHandlerErrorRetryAfterSeconds(deliveryCount)
123580
+ })
123462
123581
  });
123463
123582
  return async (req) => {
123464
123583
  const rawId = req.headers.get("x-vercel-id");
@@ -150877,7 +150996,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
150877
150996
  __proto__: null,
150878
150997
  loader
150879
150998
  }, Symbol.toStringTag, { value: "Module" }));
150880
- const serverManifest = { "entry": { "module": "/assets/entry.client-DtOpLtMQ.js", "imports": ["/assets/index-BsV8i_Jn.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-Yk3JVwUh.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-BQLU7GUr.js"], "css": ["/assets/root-C0Tu5TVN.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-B6UmDDP6.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-yqeN-U_2.js", "/assets/mermaid-3ZIDBTTL-BQLU7GUr.js", "/assets/index-B4xuge0I.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-DMUaWXhb.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-yqeN-U_2.js", "/assets/mermaid-3ZIDBTTL-BQLU7GUr.js", "/assets/encryption-CEh0YXii.js", "/assets/index-B4xuge0I.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-e4c1c787.js", "version": "e4c1c787", "sri": void 0 };
150999
+ const serverManifest = { "entry": { "module": "/assets/entry.client-DtOpLtMQ.js", "imports": ["/assets/index-BsV8i_Jn.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-DCSDR-Tx.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-D3hhpLut.js"], "css": ["/assets/root-5XHFuftH.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-DmK2qlF4.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-Bl8eU-PY.js", "/assets/mermaid-3ZIDBTTL-D3hhpLut.js", "/assets/index-Byi8AWfe.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-qu2t8u4x.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-Bl8eU-PY.js", "/assets/mermaid-3ZIDBTTL-D3hhpLut.js", "/assets/encryption-DU49MAQV.js", "/assets/index-Byi8AWfe.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-f8f46e3c.js", "version": "f8f46e3c", "sri": void 0 };
150881
151000
  const assetsBuildDirectory = "build/client";
150882
151001
  const basename = "/";
150883
151002
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
@@ -1,5 +1,5 @@
1
- import { g as getDefaultExportFromCjs } from "./app-L1V62FgT.js";
2
- import { C as requireTokenError, A as requireTokenUtil } from "./server-build-DtcOUEHS.js";
1
+ import { g as getDefaultExportFromCjs } from "./app-C_Lhht8k.js";
2
+ import { C as requireTokenError, A as requireTokenUtil } from "./server-build-CeQwCbX_.js";
3
3
  function _mergeNamespaces(n, m) {
4
4
  for (var i = 0; i < m.length; i++) {
5
5
  const e = m[i];
@@ -1,5 +1,5 @@
1
- import { g as getDefaultExportFromCjs } from "./app-L1V62FgT.js";
2
- import { A as requireTokenUtil } from "./server-build-DtcOUEHS.js";
1
+ import { g as getDefaultExportFromCjs } from "./app-C_Lhht8k.js";
2
+ import { A as requireTokenUtil } from "./server-build-CeQwCbX_.js";
3
3
  function _mergeNamespaces(n, m) {
4
4
  for (var i = 0; i < m.length; i++) {
5
5
  const e = m[i];
@@ -1,4 +1,4 @@
1
- import { n } from "./assets/app-L1V62FgT.js";
1
+ import { n } from "./assets/app-C_Lhht8k.js";
2
2
  import "express";
3
3
  import "stream";
4
4
  export {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/web",
3
3
  "description": "Workflow Observability UI",
4
- "version": "5.0.0-beta.5",
4
+ "version": "5.0.0-beta.6",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "files": [
@@ -72,12 +72,12 @@
72
72
  "vite": "^6",
73
73
  "vitest": "^3",
74
74
  "jsdom": "^26",
75
- "@workflow/core": "5.0.0-beta.5",
76
- "@workflow/errors": "5.0.0-beta.2",
75
+ "@workflow/core": "5.0.0-beta.6",
76
+ "@workflow/errors": "5.0.0-beta.3",
77
77
  "@workflow/utils": "5.0.0-beta.2",
78
- "@workflow/web-shared": "5.0.0-beta.5",
79
- "@workflow/world": "5.0.0-beta.2",
80
- "@workflow/world-vercel": "5.0.0-beta.4"
78
+ "@workflow/web-shared": "5.0.0-beta.6",
79
+ "@workflow/world": "5.0.0-beta.3",
80
+ "@workflow/world-vercel": "5.0.0-beta.5"
81
81
  },
82
82
  "scripts": {
83
83
  "dev": "react-router dev",