@workflow/web 4.1.21 → 4.1.23

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.
@@ -1 +1 @@
1
- window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C_C46bD6.js","imports":["/assets/index-BsV8i_Jn.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-BxnaECGo.js","imports":["/assets/index-BsV8i_Jn.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"],"css":["/assets/root-BOS11TzD.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/home":{"id":"routes/home","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/home-Blj6TeEE.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/run-detail":{"id":"routes/run-detail","parentId":"root","path":"run/:runId","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/run-detail-1KdCfmI4.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/encryption-BRhjWsZh.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/api.rpc":{"id":"routes/api.rpc","parentId":"root","path":"api/rpc","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.rpc-l0sNRNKZ.js","imports":[],"css":[]},"routes/api.stream.$streamId":{"id":"routes/api.stream.$streamId","parentId":"root","path":"api/stream/:streamId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.stream._streamId-l0sNRNKZ.js","imports":[],"css":[]}},"url":"/assets/manifest-d91343fe.js","version":"d91343fe"};
1
+ window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C_C46bD6.js","imports":["/assets/index-BsV8i_Jn.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-BxnaECGo.js","imports":["/assets/index-BsV8i_Jn.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"],"css":["/assets/root-BOS11TzD.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/home":{"id":"routes/home","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/home-Blj6TeEE.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/run-detail":{"id":"routes/run-detail","parentId":"root","path":"run/:runId","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/run-detail-DivTczoC.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/encryption-BRhjWsZh.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/api.rpc":{"id":"routes/api.rpc","parentId":"root","path":"api/rpc","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.rpc-l0sNRNKZ.js","imports":[],"css":[]},"routes/api.stream.$streamId":{"id":"routes/api.stream.$streamId","parentId":"root","path":"api/stream/:streamId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.stream._streamId-l0sNRNKZ.js","imports":[],"css":[]}},"url":"/assets/manifest-7bf3847b.js","version":"7bf3847b"};
@@ -641,7 +641,6 @@ function EventRow({ event, index, isFirst, isLast, isExpanded, onToggleExpand, a
641
641
  }, []);
