@workflow/web 5.0.0-beta.46 → 5.0.0-beta.47

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 (23) hide show
  1. package/build/client/assets/{arrow-up-right-UOc2WcaC.js → arrow-up-right-C52N96YH.js} +1 -1
  2. package/build/client/assets/{highlighted-body-B3W2YXNL-D78gcP7S.js → highlighted-body-B3W2YXNL-BzCKp954.js} +1 -1
  3. package/build/client/assets/{home-DYB1uz9w.js → home-CXFjRmpa.js} +3 -3
  4. package/build/client/assets/{loader-circle-oscnpy3L.js → loader-circle-BQzzSKVU.js} +1 -1
  5. package/build/client/assets/{manifest-a701502a.js → manifest-9ff1658d.js} +1 -1
  6. package/build/client/assets/{mermaid-3ZIDBTTL-BKGEyEYb.js → mermaid-3ZIDBTTL-BrUzeGHN.js} +212 -120
  7. package/build/client/assets/{root-Zvnb602n.js → root-DBp4o4Ap.js} +3 -3
  8. package/build/client/assets/{run-detail-CedyZW9h.js → run-detail-7tPGLWpY.js} +58 -37
  9. package/build/client/assets/{workflow-graph-viewer-Du0ztkb8.js → workflow-graph-viewer-BI72rVK-.js} +1 -1
  10. package/build/client/assets/{zstd-browser-decoder-DafWVuEG.js → zstd-browser-decoder-C5OUdy0l.js} +1 -1
  11. package/build/server/assets/{app-BpmEMaiu.js → app-z0qVD1ZU.js} +681 -371
  12. package/build/server/assets/{highlighted-body-B3W2YXNL-C6ES2Pzm.js → highlighted-body-B3W2YXNL-BRzynHFv.js} +1 -1
  13. package/build/server/assets/{index-BtQfiVUN.js → index-DDMGTwh_.js} +70 -67
  14. package/build/server/assets/{index-QOlZC9D-.js → index-jQkBA81b.js} +1 -1
  15. package/build/server/assets/{mermaid-3ZIDBTTL-X6IEJ8gj.js → mermaid-3ZIDBTTL-CNWRBcN0.js} +1 -1
  16. package/build/server/assets/{token-CrxXUTBD.js → token-BSEhy2T4.js} +1 -1
  17. package/build/server/assets/{token-util-DuToe55u.js → token-util-D_gzpVW2.js} +1 -1
  18. package/build/server/assets/{websocket-server-CTnzV_B7.js → websocket-server-CDTVQU5X.js} +1 -1
  19. package/build/server/assets/{wrapper-Bjff6YRz.js → wrapper-BxieYZVg.js} +3 -3
  20. package/build/server/assets/{ws-transport-ByYax88V.js → ws-transport-DbDOLT7f.js} +5 -5
  21. package/build/server/assets/{zstd-browser-decoder-Bfk1d5vU.js → zstd-browser-decoder-CtzWlfs5.js} +1 -1
  22. package/build/server/index.js +3 -3
  23. package/package.json +8 -8
