@workflow/web 5.0.0-beta.18 → 5.0.0-beta.19

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.
@@ -9176,7 +9176,7 @@ const app = express();
9176
9176
  app.all(
9177
9177
  "/{*splat}",
9178
9178
  createRequestHandler({
9179
- build: () => import("./server-build-Bz4qQd_8.js").then((n) => n.a5)
9179
+ build: () => import("./server-build-D2BAH5fL.js").then((n) => n.a5)
9180
9180
  })
9181
9181
  );
9182
9182
  app.use(
@@ -1,5 +1,5 @@
1
- import { _ as R, $ as Ks, a0 as jsxRuntimeExports, a1 as Qe } from "./server-build-Bz4qQd_8.js";
2
- import { r as reactExports } from "./app-T6TeeAd2.js";
1
+ import { _ as R, $ as Ks, a0 as jsxRuntimeExports, a1 as Qe } from "./server-build-D2BAH5fL.js";
2
+ import { r as reactExports } from "./app-BPycGx4j.js";
3
3
  import "node:stream";
4
4
  import "util";
5
5
  import "crypto";
@@ -1,6 +1,6 @@
1
- import { H as HookSchema } from "./server-build-Bz4qQd_8.js";
2
- import { A, a, b, c, d, e, B, D, f, E, g, h, i, L, M, P, Q, j, R, k, S, l, m, n, o, p, q, r, s, t, V, W, u, v, w, x, y, z, C, F, G, I, J, K, O, T, U, X, Y, Z } from "./server-build-Bz4qQd_8.js";
3
- import "./app-T6TeeAd2.js";
1
+ import { H as HookSchema } from "./server-build-D2BAH5fL.js";
2
+ import { A, a, b, c, d, e, B, D, f, E, g, h, i, L, M, P, Q, j, R, k, S, l, m, n, o, p, q, r, s, t, V, W, u, v, w, x, y, z, C, F, G, I, J, K, O, T, U, X, Y, Z } from "./server-build-D2BAH5fL.js";
3
+ import "./app-BPycGx4j.js";
4
4
  import "stream";
5
5
  import "express";
6
6
  import "node:stream";
@@ -1,5 +1,5 @@
1
- import { N as Nt } from "./server-build-Bz4qQd_8.js";
2
- import "./app-T6TeeAd2.js";
1
+ import { N as Nt } from "./server-build-D2BAH5fL.js";
2
+ import "./app-BPycGx4j.js";
3
3
  import "stream";
4
4
  import "express";
5
5
  import "node:stream";
@@ -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, _d, _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, getEncryptionKeyLazily_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-T6TeeAd2.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-BPycGx4j.js";
18
18
  import require$$0$4, { PassThrough } from "node:stream";
19
19
  import require$$0 from "util";
20
20
  import require$$1 from "crypto";
@@ -49872,7 +49872,7 @@ function replaceEncryptedAndExpiredWithMarkers(resource) {
49872
49872
  async function hydrateResourceIOWithKey(resource, key) {
49873
49873
  const { hydrateDataWithKey: hydrateDataWithKey2 } = await Promise.resolve().then(() => serializationFormat);
49874
49874
  const { importKey: importKey2 } = await Promise.resolve().then(() => encryption);
49875
- const { ensureZstdDecoderRegistered } = await import("./zstd-browser-decoder-xZ-YX1Lf.js");
49875
+ const { ensureZstdDecoderRegistered } = await import("./zstd-browser-decoder-D_rFps2o.js");
49876
49876
  ensureZstdDecoderRegistered();
49877
49877
  const cryptoKey = await importKey2(key);
49878
49878
  const revivers = getRevivers();
@@ -83225,7 +83225,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
83225
83225
  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 });
83226
83226
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
83227
83227
  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 }) });
83228
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-8kPdQ9EU.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
83228
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DOFGe_gB.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
83229
83229
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
83230
83230
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
83231
83231
  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 }) })] }) });
@@ -83547,7 +83547,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
83547
83547
  }, []), 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] });
83548
83548
  };
83549
83549
  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 }) })] });
83550
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-BCwBQ2L6.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
83550
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CC2oHOb_.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
83551
83551
  function ke(e, t) {
83552
83552
  if (!(e != null && e.position || t != null && t.position)) return true;
83553
83553
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -91502,7 +91502,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
91502
91502
  encrypt: encrypt$1,
91503
91503
  importKey
91504
91504
  }, Symbol.toStringTag, { value: "Module" }));
91505
- const version$1 = "5.0.0-beta.18";
91505
+ const version$1 = "5.0.0-beta.19";
91506
91506
  const WorldCacheKey = Symbol.for("@workflow/world//cache");
91507
91507
  const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
91508
91508
  const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
@@ -122138,7 +122138,7 @@ function createLocalWorld(args) {
122138
122138
  const basedir = mergedConfig.dataDir;
122139
122139
  const hooksDir = path$3.join(basedir, "hooks");
122140
122140
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
122141
- const { HookSchema: HookSchema2 } = await import("./index-Beyp1GBB.js");
122141
+ const { HookSchema: HookSchema2 } = await import("./index-CjQDTwmY.js");
122142
122142
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
122143
122143
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
122144
122144
  if (hook == null ? void 0 : hook.token) {
@@ -122291,8 +122291,8 @@ function requireGetVercelOidcToken() {
122291
122291
  }
122292
122292
  try {
122293
122293
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
122294
- await import("./token-util-BuFs3aOE.js").then((n) => n.t),
122295
- await import("./token-BxHJXzbi.js").then((n) => n.t)
122294
+ await import("./token-util-bxOuz2AK.js").then((n) => n.t),
122295
+ await import("./token-BuB8DbpT.js").then((n) => n.t)
122296
122296
  ]);
122297
122297
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
122298
122298
  await refreshToken(options);
@@ -127577,7 +127577,7 @@ var QueueClient = class {
127577
127577
  setApi(this, new ApiClient({ ...options, region }));
127578
127578
  }
127579
127579
  };
