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

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-AtCpRI70.js → arrow-up-right-UOc2WcaC.js} +1 -1
  2. package/build/client/assets/{highlighted-body-B3W2YXNL-BPRwlr7r.js → highlighted-body-B3W2YXNL-D78gcP7S.js} +1 -1
  3. package/build/client/assets/{home-BMHSjdeg.js → home-DYB1uz9w.js} +3 -3
  4. package/build/client/assets/{loader-circle-abAcDEYl.js → loader-circle-oscnpy3L.js} +1 -1
  5. package/build/client/assets/{manifest-a9a8ec99.js → manifest-a701502a.js} +1 -1
  6. package/build/client/assets/{mermaid-3ZIDBTTL-CrfHaTou.js → mermaid-3ZIDBTTL-BKGEyEYb.js} +101 -46
  7. package/build/client/assets/{root-e8qlLJiK.js → root-Zvnb602n.js} +3 -3
  8. package/build/client/assets/{run-detail-CrWq-9Tk.js → run-detail-CedyZW9h.js} +3 -3
  9. package/build/client/assets/{workflow-graph-viewer-CFAXloBw.js → workflow-graph-viewer-Du0ztkb8.js} +1 -1
  10. package/build/client/assets/{zstd-browser-decoder-B9DmHkyE.js → zstd-browser-decoder-DafWVuEG.js} +1 -1
  11. package/build/server/assets/{app-wed_Qw3X.js → app-BpmEMaiu.js} +224 -228
  12. package/build/server/assets/{highlighted-body-B3W2YXNL-imLU-Cvz.js → highlighted-body-B3W2YXNL-C6ES2Pzm.js} +1 -1
  13. package/build/server/assets/{index-DxLR22JW.js → index-BtQfiVUN.js} +13 -15
  14. package/build/server/assets/{index-Dsr6TVhD.js → index-QOlZC9D-.js} +1 -1
  15. package/build/server/assets/{mermaid-3ZIDBTTL-CgaDjNgb.js → mermaid-3ZIDBTTL-X6IEJ8gj.js} +1 -1
  16. package/build/server/assets/{token-CA6-cBL4.js → token-CrxXUTBD.js} +1 -1
  17. package/build/server/assets/{token-util-BNjC27Tj.js → token-util-DuToe55u.js} +1 -1
  18. package/build/server/assets/{websocket-server-S8DMC969.js → websocket-server-CTnzV_B7.js} +1 -1
  19. package/build/server/assets/{wrapper-DeK0m2tW.js → wrapper-Bjff6YRz.js} +3 -3
  20. package/build/server/assets/{ws-transport-DdxSF5J6.js → ws-transport-ByYax88V.js} +2 -2
  21. package/build/server/assets/{zstd-browser-decoder-Cd_DTxZV.js → zstd-browser-decoder-Bfk1d5vU.js} +1 -1
  22. package/build/server/index.js +3 -3
  23. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
1
+ import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BKGEyEYb.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-CrfHaTou.js";
1
+ import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-BKGEyEYb.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-CFAXloBw.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-CrfHaTou.js";
4
- import { L as LoaderCircle } from "./loader-circle-abAcDEYl.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";
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-CrfHaTou.js";
1
+ import { c as createLucideIcon } from "./mermaid-3ZIDBTTL-BKGEyEYb.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-e8qlLJiK.js","imports":["/assets/index-PFjW8YjQ.js","/assets/mermaid-3ZIDBTTL-CrfHaTou.js","/assets/loader-circle-abAcDEYl.js","/assets/arrow-up-right-AtCpRI70.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-BMHSjdeg.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-CFAXloBw.js","/assets/mermaid-3ZIDBTTL-CrfHaTou.js","/assets/loader-circle-abAcDEYl.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-CrWq-9Tk.js","imports":["/assets/index-PFjW8YjQ.js","/assets/workflow-graph-viewer-CFAXloBw.js","/assets/mermaid-3ZIDBTTL-CrfHaTou.js","/assets/arrow-up-right-AtCpRI70.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-a9a8ec99.js","version":"a9a8ec99"};
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,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-B9DmHkyE.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-BPRwlr7r.js"])))=>i.map(i=>d[i]);
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]);
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);
@@ -14826,11 +14826,98 @@ function date(params) {
14826
14826
  return /* @__PURE__ */ _coercedDate(ZodDate, params);
14827
14827
  }