642
642
  reactExports.useEffect(() => {
643
643
  if (encryptionKey && hasAttemptedLoad && onLoadEventData) {
644
- setLoadedEventData(null);
645
644
  setHasAttemptedLoad(false);
646
645
  onLoadEventData(event).then((data) => {
647
646
  if (data !== null && data !== void 0) {
@@ -9180,7 +9180,7 @@ const app = express();
9180
9180
  app.all(
9181
9181
  "/{*splat}",
9182
9182
  createRequestHandler({
9183
- build: () => import("./server-build-BFktO0pM.js").then((n) => n.a6)
9183
+ build: () => import("./server-build-C7DcIi-X.js").then((n) => n.a6)
9184
9184
  })
9185
9185
  );
9186
9186
  app.use(
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { a0 as R, a1 as Ks, a2 as jsxRuntimeExports, a3 as Qe } from "./server-build-BFktO0pM.js";
6
- import { r as reactExports } from "./app-eQjjf4RE.js";
5
+ import { a0 as R, a1 as Ks, a2 as jsxRuntimeExports, a3 as Qe } from "./server-build-C7DcIi-X.js";
6
+ import { r as reactExports } from "./app-Cqq1tzT2.js";
7
7
  import "node:stream";
8
8
  import "util";
9
9
  import "crypto";
@@ -2,9 +2,9 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { H as HookSchema } from "./server-build-BFktO0pM.js";
6
- import { B, D, a, E, b, c, d, e, L, M, f, g, P, Q, h, R, S, i, j, k, l, m, n, o, p, T, q, r, s, t, u, V, W, v, w, x, y, z, A, C, F, G, I, J, K, O, U, X, Y, Z, _, $ } from "./server-build-BFktO0pM.js";
7
- import "./app-eQjjf4RE.js";
5
+ import { H as HookSchema } from "./server-build-C7DcIi-X.js";
6
+ import { B, D, a, E, b, c, d, e, L, M, f, g, P, Q, h, R, S, i, j, k, l, m, n, o, p, T, q, r, s, t, u, V, W, v, w, x, y, z, A, C, F, G, I, J, K, O, U, X, Y, Z, _, $ } from "./server-build-C7DcIi-X.js";
7
+ import "./app-Cqq1tzT2.js";
8
8
  import "stream";
9
9
  import "express";
10
10
  import "node:stream";
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { N as Nt } from "./server-build-BFktO0pM.js";
6
- import "./app-eQjjf4RE.js";
5
+ import { N as Nt } from "./server-build-C7DcIi-X.js";
6
+ import "./app-Cqq1tzT2.js";
7
7
  import "stream";
8
8
  import "express";
9
9
  import "node:stream";
@@ -18,7 +18,7 @@ import { createRequire as __wkfCreateRequire } from "node:module";
18
18
  if (typeof globalThis.require === "undefined") {
19
19
  globalThis.require = __wkfCreateRequire(import.meta.url);
20
20
  }
21
- 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-eQjjf4RE.js";
21
+ 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-Cqq1tzT2.js";
22
22
  import require$$0$5, { PassThrough, Transform as Transform$1 } from "node:stream";
23
23
  import require$$0 from "util";
24
24
  import require$$1 from "crypto";
@@ -53040,7 +53040,6 @@ function EventRow({ event, index: index2, isFirst, isLast, isExpanded, onToggleE
53040
53040
  }, []);
53041
53041
  reactExports.useEffect(() => {
53042
53042
  if (encryptionKey && hasAttemptedLoad && onLoadEventData) {
53043
- setLoadedEventData(null);
53044
53043
  setHasAttemptedLoad(false);
53045
53044
  onLoadEventData(event).then((data) => {
53046
53045
  if (data !== null && data !== void 0) {
@@ -81858,7 +81857,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
81858
81857
  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 });
81859
81858
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
81860
81859
  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 }) });
81861
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DkTToHdM.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81860
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DCJ0KRmM.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81862
81861
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
81863
81862
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
81864
81863
  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 }) })] }) });
@@ -82180,7 +82179,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
82180
82179
  }, []), 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] });
82181
82180
  };
82182
82181
  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 }) })] });