127580
- const version = "5.0.0-beta.17";
127580
+ const version = "5.0.0-beta.18";
127581
127581
  const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
127582
127582
  function httpLog(method, endpoint, response2, ms2) {
127583
127583
  if (HTTP_DEBUG_ENABLED) {
@@ -128321,11 +128321,14 @@ async function consumeListFrameStream(url2, headers2, config2, opName) {
128321
128321
  const chunks = response2.body;
128322
128322
  const events2 = [];
128323
128323
  let next2;
128324
+ let hasMore;
128324
128325
  let sawEndSentinel = false;
128325
128326
  for await (const frame2 of decodeFrames(chunks)) {
128326
128327
  if (frame2.meta._end === 1) {
128327
128328
  if (typeof frame2.meta.next === "string")
128328
128329
  next2 = frame2.meta.next;
128330
+ if (typeof frame2.meta.hasMore === "boolean")
128331
+ hasMore = frame2.meta.hasMore;
128329
128332
  sawEndSentinel = true;
128330
128333
  break;
128331
128334
  }
@@ -128337,7 +128340,11 @@ async function consumeListFrameStream(url2, headers2, config2, opName) {
128337
128340
  if (!sawEndSentinel) {
128338
128341
  throw new Error(`v4 ${opName}: frame stream ended without the end-of-stream sentinel (${events2.length} events read) — truncated response?`);
128339
128342
  }
128340
- return { events: events2, ...next2 ? { next: next2 } : {} };
128343
+ return {
128344
+ events: events2,
128345
+ ...next2 ? { next: next2 } : {},
128346
+ ...hasMore !== void 0 ? { hasMore } : {}
128347
+ };
128341
128348
  }
128342
128349
  function appendListParams(sp, params) {
128343
128350
  if (params.cursor)
@@ -128728,8 +128735,12 @@ async function getWorkflowRunEvents(params, config2) {
128728
128735
  const events2 = result.events.map((listed) => buildEventFromV4(listed.event, listed.body, resolveData));
128729
128736
  return {
128730
128737
  data: events2,
128738
+ // `next` is present even on the final page (it's the incremental-load
128739
+ // resume cursor), so prefer the server's explicit `hasMore`. The
128740
+ // `Boolean(next)` fallback covers older servers that don't emit it —
128741
+ // at the cost of one extra empty-page request per load.
128731
128742
  cursor: result.next ?? null,
128732
- hasMore: Boolean(result.next)
128743
+ hasMore: typeof result.hasMore === "boolean" ? result.hasMore : Boolean(result.next)
128733
128744
  };
128734
128745
  }
128735
128746
  async function createWorkflowRunEvent(id2, data, params, config2) {
@@ -1,5 +1,5 @@
1
- import { g as getDefaultExportFromCjs } from "./app-T6TeeAd2.js";
2
- import { a4 as requireTokenError, a3 as requireTokenUtil } from "./server-build-Bz4qQd_8.js";
1
+ import { g as getDefaultExportFromCjs } from "./app-BPycGx4j.js";
2
+ import { a4 as requireTokenError, a3 as requireTokenUtil } from "./server-build-D2BAH5fL.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-T6TeeAd2.js";
2
- import { a3 as requireTokenUtil } from "./server-build-Bz4qQd_8.js";
1
+ import { g as getDefaultExportFromCjs } from "./app-BPycGx4j.js";
2
+ import { a3 as requireTokenUtil } from "./server-build-D2BAH5fL.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 { a2 as registerZstdDecoder } from "./server-build-Bz4qQd_8.js";
2
- import "./app-T6TeeAd2.js";
1
+ import { a2 as registerZstdDecoder } from "./server-build-D2BAH5fL.js";
2
+ import "./app-BPycGx4j.js";
3
3
  import "stream";
4
4
  import "express";
5
5
  import "node:stream";
@@ -1,4 +1,4 @@
1
- import { n } from "./assets/app-T6TeeAd2.js";
1
+ import { n } from "./assets/app-BPycGx4j.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.18",
4
+ "version": "5.0.0-beta.19",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "files": [
@@ -72,12 +72,12 @@
72
72
  "typescript": "^5.9.3",
73
73
  "vite": "^6",
74
74
  "vitest": "^3",
75
- "@workflow/core": "5.0.0-beta.18",
75
+ "@workflow/core": "5.0.0-beta.19",
76
76
  "@workflow/errors": "5.0.0-beta.8",
77
77
  "@workflow/utils": "5.0.0-beta.4",
78
- "@workflow/web-shared": "5.0.0-beta.18",
78
+ "@workflow/web-shared": "5.0.0-beta.19",
79
79
  "@workflow/world": "5.0.0-beta.11",
80
- "@workflow/world-vercel": "5.0.0-beta.17"
80
+ "@workflow/world-vercel": "5.0.0-beta.18"
81
81
  },
82
82
  "scripts": {
83
83
  "dev": "react-router dev",