14828
14828
  const RESERVED_ATTRIBUTE_KEY_PREFIX = "$";
14829
+ const ATTRIBUTE_KEY_MAX_LENGTH = 256;
14830
+ const ATTRIBUTE_VALUE_MAX_BYTES = 256;
14831
+ const ATTRIBUTE_MAX_PER_RUN = 64;
14832
+ new TextEncoder();
14833
+ class AttributeValidationError extends Error {
14834
+ constructor(message) {
14835
+ super(message);
14836
+ this.name = "AttributeValidationError";
14837
+ }
14838
+ }
14839
+ function attributeCountDelta(key, value, existingKeys) {
14840
+ if (value === null)
14841
+ return (existingKeys == null ? void 0 : existingKeys.has(key)) ? -1 : 0;
14842
+ return existingKeys === void 0 || !existingKeys.has(key) ? 1 : 0;
14843
+ }
14844
+ function validateAttributeBatchConstraints(changes, context = {}) {
14845
+ const seenKeys = /* @__PURE__ */ new Set();
14846
+ const existingKeys = context.existingKeys === void 0 ? void 0 : context.existingKeys instanceof Set ? context.existingKeys : new Set(context.existingKeys);
14847
+ let postMergeCount = (existingKeys == null ? void 0 : existingKeys.size) ?? 0;
14848
+ for (const { key, value } of changes) {
14849
+ if (seenKeys.has(key)) {
14850
+ throw new AttributeValidationError(`Attribute key ${JSON.stringify(key)} appears more than once in the same batch`);
14851
+ }
14852
+ seenKeys.add(key);
14853
+ postMergeCount += attributeCountDelta(key, value, existingKeys);
14854
+ }
14855
+ if (postMergeCount > ATTRIBUTE_MAX_PER_RUN) {
14856
+ throw new AttributeValidationError(`Run attribute count would exceed limit ${ATTRIBUTE_MAX_PER_RUN} (post-merge ${postMergeCount})`);
14857
+ }
14858
+ }
14859
+ const textEncoder$1 = new TextEncoder();
14860
+ const AttributeKeySchema = string$2().min(1, { error: "Attribute key must not be empty" }).max(ATTRIBUTE_KEY_MAX_LENGTH, {
14861
+ error: `Attribute key exceeds limit ${ATTRIBUTE_KEY_MAX_LENGTH}`
14862
+ });
14863
+ const AttributeValueSchema = string$2().refine((value) => textEncoder$1.encode(value).length <= ATTRIBUTE_VALUE_MAX_BYTES, {
14864
+ error: `Attribute value exceeds limit ${ATTRIBUTE_VALUE_MAX_BYTES} UTF-8 bytes`
14865
+ }).nullable();
14829
14866
  const AttributeChangeSchema = object({
14830
- key: string$2(),
14831
- value: union([string$2(), _null()])
14867
+ key: AttributeKeySchema,
14868
+ value: AttributeValueSchema
14869
+ });
14870
+ const AttributeChangesSchema = array(AttributeChangeSchema).superRefine((changes, context) => {
14871
+ try {
14872
+ validateAttributeBatchConstraints(changes);
14873
+ } catch (error) {
14874
+ if (!(error instanceof AttributeValidationError))
14875
+ throw error;
14876
+ context.addIssue({
14877
+ code: "custom",
14878
+ message: error.message,
14879
+ input: changes
14880
+ });
14881
+ }
14832
14882
  });
14833
- const AttributeChangesSchema = array(AttributeChangeSchema);
14883
+ function getOwnProperty$1(object2, key) {
14884
+ return Object.hasOwn(object2, key) ? object2[key] : void 0;
14885
+ }
14886
+ function isSealedNoopEvent(event) {
14887
+ return event.eventType === "noop";
14888
+ }
14889
+ const ENTITY_EVENT_CLASS_BY_TYPE = {
14890
+ step_created: "step_created",
14891
+ step_started: "step_started",
14892
+ step_retrying: "step_retrying",
14893
+ step_completed: "step_terminal",
14894
+ step_failed: "step_terminal",
14895
+ wait_created: "wait_created",
14896
+ wait_completed: "wait_completed",
14897
+ hook_created: "hook_created",
14898
+ hook_disposed: "hook_disposed",
14899
+ run_started: "run_started"
14900
+ };
14901
+ function entityEventClass(eventType) {
14902
+ return getOwnProperty$1(ENTITY_EVENT_CLASS_BY_TYPE, eventType);
14903
+ }
14904
+ const EVENT_DATA_REF_FIELDS_BY_EVENT_TYPE = {
14905
+ run_created: ["input"],
14906
+ run_started: ["input"],
14907
+ run_completed: ["output"],
14908
+ run_failed: ["error"],
14909
+ step_created: ["input"],
14910
+ step_started: ["input"],
14911
+ step_completed: ["result"],
14912
+ step_failed: ["error"],
14913
+ step_retrying: ["error"],
14914
+ hook_created: ["metadata"],
14915
+ hook_received: ["payload"]
14916
+ };
14917
+ const NO_EVENT_DATA_REF_FIELDS = [];
14918
+ function getEventDataRefFields(eventType) {
14919
+ return getOwnProperty$1(EVENT_DATA_REF_FIELDS_BY_EVENT_TYPE, eventType) ?? NO_EVENT_DATA_REF_FIELDS;
14920
+ }
14834
14921
  const BinarySerializedDataSchema = _instanceof(Uint8Array);
