@workflow/web 4.1.24 → 4.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-Bp6ZST9_.js";
1
+ import { R, K as Ks, Q as Qe } from "./mermaid-3ZIDBTTL-871SHrja.js";
2
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);
@@ -1,6 +1,6 @@
1
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 ChevronUp, q as Check, 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 cancelRun, 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-C6PWoIIU.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-Bp6ZST9_.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 ChevronUp, q as Check, 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 cancelRun, 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-C1On-L19.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-871SHrja.js";
4
4
  import "./index-DZSXezpI.js";
5
5
  var PORTAL_NAME$2 = "Portal";
6
6
  var Portal$2 = reactExports.forwardRef((props, forwardedRef) => {
@@ -1 +1 @@
1
- window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C_C46bD6.js","imports":["/assets/index-BsV8i_Jn.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-BxnaECGo.js","imports":["/assets/index-BsV8i_Jn.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"],"css":["/assets/root-BOS11TzD.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/home":{"id":"routes/home","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/home-Blj6TeEE.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/run-detail":{"id":"routes/run-detail","parentId":"root","path":"run/:runId","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/run-detail-DivTczoC.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C6PWoIIU.js","/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js","/assets/encryption-BRhjWsZh.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/api.rpc":{"id":"routes/api.rpc","parentId":"root","path":"api/rpc","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.rpc-l0sNRNKZ.js","imports":[],"css":[]},"routes/api.stream.$streamId":{"id":"routes/api.stream.$streamId","parentId":"root","path":"api/stream/:streamId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.stream._streamId-l0sNRNKZ.js","imports":[],"css":[]}},"url":"/assets/manifest-7bf3847b.js","version":"7bf3847b"};
1
+ window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-C_C46bD6.js","imports":["/assets/index-BsV8i_Jn.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":true,"module":"/assets/root-8dRSI2dZ.js","imports":["/assets/index-BsV8i_Jn.js","/assets/mermaid-3ZIDBTTL-871SHrja.js"],"css":["/assets/root-BOS11TzD.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/home":{"id":"routes/home","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/home-CWZI6fn-.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C1On-L19.js","/assets/mermaid-3ZIDBTTL-871SHrja.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/run-detail":{"id":"routes/run-detail","parentId":"root","path":"run/:runId","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":true,"hasErrorBoundary":false,"module":"/assets/run-detail-CaG8UDwA.js","imports":["/assets/index-BsV8i_Jn.js","/assets/workflow-graph-viewer-C1On-L19.js","/assets/mermaid-3ZIDBTTL-871SHrja.js","/assets/encryption-BRhjWsZh.js","/assets/index-DZSXezpI.js"],"css":["/assets/workflow-graph-viewer-yls6qlc0.css","/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"]},"routes/api.rpc":{"id":"routes/api.rpc","parentId":"root","path":"api/rpc","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.rpc-l0sNRNKZ.js","imports":[],"css":[]},"routes/api.stream.$streamId":{"id":"routes/api.stream.$streamId","parentId":"root","path":"api/stream/:streamId","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasDefaultExport":false,"hasErrorBoundary":false,"module":"/assets/api.stream._streamId-l0sNRNKZ.js","imports":[],"css":[]}},"url":"/assets/manifest-25c2e662.js","version":"25c2e662"};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/encryption-BRhjWsZh.js","assets/index-DZSXezpI.js","assets/index-BsV8i_Jn.js","assets/highlighted-body-B3W2YXNL-Bt3a5JLE.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/encryption-BRhjWsZh.js","assets/index-DZSXezpI.js","assets/index-BsV8i_Jn.js","assets/highlighted-body-B3W2YXNL-BRVsq_Ui.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);
@@ -10155,10 +10155,55 @@ function decode_legacy(base642) {
10155
10155
  const native = typeof Uint8Array.fromBase64 === "function";
10156
10156
  const buffer = typeof process === "object" && ((_a2 = process.versions) == null ? void 0 : _a2.node) !== void 0;
10157
10157
  const decode64 = native ? decode_native : buffer ? decode_buffer : decode_legacy;
10158
- function parse$4(serialized, revivers) {
10158
+ function merge_operations(defaults, overrides) {
10159
+ return defaults;
10160
+ }
10161
+ const parse_operations = {
10162
+ fromPrimitive: (primitive) => primitive,
10163
+ fromISOString: (iso) => new Date(iso),
10164
+ fromStringValue: (tag, text2) => {
10165
+ if (tag === "URL") return new URL(text2);
10166
+ if (tag === "URLSearchParams") return new URLSearchParams(text2);
10167
+ return Temporal[tag.slice(9)].from(text2);
10168
+ },
10169
+ fromArrayBuffer: (buffer2) => buffer2,
10170
+ fromRegExpInfo: (source, flags) => new RegExp(source, flags),
10171
+ fromViewInfo: (tag, buffer2, byteOffset, length) => {
10172
+ const Constructor = (
10173
+ /** @type {any} */
10174
+ globalThis[tag]
10175
+ );
10176
+ return byteOffset !== void 0 ? new Constructor(buffer2, byteOffset, length) : new Constructor(buffer2);
10177
+ },
10178
+ box: (value) => Object(value),
10179
+ createArray: (length) => new Array(length),
10180
+ createSparseArray: (length) => {
10181
+ const array2 = [];
10182
+ array2[MAX_ARRAY_INDEX] = void 0;
10183
+ delete array2[MAX_ARRAY_INDEX];
10184
+ array2.length = length;
10185
+ return array2;
10186
+ },
10187
+ createObject: () => ({}),
10188
+ createNullPrototypeObject: () => /* @__PURE__ */ Object.create(null),
10189
+ createSet: () => /* @__PURE__ */ new Set(),
10190
+ createMap: () => /* @__PURE__ */ new Map(),
10191
+ set: (target2, key, value) => {
10192
+ target2[key] = value;
10193
+ },
10194
+ addValue: (set, value) => {
10195
+ set.add(value);
10196
+ },
10197
+ addEntry: (map2, key, value) => {
10198
+ map2.set(key, value);
10199
+ }
10200
+ };
10201
+ const default_parse_operations = Object.freeze(parse_operations);
10202
+ function parse$4(serialized, revivers, options) {
10159
10203
  return unflatten(JSON.parse(serialized), revivers);
10160
10204
  }
10161
- function unflatten(parsed, revivers) {
10205
+ function unflatten(parsed, revivers, options) {
10206
+ const ops = merge_operations(default_parse_operations);
10162
10207
  if (typeof parsed === "number") return hydrate(parsed, true);
10163
10208
  if (!Array.isArray(parsed) || parsed.length === 0) {
10164
10209
  throw new Error("Invalid input");
@@ -10170,18 +10215,21 @@ function unflatten(parsed, revivers) {
10170
10215
  const hydrated = Array(values.length);
10171
10216
  let hydrating = null;
10172
10217
  function hydrate(index2, standalone = false) {
10173
- if (index2 === UNDEFINED) return void 0;
10174
- if (index2 === NAN) return NaN;
10175
- if (index2 === POSITIVE_INFINITY) return Infinity;
10176
- if (index2 === NEGATIVE_INFINITY) return -Infinity;
10177
- if (index2 === NEGATIVE_ZERO) return -0;
10218
+ if (index2 === UNDEFINED) return ops.fromPrimitive(void 0);
10219
+ if (index2 === NAN) return ops.fromPrimitive(NaN);
10220
+ if (index2 === POSITIVE_INFINITY) return ops.fromPrimitive(Infinity);
10221
+ if (index2 === NEGATIVE_INFINITY) return ops.fromPrimitive(-Infinity);
10222
+ if (index2 === NEGATIVE_ZERO) return ops.fromPrimitive(-0);
10178
10223
  if (standalone || typeof index2 !== "number") {
10179
10224
  throw new Error(`Invalid input`);
10180
10225
  }
10181
10226
  if (index2 in hydrated) return hydrated[index2];
10227
+ if (index2 >= values.length) {
10228
+ throw new Error(`Invalid input`);
10229
+ }
10182
10230
  const value = values[index2];
10183
10231
  if (!value || typeof value !== "object") {
10184
- hydrated[index2] = value;
10232
+ hydrated[index2] = ops.fromPrimitive(value);
10185
10233
  } else if (Array.isArray(value)) {
10186
10234
  if (typeof value[0] === "string") {
10187
10235
  const type = value[0];
@@ -10191,6 +10239,9 @@ function unflatten(parsed, revivers) {
10191
10239
  if (typeof i !== "number") {
10192
10240
  i = values.push(value[1]) - 1;
10193
10241
  }
10242
+ if (Object.hasOwn(hydrated, i)) {
10243
+ return hydrated[index2] = reviver(hydrated[i]);
10244
+ }
10194
10245
  hydrating ?? (hydrating = /* @__PURE__ */ new Set());
10195
10246
  if (hydrating.has(i)) {
10196
10247
  throw new Error("Invalid circular reference");
@@ -10202,44 +10253,44 @@ function unflatten(parsed, revivers) {
10202
10253
  }
10203
10254
  switch (type) {
10204
10255
  case "Date":
10205
- hydrated[index2] = new Date(value[1]);
10256
+ hydrated[index2] = ops.fromISOString(value[1]);
10206
10257
  break;
10207
10258
  case "Set":
10208
- const set = /* @__PURE__ */ new Set();
10259
+ const set = ops.createSet();
10209
10260
  hydrated[index2] = set;
10210
10261
  for (let i = 1; i < value.length; i += 1) {
10211
- set.add(hydrate(value[i]));
10262
+ ops.addValue(set, hydrate(value[i]));
10212
10263
  }
10213
10264
  break;
10214
10265
  case "Map":
10215
- const map2 = /* @__PURE__ */ new Map();
10266
+ const map2 = ops.createMap();
10216
10267
  hydrated[index2] = map2;
10217
10268
  for (let i = 1; i < value.length; i += 2) {
10218
- map2.set(hydrate(value[i]), hydrate(value[i + 1]));
10269
+ ops.addEntry(map2, hydrate(value[i]), hydrate(value[i + 1]));
10219
10270
  }
10220
10271
  break;
10221
10272
  case "RegExp":
10222
- hydrated[index2] = new RegExp(value[1], value[2]);
10273
+ hydrated[index2] = ops.fromRegExpInfo(value[1], value[2]);
10223
10274
  break;
10224
10275
  case "Object": {
10225
10276
  const wrapped_index = value[1];
10226
10277
  if (typeof values[wrapped_index] === "object" && values[wrapped_index][0] !== "BigInt") {
10227
10278
  throw new Error("Invalid input");
10228
10279
  }
10229
- hydrated[index2] = Object(hydrate(wrapped_index));
10280
+ hydrated[index2] = ops.box(hydrate(wrapped_index));
10230
10281
  break;
10231
10282
  }
10232
10283
  case "BigInt":
10233
- hydrated[index2] = BigInt(value[1]);
10284
+ hydrated[index2] = ops.fromPrimitive(BigInt(value[1]));
10234
10285
  break;
10235
10286
  case "null":
10236
- const obj = /* @__PURE__ */ Object.create(null);
10287
+ const obj = ops.createNullPrototypeObject();
10237
10288
  hydrated[index2] = obj;
10238
10289
  for (let i = 1; i < value.length; i += 2) {
10239
10290
  if (value[i] === "__proto__") {
10240
10291
  throw new Error("Cannot parse an object with a `__proto__` property");
10241
10292
  }
10242
- obj[value[i]] = hydrate(value[i + 1]);
10293
+ ops.set(obj, value[i], hydrate(value[i + 1]));
10243
10294
  }
10244
10295
  break;
10245
10296
  case "Int8Array":
@@ -10258,9 +10309,8 @@ function unflatten(parsed, revivers) {
10258
10309
  if (values[value[1]][0] !== "ArrayBuffer") {
10259
10310
  throw new Error("Invalid data");
10260
10311
  }
10261
- const TypedArrayConstructor = globalThis[type];
10262
10312
  const buffer2 = hydrate(value[1]);
10263
- hydrated[index2] = value[2] !== void 0 ? new TypedArrayConstructor(buffer2, value[2], value[3]) : new TypedArrayConstructor(buffer2);
10313
+ hydrated[index2] = ops.fromViewInfo(type, buffer2, value[2], value[3]);
10264
10314
  break;
10265
10315
  }
10266
10316
  case "ArrayBuffer": {
@@ -10268,10 +10318,11 @@ function unflatten(parsed, revivers) {
10268
10318
  if (typeof base642 !== "string") {
10269
10319
  throw new Error("Invalid ArrayBuffer encoding");
10270
10320
  }
10271
- const arraybuffer = decode64(base642);
10272
- hydrated[index2] = arraybuffer;
10321
+ hydrated[index2] = ops.fromArrayBuffer(decode64(base642));
10273
10322
  break;
10274
10323
  }
10324
+ case "URL":
10325
+ case "URLSearchParams":
10275
10326
  case "Temporal.Duration":
10276
10327
  case "Temporal.Instant":
10277
10328
  case "Temporal.PlainDate":
@@ -10280,18 +10331,7 @@ function unflatten(parsed, revivers) {
10280
10331
  case "Temporal.PlainMonthDay":
10281
10332
  case "Temporal.PlainYearMonth":
10282
10333
  case "Temporal.ZonedDateTime": {
10283
- const temporalName = type.slice(9);
10284
- hydrated[index2] = Temporal[temporalName].from(value[1]);
10285
- break;
10286
- }
10287
- case "URL": {
10288
- const url = new URL(value[1]);
10289
- hydrated[index2] = url;
10290
- break;
10291
- }
10292
- case "URLSearchParams": {
10293
- const url = new URLSearchParams(value[1]);
10294
- hydrated[index2] = url;
10334
+ hydrated[index2] = ops.fromStringValue(type, value[1]);
10295
10335
  break;
10296
10336
  }
10297
10337
  default:
@@ -10302,36 +10342,32 @@ function unflatten(parsed, revivers) {
10302
10342
  if (!is_valid_array_len(len)) {
10303
10343
  throw new Error("Invalid input");
10304
10344
  }
10305
- const array2 = [];
10345
+ const array2 = ops.createSparseArray(len);
10306
10346
  hydrated[index2] = array2;
10307
- array2[MAX_ARRAY_INDEX] = void 0;
10308
- delete array2[MAX_ARRAY_INDEX];
10309
10347
  for (let i = 2; i < value.length; i += 2) {
10310
10348
  const idx = value[i];
10311
10349
  if (!is_valid_array_index(idx) || idx >= len) {
10312
10350
  throw new Error("Invalid input");
10313
10351
  }
10314
- array2[idx] = hydrate(value[i + 1]);
10352
+ ops.set(array2, idx, hydrate(value[i + 1]));
10315
10353
  }
10316
- array2.length = len;
10317
10354
  } else {
10318
- const array2 = new Array(value.length);
10355
+ const array2 = ops.createArray(value.length);
10319
10356
  hydrated[index2] = array2;
10320
10357
  for (let i = 0; i < value.length; i += 1) {
10321
10358
  const n = value[i];
10322
10359
  if (n === HOLE) continue;
10323
- array2[i] = hydrate(n);
10360
+ ops.set(array2, i, hydrate(n));
10324
10361
  }
10325
10362
  }
10326
10363
  } else {
10327
- const object2 = {};
10364
+ const object2 = ops.createObject();
10328
10365
  hydrated[index2] = object2;
10329
10366
  for (const key of Object.keys(value)) {
10330
10367
  if (key === "__proto__") {
10331
10368
  throw new Error("Cannot parse an object with a `__proto__` property");
10332
10369
  }
10333
- const n = value[key];
10334
- object2[key] = hydrate(n);
10370
+ ops.set(object2, key, hydrate(value[key]));
10335
10371
  }
10336
10372
  }
10337
10373
  return hydrated[index2];
@@ -43652,7 +43688,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
43652
43688
  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 });
43653
43689
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
43654
43690
  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 }) });
43655
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-Bt3a5JLE.js"), true ? __vite__mapDeps([3,2]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
43691
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-BRVsq_Ui.js"), true ? __vite__mapDeps([3,2]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
43656
43692
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
43657
43693
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
43658
43694
  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,5 +1,5 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports, w as withComponentProps, x as withErrorBoundaryProps, M as Meta, L as Links, S as ScrollRestoration, y as Scripts, O as Outlet, z as useRouteError, i as isRouteErrorResponse, A as Link, B as useNavigate, C as useSearchParams } from "./index-BsV8i_Jn.js";
2
- import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, r as runHealthCheck, t as toast, B as Button, L as LoaderCircle, d as cn, e as Toaster$1, S as ServerConfigProvider, f as TooltipProvider } from "./mermaid-3ZIDBTTL-Bp6ZST9_.js";
2
+ import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, r as runHealthCheck, t as toast, B as Button, L as LoaderCircle, d as cn, e as Toaster$1, S as ServerConfigProvider, f as TooltipProvider } from "./mermaid-3ZIDBTTL-871SHrja.js";
3
3
  var M = (e, i, s, u, m, a, l, h) => {
4
4
  let d = document.documentElement, w = ["light", "dark"];
5
5
  function p(n) {
@@ -1,6 +1,6 @@
1
1
  import { j as jsxRuntimeExports, r as reactExports, f as reactDomExports, D as ReactDOM, B as useNavigate, C as useSearchParams, A as Link, w as withComponentProps, H as useParams } from "./index-BsV8i_Jn.js";
2
- import { O as Copy, C as CircleAlert, Q as parseStepName, B as parseWorkflowName, j as ChevronRight, q as Check, U as ErrorCard, V as format, Z as Zap, S as Send, R as ResolveHookModal, p as ChevronUp, o as ChevronDown, X, N as ErrorBoundary, Y as Clock, G as CircleX, I as unwrapServerActionResult, u as unwrapOrThrow, W as WorkflowWebAPIError, _ as useEscapeKeydown, t as composeEventHandlers, $ as useCallbackRef, a0 as useLayoutEffect2, s as useControllableState, a1 as useId, a2 as createContext2, v as Presence, x as createContextScope, l as hideOthers, m as ReactRemoveScroll, a3 as useFocusGuards, a4 as LAYOUT, a5 as wakeUpRun, r as resumeHook, A as Alert, c as AlertTitle, d as AlertDescription, a as Skeleton$1, a6 as RunActionsButtons, F as StatusBadge, e as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, y as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-C6PWoIIU.js";
3
- import { c as createLucideIcon, M as Spinner, h as useToast, N as useHasContextCardProvider, O as ContextCardProvider, U as ContextCardTrigger, W as Skeleton, X as DecryptClickContext, Y as Yr, Z as isEncryptedMarker, _ as formatDuration, $ as DataInspector, a0 as _r, a1 as StreamClickContext, a2 as isExpiredMarker, a3 as isDoStreamStep, a4 as extractConversation, a5 as Lock, a6 as EVENT_DATA_REF_FIELDS, a7 as clsx, a8 as useTraceViewer, a9 as styles, aa as formatDurationForTimeline, ab as formatWallClockTime, ac as useImmediateStyle, ad as TIMELINE_PADDING, ae as formatTimeSelection, af as MARKER_HEIGHT, ag as ROW_HEIGHT, ah as ROW_PADDING, ai as SEARCH_HEIGHT, aj as getHighResInMs, ak as getMsInHighRes, al as MARKER_NOTCH_HEIGHT, am as MAP_HEIGHT, an as SEARCH_GAP, ao as MiniMap, ap as SpanNodes, aq as SpanDetailPanel, ar as TraceViewerContextProvider, as as hydrateResourceIOWithKey, at as hydrateResourceIO, au as fetchHook, l as fetchEvents, F as fetchRun, av as fetchStep, aw as hasEncryptedFields, ax as fetchStreams, ay as Slot, E as useComposedRefs, az as Slottable, d as cn, aA as buttonVariants, aB as isEncryptedData, aC as hydrateData, aD as getWebRevivers, aE as fetchEvent, aF as fetchEventsByCorrelationId, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aG as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, aH as getEncryptionKeyForRun, t as toast, L as LoaderCircle, aI as StreamViewer } from "./mermaid-3ZIDBTTL-Bp6ZST9_.js";
2
+ import { O as Copy, C as CircleAlert, Q as parseStepName, B as parseWorkflowName, j as ChevronRight, q as Check, U as ErrorCard, V as format, Z as Zap, S as Send, R as ResolveHookModal, p as ChevronUp, o as ChevronDown, X, N as ErrorBoundary, Y as Clock, G as CircleX, I as unwrapServerActionResult, u as unwrapOrThrow, W as WorkflowWebAPIError, _ as useEscapeKeydown, t as composeEventHandlers, $ as useCallbackRef, a0 as useLayoutEffect2, s as useControllableState, a1 as useId, a2 as createContext2, v as Presence, x as createContextScope, l as hideOthers, m as ReactRemoveScroll, a3 as useFocusGuards, a4 as LAYOUT, a5 as wakeUpRun, r as resumeHook, A as Alert, c as AlertTitle, d as AlertDescription, a as Skeleton$1, a6 as RunActionsButtons, F as StatusBadge, e as CopyableText, b as RelativeTime, T as Tabs, K as TabsList, L as TabsTrigger, M as TabsContent, y as cancelRun, a7 as recreateRun } from "./workflow-graph-viewer-C1On-L19.js";
3
+ import { c as createLucideIcon, M as Spinner, h as useToast, N as useHasContextCardProvider, O as ContextCardProvider, U as ContextCardTrigger, W as Skeleton, X as DecryptClickContext, Y as Yr, Z as isEncryptedMarker, _ as formatDuration, $ as DataInspector, a0 as _r, a1 as StreamClickContext, a2 as isExpiredMarker, a3 as isDoStreamStep, a4 as extractConversation, a5 as Lock, a6 as EVENT_DATA_REF_FIELDS, a7 as clsx, a8 as useTraceViewer, a9 as styles, aa as formatDurationForTimeline, ab as formatWallClockTime, ac as useImmediateStyle, ad as TIMELINE_PADDING, ae as formatTimeSelection, af as MARKER_HEIGHT, ag as ROW_HEIGHT, ah as ROW_PADDING, ai as SEARCH_HEIGHT, aj as getHighResInMs, ak as getMsInHighRes, al as MARKER_NOTCH_HEIGHT, am as MAP_HEIGHT, an as SEARCH_GAP, ao as MiniMap, ap as SpanNodes, aq as SpanDetailPanel, ar as TraceViewerContextProvider, as as hydrateResourceIOWithKey, at as hydrateResourceIO, au as fetchHook, l as fetchEvents, F as fetchRun, av as fetchStep, aw as hasEncryptedFields, ax as fetchStreams, ay as Slot, E as useComposedRefs, az as Slottable, d as cn, aA as buttonVariants, aB as isEncryptedData, aC as hydrateData, aD as getWebRevivers, aE as fetchEvent, aF as fetchEventsByCorrelationId, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aG as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, aH as getEncryptionKeyForRun, t as toast, L as LoaderCircle, aI as StreamViewer } from "./mermaid-3ZIDBTTL-871SHrja.js";
4
4
  import { decrypt, importKey } from "./encryption-BRhjWsZh.js";
5
5
  import "./index-DZSXezpI.js";
6
6
  /**
@@ -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, aJ as cn, d as cn$1, G as cva, aK as composeRefs, E as useComposedRefs, aL as useFloating, aM as offset, aN as shift, aO as limitShift, aP as flip, aQ as size, aR as arrow, aS as hide, aT as autoUpdate, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aU as cancelRun$1, aV as reenqueueRun$1, aW as wakeUpRun$1, aX as resumeHook$1, aY as recreateRun$1, v as createContextScope$1, n as useComposedRefs$1, w as createSlot, _ as formatDuration, B as Button, t as toast, p as useId$1, P as Primitive$1, o as composeEventHandlers$1, x as useControllableState$1, m as useCallbackRef$2, H as Presence$1 } from "./mermaid-3ZIDBTTL-Bp6ZST9_.js";
4
+ import { c as createLucideIcon, aJ as cn, d as cn$1, G as cva, aK as composeRefs, E as useComposedRefs, aL as useFloating, aM as offset, aN as shift, aO as limitShift, aP as flip, aQ as size, aR as arrow, aS as hide, aT as autoUpdate, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aU as cancelRun$1, aV as reenqueueRun$1, aW as wakeUpRun$1, aX as resumeHook$1, aY as recreateRun$1, v as createContextScope$1, n as useComposedRefs$1, w as createSlot, _ as formatDuration, B as Button, t as toast, p as useId$1, P as Primitive$1, o as composeEventHandlers$1, x as useControllableState$1, m as useCallbackRef$2, H as Presence$1 } from "./mermaid-3ZIDBTTL-871SHrja.js";
5
5
  import { r as reactExports, j as jsxRuntimeExports, f as reactDomExports, R as ReactExports, I as React, D as ReactDOM, a as requireReact, g as getDefaultExportFromCjs } from "./index-BsV8i_Jn.js";
6
6
  import { V as VERCEL_403_ERROR_MESSAGE } from "./index-DZSXezpI.js";
7
7
  function parseName(tag, name) {
@@ -9180,7 +9180,7 @@ const app = express();
9180
9180
  app.all(
9181
9181
  "/{*splat}",
9182
9182
  createRequestHandler({
9183
- build: () => import("./server-build-dZA4Blmq.js").then((n) => n.a7)
9183
+ build: () => import("./server-build-BVUmxy06.js").then((n) => n.a7)
9184
9184
  })
9185
9185
  );
9186
9186
  app.use(
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { a1 as R, a2 as Ks, a3 as jsxRuntimeExports, a4 as Qe } from "./server-build-dZA4Blmq.js";
6
- import { r as reactExports } from "./app-DrQARxC_.js";
5
+ import { a1 as R, a2 as Ks, a3 as jsxRuntimeExports, a4 as Qe } from "./server-build-BVUmxy06.js";
6
+ import { r as reactExports } from "./app-C2ZMBpJF.js";
7
7
  import "node:stream";
8
8
  import "util";
9
9
  import "crypto";
@@ -2,9 +2,9 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { H as HookSchema } from "./server-build-dZA4Blmq.js";
6
- import { B, D, a, E, b, c, d, e, L, M, f, g, P, Q, h, R, S, i, j, k, l, m, n, o, p, T, q, r, s, t, u, V, W, v, w, x, y, z, A, C, F, G, I, J, K, O, U, X, Y, Z, _, $, a0 } from "./server-build-dZA4Blmq.js";
7
- import "./app-DrQARxC_.js";
5
+ import { H as HookSchema } from "./server-build-BVUmxy06.js";
6
+ import { B, D, a, E, b, c, d, e, L, M, f, g, P, Q, h, R, S, i, j, k, l, m, n, o, p, T, q, r, s, t, u, V, W, v, w, x, y, z, A, C, F, G, I, J, K, O, U, X, Y, Z, _, $, a0 } from "./server-build-BVUmxy06.js";
7
+ import "./app-C2ZMBpJF.js";
8
8
  import "stream";
9
9
  import "express";
10
10
  import "node:stream";
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { N as Nt } from "./server-build-dZA4Blmq.js";
6
- import "./app-DrQARxC_.js";
5
+ import { N as Nt } from "./server-build-BVUmxy06.js";
6
+ import "./app-C2ZMBpJF.js";
7
7
  import "stream";
8
8
  import "express";
9
9
  import "node:stream";
@@ -18,7 +18,7 @@ import { createRequire as __wkfCreateRequire } from "node:module";
18
18
  if (typeof globalThis.require === "undefined") {
19
19
  globalThis.require = __wkfCreateRequire(import.meta.url);
20
20
  }
21
- import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-DrQARxC_.js";
21
+ import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-C2ZMBpJF.js";
22
22
  import require$$0$5, { PassThrough, Transform as Transform$1 } from "node:stream";
23
23
  import require$$0 from "util";
24
24
  import require$$1 from "crypto";
@@ -34069,9 +34069,6 @@ class DevalueError extends Error {
34069
34069
  this.root = root2;
34070
34070
  }
34071
34071
  }
34072
- function is_primitive(thing) {
34073
- return thing === null || typeof thing !== "object" && typeof thing !== "function";
34074
- }
34075
34072
  const object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(Object.prototype).sort().join("\0");
34076
34073
  function is_plain_object(thing) {
34077
34074
  const proto2 = Object.getPrototypeOf(thing);
@@ -34150,14 +34147,17 @@ function is_valid_array_index_string(s2) {
34150
34147
  }
34151
34148
  return is_valid_array_index(+s2);
34152
34149
  }
34153
- function valid_array_indices(array2) {
34154
- const keys2 = Object.keys(array2);
34150
+ function array_index_cut(keys2) {
34155
34151
  for (var i = keys2.length - 1; i >= 0; i--) {
34156
34152
  if (is_valid_array_index_string(keys2[i])) {
34157
34153
  break;
34158
34154
  }
34159
34155
  }
34160
- keys2.length = i + 1;
34156
+ return i + 1;
34157
+ }
34158
+ function valid_array_indices(array2) {
34159
+ const keys2 = Object.keys(array2);
34160
+ keys2.length = array_index_cut(keys2);
34161
34161
  return keys2;
34162
34162
  }
34163
34163
  function encode_native(array_buffer) {
@@ -34195,10 +34195,92 @@ const native = typeof Uint8Array.fromBase64 === "function";
34195
34195
  const buffer = typeof process === "object" && ((_a2 = process.versions) == null ? void 0 : _a2.node) !== void 0;
34196
34196
  const encode64 = native ? encode_native : buffer ? encode_buffer : encode_legacy;
34197
34197
  const decode64 = native ? decode_native : buffer ? decode_buffer : decode_legacy;
34198
- function parse$7(serialized, revivers) {
34198
+ function merge_operations(defaults2, overrides) {
34199
+ return defaults2;
34200
+ }
34201
+ const NOT_PLAIN = Object.freeze({ kind: "not-plain" });
34202
+ const SYMBOL_KEYS = Object.freeze({ kind: "symbol-keys" });
34203
+ const stringify_operations = {
34204
+ identify: (value) => value,
34205
+ typeOf: (value) => value === null ? "null" : typeof value,
34206
+ toPrimitive: (value) => value,
34207
+ tagOf: (value) => get_type(value),
34208
+ isThenable: (value) => typeof value.then === "function",
34209
+ toPromise: (thenable) => Promise.resolve(thenable),
34210
+ unbox: (boxed) => boxed.valueOf(),
34211
+ toISOString: (date2) => isNaN(date2.getDate()) ? "" : date2.toISOString(),
34212
+ toStringValue: (value) => value.toString(),
34213
+ regExpInfo: (regexp) => ({ source: regexp.source, flags: regexp.flags }),
34214
+ valuesOf: (set2) => set2,
34215
+ entriesOf: (map2) => map2,
34216
+ viewInfo: (view) => ({
34217
+ buffer: view.buffer,
34218
+ byteOffset: view.byteOffset,
34219
+ byteLength: view.byteLength,
34220
+ length: view.length,
34221
+ bufferByteLength: view.buffer.byteLength
34222
+ }),
34223
+ toArrayBuffer: (buffer2) => buffer2,
34224
+ lengthOf: (array2) => array2.length,
34225
+ hasOwn: (value, key) => Object.hasOwn(value, key),
34226
+ indicesOf: (array2) => valid_array_indices(array2),
34227
+ shapeOf: (value) => {
34228
+ if (!is_plain_object(value)) return NOT_PLAIN;
34229
+ if (enumerable_symbols(value).length > 0) return SYMBOL_KEYS;
34230
+ return {
34231
+ kind: Object.getPrototypeOf(value) === null ? "null-proto" : "plain",
34232
+ keys: Object.keys(value)
34233
+ };
34234
+ },
34235
+ get: (value, key) => value[key]
34236
+ };
34237
+ const default_stringify_operations = Object.freeze(stringify_operations);
34238
+ const parse_operations = {
34239
+ fromPrimitive: (primitive) => primitive,
34240
+ fromISOString: (iso) => new Date(iso),
34241
+ fromStringValue: (tag, text2) => {
34242
+ if (tag === "URL") return new URL(text2);
34243
+ if (tag === "URLSearchParams") return new URLSearchParams(text2);
34244
+ return Temporal[tag.slice(9)].from(text2);
34245
+ },
34246
+ fromArrayBuffer: (buffer2) => buffer2,
34247
+ fromRegExpInfo: (source, flags) => new RegExp(source, flags),
34248
+ fromViewInfo: (tag, buffer2, byteOffset, length) => {
34249
+ const Constructor = (
34250
+ /** @type {any} */
34251
+ globalThis[tag]
34252
+ );
34253
+ return byteOffset !== void 0 ? new Constructor(buffer2, byteOffset, length) : new Constructor(buffer2);
34254
+ },
34255
+ box: (value) => Object(value),
34256
+ createArray: (length) => new Array(length),
34257
+ createSparseArray: (length) => {
34258
+ const array2 = [];
34259
+ array2[MAX_ARRAY_INDEX] = void 0;
34260
+ delete array2[MAX_ARRAY_INDEX];
34261
+ array2.length = length;
34262
+ return array2;
34263
+ },
34264
+ createObject: () => ({}),
34265
+ createNullPrototypeObject: () => /* @__PURE__ */ Object.create(null),
34266
+ createSet: () => /* @__PURE__ */ new Set(),
34267
+ createMap: () => /* @__PURE__ */ new Map(),
34268
+ set: (target2, key, value) => {
34269
+ target2[key] = value;
34270
+ },
34271
+ addValue: (set2, value) => {
34272
+ set2.add(value);
34273
+ },
34274
+ addEntry: (map2, key, value) => {
34275
+ map2.set(key, value);
34276
+ }
34277
+ };
34278
+ const default_parse_operations = Object.freeze(parse_operations);
34279
+ function parse$7(serialized, revivers, options) {
34199
34280
  return unflatten(JSON.parse(serialized), revivers);
34200
34281
  }
34201
- function unflatten(parsed, revivers) {
34282
+ function unflatten(parsed, revivers, options) {
34283
+ const ops = merge_operations(default_parse_operations);
34202
34284
  if (typeof parsed === "number") return hydrate(parsed, true);
34203
34285
  if (!Array.isArray(parsed) || parsed.length === 0) {
34204
34286
  throw new Error("Invalid input");
@@ -34210,18 +34292,21 @@ function unflatten(parsed, revivers) {
34210
34292
  const hydrated = Array(values.length);
34211
34293
  let hydrating = null;
34212
34294
  function hydrate(index2, standalone = false) {
34213
- if (index2 === UNDEFINED) return void 0;
34214
- if (index2 === NAN) return NaN;
34215
- if (index2 === POSITIVE_INFINITY) return Infinity;
34216
- if (index2 === NEGATIVE_INFINITY) return -Infinity;
34217
- if (index2 === NEGATIVE_ZERO) return -0;
34295
+ if (index2 === UNDEFINED) return ops.fromPrimitive(void 0);
34296
+ if (index2 === NAN) return ops.fromPrimitive(NaN);
34297
+ if (index2 === POSITIVE_INFINITY) return ops.fromPrimitive(Infinity);
34298
+ if (index2 === NEGATIVE_INFINITY) return ops.fromPrimitive(-Infinity);
34299
+ if (index2 === NEGATIVE_ZERO) return ops.fromPrimitive(-0);
34218
34300
  if (standalone || typeof index2 !== "number") {
34219
34301
  throw new Error(`Invalid input`);
34220
34302
  }
34221
34303
  if (index2 in hydrated) return hydrated[index2];
34304
+ if (index2 >= values.length) {
34305
+ throw new Error(`Invalid input`);
34306
+ }
34222
34307
  const value = values[index2];
34223
34308
  if (!value || typeof value !== "object") {
34224
- hydrated[index2] = value;
34309
+ hydrated[index2] = ops.fromPrimitive(value);
34225
34310
  } else if (Array.isArray(value)) {
34226
34311
  if (typeof value[0] === "string") {
34227
34312
  const type = value[0];
@@ -34231,6 +34316,9 @@ function unflatten(parsed, revivers) {
34231
34316
  if (typeof i !== "number") {
34232
34317
  i = values.push(value[1]) - 1;
34233
34318
  }
34319
+ if (Object.hasOwn(hydrated, i)) {
34320
+ return hydrated[index2] = reviver(hydrated[i]);
34321
+ }
34234
34322
  hydrating ?? (hydrating = /* @__PURE__ */ new Set());
34235
34323
  if (hydrating.has(i)) {
34236
34324
  throw new Error("Invalid circular reference");
@@ -34242,44 +34330,44 @@ function unflatten(parsed, revivers) {
34242
34330
  }
34243
34331
  switch (type) {
34244
34332
  case "Date":
34245
- hydrated[index2] = new Date(value[1]);
34333
+ hydrated[index2] = ops.fromISOString(value[1]);
34246
34334
  break;
34247
34335
  case "Set":
34248
- const set2 = /* @__PURE__ */ new Set();
34336
+ const set2 = ops.createSet();
34249
34337
  hydrated[index2] = set2;
34250
34338
  for (let i = 1; i < value.length; i += 1) {
34251
- set2.add(hydrate(value[i]));
34339
+ ops.addValue(set2, hydrate(value[i]));
34252
34340
  }
34253
34341
  break;
34254
34342
  case "Map":
34255
- const map2 = /* @__PURE__ */ new Map();
34343
+ const map2 = ops.createMap();
34256
34344
  hydrated[index2] = map2;
34257
34345
  for (let i = 1; i < value.length; i += 2) {
34258
- map2.set(hydrate(value[i]), hydrate(value[i + 1]));
34346
+ ops.addEntry(map2, hydrate(value[i]), hydrate(value[i + 1]));
34259
34347
  }
34260
34348
  break;
34261
34349
  case "RegExp":
34262
- hydrated[index2] = new RegExp(value[1], value[2]);
34350
+ hydrated[index2] = ops.fromRegExpInfo(value[1], value[2]);
34263
34351
  break;
34264
34352
  case "Object": {
34265
34353
  const wrapped_index = value[1];
34266
34354
  if (typeof values[wrapped_index] === "object" && values[wrapped_index][0] !== "BigInt") {
34267
34355
  throw new Error("Invalid input");
34268
34356
  }
34269
- hydrated[index2] = Object(hydrate(wrapped_index));
34357
+ hydrated[index2] = ops.box(hydrate(wrapped_index));
34270
34358
  break;
34271
34359
  }
34272
34360
  case "BigInt":
34273
- hydrated[index2] = BigInt(value[1]);
34361
+ hydrated[index2] = ops.fromPrimitive(BigInt(value[1]));
34274
34362
  break;
34275
34363
  case "null":
34276
- const obj = /* @__PURE__ */ Object.create(null);
34364
+ const obj = ops.createNullPrototypeObject();
34277
34365
  hydrated[index2] = obj;
34278
34366
  for (let i = 1; i < value.length; i += 2) {
34279
34367
  if (value[i] === "__proto__") {
34280
34368
  throw new Error("Cannot parse an object with a `__proto__` property");
34281
34369
  }
34282
- obj[value[i]] = hydrate(value[i + 1]);
34370
+ ops.set(obj, value[i], hydrate(value[i + 1]));
34283
34371
  }
34284
34372
  break;
34285
34373
  case "Int8Array":
@@ -34298,9 +34386,8 @@ function unflatten(parsed, revivers) {
34298
34386
  if (values[value[1]][0] !== "ArrayBuffer") {
34299
34387
  throw new Error("Invalid data");
34300
34388
  }
34301
- const TypedArrayConstructor = globalThis[type];
34302
34389
  const buffer2 = hydrate(value[1]);
34303
- hydrated[index2] = value[2] !== void 0 ? new TypedArrayConstructor(buffer2, value[2], value[3]) : new TypedArrayConstructor(buffer2);
34390
+ hydrated[index2] = ops.fromViewInfo(type, buffer2, value[2], value[3]);
34304
34391
  break;
34305
34392
  }
34306
34393
  case "ArrayBuffer": {
@@ -34308,10 +34395,11 @@ function unflatten(parsed, revivers) {
34308
34395
  if (typeof base642 !== "string") {
34309
34396
  throw new Error("Invalid ArrayBuffer encoding");
34310
34397
  }
34311
- const arraybuffer = decode64(base642);
34312
- hydrated[index2] = arraybuffer;
34398
+ hydrated[index2] = ops.fromArrayBuffer(decode64(base642));
34313
34399
  break;
34314
34400
  }
34401
+ case "URL":
34402
+ case "URLSearchParams":
34315
34403
  case "Temporal.Duration":
34316
34404
  case "Temporal.Instant":
34317
34405
  case "Temporal.PlainDate":
@@ -34320,18 +34408,7 @@ function unflatten(parsed, revivers) {
34320
34408
  case "Temporal.PlainMonthDay":
34321
34409
  case "Temporal.PlainYearMonth":
34322
34410
  case "Temporal.ZonedDateTime": {
34323
- const temporalName = type.slice(9);
34324
- hydrated[index2] = Temporal[temporalName].from(value[1]);
34325
- break;
34326
- }
34327
- case "URL": {
34328
- const url2 = new URL(value[1]);
34329
- hydrated[index2] = url2;
34330
- break;
34331
- }
34332
- case "URLSearchParams": {
34333
- const url2 = new URLSearchParams(value[1]);
34334
- hydrated[index2] = url2;
34411
+ hydrated[index2] = ops.fromStringValue(type, value[1]);
34335
34412
  break;
34336
34413
  }
34337
34414
  default:
@@ -34342,47 +34419,44 @@ function unflatten(parsed, revivers) {
34342
34419
  if (!is_valid_array_len(len)) {
34343
34420
  throw new Error("Invalid input");
34344
34421
  }
34345
- const array2 = [];
34422
+ const array2 = ops.createSparseArray(len);
34346
34423
  hydrated[index2] = array2;
34347
- array2[MAX_ARRAY_INDEX] = void 0;
34348
- delete array2[MAX_ARRAY_INDEX];
34349
34424
  for (let i = 2; i < value.length; i += 2) {
34350
34425
  const idx = value[i];
34351
34426
  if (!is_valid_array_index(idx) || idx >= len) {
34352
34427
  throw new Error("Invalid input");
34353
34428
  }
34354
- array2[idx] = hydrate(value[i + 1]);
34429
+ ops.set(array2, idx, hydrate(value[i + 1]));
34355
34430
  }
34356
- array2.length = len;
34357
34431
  } else {
34358
- const array2 = new Array(value.length);
34432
+ const array2 = ops.createArray(value.length);
34359
34433
  hydrated[index2] = array2;
34360
34434
  for (let i = 0; i < value.length; i += 1) {
34361
34435
  const n = value[i];
34362
34436
  if (n === HOLE) continue;
34363
- array2[i] = hydrate(n);
34437
+ ops.set(array2, i, hydrate(n));
34364
34438
  }
34365
34439
  }
34366
34440
  } else {
34367
- const object2 = {};
34441
+ const object2 = ops.createObject();
34368
34442
  hydrated[index2] = object2;
34369
34443
  for (const key of Object.keys(value)) {
34370
34444
  if (key === "__proto__") {
34371
34445
  throw new Error("Cannot parse an object with a `__proto__` property");
34372
34446
  }
34373
- const n = value[key];
34374
- object2[key] = hydrate(n);
34447
+ ops.set(object2, key, hydrate(value[key]));
34375
34448
  }
34376
34449
  }
34377
34450
  return hydrated[index2];
34378
34451
  }
34379
34452
  return hydrate(0);
34380
34453
  }
34381
- function stringify$2(value, reducers) {
34454
+ function stringify$2(value, reducers, options) {
34382
34455
  const stringified = run(false, value, reducers);
34383
34456
  return typeof stringified === "string" ? stringified : `[${stringified.join(",")}]`;
34384
34457
  }
34385
- function run(async, value, reducers) {
34458
+ function run(async, value, reducers, options) {
34459
+ const ops = merge_operations(default_stringify_operations);
34386
34460
  const stringified = [];
34387
34461
  const indexes = /* @__PURE__ */ new Map();
34388
34462
  const custom2 = [];
@@ -34394,17 +34468,24 @@ function run(async, value, reducers) {
34394
34468
  const keys2 = [];
34395
34469
  let p2 = 0;
34396
34470
  function flatten(thing, index3) {
34397
- if (thing === void 0) return UNDEFINED;
34398
- if (Number.isNaN(thing)) return NAN;
34399
- if (thing === Infinity) return POSITIVE_INFINITY;
34400
- if (thing === -Infinity) return NEGATIVE_INFINITY;
34401
- if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO;
34402
- if (indexes.has(thing)) return (
34471
+ const type = ops.typeOf(thing);
34472
+ if (type === "undefined") return UNDEFINED;
34473
+ let number2;
34474
+ if (type === "number") {
34475
+ number2 = /** @type {number} */
34476
+ ops.toPrimitive(thing);
34477
+ if (Number.isNaN(number2)) return NAN;
34478
+ if (number2 === Infinity) return POSITIVE_INFINITY;
34479
+ if (number2 === -Infinity) return NEGATIVE_INFINITY;
34480
+ if (number2 === 0 && 1 / number2 < 0) return NEGATIVE_ZERO;
34481
+ }
34482
+ const id2 = ops.identify(thing);
34483
+ if (indexes.has(id2)) return (
34403
34484
  /** @type {number} */
34404
- indexes.get(thing)
34485
+ indexes.get(id2)
34405
34486
  );
34406
34487
  index3 ?? (index3 = p2++);
34407
- indexes.set(thing, index3);
34488
+ indexes.set(id2, index3);
34408
34489
  for (const { key, fn: fn2 } of custom2) {
34409
34490
  const value2 = fn2(thing);
34410
34491
  if (value2) {
@@ -34412,15 +34493,15 @@ function run(async, value, reducers) {
34412
34493
  return index3;
34413
34494
  }
34414
34495
  }
34415
- if (typeof thing === "function") {
34496
+ if (type === "function") {
34416
34497
  throw new DevalueError(`Cannot stringify a function`, keys2, thing, value);
34417
- } else if (typeof thing === "symbol") {
34498
+ } else if (type === "symbol") {
34418
34499
  throw new DevalueError(`Cannot stringify a Symbol primitive`, keys2, thing, value);
34419
34500
  }
34420
34501
  let str = "";
34421
- if (is_primitive(thing)) {
34422
- str = stringify_primitive(thing);
34423
- } else if (typeof thing.then === "function") {
34502
+ if (type !== "object") {
34503
+ str = stringify_primitive(type === "number" ? number2 : ops.toPrimitive(thing));
34504
+ } else if (ops.isThenable(thing)) {
34424
34505
  {
34425
34506
  throw new DevalueError(
34426
34507
  `Cannot stringify a Promise or thenable — use stringifyAsync instead`,
@@ -34430,54 +34511,51 @@ function run(async, value, reducers) {
34430
34511
  );
34431
34512
  }
34432
34513
  } else {
34433
- const type = get_type(thing);
34434
- switch (type) {
34514
+ const tag = ops.tagOf(thing);
34515
+ switch (tag) {
34435
34516
  case "Number":
34436
34517
  case "String":
34437
34518
  case "Boolean":
34438
34519
  case "BigInt":
34439
- str = `["Object",${flatten(thing.valueOf())}]`;
34520
+ str = `["Object",${flatten(ops.unbox(thing))}]`;
34440
34521
  break;
34441
34522
  case "Date":
34442
- const valid2 = !isNaN(thing.getDate());
34443
- str = `["Date","${valid2 ? thing.toISOString() : ""}"]`;
34523
+ str = `["Date","${ops.toISOString(thing)}"]`;
34444
34524
  break;
34445
34525
  case "URL":
34446
- str = `["URL",${stringify_string(thing.toString())}]`;
34526
+ str = `["URL",${stringify_string(ops.toStringValue(thing))}]`;
34447
34527
  break;
34448
34528
  case "URLSearchParams":
34449
- str = `["URLSearchParams",${stringify_string(thing.toString())}]`;
34529
+ str = `["URLSearchParams",${stringify_string(ops.toStringValue(thing))}]`;
34450
34530
  break;
34451
34531
  case "RegExp":
34452
- const { source, flags } = thing;
34532
+ const { source, flags } = ops.regExpInfo(thing);
34453
34533
  str = flags ? `["RegExp",${stringify_string(source)},"${flags}"]` : `["RegExp",${stringify_string(source)}]`;
34454
34534
  break;
34455
34535
  case "Array": {
34456
34536
  let mostly_dense = false;
34537
+ const length = ops.lengthOf(thing);
34457
34538
  str = "[";
34458
- for (let i = 0; i < thing.length; i += 1) {
34539
+ for (let i = 0; i < length; i += 1) {
34459
34540
  if (i > 0) str += ",";
34460
- if (Object.hasOwn(thing, i)) {
34541
+ if (ops.hasOwn(thing, i)) {
34461
34542
  keys2.push(`[${i}]`);
34462
- str += flatten(thing[i]);
34543
+ str += flatten(ops.get(thing, i));
34463
34544
  keys2.pop();
34464
34545
  } else if (mostly_dense) {
34465
34546
  str += HOLE;
34466
34547
  } else {
34467
- const populated_keys = valid_array_indices(
34468
- /** @type {any[]} */
34469
- thing
34470
- );
34548
+ const populated_keys = ops.indicesOf(thing);
34471
34549
  const population = populated_keys.length;
34472
- const d2 = String(thing.length).length;
34473
- const hole_cost = (thing.length - population) * 3;
34550
+ const d2 = String(length).length;
34551
+ const hole_cost = (length - population) * 3;
34474
34552
  const sparse_cost = 4 + d2 + population * (d2 + 1);
34475
34553
  if (hole_cost > sparse_cost) {
34476
- str = "[" + SPARSE + "," + thing.length;
34554
+ str = "[" + SPARSE + "," + length;
34477
34555
  for (let j2 = 0; j2 < populated_keys.length; j2++) {
34478
34556
  const key = populated_keys[j2];
34479
34557
  keys2.push(`[${key}]`);
34480
- str += "," + key + "," + flatten(thing[key]);
34558
+ str += "," + key + "," + flatten(ops.get(thing, key));
34481
34559
  keys2.pop();
34482
34560
  }
34483
34561
  break;
@@ -34492,15 +34570,19 @@ function run(async, value, reducers) {
34492
34570
  }
34493
34571
  case "Set":
34494
34572
  str = '["Set"';
34495
- for (const value2 of thing) {
34573
+ for (const value2 of ops.valuesOf(thing)) {
34496
34574
  str += `,${flatten(value2)}`;
34497
34575
  }
34498
34576
  str += "]";
34499
34577
  break;
34500
34578
  case "Map":
34501
34579
  str = '["Map"';
34502
- for (const [key, value2] of thing) {
34503
- keys2.push(`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`);
34580
+ for (const [key, value2] of ops.entriesOf(thing)) {
34581
+ const key_type = ops.typeOf(key);
34582
+ const key_is_primitive = key_type !== "object" && key_type !== "function" && key_type !== "symbol";
34583
+ keys2.push(
34584
+ `.get(${key_is_primitive ? stringify_primitive(ops.toPrimitive(key)) : "..."})`
34585
+ );
34504
34586
  str += `,${flatten(key)},${flatten(value2)}`;
34505
34587
  keys2.pop();
34506
34588
  }
@@ -34517,19 +34599,26 @@ function run(async, value, reducers) {
34517
34599
  case "Float32Array":
34518
34600
  case "Float64Array":
34519
34601
  case "BigInt64Array":
34520
- case "BigUint64Array":
34602
+ case "BigUint64Array": {
34603
+ const info = ops.viewInfo(thing);
34604
+ str = '["' + tag + '",' + flatten(info.buffer);
34605
+ if (info.byteLength !== info.bufferByteLength) {
34606
+ str += `,${info.byteOffset},${info.length}`;
34607
+ }
34608
+ str += "]";
34609
+ break;
34610
+ }
34521
34611
  case "DataView": {
34522
- const typedArray = thing;
34523
- str = '["' + type + '",' + flatten(typedArray.buffer);
34524
- if (typedArray.byteLength !== typedArray.buffer.byteLength) {
34525
- str += `,${typedArray.byteOffset},${typedArray.length}`;
34612
+ const info = ops.viewInfo(thing);
34613
+ str = '["' + tag + '",' + flatten(info.buffer);
34614
+ if (info.byteLength !== info.bufferByteLength) {
34615
+ str += `,${info.byteOffset},${info.byteLength}`;
34526
34616
  }
34527
34617
  str += "]";
34528
34618
  break;
34529
34619
  }
34530
34620
  case "ArrayBuffer": {
34531
- const arraybuffer = thing;
34532
- const base642 = encode64(arraybuffer);
34621
+ const base642 = encode64(ops.toArrayBuffer(thing));
34533
34622
  str = `["ArrayBuffer","${base642}"]`;
34534
34623
  break;
34535
34624
  }
@@ -34541,18 +34630,19 @@ function run(async, value, reducers) {
34541
34630
  case "Temporal.PlainMonthDay":
34542
34631
  case "Temporal.PlainYearMonth":
34543
34632
  case "Temporal.ZonedDateTime":
34544
- str = `["${type}",${stringify_string(thing.toString())}]`;
34633
+ str = `["${tag}",${stringify_string(ops.toStringValue(thing))}]`;
34545
34634
  break;
34546
- default:
34547
- if (!is_plain_object(thing)) {
34635
+ default: {
34636
+ const shape = ops.shapeOf(thing);
34637
+ if (shape.kind === "not-plain") {
34548
34638
  throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys2, thing, value);
34549
34639
  }
34550
- if (enumerable_symbols(thing).length > 0) {
34640
+ if (shape.kind === "symbol-keys") {
34551
34641
  throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys2, thing, value);
34552
34642
  }
34553
- if (Object.getPrototypeOf(thing) === null) {
34643
+ if (shape.kind === "null-proto") {
34554
34644
  str = '["null"';
34555
- for (const key of Object.keys(thing)) {
34645
+ for (const key of shape.keys) {
34556
34646
  if (key === "__proto__") {
34557
34647
  throw new DevalueError(
34558
34648
  `Cannot stringify objects with __proto__ keys`,
@@ -34562,14 +34652,14 @@ function run(async, value, reducers) {
34562
34652
  );
34563
34653
  }
34564
34654
  keys2.push(stringify_key(key));
34565
- str += `,${stringify_string(key)},${flatten(thing[key])}`;
34655
+ str += `,${stringify_string(key)},${flatten(ops.get(thing, key))}`;
34566
34656
  keys2.pop();
34567
34657
  }
34568
34658
  str += "]";
34569
34659
  } else {
34570
34660
  str = "{";
34571
34661
  let started = false;
34572
- for (const key of Object.keys(thing)) {
34662
+ for (const key of shape.keys) {
34573
34663
  if (key === "__proto__") {
34574
34664
  throw new DevalueError(
34575
34665
  `Cannot stringify objects with __proto__ keys`,
@@ -34581,11 +34671,12 @@ function run(async, value, reducers) {
34581
34671
  if (started) str += ",";
34582
34672
  started = true;
34583
34673
  keys2.push(stringify_key(key));
34584
- str += `${stringify_string(key)}:${flatten(thing[key])}`;
34674
+ str += `${stringify_string(key)}:${flatten(ops.get(thing, key))}`;
34585
34675
  keys2.pop();
34586
34676
  }
34587
34677
  str += "}";
34588
34678
  }
34679
+ }
34589
34680
  }
34590
34681
  }
34591
34682
  stringified[index3] = str;
@@ -81877,7 +81968,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
81877
81968
  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 });
81878
81969
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
81879
81970
  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 }) });
81880
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DjQADekk.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81971
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CmiyUOiW.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
81881
81972
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
81882
81973
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
81883
81974
  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 }) })] }) });
@@ -82199,7 +82290,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
82199
82290
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
82200
82291
  };
82201
82292
  var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
82202
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-BkSETGny.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82293
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Ku6qjB5F.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
82203
82294
  function ke(e, t) {
82204
82295
  if (!(e != null && e.position || t != null && t.position)) return true;
82205
82296
  if (!(e != null && e.position && (t != null && t.position))) return false;
@@ -92091,7 +92182,7 @@ createLogger("build", {
92091
92182
  debugNamespace: "workflow:build"
92092
92183
  });
92093
92184
  const MAX_QUEUE_DELIVERIES = 48;
92094
- const version$1 = "4.8.8";
92185
+ const version$1 = "4.8.9";
92095
92186
  const execFileAsync = promisify(execFile);
92096
92187
  function parsePort$1(value, radix = 10) {
92097
92188
  const port = parseInt(value, radix);
@@ -120753,7 +120844,7 @@ function createLocalWorld(args) {
120753
120844
  const basedir = mergedConfig.dataDir;
120754
120845
  const hooksDir = path$3.join(basedir, "hooks");
120755
120846
  const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
120756
- const { HookSchema: HookSchema2 } = await import("./index-jGuRgZeU.js");
120847
+ const { HookSchema: HookSchema2 } = await import("./index-iPDTwQkr.js");
120757
120848
  await Promise.all(taggedHookFiles.map(async (hookFile) => {
120758
120849
  const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
120759
120850
  if (hook == null ? void 0 : hook.token) {
@@ -121246,8 +121337,8 @@ function requireGetVercelOidcToken() {
121246
121337
  }
121247
121338
  try {
121248
121339
  const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
121249
- await import("./token-util-C7q6rX5g.js").then((n) => n.t),
121250
- await import("./token-a0u6SMZC.js").then((n) => n.t)
121340
+ await import("./token-util-BszBIaAk.js").then((n) => n.t),
121341
+ await import("./token-CPIWEDbd.js").then((n) => n.t)
121251
121342
  ]);
121252
121343
  if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
121253
121344
  await refreshToken(options);
@@ -128615,10 +128706,10 @@ const getWorld = () => {
128615
128706
  return globalSymbols$1[WorldCache];
128616
128707
  };
128617
128708
  const DEFAULT_HEALTH_CHECK_TIMEOUT = 3e4;
128618
- const SAFE_WORKFLOW_NAME_PATTERN = /^[a-zA-Z0-9_\-./@]+$/;
128709
+ const SAFE_WORKFLOW_NAME_PATTERN = /^[a-zA-Z0-9_\-./@()[\]]+$/;
128619
128710
  function getWorkflowQueueName(workflowName, namespace2) {
128620
128711
  if (!SAFE_WORKFLOW_NAME_PATTERN.test(workflowName)) {
128621
- throw new Error(`Invalid workflow name "${workflowName}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, or at signs`);
128712
+ throw new Error(`Invalid workflow name "${workflowName}": must only contain alphanumeric characters, underscores, hyphens, dots, forward slashes, at signs, parentheses, or square brackets`);
128622
128713
  }
128623
128714
  const prefix = getQueueTopicPrefix("workflow", resolveQueueNamespace(namespace2));
128624
128715
  return `${prefix}${workflowName}`;
@@ -129340,12 +129431,22 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129340
129431
  let reconnectCount = 0;
129341
129432
  let totalReconnectCount = 0;
129342
129433
  let reader;
129434
+ let canceled = false;
129435
+ let cancelReason;
129343
129436
  let buffer2 = new Uint8Array(0);
129344
129437
  async function connect2() {
129438
+ if (canceled)
129439
+ return false;
129345
129440
  const world = getWorld();
129346
129441
  const effectiveStartIndex = reconnectSupported ? currentStartIndex + consumedFrames : startIndex;
129347
129442
  const stream = await world.readFromStream(name2, effectiveStartIndex);
129443
+ if (canceled) {
129444
+ await stream.cancel(cancelReason).catch(() => {
129445
+ });
129446
+ return false;
129447
+ }
129348
129448
  reader = stream.getReader();
129449
+ return true;
129349
129450
  }
129350
129451
  async function isVerifiedComplete() {
129351
129452
  try {
@@ -129357,11 +129458,15 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129357
129458
  }
129358
129459
  }
129359
129460
  async function reconnect() {
129461
+ if (canceled)
129462
+ return false;
129360
129463
  if (reader) {
129361
129464
  await reader.cancel().catch(() => {
129362
129465
  });
129363
129466
  reader = void 0;
129364
129467
  }
129468
+ if (canceled)
129469
+ return false;
129365
129470
  currentStartIndex += consumedFrames;
129366
129471
  consumedFrames = 0;
129367
129472
  buffer2 = new Uint8Array(0);
@@ -129375,19 +129480,27 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129375
129480
  throw new Error(`Stream "${name2}" exceeded maximum total reconnection attempts (${FRAMED_STREAM_MAX_TOTAL_RECONNECTS})`);
129376
129481
  }
129377
129482
  try {
129378
- await connect2();
129379
- return;
129483
+ if (!await connect2())
129484
+ return false;
129485
+ return true;
129380
129486
  } catch {
129487
+ if (canceled)
129488
+ return false;
129381
129489
  }
129382
129490
  }
129383
129491
  }
129384
129492
  return new ReadableStream({
129385
129493
  pull: async (controller) => {
129494
+ if (canceled)
129495
+ return;
129386
129496
  for (; ; ) {
129387
129497
  if (!reader) {
129388
129498
  try {
129389
- await connect2();
129499
+ if (!await connect2())
129500
+ return;
129390
129501
  } catch (err) {
129502
+ if (canceled)
129503
+ return;
129391
129504
  controller.error(err);
129392
129505
  return;
129393
129506
  }
@@ -129396,23 +129509,32 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129396
129509
  try {
129397
129510
  result = await reader.read();
129398
129511
  } catch (err) {
129512
+ if (canceled)
129513
+ return;
129399
129514
  if (!reconnectSupported) {
129400
129515
  controller.error(err);
129401
129516
  return;
129402
129517
  }
129403
129518
  try {
129404
- await reconnect();
129519
+ if (!await reconnect())
129520
+ return;
129405
129521
  } catch (reconnectErr) {
129406
129522
  controller.error(reconnectErr);
129407
129523
  return;
129408
129524
  }
129409
129525
  continue;
129410
129526
  }
129527
+ if (canceled)
129528
+ return;
129411
129529
  if (result.done || !result.value) {
129412
129530
  reader = void 0;
129413
- if (reconnectSupported && !await isVerifiedComplete()) {
129531
+ const verifiedComplete = !reconnectSupported || await isVerifiedComplete();
129532
+ if (canceled)
129533
+ return;
129534
+ if (!verifiedComplete) {
129414
129535
  try {
129415
- await reconnect();
129536
+ if (!await reconnect())
129537
+ return;
129416
129538
  } catch (reconnectErr) {
129417
129539
  controller.error(reconnectErr);
129418
129540
  return;
@@ -129446,12 +129568,15 @@ function createReconnectingFramedStream(runId, name2, startIndex) {
129446
129568
  }
129447
129569
  }
129448
129570
  },
129449
- cancel: async () => {
129450
- if (reader) {
129451
- await reader.cancel().catch((err) => {
129571
+ cancel: async (reason) => {
129572
+ canceled = true;
129573
+ cancelReason = reason;
129574
+ const currentReader = reader;
129575
+ reader = void 0;
129576
+ if (currentReader) {
129577
+ await currentReader.cancel(reason).catch((err) => {
129452
129578
  console.warn("Error closing ReadableStream reader:", err);
129453
129579
  });
129454
- reader = void 0;
129455
129580
  }
129456
129581
  }
129457
129582
  });
@@ -155967,7 +156092,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
155967
156092
  __proto__: null,
155968
156093
  loader
155969
156094
  }, Symbol.toStringTag, { value: "Module" }));
155970
- const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-BxnaECGo.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-Blj6TeEE.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-DivTczoC.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C6PWoIIU.js", "/assets/mermaid-3ZIDBTTL-Bp6ZST9_.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-7bf3847b.js", "version": "7bf3847b", "sri": void 0 };
156095
+ const serverManifest = { "entry": { "module": "/assets/entry.client-C_C46bD6.js", "imports": ["/assets/index-BsV8i_Jn.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-8dRSI2dZ.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js"], "css": ["/assets/root-BOS11TzD.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-CWZI6fn-.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C1On-L19.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-CaG8UDwA.js", "imports": ["/assets/index-BsV8i_Jn.js", "/assets/workflow-graph-viewer-C1On-L19.js", "/assets/mermaid-3ZIDBTTL-871SHrja.js", "/assets/encryption-BRhjWsZh.js", "/assets/index-DZSXezpI.js"], "css": ["/assets/workflow-graph-viewer-yls6qlc0.css", "/assets/mermaid-3ZIDBTTL-yyHEMZs4.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-25c2e662.js", "version": "25c2e662", "sri": void 0 };
155971
156096
  const assetsBuildDirectory = "build/client";
155972
156097
  const basename = "/";
155973
156098
  const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { g as getDefaultExportFromCjs } from "./app-DrQARxC_.js";
6
- import { a6 as requireTokenError, a5 as requireTokenUtil } from "./server-build-dZA4Blmq.js";
5
+ import { g as getDefaultExportFromCjs } from "./app-C2ZMBpJF.js";
6
+ import { a6 as requireTokenError, a5 as requireTokenUtil } from "./server-build-BVUmxy06.js";
7
7
  function _mergeNamespaces(n, m) {
8
8
  for (var i = 0; i < m.length; i++) {
9
9
  const e = m[i];
@@ -2,8 +2,8 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { g as getDefaultExportFromCjs } from "./app-DrQARxC_.js";
6
- import { a5 as requireTokenUtil } from "./server-build-dZA4Blmq.js";
5
+ import { g as getDefaultExportFromCjs } from "./app-C2ZMBpJF.js";
6
+ import { a5 as requireTokenUtil } from "./server-build-BVUmxy06.js";
7
7
  function _mergeNamespaces(n, m) {
8
8
  for (var i = 0; i < m.length; i++) {
9
9
  const e = m[i];
@@ -2,7 +2,7 @@ import { createRequire as __wkfCreateRequire } from "node:module";
2
2
  if (typeof globalThis.require === "undefined") {
3
3
  globalThis.require = __wkfCreateRequire(import.meta.url);
4
4
  }
5
- import { n } from "./assets/app-DrQARxC_.js";
5
+ import { n } from "./assets/app-C2ZMBpJF.js";
6
6
  import "express";
7
7
  import "stream";
8
8
  export {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/web",
3
3
  "description": "Workflow Observability UI",
4
- "version": "4.1.24",
4
+ "version": "4.1.25",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "files": [
@@ -71,11 +71,11 @@
71
71
  "vite": "^6",
72
72
  "vitest": "^3",
73
73
  "jsdom": "^26",
74
+ "@workflow/core": "4.8.9",
74
75
  "@workflow/errors": "4.2.1",
75
76
  "@workflow/utils": "4.1.4",
76
- "@workflow/web-shared": "4.1.24",
77
+ "@workflow/web-shared": "4.1.25",
77
78
  "@workflow/world": "4.5.0",
78
- "@workflow/core": "4.8.8",
79
79
  "@workflow/world-vercel": "4.7.4"
80
80
  },
81
81
  "scripts": {