82183
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-DvwsvCUy.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82182
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Dagv8YB7.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82184
82183
  function ke(e, t) {
82185
82184
  if (!(e != null && e.position || t != null && t.position)) return true;
82186
82185
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -92072,7 +92071,7 @@ createLogger("build", {
92072
92071
  debugNamespace: "workflow:build"
92073
92072
  });
92074
92073
  const MAX_QUEUE_DELIVERIES = 48;
92075
- const version$1 = "4.8.5";
92074
+ const version$1 = "4.8.7";
92076
92075
  const execFileAsync = promisify(execFile);
92077
92076
  function parsePort$1(value, radix = 10) {
92078
92077
  const port = parseInt(value, radix);
@@ -118907,6 +118906,8 @@ function createQueue$2(config2) {
118907
118906
  const transport = new TypedJsonTransport();
118908
118907
  const generateId2 = monotonicFactory();
118909
118908
  const semaphore = new libExports.Sema(WORKFLOW_LOCAL_QUEUE_CONCURRENCY);
118909
+ const closeController = new AbortController();
118910
+ const closeSignal = closeController.signal;
118910
118911
  const inflightMessages = /* @__PURE__ */ new Map();
118911
118912
  const directHandlers = /* @__PURE__ */ new Map();
118912
118913
  const queue = async (queueName, message2, opts) => {
@@ -118965,6 +118966,7 @@ function createQueue$2(config2) {
118965
118966
  headers: new Headers(headers2),
118966
118967
  body: body2,
118967
118968
  agents: nodeHttpAgents,
118969
+ signal: closeSignal,
118968
118970
  headersTimeoutMs: agentOptions.headersTimeout,
118969
118971
  bodyTimeoutMs: agentOptions.bodyTimeout
118970
118972
  }) : (
@@ -118974,7 +118976,8 @@ function createQueue$2(config2) {
118974
118976
  duplex: "half",
118975
118977
  dispatcher: httpAgent,
118976
118978
  headers: headers2,
118977
- body: body2
118979
+ body: body2,
118980
+ signal: closeSignal
118978
118981
  })
118979
118982
  );
118980
118983
  }
@@ -119080,6 +119083,9 @@ function createQueue$2(config2) {
119080
119083
  directHandlers.set(prefix, handler);
119081
119084
  },
119082
119085
  async close() {
119086
+ if (closeSignal.aborted)
119087
+ return;
119088
+ closeController.abort();
119083
119089
  if (nodeHttpAgents)
119084
119090
  destroyNodeHttpAgents(nodeHttpAgents);
119085
119091
  await (httpAgent == null ? void 0 : httpAgent.close());
@@ -120727,7 +120733,7 @@ function createLocalWorld(args) {
120727
120733
  const basedir = mergedConfig.dataDir;
120728
120734
  const hooksDir = path$3.join(basedir, "hooks");
120729
120735
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
120730
- const { HookSchema: HookSchema2 } = await import("./index-Ctx7nEpR.js");
120736
+ const { HookSchema: HookSchema2 } = await import("./index-B4hi3c32.js");
120731
120737
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
120732
120738
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
120733
120739
  if (hook == null ? void 0 : hook.token) {
@@ -121154,8 +121160,8 @@ function requireGetVercelOidcToken() {
121154
121160
  }
121155
121161
  try {
121156
121162
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
121157
- await import("./token-util-u3-O6-cJ.js").then((n) => n.t),
121158
- await import("./token-B9AfalZB.js").then((n) => n.t)
121163
+ await import("./token-util-Br9V80P7.js").then((n) => n.t),
121164
+ await import("./token-CERc2_Jt.js").then((n) => n.t)
121159
121165
  ]);
121160
121166
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
121161
121167
  await refreshToken(options);
@@ -121790,6 +121796,35 @@ const WorkflowRunId = SemanticConvention("workflow.run.id");
121790
121796
  const StepId = SemanticConvention("step.id");
121791
121797
  const WorkflowHttpTransport = SemanticConvention("workflow.http.transport");
121792
121798
  const REQUEST_TIMEOUT_MS = 6e4;
121799
+ const TRANSIENT_TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
121800
+ "UND_ERR_INFO",
121801
+ "UND_ERR_REQ_RETRY",
121802
+ "UND_ERR_SOCKET",
121803
+ "UND_ERR_CONNECT",
121804
+ "UND_ERR_CONNECT_TIMEOUT",
121805
+ "UND_ERR_HEADERS_TIMEOUT",
121806
+ "UND_ERR_BODY_TIMEOUT",
121807
+ "UND_ERR_CLOSED",
121808
+ "ECONNRESET",
121809
+ "ECONNREFUSED",
121810
+ "ENOTFOUND",
121811
+ "EAI_AGAIN",
121812
+ "EPIPE",
121813
+ "ETIMEDOUT"
121814
+ ]);
121815
+ function getTransientTransportCode(error2) {
121816
+ let current = error2;
121817
+ for (let depth = 0; current != null && depth < 8; depth++) {
121818
+ if (typeof current === "object" && "code" in current) {
121819
+ const code2 = current.code;
121820
+ if (typeof code2 === "string" && TRANSIENT_TRANSPORT_ERROR_CODES.has(code2)) {
121821
+ return code2;
121822
+ }
121823
+ }
121824
+ current = current == null ? void 0 : current.cause;
121825
+ }
121826
+ return void 0;
121827
+ }
121793
121828
  const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
121794
121829
  const DIAGNOSTIC_HEADERS = [
121795
121830
  "x-vercel-id",
@@ -121880,10 +121915,10 @@ function httpClientSpanAttributes(args) {
121880
121915
  };
121881
121916
  }
121882
121917
  async function instrumentedFetch(opts) {
121883
- const { method, url: url2, headers: headers2, body: body2, dispatcher: dispatcher2, peerService = "workflow-server", timeoutMs = REQUEST_TIMEOUT_MS, signal: callerSignal, injectTraceContext = true, cacheBust = true, logLabel, buildError, onTransportOutcome } = opts;
121918
+ const { method, url: url2, headers: headers2, body: body2, dispatcher: dispatcher2, peerService = "workflow-server", timeoutMs = REQUEST_TIMEOUT_MS, signal: callerSignal, injectTraceContext = true, cacheBust = true, logLabel, buildError, onTransportOutcome, deferTransportSuccessUntilBody = false } = opts;
121884
121919
  const label = logLabel ?? url2;
121885
121920
  return trace(`http ${method}`, { kind: await getSpanKind("CLIENT") }, async (span) => {
121886
- var _a3, _b2, _c;
121921
+ var _a3, _b2, _c, _d, _e2;
121887
121922
  span == null ? void 0 : span.setAttributes(httpClientSpanAttributes({ method, url: url2, peerService }));
121888
121923
  if (injectTraceContext)
121889
121924
  await injectTraceContextIntoHeaders(headers2);
@@ -121921,31 +121956,61 @@ async function instrumentedFetch(opts) {
121921
121956
  const elapsed = Date.now() - start2;
121922
121957
  onTransportOutcome == null ? void 0 : onTransportOutcome(error2);
121923
121958
  if (error2 instanceof Error && (error2.name === "TimeoutError" || error2.name === "AbortError")) {
121924
- const timeoutError = new WorkflowWorldError(`${method} ${label} timed out after ${elapsed}ms`, { url: url2, cause: error2 });
121959
+ const timeoutError = new WorkflowWorldError(`${method} ${label} timed out after ${elapsed}ms`, { url: url2, code: "TIMEOUT", cause: error2 });
121925
121960
  span == null ? void 0 : span.setAttributes({ ...ErrorType("TIMEOUT") });
121926
121961
  (_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
121927
121962
  throw timeoutError;
121928
121963
  }
121964
+ const transportCode = getTransientTransportCode(error2);
121965
+ if (transportCode) {
121966
+ const transportError2 = new WorkflowWorldError(`${method} ${label} transport failure after ${elapsed}ms (${transportCode})`, { url: url2, code: "TRANSPORT", cause: error2 });
121967
+ span == null ? void 0 : span.setAttributes({ ...ErrorType("TRANSPORT") });
121968
+ (_b2 = span == null ? void 0 : span.recordException) == null ? void 0 : _b2.call(span, transportError2);
121969
+ throw transportError2;
121970
+ }
121929
121971
  throw error2;
121930
121972
  }
121931
121973
  const ms2 = Date.now() - start2;
121932
- onTransportOutcome == null ? void 0 : onTransportOutcome();
121974
+ if (!deferTransportSuccessUntilBody)
121975
+ onTransportOutcome == null ? void 0 : onTransportOutcome();
121933
121976
  httpLog(method, label, response2, ms2);
121934
121977
  span == null ? void 0 : span.setAttributes({ ...HttpResponseStatusCode(response2.status) });
121935
121978
  if (!response2.ok) {
121936
121979
  span == null ? void 0 : span.setAttributes({ ...ErrorType(`HTTP ${response2.status}`) });
121937
121980
  logCurlRepro(method, url2, headers2);
121938
121981
  if (buildError) {
121939
- const error3 = await buildError(response2);
121940
- (_b2 = span == null ? void 0 : span.recordException) == null ? void 0 : _b2.call(span, error3);
121982
+ let error3;
121983
+ try {
121984
+ error3 = await buildError(response2);
121985
+ } catch (cause) {
121986
+ const transportCode = getTransientTransportCode(cause);
121987
+ if (transportCode) {
121988
+ if (deferTransportSuccessUntilBody) {
121989
+ onTransportOutcome == null ? void 0 : onTransportOutcome(cause);
121990
+ }
121991
+ const transportError2 = new WorkflowWorldError(`${method} ${label} response body transport failure (${transportCode})`, { url: url2, code: "TRANSPORT", cause });
121992
+ span == null ? void 0 : span.setAttributes({ ...ErrorType("TRANSPORT") });
121993
+ (_c = span == null ? void 0 : span.recordException) == null ? void 0 : _c.call(span, transportError2);
121994
+ throw transportError2;
121995
+ }
121996
+ if (deferTransportSuccessUntilBody) {
121997
+ onTransportOutcome == null ? void 0 : onTransportOutcome(cause);
121998
+ }
121999
+ throw cause;
122000
+ }
122001
+ if (deferTransportSuccessUntilBody)
122002
+ onTransportOutcome == null ? void 0 : onTransportOutcome();
122003
+ (_d = span == null ? void 0 : span.recordException) == null ? void 0 : _d.call(span, error3);
121941
122004
  throw error3;
121942
122005
  }
121943
122006
  const text2 = await response2.text().catch(() => "");
122007
+ if (deferTransportSuccessUntilBody)
122008
+ onTransportOutcome == null ? void 0 : onTransportOutcome();
121944
122009
  const error2 = errorForResponse(response2.status, `${method} ${label} -> HTTP ${response2.status}: ${response2.statusText}${text2 ? ` ${text2}` : ""}${formatVercelDiagnostics(response2.headers)}`, {
121945
122010
  url: url2,
121946
122011
  retryAfter: parseRetryAfter(response2.headers.get("Retry-After"))
121947
122012
  });
121948
- (_c = span == null ? void 0 : span.recordException) == null ? void 0 : _c.call(span, error2);
122013
+ (_e2 = span == null ? void 0 : span.recordException) == null ? void 0 : _e2.call(span, error2);
121949
122014
  throw error2;
121950
122015
  }
121951
122016
  return response2;
@@ -126642,38 +126707,10 @@ var QueueClient = class {
126642
126707
  setApi(this, new ApiClient({ ...options, region }));
126643
126708
  }
126644
126709
  };
126645
- const version = "4.7.1";
126710
+ const version = "4.7.3";
126646
126711
  const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
126647
126712
  const MAX_BODY_PARSE_RETRIES = 2;
126648
126713
  const BODY_PARSE_RETRY_BASE_MS = 100;
126649
- const TRANSIENT_TRANSPORT_ERROR_CODES = /* @__PURE__ */ new Set([
126650
- "UND_ERR_REQ_RETRY",
126651
- "UND_ERR_SOCKET",
126652
- "UND_ERR_CONNECT",
126653
- "UND_ERR_CONNECT_TIMEOUT",
126654
- "UND_ERR_HEADERS_TIMEOUT",
126655
- "UND_ERR_BODY_TIMEOUT",
126656
- "UND_ERR_CLOSED",
126657
- "ECONNRESET",
126658
- "ECONNREFUSED",
126659
- "ENOTFOUND",
126660
- "EAI_AGAIN",
126661
- "EPIPE",
126662
- "ETIMEDOUT"
126663
- ]);
126664
- function getTransientTransportCode(error2) {
126665
- let current = error2;
126666
- for (let depth = 0; current != null && depth < 5; depth++) {
126667
- if (typeof current === "object" && "code" in current) {
126668
- const code2 = current.code;
126669
- if (typeof code2 === "string" && TRANSIENT_TRANSPORT_ERROR_CODES.has(code2)) {
126670
- return code2;
126671
- }
126672
- }
126673
- current = current == null ? void 0 : current.cause;
126674
- }
126675
- return void 0;
126676
- }
126677
126714
  const getWorkflowServerUrlOverride = () => process.env.VERCEL_WORKFLOW_SERVER_URL || "";
126678
126715
  const DEFAULT_RESOLVE_DATA_OPTION = "all";
126679
126716
  function deserializeError(obj) {
@@ -127144,17 +127181,30 @@ function createQueue$1(config2) {
127144
127181
  const ResolveLatestDeploymentResponseSchema = object$1({
127145
127182
  id: string$3()
127146
127183
  });
127184
+ async function resolveDeploymentIdentityToken(config2) {
127185
+ if (config2 == null ? void 0 : config2.token)
127186
+ return config2.token;
127187
+ if (process.env.VERCEL === "1") {
127188
+ const oidcToken = await distExports.getVercelOidcToken().catch(() => null);
127189
+ if (oidcToken)
127190
+ return oidcToken;
127191
+ }
127192
+ return resolveVercelApiToken(config2);
127193
+ }
127147
127194
  function createResolveLatestDeploymentId(config2) {
127148
127195
  return async function resolveLatestDeploymentId() {
127196
+ var _a3;
127149
127197
  const currentDeploymentId = process.env.VERCEL_DEPLOYMENT_ID;
127150
127198
  if (!currentDeploymentId) {
127151
127199
  throw new Error("Cannot resolve latest deployment: VERCEL_DEPLOYMENT_ID environment variable is not set");
127152
127200
  }
127153
- const token = await resolveVercelApiToken(config2);
127201
+ const token = await resolveDeploymentIdentityToken(config2);
127154
127202
  if (!token) {
127155
127203
  throw new Error("Cannot resolve latest deployment: no OIDC token or VERCEL_TOKEN available");
127156
127204
  }
127157
- const url2 = `https://api.vercel.com/v1/workflow/resolve-latest-deployment/${encodeURIComponent(currentDeploymentId)}`;
127205
+ const teamId = (_a3 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _a3.teamId;
127206
+ const query = teamId ? `?${new URLSearchParams({ teamId })}` : "";
127207
+ const url2 = `https://api.vercel.com/v1/workflow/resolve-latest-deployment/${encodeURIComponent(currentDeploymentId)}${query}`;
127158
127208
  const response2 = await instrumentedFetch({
127159
127209
  method: "GET",
127160
127210
  url: url2,
@@ -127171,7 +127221,8 @@ function createResolveLatestDeploymentId(config2) {
127171
127221
  } catch {
127172
127222
  body2 = "<unable to read response body>";
127173
127223
  }
127174
- return new Error(`Failed to resolve latest deployment for ${currentDeploymentId}: HTTP ${res.status} ${res.statusText}${body2 ? ` ${body2}` : ""}`);
127224
+ const hint = res.status === 404 ? ". The deployment exists but was not visible to the identity this request authenticated as, which means the request resolved to a different team. Set the World's `projectConfig.teamId` to scope it explicitly." : "";
127225
+ return new Error(`Failed to resolve latest deployment for ${currentDeploymentId}: HTTP ${res.status} ${res.statusText}${body2 ? ` — ${body2}` : ""}${hint}`);
127175
127226
  }
127176
127227
  });
127177
127228
  const data = await response2.json();
@@ -127437,7 +127488,7 @@ async function* readerToIterator(reader) {
127437
127488
  }
127438
127489
  async function fetchV4(url2, init2, config2, opName) {
127439
127490
  const dispatcher2 = getEventsDispatcher(config2);
127440
- return instrumentedFetch({
127491
+ const response2 = await instrumentedFetch({
127441
127492
  method: init2.method,
127442
127493
  url: url2,
127443
127494
  headers: init2.headers,
@@ -127448,9 +127499,41 @@ async function fetchV4(url2, init2, config2, opName) {
127448
127499
  // service indefinitely, so without this every request routed onto it fails
127449
127500
  // until the compute instance is recycled — see noteEventsTransportOutcome.
127450
127501
  onTransportOutcome: (error2) => noteEventsTransportOutcome(dispatcher2, error2),
127502
+ deferTransportSuccessUntilBody: true,
127451
127503
  timeoutMs: null,
127452
127504
  logLabel: opName,
127453
- buildError: async (response2) => errorFromV4Response(response2.status, headersToRecord(response2.headers), await response2.text(), opName, url2)
127505
+ buildError: async (response3) => errorFromV4Response(response3.status, headersToRecord(response3.headers), await response3.text(), opName, url2)
127506
+ });
127507
+ if (!response2.body) {
127508
+ noteEventsTransportOutcome(dispatcher2);
127509
+ return response2;
127510
+ }
127511
+ const reader = response2.body.getReader();
127512
+ const body2 = new ReadableStream({
127513
+ async pull(controller) {
127514
+ try {
127515
+ const chunk = await reader.read();
127516
+ if (chunk.done) {
127517
+ noteEventsTransportOutcome(dispatcher2);
127518
+ controller.close();
127519
+ } else {
127520
+ controller.enqueue(chunk.value);
127521
+ }
127522
+ } catch (cause) {
127523
+ noteEventsTransportOutcome(dispatcher2, cause);
127524
+ const transportCode = getTransientTransportCode(cause);
127525
+ controller.error(transportCode ? new WorkflowWorldError(`v4 ${opName}: response stream transport failure (${transportCode})`, { url: url2, code: "TRANSPORT", cause }) : cause);
127526
+ }
127527
+ },
127528
+ cancel(reason) {
127529
+ noteEventsTransportOutcome(dispatcher2);
127530
+ return reader.cancel(reason);
127531
+ }
127532
+ });
127533
+ return new Response(body2, {
127534
+ status: response2.status,
127535
+ statusText: response2.statusText,
127536
+ headers: response2.headers
127454
127537
  });
127455
127538
  }
127456
127539
  function headersToRecord(headers2) {
@@ -155798,7 +155881,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
155798
155881
  __proto__: null,
155799
155882
  loader
155800
155883
  }, Symbol.toStringTag, { value: "Module" }));
155801
- const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.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-BxnaECGo.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-Blj6TeEE.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-1KdCfmI4.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-d91343fe.js", "version": "d91343fe", "sri": void 0 };
155884
+ const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.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-BxnaECGo.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-Blj6TeEE.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-DivTczoC.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.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-7bf3847b.js", "version": "7bf3847b", "sri": void 0 };
155802
155885
  const assetsBuildDirectory = "build/client";
155803
155886
  const basename = "/";
155804
155887
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { g as getDefaultExportFromCjs } from "./app-eQjjf4RE.js";
6
- import { a5 as requireTokenError, a4 as requireTokenUtil } from "./server-build-BFktO0pM.js";
5
+ import { g as getDefaultExportFromCjs } from "./app-Cqq1tzT2.js";
6
+ import { a5 as requireTokenError, a4 as requireTokenUtil } from "./server-build-C7DcIi-X.js";
7
7
  function _mergeNamespaces(n, m) {
8
8
  for (var i = 0; i < m.length; i++) {
9
9
  const e = m[i];
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { g as getDefaultExportFromCjs } from "./app-eQjjf4RE.js";
6
- import { a4 as requireTokenUtil } from "./server-build-BFktO0pM.js";
5
+ import { g as getDefaultExportFromCjs } from "./app-Cqq1tzT2.js";
6
+ import { a4 as requireTokenUtil } from "./server-build-C7DcIi-X.js";
7
7
  function _mergeNamespaces(n, m) {
8
8
  for (var i = 0; i < m.length; i++) {
9
9
  const e = m[i];
@@ -2,7 +2,7 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { n } from "./assets/app-eQjjf4RE.js";
5
+ import { n } from "./assets/app-Cqq1tzT2.js";
6
6
  import "express";
7
7
  import "stream";
8
8
  export {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/web",
3
3
  "description": "Workflow Observability UI",
4
- "version": "4.1.21",
4
+ "version": "4.1.23",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "files": [
@@ -71,12 +71,12 @@
71
71
  "vite": "^6",
72
72
  "vitest": "^3",
73
73
  "jsdom": "^26",
74
- "@workflow/core": "4.8.5",
74
+ "@workflow/core": "4.8.7",
75
75
  "@workflow/errors": "4.2.1",
76
76
  "@workflow/utils": "4.1.4",
77
- "@workflow/web-shared": "4.1.21",
78
77
  "@workflow/world": "4.5.0",
79
- "@workflow/world-vercel": "4.7.1"
78
+ "@workflow/web-shared": "4.1.23",
79
+ "@workflow/world-vercel": "4.7.3"
80
80
  },
81
81
  "scripts": {
82
82
  "dev": "react-router dev",