@@ -1,4 +1,4 @@
1
- import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
1
+ import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BrUzeGHN.js";
2
2
  /**
3
3
  * @license lucide-react v0.575.0 - ISC
4
4
  *
@@ -1,4 +1,4 @@
1
- import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
1
+ import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-BrUzeGHN.js";
2
2
  import { r as reactExports, j as jsxRuntimeExports } from "./index-PFjW8YjQ.js";
3
3
  var L = ({ code: s, language: t, raw: e, className: n, ...d$1 }) => {
4
4
  let { shikiTheme: l } = reactExports.useContext(R), o = Ks(), [m, i] = reactExports.useState(e);
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, c as Link, R as ReactExports, o as reactDomExports, e as useSearchParams, d as useNavigate, C as useLocation, w as withComponentProps } from "./index-PFjW8YjQ.js";
2
- import { R as ResolveHookModal, S as Send, r as requireShim, u as unwrapOrThrow, W as WorkflowWebAPIError, f as fetchHookToken, a as Skeleton, b as RelativeTime, A as Alert, C as CircleAlert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, h as CopyableText, D as DropdownMenu, i as DropdownMenuTrigger, E as Ellipsis, j as DropdownMenuContent, k as DropdownMenuItem, l as resumeHook, m as createCollection, n as hideOthers, o as ReactRemoveScroll, p as useDirection, q as ChevronUp, X, s as useControllableState$1, P as Primitive$1, t as composeEventHandlers$1, v as Presence, w as useSize, x as createContextScope$1, y as bulkCancelRuns, z as reenqueueRun, B as parseWorkflowName, F as StatusBadge, Z as Zap, G as CircleX, H as RunActionsDropdownItems, I as unwrapServerActionResult, J as WorkflowGraphViewer, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, N as ErrorBoundary } from "./workflow-graph-viewer-Du0ztkb8.js";
3
- import { c as createLucideIcon, h as useToast, e as cn, i as fetchRuns, j as fetchHooks, k as getPaginationDisplay, T as Tooltip, a as TooltipTrigger, C as Check, l as Copy, b as TooltipContent, D as DEFAULT_PAGE_SIZE, B as Button, m as ChevronRight, n as fetchEvents, o as useCallbackRef, p as useComposedRefs, P as Primitive, A as Anchor, q as composeEventHandlers, s as useLayoutEffect2, v as Portal$2, w as useId, x as createPopperScope, y as DismissableLayer, z as createContextScope, E as createSlot, F as Content$1, G as useControllableState, H as Root2$1, V as VISUALLY_HIDDEN_STYLES, I as Arrow, J as ChevronDown, L as useComposedRefs$1, u as useServerConfig, M as BULK_CANCEL_MAX_RUN_IDS, t as toast, N as fetchRun, O as cva, U as Presence$1, W as createContext2, X as fetchWorkflowsManifest } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
4
- import { L as LoaderCircle } from "./loader-circle-oscnpy3L.js";
2
+ import { R as ResolveHookModal, S as Send, r as requireShim, u as unwrapOrThrow, W as WorkflowWebAPIError, f as fetchHookToken, a as Skeleton, b as RelativeTime, A as Alert, C as CircleAlert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, h as CopyableText, D as DropdownMenu, i as DropdownMenuTrigger, E as Ellipsis, j as DropdownMenuContent, k as DropdownMenuItem, l as resumeHook, m as createCollection, n as hideOthers, o as ReactRemoveScroll, p as useDirection, q as ChevronUp, X, s as useControllableState$1, P as Primitive$1, t as composeEventHandlers$1, v as Presence, w as useSize, x as createContextScope$1, y as bulkCancelRuns, z as reenqueueRun, B as parseWorkflowName, F as StatusBadge, Z as Zap, G as CircleX, H as RunActionsDropdownItems, I as unwrapServerActionResult, J as WorkflowGraphViewer, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, N as ErrorBoundary } from "./workflow-graph-viewer-BI72rVK-.js";
3
+ import { c as createLucideIcon, h as useToast, e as cn, i as fetchRuns, j as fetchHooks, k as getPaginationDisplay, T as Tooltip, a as TooltipTrigger, C as Check, l as Copy, b as TooltipContent, D as DEFAULT_PAGE_SIZE, B as Button, m as ChevronRight, n as fetchEvents, o as useCallbackRef, p as useComposedRefs, P as Primitive, A as Anchor, q as composeEventHandlers, s as useLayoutEffect2, v as Portal$2, w as useId, x as createPopperScope, y as DismissableLayer, z as createContextScope, E as createSlot, F as Content$1, G as useControllableState, H as Root2$1, V as VISUALLY_HIDDEN_STYLES, I as Arrow, J as ChevronDown, L as useComposedRefs$1, u as useServerConfig, M as BULK_CANCEL_MAX_RUN_IDS, t as toast, N as fetchRun, O as cva, U as Presence$1, W as createContext2, X as fetchWorkflowsManifest } from "./mermaid-3ZIDBTTL-BrUzeGHN.js";
4
+ import { L as LoaderCircle } from "./loader-circle-BQzzSKVU.js";
5
5
  /**
6
6
  * @license lucide-react v0.575.0 - ISC
7
7
  *
@@ -1,4 +1,4 @@
1
- import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
1
+ import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BrUzeGHN.js";
2
2
  /**
3
3
  * @license lucide-react v0.575.0 - ISC
4
4
  *
@@ -1 +1 @@
1
- window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-LwI3HNYl.js","imports":["/assets/index-PFjW8YjQ.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-Zvnb602n.js","imports":["/assets/index-PFjW8YjQ.js","/assets/mermaid-3ZIDBTTL-BKGEyEYb.js","/assets/loader-circle-oscnpy3L.js","/assets/arrow-up-right-UOc2WcaC.js"],"css":["/assets/root-Bl5xphvU.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-DYB1uz9w.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-Du0ztkb8.js","/assets/mermaid-3ZIDBTTL-BKGEyEYb.js","/assets/loader-circle-oscnpy3L.js"],"css":["/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-CedyZW9h.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-Du0ztkb8.js","/assets/mermaid-3ZIDBTTL-BKGEyEYb.js","/assets/arrow-up-right-UOc2WcaC.js"],"css":["/assets/run-detail-CWoGxu_0.css","/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-a701502a.js","version":"a701502a"};
1
+ window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-LwI3HNYl.js","imports":["/assets/index-PFjW8YjQ.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-DBp4o4Ap.js","imports":["/assets/index-PFjW8YjQ.js","/assets/mermaid-3ZIDBTTL-BrUzeGHN.js","/assets/loader-circle-BQzzSKVU.js","/assets/arrow-up-right-C52N96YH.js"],"css":["/assets/root-Bl5xphvU.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-CXFjRmpa.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-BI72rVK-.js","/assets/mermaid-3ZIDBTTL-BrUzeGHN.js","/assets/loader-circle-BQzzSKVU.js"],"css":["/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-7tPGLWpY.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-BI72rVK-.js","/assets/mermaid-3ZIDBTTL-BrUzeGHN.js","/assets/arrow-up-right-C52N96YH.js"],"css":["/assets/run-detail-CWoGxu_0.css","/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-D8CjRQta.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-9ff1658d.js","version":"9ff1658d"};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-DafWVuEG.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-D78gcP7S.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-C5OUdy0l.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-BzCKp954.js"])))=>i.map(i=>d[i]);
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
4
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
@@ -14887,6 +14887,7 @@ function isSealedNoopEvent(event) {
14887
14887
  return event.eventType === "noop";
14888
14888
  }
14889
14889
  const ENTITY_EVENT_CLASS_BY_TYPE = {
14890
+ attr_set: "attr_set",
14890
14891
  step_created: "step_created",
14891
14892
  step_started: "step_started",
14892
14893
  step_retrying: "step_retrying",
@@ -14901,6 +14902,23 @@ const ENTITY_EVENT_CLASS_BY_TYPE = {
14901
14902
  function entityEventClass(eventType) {
14902
14903
  return getOwnProperty$1(ENTITY_EVENT_CLASS_BY_TYPE, eventType);
14903
14904
  }
14905
+ const RUN_ENTITY_KEY = "";
14906
+ const TERMINAL_EVENT_CLASSES = /* @__PURE__ */ new Set([
14907
+ "attr_set",
14908
+ "step_terminal",
14909
+ "wait_completed",
14910
+ "hook_disposed"
14911
+ ]);
14912
+ function classifyEntityEvent(event) {
14913
+ const eventClass = entityEventClass(event.eventType);
14914
+ if (eventClass === void 0) {
14915
+ return void 0;
14916
+ }
14917
+ if (eventClass === "run_started") {
14918
+ return { eventClass, entity: RUN_ENTITY_KEY };
14919
+ }
14920
+ return event.correlationId ? { eventClass, entity: event.correlationId } : void 0;
14921
+ }
14904
14922
  const EVENT_DATA_REF_FIELDS_BY_EVENT_TYPE = {
14905
14923
  run_created: ["input"],
14906
14924
  run_started: ["input"],
@@ -15758,8 +15776,9 @@ const HookResumeTimingSchema = object({
15758
15776
  /** Epoch ms immediately before the queue publish was requested. */
15759
15777
  queuePublishRequestedAtMs: number$3(),
15760
15778
  /**
15761
- * Which `resumeHook()` dispatch path ran: `lazy` or `sequential` (`parallel`
15762
- * from producers predating lazy-only resume).
15779
+ * Which `resumeHook()` dispatch path ran. Current producers always report
15780
+ * `sequential` (durable write, then wake); older producers may report
15781
+ * `lazy` or `parallel`.
15763
15782
  */
15764
15783
  strategy: string$2().optional(),
15765
15784
  /** Epoch ms the final consumer's queue handler was entered. */
@@ -15831,9 +15850,9 @@ const WorkflowInvokePayloadSchema = object({
15831
15850
  /** Run creation data, only present on the first queue delivery from start() */
15832
15851
  runInput: RunInputSchema.optional(),
15833
15852
  /**
15834
- * Lazy hook resume data, only present when `resumeHook()` takes the parallel
15835
- * fast path. A consumer that understands this field idempotently ensures the
15836
- * `hook_received` event exists (keyed by `resumeId`) before replaying.
15853
+ * Legacy lazy hook resume data. A consumer that understands this field
15854
+ * idempotently ensures the `hook_received` event exists (keyed by `resumeId`)
15855
+ * before replaying.
15837
15856
  */
15838
15857
  hookInput: HookResumeInputSchema.optional(),
15839
15858
  /**
@@ -15845,7 +15864,7 @@ const WorkflowInvokePayloadSchema = object({
15845
15864
  stepInput: StepDispatchInputSchema.optional(),
15846
15865
  /**
15847
15866
  * Hook-resume TTR timing. Present on both `resumeHook()` dispatch paths
15848
- * (unlike `hookInput`, which only rides the lazy path), and
15867
+ * (unlike legacy `hookInput`), and
15849
15868
  * forwarded onto a dispatched step message when the resuming invocation
15850
15869
  * hands the next durable step to another invocation. Purely observational.
15851
15870
  * See {@link HookResumeTimingSchema}.
@@ -15892,12 +15911,14 @@ const HookResumeContextSchema = object({
15892
15911
  encryptionPublicKey: string$2().optional(),
15893
15912
  // Feature marker: the version of the lazy-hook-resume consumer protocol the
15894
15913
  // run's creating deployment supports. Present (>= 1) means that deployment's
15895
- // `@workflow/core` re-ensures the `hook_received` event from the queue
15896
- // message's `hookInput` on replay, so `resumeHook()`'s lazy path is safe to
15897
- // use. Because a run is pinned to its creating deployment, this
15898
- // marker is a reliable per-run attestation, unlike inferring support from a
15899
- // version compare against a predicted release cutoff. Absent on runs created
15900
- // before the marker existed (fall back to the sequential path).
15914
+ // `@workflow/core` re-ensures the `hook_received` event from a queue
15915
+ // message's `hookInput` on replay. Current producers no longer send
15916
+ // `hookInput` (the durable write happens before the wake is published), so
15917
+ // they never read this marker; it remains stamped so OLDER producers, which
15918
+ // still gate their lazy path on it, keep working against new runs. Because a
15919
+ // run is pinned to its creating deployment, this marker is a reliable
15920
+ // per-run attestation, unlike inferring support from a version compare
15921
+ // against a predicted release cutoff.
15901
15922
  hookResumeInputVersion: number$3().optional()
15902
15923
  });
15903
15924
  const HookResumeCapabilitiesSchema = object({
@@ -17639,7 +17660,7 @@ async function hydrateResourceIOAsync(resource, key) {
17639
17660
  return { hydrateDataWithKey: hydrateDataWithKey3, deriveRunPayloadKeys: deriveRunPayloadKeys3 };
17640
17661
  }, true ? void 0 : void 0);
17641
17662
  const { ensureZstdDecoderRegistered } = await __vitePreload(async () => {
17642
- const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-DafWVuEG.js");
17663
+ const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-C5OUdy0l.js");
17643
17664
  return { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 };
17644
17665
  }, true ? __vite__mapDeps([0,1]) : void 0);
17645
17666
  ensureZstdDecoderRegistered();
@@ -19265,8 +19286,28 @@ function BytesDisplayValue({ display }) {
19265
19286
  function formatField(field) {
19266
19287
  return field === "" ? '""' : field;
19267
19288
  }
19289
+ function isGenericIterable(value) {
19290
+ if (value === null || typeof value !== "object" && typeof value !== "function" || Array.isArray(value) || value instanceof Map || value instanceof Set) {
19291
+ return false;
19292
+ }
19293
+ return typeof value[Symbol.iterator] === "function";
19294
+ }
19295
+ function isEntryIterable(value) {
19296
+ return typeof value.entries === "function";
19297
+ }
19298
+ function collectEntries(iterable, asPairs) {
19299
+ return Array.from(iterable, (item, index2) => {
19300
+ if (asPairs && Array.isArray(item) && item.length >= 2) {
19301
+ return [String(item[0]), collapseRefs(item[1]), index2];
19302
+ }
19303
+ return [void 0, collapseRefs(item), index2];
19304
+ });
19305
+ }
19306
+ function isSelfIterableIterator(value) {
19307
+ return Object.is(value[Symbol.iterator](), value);
19308
+ }
19268
19309
  function describeContainer(value) {
19269
- var _a3;
19310
+ var _a3, _b2;
19270
19311
  if (Array.isArray(value)) {
19271
19312
  return {
19272
19313
  entries: value.map((item) => [void 0, item]),
@@ -19293,8 +19334,26 @@ function describeContainer(value) {
19293
19334
  prefix: "Set"
19294
19335
  };
19295
19336
  }
19296
- if (value !== null && typeof value === "object") {
19337
+ if (isGenericIterable(value)) {
19297
19338
  const name2 = (_a3 = value.constructor) == null ? void 0 : _a3.name;
19339
+ const prefix = name2 && name2 !== "Object" ? name2 : void 0;
19340
+ if (isEntryIterable(value)) {
19341
+ return {
19342
+ entries: collectEntries(value.entries(), true),
19343
+ open: "{",
19344
+ close: "}",
19345
+ prefix
19346
+ };
19347
+ }
19348
+ return {
19349
+ entries: collectEntries(value, false),
19350
+ open: "[",
19351
+ close: "]",
19352
+ prefix
19353
+ };
19354
+ }
19355
+ if (value !== null && typeof value === "object") {
19356
+ const name2 = (_b2 = value.constructor) == null ? void 0 : _b2.name;
19298
19357
  return {
19299
19358
  entries: Object.entries(value),
19300
19359
  open: "{",
@@ -19405,7 +19464,7 @@ function ExpandableContainer({ field, entries, open: open2, close, prefix, ctx,
19405
19464
  }
19406
19465
  };
19407
19466
  const lastIndex = entries.length - 1;
19408
- return jsxRuntimeExports.jsxs("div", { className: CLS.child, role: "treeitem", "aria-expanded": expanded, "aria-controls": expanded ? contentsId : void 0, "data-json-expander": true, ref: rowRef, tabIndex: level === 0 ? 0 : -1, onClick, onKeyDown, children: [jsxRuntimeExports.jsx("span", { className: expanded ? CLS.collapseIcon : CLS.expandIcon, "aria-hidden": "true" }), field !== void 0 && jsxRuntimeExports.jsx("span", { className: CLS.clickableLabel, children: `${formatField(field)}:` }), prefix ? jsxRuntimeExports.jsx("span", { className: CLS.className, children: prefix }) : null, jsxRuntimeExports.jsx("span", { className: CLS.punctuation, children: open2 }), expanded ? jsxRuntimeExports.jsx("ul", { id: contentsId, className: CLS.childFields, role: "group", children: entries.map(([childField, childValue], index2) => jsxRuntimeExports.jsx(DataRender, { field: childField, value: childValue, isLast: index2 === lastIndex, ctx: { ...ctx, level: level + 1 } }, childField ?? index2)) }) : jsxRuntimeExports.jsx("span", { className: CLS.collapsedContent, "aria-hidden": "true" }), jsxRuntimeExports.jsx("span", { className: CLS.punctuation, children: close }), jsxRuntimeExports.jsx(Comma, { isLast })] });
19467
+ return jsxRuntimeExports.jsxs("div", { className: CLS.child, role: "treeitem", "aria-expanded": expanded, "aria-controls": expanded ? contentsId : void 0, "data-json-expander": true, ref: rowRef, tabIndex: level === 0 ? 0 : -1, onClick, onKeyDown, children: [jsxRuntimeExports.jsx("span", { className: expanded ? CLS.collapseIcon : CLS.expandIcon, "aria-hidden": "true" }), field !== void 0 && jsxRuntimeExports.jsx("span", { className: CLS.clickableLabel, children: `${formatField(field)}:` }), prefix ? jsxRuntimeExports.jsx("span", { className: CLS.className, children: prefix }) : null, jsxRuntimeExports.jsx("span", { className: CLS.punctuation, children: open2 }), expanded ? jsxRuntimeExports.jsx("ul", { id: contentsId, className: CLS.childFields, role: "group", children: entries.map(([childField, childValue, entryKey], index2) => jsxRuntimeExports.jsx(DataRender, { field: childField, value: childValue, isLast: index2 === lastIndex, ctx: { ...ctx, level: level + 1 } }, entryKey ?? childField ?? index2)) }) : jsxRuntimeExports.jsx("span", { className: CLS.collapsedContent, "aria-hidden": "true" }), jsxRuntimeExports.jsx("span", { className: CLS.punctuation, children: close }), jsxRuntimeExports.jsx(Comma, { isLast })] });
19409
19468
  }
19410
19469
  function DataRender({ field, value, isLast, ctx }) {
19411
19470
  if (isBytesDisplay(value)) {
@@ -19533,6 +19592,19 @@ function isSameBytesDisplay(a2, b2) {
19533
19592
  var _a3, _b2, _c, _d, _e2, _f;
19534
19593
  return a2.text === b2.text && ((_a3 = a2.decodedFrom) == null ? void 0 : _a3.type) === ((_b2 = b2.decodedFrom) == null ? void 0 : _b2.type) && ((_c = a2.decodedFrom) == null ? void 0 : _c.encoding) === ((_d = b2.decodedFrom) == null ? void 0 : _d.encoding) && ((_e2 = a2.decodedFrom) == null ? void 0 : _e2.rawSummary) === ((_f = b2.decodedFrom) == null ? void 0 : _f.rawSummary);
19535
19594
  }
19595
+ function haveSameIterableValues(a2, b2, seen2) {
19596
+ const aIterator = a2[Symbol.iterator]();
19597
+ const bIterator = b2[Symbol.iterator]();
19598
+ while (true) {
19599
+ const aResult = aIterator.next();
19600
+ const bResult = bIterator.next();
19601
+ if (aResult.done || bResult.done) {
19602
+ return aResult.done === bResult.done;
19603
+ }
19604
+ if (!isDeepEqual(aResult.value, bResult.value, seen2))
19605
+ return false;
19606
+ }
19607
+ }
19536
19608
  function isDeepEqual(a2, b2, seen2 = /* @__PURE__ */ new WeakMap()) {
19537
19609
  if (Object.is(a2, b2))
19538
19610
  return true;
@@ -19545,6 +19617,25 @@ function isDeepEqual(a2, b2, seen2 = /* @__PURE__ */ new WeakMap()) {
19545
19617
  if (a2 instanceof RegExp && b2 instanceof RegExp) {
19546
19618
  return a2.source === b2.source && a2.flags === b2.flags;
19547
19619
  }
19620
+ if (isGenericIterable(a2) || isGenericIterable(b2)) {
19621
+ if (!isGenericIterable(a2) || !isGenericIterable(b2))
19622
+ return false;
19623
+ if (Object.getPrototypeOf(a2) !== Object.getPrototypeOf(b2))
19624
+ return false;
19625
+ if (isSelfIterableIterator(a2) || isSelfIterableIterator(b2))
19626
+ return false;
19627
+ if (seen2.get(a2) === b2)
19628
+ return true;
19629
+ seen2.set(a2, b2);
19630
+ const aHasEntries = isEntryIterable(a2);
19631
+ const bHasEntries = isEntryIterable(b2);
19632
+ if (aHasEntries !== bHasEntries)
19633
+ return false;
19634
+ if (aHasEntries && bHasEntries) {
19635
+ return haveSameIterableValues(a2.entries(), b2.entries(), seen2);
19636
+ }
19637
+ return haveSameIterableValues(a2, b2, seen2);
19638
+ }
19548
19639
  if (a2 instanceof Map && b2 instanceof Map) {
19549
19640
  if (a2.size !== b2.size)
19550
19641
  return false;
@@ -45235,7 +45326,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
45235
45326
  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 });
45236
45327
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
45237
45328
  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 }) });
45238
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-D78gcP7S.js"), true ? __vite__mapDeps([2,1]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
45329
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-BzCKp954.js"), true ? __vite__mapDeps([2,1]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
45239
45330
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
45240
45331
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
45241
45332
  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 }) })] }) });
