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

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 (21) hide show
  1. package/build/client/assets/{encryption-80GMP4r0.js → encryption-CEh0YXii.js} +4 -2
  2. package/build/client/assets/{entry.client-BWsSsWQm.js → entry.client-DtOpLtMQ.js} +1 -1
  3. package/build/client/assets/{highlighted-body-B3W2YXNL-B7T9pqeb.js → highlighted-body-B3W2YXNL-L1CrwoL_.js} +2 -2
  4. package/build/client/assets/{home-BIQJMe_Q.js → home-B6UmDDP6.js} +4 -3
  5. package/build/client/assets/index-B4xuge0I.js +249 -0
  6. package/build/client/assets/{index-DQa-BExo.js → index-BsV8i_Jn.js} +20 -20
  7. package/build/client/assets/manifest-e4c1c787.js +1 -0
  8. package/build/client/assets/{mermaid-3ZIDBTTL-w46Kr90n.js → mermaid-3ZIDBTTL-BQLU7GUr.js} +226 -46
  9. package/build/client/assets/{root-sXuXrryl.js → root-Yk3JVwUh.js} +2 -2
  10. package/build/client/assets/{run-detail-7Pj2mQLs.js → run-detail-DMUaWXhb.js} +35 -10
  11. package/build/client/assets/{workflow-graph-viewer-De9JQkZc.js → workflow-graph-viewer-yqeN-U_2.js} +3 -3
  12. package/build/server/assets/{app-CtOg8_v5.js → app-L1V62FgT.js} +1 -1
  13. package/build/server/assets/{highlighted-body-B3W2YXNL-uaucauLI.js → highlighted-body-B3W2YXNL-CZjJIpdD.js} +6 -7
  14. package/build/server/assets/{index-D02biwxV.js → index-BwtNigf1.js} +18 -20
  15. package/build/server/assets/{mermaid-3ZIDBTTL-DrZ5V6uv.js → mermaid-3ZIDBTTL-Cc8IPTBj.js} +6 -7
  16. package/build/server/assets/{server-build-DT0Hg0Yf.js → server-build-DtcOUEHS.js} +34405 -33782
  17. package/build/server/assets/{token-D7_Lld85.js → token-DHnArVm7.js} +2 -2
  18. package/build/server/assets/{token-util-CfY4anoc.js → token-util-B3uKeZ0s.js} +2 -2
  19. package/build/server/index.js +1 -1
  20. package/package.json +8 -7
  21. package/build/client/assets/manifest-77894282.js +0 -1
@@ -1,9 +1,11 @@
1
+ import { W as WorkflowRuntimeError } from "./index-B4xuge0I.js";
2
+ import "./index-BsV8i_Jn.js";
1
3
  const NONCE_LENGTH = 12;
2
4
  const TAG_LENGTH = 128;
3
5
  const KEY_LENGTH = 32;