14835
14922
  const LegacySerializedDataSchemaV1 = any();
14836
14923
  const SerializedDataSchema = union([
@@ -14899,21 +14986,6 @@ const TERMINAL_STEP_EVENT_TYPES = TerminalStepEventTypeSchema.options;
14899
14986
  function isTerminalStepEventType(eventType) {
14900
14987
  return TERMINAL_STEP_EVENT_TYPES.includes(eventType);
14901
14988
  }
14902
- const ENTITY_EVENT_CLASS_BY_TYPE = {
14903
- step_created: "step_created",
14904
- step_started: "step_started",
14905
- step_retrying: "step_retrying",
14906
- step_completed: "step_terminal",
14907
- step_failed: "step_terminal",
14908
- wait_created: "wait_created",
14909
- wait_completed: "wait_completed",
14910
- hook_created: "hook_created",
14911
- hook_disposed: "hook_disposed",
14912
- run_started: "run_started"
14913
- };
14914
- function entityEventClass(eventType) {
14915
- return ENTITY_EVENT_CLASS_BY_TYPE[eventType];
14916
- }
14917
14989
  const HookLifecycleEventTypeSchema = EventTypeSchema.extract([
14918
14990
  "hook_created",
14919
14991
  "hook_received",
@@ -14936,32 +15008,12 @@ const WAIT_EVENT_TYPES = WaitEventTypeSchema.options;
14936
15008
  function isWaitEventType(eventType) {
14937
15009
  return WAIT_EVENT_TYPES.includes(eventType);
14938
15010
  }
14939
- function isSealedNoopEvent(event) {
14940
- return event.eventType === "noop";
14941
- }
14942
15011
  const ChildEntityCreationEventTypeSchema = EventTypeSchema.extract([
14943
15012
  "step_created",
14944
15013
  "hook_created",
14945
15014
  "wait_created"
14946
15015
  ]);
14947
15016
  ChildEntityCreationEventTypeSchema.options;
14948
- const EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE = {
14949
- run_created: "input",
14950
- run_started: "input",
14951
- run_completed: "output",
14952
- run_failed: "error",
14953
- step_created: "input",
14954
- step_started: "input",
14955
- step_completed: "result",
14956
- step_failed: "error",
14957
- step_retrying: "error",
14958
- hook_created: "metadata",
14959
- hook_received: "payload"
14960
- };
14961
- const EVENT_DATA_REF_FIELDS = Object.fromEntries(Object.entries(EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE).map(([eventType, field]) => [eventType, [field]]));
14962
- function getEventDataRefFields(eventType) {
14963
- return EVENT_DATA_REF_FIELDS[eventType] ?? [];
14964
- }
14965
15017
  const BaseEventSchema = object({
14966
15018
  eventType: EventTypeSchema,
14967
15019
  correlationId: string$2().optional(),
@@ -15705,7 +15757,10 @@ const HookResumeTimingSchema = object({
15705
15757
  resumeRequestedAtMs: number$3(),
15706
15758
  /** Epoch ms immediately before the queue publish was requested. */
15707
15759
  queuePublishRequestedAtMs: number$3(),
15708
- /** Which `resumeHook()` dispatch path ran: `parallel` or `sequential`. */
15760
+ /**
15761
+ * Which `resumeHook()` dispatch path ran: `lazy` or `sequential` (`parallel`
15762
+ * from producers predating lazy-only resume).
15763
+ */
15709
15764
  strategy: string$2().optional(),
15710
15765
  /** Epoch ms the final consumer's queue handler was entered. */
15711
15766
  consumerStartedAtMs: number$3().optional(),
@@ -15790,7 +15845,7 @@ const WorkflowInvokePayloadSchema = object({
15790
15845
  stepInput: StepDispatchInputSchema.optional(),
15791
15846
  /**
15792
15847
  * Hook-resume TTR timing. Present on both `resumeHook()` dispatch paths
15793
- * (unlike `hookInput`, which only rides the parallel fast path), and
15848
+ * (unlike `hookInput`, which only rides the lazy path), and
15794
15849
  * forwarded onto a dispatched step message when the resuming invocation
15795
15850
  * hands the next durable step to another invocation. Purely observational.
15796
15851
  * See {@link HookResumeTimingSchema}.
@@ -15838,8 +15893,8 @@ const HookResumeContextSchema = object({
15838
15893
  // Feature marker: the version of the lazy-hook-resume consumer protocol the
15839
15894
  // run's creating deployment supports. Present (>= 1) means that deployment's
15840
15895
  // `@workflow/core` re-ensures the `hook_received` event from the queue
15841
- // message's `hookInput` on replay, so `resumeHook()`'s parallel fast path is
15842
- // safe to use. Because a run is pinned to its creating deployment, this
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
15843
15898
  // marker is a reliable per-run attestation, unlike inferring support from a
15844
15899
  // version compare against a predicted release cutoff. Absent on runs created
15845
15900
  // before the marker existed (fall back to the sequential path).
@@ -15876,7 +15931,7 @@ object({
15876
15931
  // lookup: RESPONSE-ONLY and TRANSIENT. Never persisted on the hook entity
15877
15932
  // and never part of `resumeContext`, so a server rollback or kill switch
15878
15933
  // takes effect on the next lookup (the field stops appearing).
15879
- // `resumeHook()` gates its parallel fast path on this being present and
15934
+ // `resumeHook()` gates its lazy path on this being present and
15880
15935
  // current. Absent against an older/rolled-back server or when the kill switch
15881
15936
  // is active.
15882
15937
  resumeCapabilities: HookResumeCapabilitiesSchema.optional()
@@ -17584,7 +17639,7 @@ async function hydrateResourceIOAsync(resource, key) {
17584
17639
  return { hydrateDataWithKey: hydrateDataWithKey3, deriveRunPayloadKeys: deriveRunPayloadKeys3 };
17585
17640
  }, true ? void 0 : void 0);
17586
17641
  const { ensureZstdDecoderRegistered } = await __vitePreload(async () => {
17587
- const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-B9DmHkyE.js");
17642
+ const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-DafWVuEG.js");
17588
17643
  return { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 };
17589
17644
  }, true ? __vite__mapDeps([0,1]) : void 0);
17590
17645
  ensureZstdDecoderRegistered();
@@ -45180,7 +45235,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
45180
45235
  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 });
45181
45236
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
45182
45237
  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 }) });
45183
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-BPRwlr7r.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 }) => {
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 }) => {
45184
45239
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
45185
45240
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
45186
45241
  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 }) })] }) });
@@ -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-CrfHaTou.js";
3
- import { L as LoaderCircle } from "./loader-circle-abAcDEYl.js";
4
- import { A as ArrowUpRight } from "./arrow-up-right-AtCpRI70.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";
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) {
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, D as ReactDOM, d as useNavigate, e as useSearchParams, c as Link, w as withComponentProps, G as useParams } from "./index-PFjW8YjQ.js";
2
- import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-CFAXloBw.js";
3
- import { c as createLucideIcon, Y as entityEventClass, Z as isSealedNoopEvent$1, $ as cn, a0 as CopyableDataBlock, a1 as CollapsibleRoot, a2 as CollapsibleTrigger, a3 as CollapsibleContent, a4 as CopyButton, O as cva, a5 as RESERVED_ATTRIBUTE_KEY_PREFIX, a6 as Spinner, a7 as TooltipProvider, a8 as Tooltip, a9 as TooltipTrigger, aa as TooltipContent, ab as ContextCardProvider, h as useToast, ac as Skeleton, ad as DecryptClickContext, ae as Yr, af as isEncryptedMarker, m as ChevronRight, ag as TimestampTooltip, ah as formatDuration, C as Check, l as Copy, ai as DataInspector, aj as _r, ak as isHookLifecycleEventType, al as isTerminalStepEventType, am as isWaitEventType, an as isStepEventType, ao as RunClickContext, ap as StreamClickContext, aq as Collapsible, ar as isExpiredMarker, as as isDoStreamStep, at as extractConversation, au as EncryptedDataBlock, av as getEventDataRefFields, aw as hasEncryptedFields, ax as useSidebarDataOptional, ay as isTerminalWorkflowRunStatus, az as clsx, aA as useActiveSpan, aB as useSidebarData, aC as IconButton, J as ChevronDown, aD as useRowWindow, aE as isSpanDimmedBySearch, aF as ROW_HEIGHT_PX, aG as getSpanDurationMs, aH as isSpanErrored, aI as formatDurationPrecise, aJ as ActiveSpanProvider, aK as useReducedMotion, aL as searchSpans, aM as computeRootBounds, aN as computeTimeMarkers, aO as clampViewportToRoot, aP as getHighResInMs, aQ as scrollRowIntoView, aR as TIMELINE_PADDING_PX, aS as Minimap, aT as Timeline, aU as TimelineHeader, aV as wheelZoomScaleFactor, aW as wheelDeltaToPixels, aX as SidebarDataProvider, aY as fetchHook, n as fetchEvents, aZ as hydrateResourceIOAsync, N as fetchRun, a_ as fetchStep, a$ as hydrateResourceIO, b0 as fetchStreams, b1 as apiBase, b2 as Slot, L as useComposedRefs, b3 as Slottable, e as cn$1, b4 as buttonVariants, b5 as fetchEvent, b6 as fetchEventsByCorrelationId, b7 as isEncryptedData, b8 as hydrateData, b9 as decrypt, ba as deriveRunPayloadKeys, bb as getWebRevivers, T as Tooltip$1, a as TooltipTrigger$1, b as TooltipContent$1, bc as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, bd as getEncryptionKeyForRun, t as toast, be as StreamViewerSkeleton, bf as Lock, bg as StreamViewer } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
4
- import { A as ArrowUpRight } from "./arrow-up-right-AtCpRI70.js";
2
+ import { C as CircleAlert, O as parseStepName, B as parseWorkflowName, Q as ErrorCard, U as format, Z as Zap, S as Send, R as ResolveHookModal, q as ChevronUp, X, N as ErrorBoundary, V as Circle, u as unwrapOrThrow, W as WorkflowWebAPIError, I as unwrapServerActionResult, Y as useEscapeKeydown, t as composeEventHandlers, _ as useCallbackRef, $ as useLayoutEffect2, s as useControllableState, a0 as useId, a1 as createContext2, v as Presence, x as createContextScope, n as hideOthers, o as ReactRemoveScroll, a2 as useFocusGuards, a3 as LAYOUT, a4 as wakeUpRun, l as resumeHook, A as Alert, c as AlertTitle, g as getErrorTitle, d as AlertDescription, e as getErrorMessage, a as Skeleton$1, a5 as RunActionsButtons, F as StatusBadge, h as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, a6 as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-Du0ztkb8.js";
3
+ import { c as createLucideIcon, Y as entityEventClass, Z as isSealedNoopEvent$1, $ as cn, a0 as CopyableDataBlock, a1 as CollapsibleRoot, a2 as CollapsibleTrigger, a3 as CollapsibleContent, a4 as CopyButton, O as cva, a5 as RESERVED_ATTRIBUTE_KEY_PREFIX, a6 as Spinner, a7 as TooltipProvider, a8 as Tooltip, a9 as TooltipTrigger, aa as TooltipContent, ab as ContextCardProvider, h as useToast, ac as Skeleton, ad as DecryptClickContext, ae as Yr, af as isEncryptedMarker, m as ChevronRight, ag as TimestampTooltip, ah as formatDuration, C as Check, l as Copy, ai as DataInspector, aj as _r, ak as isHookLifecycleEventType, al as isTerminalStepEventType, am as isWaitEventType, an as isStepEventType, ao as RunClickContext, ap as StreamClickContext, aq as Collapsible, ar as isExpiredMarker, as as isDoStreamStep, at as extractConversation, au as EncryptedDataBlock, av as getEventDataRefFields, aw as hasEncryptedFields, ax as useSidebarDataOptional, ay as isTerminalWorkflowRunStatus, az as clsx, aA as useActiveSpan, aB as useSidebarData, aC as IconButton, J as ChevronDown, aD as useRowWindow, aE as isSpanDimmedBySearch, aF as ROW_HEIGHT_PX, aG as getSpanDurationMs, aH as isSpanErrored, aI as formatDurationPrecise, aJ as ActiveSpanProvider, aK as useReducedMotion, aL as searchSpans, aM as computeRootBounds, aN as computeTimeMarkers, aO as clampViewportToRoot, aP as getHighResInMs, aQ as scrollRowIntoView, aR as TIMELINE_PADDING_PX, aS as Minimap, aT as Timeline, aU as TimelineHeader, aV as wheelZoomScaleFactor, aW as wheelDeltaToPixels, aX as SidebarDataProvider, aY as fetchHook, n as fetchEvents, aZ as hydrateResourceIOAsync, N as fetchRun, a_ as fetchStep, a$ as hydrateResourceIO, b0 as fetchStreams, b1 as apiBase, b2 as Slot, L as useComposedRefs, b3 as Slottable, e as cn$1, b4 as buttonVariants, b5 as fetchEvent, b6 as fetchEventsByCorrelationId, b7 as isEncryptedData, b8 as hydrateData, b9 as decrypt, ba as deriveRunPayloadKeys, bb as getWebRevivers, T as Tooltip$1, a as TooltipTrigger$1, b as TooltipContent$1, bc as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, bd as getEncryptionKeyForRun, t as toast, be as StreamViewerSkeleton, bf as Lock, bg as StreamViewer } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
4
+ import { A as ArrowUpRight } from "./arrow-up-right-UOc2WcaC.js";
5
5
  /**
6
6
  * @license lucide-react v0.575.0 - ISC
7
7
  *
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { c as createLucideIcon, J as ChevronDown, $ as cn, e as cn$1, O as cva, bh as composeRefs, L as useComposedRefs, bi as useFloating, bj as offset, bk as shift, bl as limitShift, bm as flip, bn as size, bo as arrow, bp as hide, bq as autoUpdate, m as ChevronRight, C as Check, br as VERCEL_403_ERROR_MESSAGE, bs as bulkCancelRuns$1, bt as reenqueueRun$1, bu as wakeUpRun$1, bv as resumeHook$1, bw as fetchHookToken$1, bx as cancelRun$1, by as recreateRun$1, T as Tooltip, a as TooltipTrigger, l as Copy, b as TooltipContent, z as createContextScope$1, p as useComposedRefs$1, E as createSlot, ah as formatDuration, B as Button, t as toast, w as useId$1, P as Primitive$1, q as composeEventHandlers$1, G as useControllableState$1, o as useCallbackRef$2, U as Presence$1 } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
4
+ import { c as createLucideIcon, J as ChevronDown, $ as cn, e as cn$1, O as cva, bh as composeRefs, L as useComposedRefs, bi as useFloating, bj as offset, bk as shift, bl as limitShift, bm as flip, bn as size, bo as arrow, bp as hide, bq as autoUpdate, m as ChevronRight, C as Check, br as VERCEL_403_ERROR_MESSAGE, bs as bulkCancelRuns$1, bt as reenqueueRun$1, bu as wakeUpRun$1, bv as resumeHook$1, bw as fetchHookToken$1, bx as cancelRun$1, by as recreateRun$1, T as Tooltip, a as TooltipTrigger, l as Copy, b as TooltipContent, z as createContextScope$1, p as useComposedRefs$1, E as createSlot, ah as formatDuration, B as Button, t as toast, w as useId$1, P as Primitive$1, q as composeEventHandlers$1, G as useControllableState$1, o as useCallbackRef$2, U as Presence$1 } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
5
5
  import { r as reactExports, j as jsxRuntimeExports, o as reactDomExports, R as ReactExports, H as React, D as ReactDOM, f as requireReact, I as getDefaultExportFromCjs } from "./index-PFjW8YjQ.js";
6
6
  function parseName(tag, name) {
7
7
  if (typeof name !== "string") {
@@ -1,4 +1,4 @@
1
- import { r as registerZstdDecoder, _ as __vitePreload } from "./mermaid-3ZIDBTTL-CrfHaTou.js";
1
+ import { r as registerZstdDecoder, _ as __vitePreload } from "./mermaid-3ZIDBTTL-BKGEyEYb.js";
2
2
  import "./index-PFjW8YjQ.js";
3
3
  let registered = false;
4
4
  let modulePromise;