@@ -49652,7 +49743,7 @@ const mermaid3ZIDBTTL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.def
49652
49743
  Mermaid: Nt
49653
49744
  }, Symbol.toStringTag, { value: "Module" }));
49654
49745
  export {
49655
- cn$4 as $,
49746
+ isSealedNoopEvent as $,
49656
49747
  Anchor as A,
49657
49748
  Button as B,
49658
49749
  Check as C,
@@ -49677,110 +49768,111 @@ export {
49677
49768
  VISUALLY_HIDDEN_STYLES as V,
49678
49769
  createContext2 as W,
49679
49770
  fetchWorkflowsManifest as X,
49680
- entityEventClass as Y,
49681
- isSealedNoopEvent as Z,
49771
+ classifyEntityEvent as Y,
49772
+ TERMINAL_EVENT_CLASSES as Z,
49682
49773
  __vitePreload as _,
49683
49774
  TooltipTrigger as a,
49684
- hydrateResourceIO as a$,
49685
- CopyableDataBlock as a0,
49686
- CollapsibleRoot as a1,
49687
- CollapsibleTrigger as a2,
49688
- CollapsibleContent as a3,
49689
- CopyButton as a4,
49690
- RESERVED_ATTRIBUTE_KEY_PREFIX as a5,
49691
- Spinner as a6,
49692
- TooltipProvider as a7,
49693
- Tooltip$1 as a8,
49694
- TooltipTrigger$1 as a9,
49695
- useActiveSpan as aA,
49696
- useSidebarData as aB,
49697
- IconButton as aC,
49698
- useRowWindow as aD,
49699
- isSpanDimmedBySearch as aE,
49700
- ROW_HEIGHT_PX as aF,
49701
- getSpanDurationMs as aG,
49702
- isSpanErrored as aH,
49703
- formatDurationPrecise as aI,
49704
- ActiveSpanProvider as aJ,
49705
- useReducedMotion as aK,
49706
- searchSpans as aL,
49707
- computeRootBounds as aM,
49708
- computeTimeMarkers as aN,
49709
- clampViewportToRoot as aO,
49710
- getHighResInMs as aP,
49711
- scrollRowIntoView as aQ,
49712
- TIMELINE_PADDING_PX as aR,
49713
- Minimap as aS,
49714
- Timeline as aT,
49715
- TimelineHeader as aU,
49716
- wheelZoomScaleFactor as aV,
49717
- wheelDeltaToPixels as aW,
49718
- SidebarDataProvider as aX,
49719
- fetchHook as aY,
49720
- hydrateResourceIOAsync as aZ,
49721
- fetchStep as a_,
49722
- TooltipContent$1 as aa,
49723
- ContextCardProvider as ab,
49724
- Skeleton as ac,
49725
- DecryptClickContext as ad,
49726
- Yr as ae,
49727
- isEncryptedMarker$1 as af,
49728
- TimestampTooltip as ag,
49729
- formatDuration as ah,
49730
- DataInspector as ai,
49731
- _r as aj,
49732
- isHookLifecycleEventType as ak,
49733
- isTerminalStepEventType as al,
49734
- isWaitEventType as am,
49735
- isStepEventType as an,
49736
- RunClickContext as ao,
49737
- StreamClickContext as ap,
49738
- Collapsible as aq,
49739
- isExpiredMarker as ar,
49740
- isDoStreamStep as as,
49741
- extractConversation as at,
49742
- EncryptedDataBlock as au,
49743
- getEventDataRefFields as av,
49744
- hasEncryptedFields as aw,
49745
- useSidebarDataOptional as ax,
49746
- isTerminalWorkflowRunStatus as ay,
49747
- clsx as az,
49775
+ fetchStep as a$,
49776
+ cn$4 as a0,
49777
+ CopyableDataBlock as a1,
49778
+ CollapsibleRoot as a2,
49779
+ CollapsibleTrigger as a3,
49780
+ CollapsibleContent as a4,
49781
+ CopyButton as a5,
49782
+ RESERVED_ATTRIBUTE_KEY_PREFIX as a6,
49783
+ Spinner as a7,
49784
+ TooltipProvider as a8,
49785
+ Tooltip$1 as a9,
49786
+ clsx as aA,
49787
+ useActiveSpan as aB,
49788
+ useSidebarData as aC,
49789
+ IconButton as aD,
49790
+ useRowWindow as aE,
49791
+ isSpanDimmedBySearch as aF,
49792
+ ROW_HEIGHT_PX as aG,
49793
+ getSpanDurationMs as aH,
49794
+ isSpanErrored as aI,
49795
+ formatDurationPrecise as aJ,
49796
+ ActiveSpanProvider as aK,
49797
+ useReducedMotion as aL,
49798
+ searchSpans as aM,
49799
+ computeRootBounds as aN,
49800
+ computeTimeMarkers as aO,
49801
+ clampViewportToRoot as aP,
49802
+ getHighResInMs as aQ,
49803
+ scrollRowIntoView as aR,
49804
+ TIMELINE_PADDING_PX as aS,
49805
+ Minimap as aT,
49806
+ Timeline as aU,
49807
+ TimelineHeader as aV,
49808
+ wheelZoomScaleFactor as aW,
49809
+ wheelDeltaToPixels as aX,
49810
+ SidebarDataProvider as aY,
49811
+ fetchHook as aZ,
49812
+ hydrateResourceIOAsync as a_,
49813
+ TooltipTrigger$1 as aa,
49814
+ TooltipContent$1 as ab,
49815
+ ContextCardProvider as ac,
49816
+ Skeleton as ad,
49817
+ DecryptClickContext as ae,
49818
+ Yr as af,
49819
+ isEncryptedMarker$1 as ag,
49820
+ TimestampTooltip as ah,
49821
+ formatDuration as ai,
49822
+ DataInspector as aj,
49823
+ _r as ak,
49824
+ isHookLifecycleEventType as al,
49825
+ isTerminalStepEventType as am,
49826
+ isWaitEventType as an,
49827
+ isStepEventType as ao,
49828
+ RunClickContext as ap,
49829
+ StreamClickContext as aq,
49830
+ Collapsible as ar,
49831
+ isExpiredMarker as as,
49832
+ isDoStreamStep as at,
49833
+ extractConversation as au,
49834
+ EncryptedDataBlock as av,
49835
+ getEventDataRefFields as aw,
49836
+ hasEncryptedFields as ax,
49837
+ useSidebarDataOptional as ay,
49838
+ isTerminalWorkflowRunStatus as az,
49748
49839
  TooltipContent as b,
49749
- fetchStreams as b0,
49750
- apiBase as b1,
49751
- Slot as b2,
49752
- Slottable as b3,
49753
- buttonVariants as b4,
49754
- fetchEvent as b5,
49755
- fetchEventsByCorrelationId as b6,
49756
- isEncryptedData as b7,
49757
- hydrateData as b8,
49758
- decrypt as b9,
49759
- deriveRunPayloadKeys as ba,
49760
- getWebRevivers as bb,
49761
- LIVE_UPDATE_INTERVAL_MS as bc,
49762
- getEncryptionKeyForRun as bd,
49763
- StreamViewerSkeleton as be,
49764
- Lock as bf,
49765
- StreamViewer as bg,
49766
- composeRefs as bh,
49767
- useFloating as bi,
49768
- offset as bj,
49769
- shift as bk,
49770
- limitShift as bl,
49771
- flip as bm,
49772
- size as bn,
49773
- arrow as bo,
49774
- hide as bp,
49775
- autoUpdate as bq,
49776
- VERCEL_403_ERROR_MESSAGE as br,
49777
- bulkCancelRuns as bs,
49778
- reenqueueRun as bt,
49779
- wakeUpRun as bu,
49780
- resumeHook as bv,
49781
- fetchHookToken as bw,
49782
- cancelRun as bx,
49783
- recreateRun as by,
49840
+ hydrateResourceIO as b0,
49841
+ fetchStreams as b1,
49842
+ apiBase as b2,
49843
+ Slot as b3,
49844
+ Slottable as b4,
49845
+ buttonVariants as b5,
49846
+ fetchEvent as b6,
49847
+ fetchEventsByCorrelationId as b7,
49848
+ isEncryptedData as b8,
49849
+ hydrateData as b9,
49850
+ decrypt as ba,
49851
+ deriveRunPayloadKeys as bb,
49852
+ getWebRevivers as bc,
49853
+ LIVE_UPDATE_INTERVAL_MS as bd,
49854
+ getEncryptionKeyForRun as be,
49855
+ StreamViewerSkeleton as bf,
49856
+ Lock as bg,
49857
+ StreamViewer as bh,
49858
+ composeRefs as bi,
49859
+ useFloating as bj,
49860
+ offset as bk,
49861
+ shift as bl,
49862
+ limitShift as bm,
49863
+ flip as bn,
49864
+ size as bo,
49865
+ arrow as bp,
49866
+ hide as bq,
49867
+ autoUpdate as br,
49868
+ VERCEL_403_ERROR_MESSAGE as bs,
49869
+ bulkCancelRuns as bt,
49870
+ reenqueueRun as bu,
49871
+ wakeUpRun as bv,
49872
+ resumeHook as bw,
49873
+ fetchHookToken as bx,
49874
+ cancelRun as by,
49875
+ recreateRun as bz,
49784
49876
  createLucideIcon as c,
49785
49877
  runHealthCheck as d,
49786
49878
  cn as e,
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, w as withComponentProps, a as withErrorBoundaryProps, M as Meta, L as Links, S as ScrollRestoration, b as Scripts, O as Outlet, u as useRouteError, i as isRouteErrorResponse, c as Link, d as useNavigate, e as useSearchParams } from "./index-PFjW8YjQ.js";
2
- import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, d as runHealthCheck, t as toast, B as Button, e as cn, f as Toaster$1, S as ServerConfigProvider, g as TooltipProvider } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
3
- import { L as LoaderCircle } from "./loader-circle-oscnpy3L.js";
4
- import { A as ArrowUpRight } from "./arrow-up-right-UOc2WcaC.js";
2
+ import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, d as runHealthCheck, t as toast, B as Button, e as cn, f as Toaster$1, S as ServerConfigProvider, g as TooltipProvider } from "./mermaid-3ZIDBTTL-BrUzeGHN.js";
3
+ import { L as LoaderCircle } from "./loader-circle-BQzzSKVU.js";
4
+ import { A as ArrowUpRight } from "./arrow-up-right-C52N96YH.js";
5
5
  var M = (e, i, s, u, m, a, l, h) => {
6
6
  let d = document.documentElement, w = ["light", "dark"];
7
7
  function p(n) {