4
6
  async function importKey(raw) {
5
7
  if (raw.byteLength !== KEY_LENGTH) {
6
- throw new Error(`Encryption key must be exactly ${KEY_LENGTH} bytes, got ${raw.byteLength}`);
8
+ throw new WorkflowRuntimeError(`Encryption key must be exactly ${KEY_LENGTH} bytes, got ${raw.byteLength}`);
7
9
  }
8
10
  return globalThis.crypto.subtle.importKey("raw", raw, "AES-GCM", false, [
9
11
  "encrypt",
@@ -13,7 +15,7 @@ async function importKey(raw) {
13
15
  async function decrypt(key, data) {
14
16
  const minLength = NONCE_LENGTH + TAG_LENGTH / 8;
15
17
  if (data.byteLength < minLength) {
16
- throw new Error(`Encrypted data too short: expected at least ${minLength} bytes, got ${data.byteLength}`);
18
+ throw new WorkflowRuntimeError(`Encrypted data too short: expected at least ${minLength} bytes, got ${data.byteLength}`);
17
19
  }
18
20
  const nonce = data.subarray(0, NONCE_LENGTH);
19
21
  const ciphertext = data.subarray(NONCE_LENGTH);
@@ -1,4 +1,4 @@
1
- import { a as requireReact, b as requireReactDom, m as matchRoutes, s as shouldHydrateRouteLoader, E as ErrorResponseImpl, N as NO_BODY_STATUS_CODES, R as ReactExports, i as isRouteErrorResponse, r as reactExports, c as invariant, u as useFogOFWarDiscovery, F as FrameworkContext, d as RemixErrorBoundary, e as RouterProvider, f as reactDomExports, g as decodeViaTurboStream, h as createClientRoutes, k as createRouter, l as getPatchRoutesOnNavigationFunction, n as getTurboStreamSingleFetchDataStrategy, o as createBrowserHistory, p as createClientRoutesWithHMRRevalidationOptOut, q as mapRouteProperties, t as hydrationRouteProperties, j as jsxRuntimeExports } from "./index-DQa-BExo.js";
1
+ import { a as requireReact, b as requireReactDom, m as matchRoutes, s as shouldHydrateRouteLoader, E as ErrorResponseImpl, N as NO_BODY_STATUS_CODES, R as ReactExports, i as isRouteErrorResponse, r as reactExports, c as invariant, u as useFogOFWarDiscovery, F as FrameworkContext, d as RemixErrorBoundary, e as RouterProvider, f as reactDomExports, h as decodeViaTurboStream, k as createClientRoutes, l as createRouter, n as getPatchRoutesOnNavigationFunction, o as getTurboStreamSingleFetchDataStrategy, p as createBrowserHistory, q as createClientRoutesWithHMRRevalidationOptOut, t as mapRouteProperties, v as hydrationRouteProperties, j as jsxRuntimeExports } from "./index-BsV8i_Jn.js";
2
2
  var client = { exports: {} };
3
3
  var reactDomClient_production = {};
4
4
  var scheduler = { exports: {} };
@@ -1,5 +1,5 @@
1
- import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-w46Kr90n.js";
2
- import { r as reactExports, j as jsxRuntimeExports } from "./index-DQa-BExo.js";
1
+ import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-BQLU7GUr.js";
2
+ import { r as reactExports, j as jsxRuntimeExports } from "./index-BsV8i_Jn.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);
5
5
  return reactExports.useEffect(() => {
@@ -1,6 +1,7 @@
1
- import { r as reactExports, C as ReactDOM, j as jsxRuntimeExports, z as Link, f as reactDomExports, B as useSearchParams, A as useNavigate, D as useLocation, w as withComponentProps } from "./index-DQa-BExo.js";
2
- import { R as ResolveHookModal, S as Send, a as Skeleton, u as unwrapOrThrow, W as WorkflowWebAPIError, b as RelativeTime, A as Alert, C as CircleAlert, c as AlertTitle, d as AlertDescription, g as getErrorMessage, e as CopyableText, D as DropdownMenu, f as DropdownMenuTrigger, E as Ellipsis, h as DropdownMenuContent, i as DropdownMenuItem, j as ChevronRight, r as resumeHook, k as createCollection, l as hideOthers, m as ReactRemoveScroll, n as useDirection, o as ChevronDown, p as Check, X, q as useControllableState$1, P as Primitive$1, s as composeEventHandlers$1, t as Presence, v as useSize, w as createContextScope$1, x as cancelRun, y as reenqueueRun, z as parseWorkflowName, B as StatusBadge, Z as Zap, F as CircleX, G as RunActionsDropdownItems, H as unwrapServerActionResult, I as WorkflowGraphViewer, T as Tabs, J as TabsList, K as TabsTrigger, L as TabsContent, M as ErrorBoundary } from "./workflow-graph-viewer-De9JQkZc.js";
3
- import { g as useLayoutEffect2, P as Primitive, c as createLucideIcon, h as useToast, d as cn, D as DEFAULT_PAGE_SIZE, i as fetchRuns, j as fetchHooks, k as getPaginationDisplay, T as Tooltip, a as TooltipTrigger, B as Button, b as TooltipContent, l as fetchEvents, m as useCallbackRef, n as useComposedRefs, A as Anchor, o as composeEventHandlers, p as useId, q as createPopperScope, s as DismissableLayer, v as createContextScope, w as createSlot, C as Content$1, x as useControllableState, y as Root2$1, V as VISUALLY_HIDDEN_STYLES, z as Arrow, E as useComposedRefs$1, u as useServerConfig, t as toast, L as LoaderCircle, F as fetchRun, G as cva, H as Presence$1, I as createContext2, J as fetchWorkflowsManifest } from "./mermaid-3ZIDBTTL-w46Kr90n.js";
1
+ import { r as reactExports, D as ReactDOM, j as jsxRuntimeExports, A as Link, f as reactDomExports, C as useSearchParams, B as useNavigate, G as useLocation, w as withComponentProps } from "./index-BsV8i_Jn.js";
2
+ import { R as ResolveHookModal, S as Send, a as Skeleton, u as unwrapOrThrow, W as WorkflowWebAPIError, b as RelativeTime, A as Alert, C as CircleAlert, c as AlertTitle, d as AlertDescription, g as getErrorMessage, e as CopyableText, D as DropdownMenu, f as DropdownMenuTrigger, E as Ellipsis, h as DropdownMenuContent, i as DropdownMenuItem, j as ChevronRight, r as resumeHook, k as createCollection, l as hideOthers, m as ReactRemoveScroll, n as useDirection, o as ChevronDown, p as Check, X, q as useControllableState$1, P as Primitive$1, s as composeEventHandlers$1, t as Presence, v as useSize, w as createContextScope$1, x as cancelRun, y as reenqueueRun, z as parseWorkflowName, B as StatusBadge, Z as Zap, F as CircleX, G as RunActionsDropdownItems, H as unwrapServerActionResult, I as WorkflowGraphViewer, T as Tabs, J as TabsList, K as TabsTrigger, L as TabsContent, M as ErrorBoundary } from "./workflow-graph-viewer-yqeN-U_2.js";
3
+ import { g as useLayoutEffect2, P as Primitive, c as createLucideIcon, h as useToast, d as cn, D as DEFAULT_PAGE_SIZE, i as fetchRuns, j as fetchHooks, k as getPaginationDisplay, T as Tooltip, a as TooltipTrigger, B as Button, b as TooltipContent, l as fetchEvents, m as useCallbackRef, n as useComposedRefs, A as Anchor, o as composeEventHandlers, p as useId, q as createPopperScope, s as DismissableLayer, v as createContextScope, w as createSlot, C as Content$1, x as useControllableState, y as Root2$1, V as VISUALLY_HIDDEN_STYLES, z as Arrow, E as useComposedRefs$1, u as useServerConfig, t as toast, L as LoaderCircle, F as fetchRun, G as cva, H as Presence$1, I as createContext2, J as fetchWorkflowsManifest } from "./mermaid-3ZIDBTTL-BQLU7GUr.js";
4
+ import "./index-B4xuge0I.js";
4
5
  var PORTAL_NAME$2 = "Portal";
5
6
  var Portal$2 = reactExports.forwardRef((props, forwardedRef) => {
6
7
  var _a;
@@ -0,0 +1,249 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { g as getDefaultExportFromCjs } from "./index-BsV8i_Jn.js";
5
+ var ms$1;
6
+ var hasRequiredMs;
7
+ function requireMs() {
8
+ if (hasRequiredMs) return ms$1;
9
+ hasRequiredMs = 1;
10
+ var s = 1e3;
11
+ var m = s * 60;
12
+ var h = m * 60;
13
+ var d = h * 24;
14
+ var w = d * 7;
15
+ var y = d * 365.25;
16
+ ms$1 = function(val, options) {
17
+ options = options || {};
18
+ var type = typeof val;
19
+ if (type === "string" && val.length > 0) {
20
+ return parse(val);
21
+ } else if (type === "number" && isFinite(val)) {
22
+ return options.long ? fmtLong(val) : fmtShort(val);
23
+ }
24
+ throw new Error(
25
+ "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
26
+ );
27
+ };
28
+ function parse(str) {
29
+ str = String(str);
30
+ if (str.length > 100) {
31
+ return;
32
+ }
33
+ var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
34
+ str
35
+ );
36
+ if (!match) {
37
+ return;
38
+ }
39
+ var n = parseFloat(match[1]);
40
+ var type = (match[2] || "ms").toLowerCase();
41
+ switch (type) {
42
+ case "years":
43
+ case "year":
44
+ case "yrs":
45
+ case "yr":
46
+ case "y":
47
+ return n * y;
48
+ case "weeks":
49
+ case "week":
50
+ case "w":
51
+ return n * w;
52
+ case "days":
53
+ case "day":
54
+ case "d":
55
+ return n * d;
56
+ case "hours":
57
+ case "hour":
58
+ case "hrs":
59
+ case "hr":
60
+ case "h":
61
+ return n * h;
62
+ case "minutes":
63
+ case "minute":
64
+ case "mins":
65
+ case "min":
66
+ case "m":
67
+ return n * m;
68
+ case "seconds":
69
+ case "second":
70
+ case "secs":
71
+ case "sec":
72
+ case "s":
73
+ return n * s;
74
+ case "milliseconds":
75
+ case "millisecond":
76
+ case "msecs":
77
+ case "msec":
78
+ case "ms":
79
+ return n;
80
+ default:
81
+ return void 0;
82
+ }
83
+ }
84
+ function fmtShort(ms2) {
85
+ var msAbs = Math.abs(ms2);
86
+ if (msAbs >= d) {
87
+ return Math.round(ms2 / d) + "d";
88
+ }
89
+ if (msAbs >= h) {
90
+ return Math.round(ms2 / h) + "h";
91
+ }
92
+ if (msAbs >= m) {
93
+ return Math.round(ms2 / m) + "m";
94
+ }
95
+ if (msAbs >= s) {
96
+ return Math.round(ms2 / s) + "s";
97
+ }
98
+ return ms2 + "ms";
99
+ }
100
+ function fmtLong(ms2) {
101
+ var msAbs = Math.abs(ms2);
102
+ if (msAbs >= d) {
103
+ return plural(ms2, msAbs, d, "day");
104
+ }
105
+ if (msAbs >= h) {
106
+ return plural(ms2, msAbs, h, "hour");
107
+ }
108
+ if (msAbs >= m) {
109
+ return plural(ms2, msAbs, m, "minute");
110
+ }
111
+ if (msAbs >= s) {
112
+ return plural(ms2, msAbs, s, "second");
113
+ }
114
+ return ms2 + " ms";
115
+ }
116
+ function plural(ms2, msAbs, n, name) {
117
+ var isPlural = msAbs >= n * 1.5;
118
+ return Math.round(ms2 / n) + " " + name + (isPlural ? "s" : "");
119
+ }
120
+ return ms$1;
121
+ }
122
+ var msExports = requireMs();
123
+ const ms = /* @__PURE__ */ getDefaultExportFromCjs(msExports);
124
+ function parseDurationToDate(param) {
125
+ if (typeof param === "string") {
126
+ const durationMs = ms(param);
127
+ if (typeof durationMs !== "number" || durationMs < 0) {
128
+ throw new Error(`Invalid duration: "${param}". Expected a valid duration string like "1s", "1m", "1h", etc.`);
129
+ }
130
+ return new Date(Date.now() + durationMs);
131
+ } else if (typeof param === "number") {
132
+ if (param < 0 || !Number.isFinite(param)) {
133
+ throw new Error(`Invalid duration: ${param}. Expected a non-negative finite number of milliseconds.`);
134
+ }
135
+ return new Date(Date.now() + param);
136
+ } else if (param instanceof Date || param && typeof param === "object" && typeof param.getTime === "function") {
137
+ return param instanceof Date ? param : new Date(param.getTime());
138
+ } else {
139
+ throw new Error(`Invalid duration parameter. Expected a duration string, number (milliseconds), or Date object.`);
140
+ }
141
+ }
142
+ const BASE_URL = "https://workflow-sdk.dev/err";
143
+ function isError(value) {
144
+ return typeof value === "object" && value !== null && "name" in value && "message" in value;
145
+ }
146
+ function appendFramedDetails(title, details) {
147
+ if (details.length === 0)
148
+ return title;
149
+ const lines = [title];
150
+ details.forEach((detail, index) => {
151
+ const isLast = index === details.length - 1;
152
+ const head = isLast ? "╰▶ " : "├▶ ";
153
+ const cont = isLast ? " " : "│ ";
154
+ const text = `${detail.label}: ${detail.value}`;
155
+ text.split("\n").forEach((line, i) => lines.push(`${i === 0 ? head : cont}${line}`));
156
+ });
157
+ return lines.join("\n");
158
+ }
159
+ function buildFramedDetails(hint, slug) {
160
+ const out = [];
161
+ if (slug)
162
+ out.push({ label: "docs", value: `${BASE_URL}/${slug}` });
163
+ return out;
164
+ }
165
+ class WorkflowError extends Error {
166
+ constructor(message, options) {
167
+ const msgDocs = appendFramedDetails(message, buildFramedDetails(void 0, options == null ? void 0 : options.slug));
168
+ super(msgDocs, { cause: options == null ? void 0 : options.cause });
169
+ __publicField(this, "cause");
170
+ if ((options == null ? void 0 : options.cause) !== void 0) {
171
+ this.cause = options.cause;
172
+ }
173
+ if ((options == null ? void 0 : options.cause) instanceof Error) {
174
+ this.stack = `${this.stack}
175
+ Caused by: ${options.cause.stack}`;
176
+ }
177
+ }
178
+ static is(value) {
179
+ return isError(value) && value.name === "WorkflowError";
180
+ }
181
+ }
182
+ class WorkflowRuntimeError extends WorkflowError {
183
+ constructor(message, options) {
184
+ super(message, {
185
+ ...options
186
+ });
187
+ this.name = "WorkflowRuntimeError";
188
+ }
189
+ static is(value) {
190
+ return isError(value) && value.name === "WorkflowRuntimeError";
191
+ }
192
+ }
193
+ class FatalError extends Error {
194
+ constructor(message) {
195
+ super(message);
196
+ __publicField(this, "fatal", true);
197
+ this.name = "FatalError";
198
+ }
199
+ static is(value) {
200
+ if (!isError(value))
201
+ return false;
202
+ if (value.name === "FatalError")
203
+ return true;
204
+ return value.fatal === true;
205
+ }
206
+ }
207
+ class RetryableError extends Error {
208
+ constructor(message, options = {}) {
209
+ super(message);
210
+ /**
211
+ * The Date when the step should be retried.
212
+ */
213
+ __publicField(this, "retryAfter");
214
+ this.name = "RetryableError";
215
+ if (options.retryAfter !== void 0) {
216
+ this.retryAfter = parseDurationToDate(options.retryAfter);
217
+ } else {
218
+ this.retryAfter = new Date(Date.now() + 1e3);
219
+ }
220
+ }
221
+ static is(value) {
222
+ return isError(value) && value.name === "RetryableError";
223
+ }
224
+ }
225
+ const VERCEL_403_ERROR_MESSAGE = "Your current vercel account does not have access to this resource. Use `vercel login` or `vercel switch` to ensure you are linked to the right account.";
226
+ const FATAL_ERROR_KEY = Symbol.for("@workflow/errors//FatalError");
227
+ const RETRYABLE_ERROR_KEY = Symbol.for("@workflow/errors//RetryableError");
228
+ if (typeof globalThis !== "undefined") {
229
+ if (!Object.hasOwn(globalThis, FATAL_ERROR_KEY)) {
230
+ Object.defineProperty(globalThis, FATAL_ERROR_KEY, {
231
+ value: FatalError,
232
+ writable: false,
233
+ enumerable: false,
234
+ configurable: false
235
+ });
236
+ }
237
+ if (!Object.hasOwn(globalThis, RETRYABLE_ERROR_KEY)) {
238
+ Object.defineProperty(globalThis, RETRYABLE_ERROR_KEY, {
239
+ value: RetryableError,
240
+ writable: false,
241
+ enumerable: false,
242
+ configurable: false
243
+ });
244
+ }
245
+ }
246
+ export {
247
+ VERCEL_403_ERROR_MESSAGE as V,
248
+ WorkflowRuntimeError as W
249
+ };
@@ -9388,15 +9388,15 @@ function useViewTransitionState(to, { relative } = {}) {
9388
9388
  var reactDomExports = requireReactDom();
9389
9389
  const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(reactDomExports);
9390
9390
  export {
9391
- useNavigate as A,
9392
- useSearchParams as B,
9393
- ReactDOM as C,
9394
- useLocation as D,
9391
+ Link as A,
9392
+ useNavigate as B,
9393
+ useSearchParams as C,
9394
+ ReactDOM as D,
9395
9395
  ErrorResponseImpl as E,
9396
9396
  FrameworkContext as F,
9397
- useParams as G,
9398
- React as H,
9399
- getDefaultExportFromCjs as I,
9397
+ useLocation as G,
9398
+ useParams as H,
9399
+ React as I,
9400
9400
  Links as L,
9401
9401
  Meta as M,
9402
9402
  NO_BODY_STATUS_CODES as N,
@@ -9409,24 +9409,24 @@ export {
9409
9409
  RemixErrorBoundary as d,
9410
9410
  RouterProvider as e,
9411
9411
  reactDomExports as f,
9412
- decodeViaTurboStream as g,
9413
- createClientRoutes as h,
9412
+ getDefaultExportFromCjs as g,
9413
+ decodeViaTurboStream as h,
9414
9414
  isRouteErrorResponse as i,
9415
9415
  jsxRuntimeExports as j,
9416
- createRouter as k,
9417
- getPatchRoutesOnNavigationFunction as l,
9416
+ createClientRoutes as k,
9417
+ createRouter as l,
9418
9418
  matchRoutes as m,
9419
- getTurboStreamSingleFetchDataStrategy as n,
9420
- createBrowserHistory as o,
9421
- createClientRoutesWithHMRRevalidationOptOut as p,
9422
- mapRouteProperties as q,
9419
+ getPatchRoutesOnNavigationFunction as n,
9420
+ getTurboStreamSingleFetchDataStrategy as o,
9421
+ createBrowserHistory as p,
9422
+ createClientRoutesWithHMRRevalidationOptOut as q,
9423
9423
  reactExports as r,
9424
9424
  shouldHydrateRouteLoader as s,
9425
- hydrationRouteProperties as t,
9425
+ mapRouteProperties as t,
9426
9426
  useFogOFWarDiscovery as u,
9427
- withErrorBoundaryProps as v,
9427
+ hydrationRouteProperties as v,
9428
9428
  withComponentProps as w,
9429
- Scripts as x,
9430
- useRouteError as y,
9431
- Link as z
9429
+ withErrorBoundaryProps as x,
9430
+ Scripts as y,
9431
+ useRouteError as z
9432
9432
  };
@@ -0,0 +1 @@
1
+ window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-DtOpLtMQ.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-Yk3JVwUh.js","imports":["/assets/index-BsV8i_Jn.js","/assets/mermaid-3ZIDBTTL-BQLU7GUr.js"],"css":["/assets/root-C0Tu5TVN.css","/assets/mermaid-3ZIDBTTL-DKxHcEOp.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-B6UmDDP6.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-yqeN-U_2.js","/assets/mermaid-3ZIDBTTL-BQLU7GUr.js","/assets/index-B4xuge0I.js"],"css":["/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"]},"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-DMUaWXhb.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-yqeN-U_2.js","/assets/mermaid-3ZIDBTTL-BQLU7GUr.js","/assets/encryption-CEh0YXii.js","/assets/index-B4xuge0I.js"],"css":["/assets/workflow-graph-viewer-DnlNuQQH.css","/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"]},"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-e4c1c787.js","version":"e4c1c787"};