@workflow/web 5.0.0-beta.40 → 5.0.0-beta.42

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 (28) hide show
  1. package/build/client/assets/app-9JVnf-IU.css +1 -0
  2. package/build/client/assets/{arrow-up-right-Br49goey.js → arrow-up-right-D39pnGsD.js} +1 -1
  3. package/build/client/assets/{highlighted-body-B3W2YXNL-B5pbFkUr.js → highlighted-body-B3W2YXNL-Dc1dLaUr.js} +1 -1
  4. package/build/client/assets/{home-DrXIdsG5.js → home-C6CuMqQu.js} +3 -3
  5. package/build/client/assets/{loader-circle-3PJSFf84.js → loader-circle-BOxaTUjK.js} +1 -1
  6. package/build/client/assets/{manifest-0c933230.js → manifest-cf88886b.js} +1 -1
  7. package/build/client/assets/{mermaid-3ZIDBTTL-qqUSEahK.js → mermaid-3ZIDBTTL-gEw-Ch1C.js} +319 -285
  8. package/build/client/assets/{root-n7Zz0dTX.js → root-BfhMCbkz.js} +3 -3
  9. package/build/client/assets/root-Bl5xphvU.css +1 -0
  10. package/build/client/assets/{run-detail-DHeMEsdg.js → run-detail-DKz7lp2q.js} +221 -105
  11. package/build/client/assets/{workflow-graph-viewer-DWdsfF3d.js → workflow-graph-viewer-CxrWityD.js} +3 -145
  12. package/build/client/assets/{zstd-browser-decoder-DemK2pIP.js → zstd-browser-decoder-CAEVa0bm.js} +1 -1
  13. package/build/server/assets/{app-BJXoDV4n.js → app-SrggQnfh.js} +1802 -1095
  14. package/build/server/assets/{highlighted-body-B3W2YXNL-Kki0lKyo.js → highlighted-body-B3W2YXNL-DMhwZQgG.js} +2 -1
  15. package/build/server/assets/{index-7-uV1dU1.js → index-ByPjQpgH.js} +1 -1
  16. package/build/server/assets/index-DsnQrgwB.js +156 -0
  17. package/build/server/assets/{mermaid-3ZIDBTTL-Bh_zbSQ-.js → mermaid-3ZIDBTTL-CK9fLYE8.js} +2 -1
  18. package/build/server/assets/{token-D8pb4TJ8.js → token-sFDUVNm0.js} +1 -1
  19. package/build/server/assets/{token-util-DPJj3x0B.js → token-util-CighjZkT.js} +1 -1
  20. package/build/server/assets/{wrapper-CsxTXsPR.js → websocket-server-BADWB2u5.js} +14 -53
  21. package/build/server/assets/wrapper-Bwi-W3ol.js +67 -0
  22. package/build/server/assets/ws-transport-DaZsgQ2B.js +531 -0
  23. package/build/server/assets/{zstd-browser-decoder-CWJVPmcb.js → zstd-browser-decoder-dRi0VqoM.js} +2 -1
  24. package/build/server/index.js +4 -3
  25. package/package.json +7 -7
  26. package/build/client/assets/app-BkGXg64e.css +0 -1
  27. package/build/client/assets/root-ZRjqDhEN.css +0 -1
  28. package/build/server/assets/index-XksKPyou.js +0 -143
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-DemK2pIP.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-B5pbFkUr.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-CAEVa0bm.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-Dc1dLaUr.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);
@@ -10110,80 +10110,6 @@ const Lr = /* @__PURE__ */ K$3(() => {
10110
10110
  function kn$1(t, e, n) {
10111
10111
  return e !== "normal" && !(e != null && e.endsWith("px")) && n(`${t} was not resolved to pixel value correctly`, e, Ct$1.WARN), e === "normal" ? 0 : parseInt(e != null ? e : "0", 10);
10112
10112
  }
10113
- const scriptRel = "modulepreload";
10114
- const assetsURL = function(dep) {
10115
- return "/" + dep;
10116
- };
10117
- const seen = {};
10118
- const __vitePreload = function preload(baseModule, deps, importerUrl) {
10119
- let promise = Promise.resolve();
10120
- if (deps && deps.length > 0) {
10121
- let allSettled2 = function(promises) {
10122
- return Promise.all(
10123
- promises.map(
10124
- (p2) => Promise.resolve(p2).then(
10125
- (value) => ({ status: "fulfilled", value }),
10126
- (reason) => ({ status: "rejected", reason })
10127
- )
10128
- )
10129
- );
10130
- };
10131
- document.getElementsByTagName("link");
10132
- const cspNonceMeta = document.querySelector(
10133
- "meta[property=csp-nonce]"
10134
- );
10135
- const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce"));
10136
- promise = allSettled2(
10137
- deps.map((dep) => {
10138
- dep = assetsURL(dep);
10139
- if (dep in seen) return;
10140
- seen[dep] = true;
10141
- const isCss = dep.endsWith(".css");
10142
- const cssSelector = isCss ? '[rel="stylesheet"]' : "";
10143
- if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) {
10144
- return;
10145
- }
10146
- const link2 = document.createElement("link");
10147
- link2.rel = isCss ? "stylesheet" : scriptRel;
10148
- if (!isCss) {
10149
- link2.as = "script";
10150
- }
10151
- link2.crossOrigin = "";
10152
- link2.href = dep;
10153
- if (cspNonce) {
10154
- link2.setAttribute("nonce", cspNonce);
10155
- }
10156
- document.head.appendChild(link2);
10157
- if (isCss) {
10158
- return new Promise((res, rej) => {
10159
- link2.addEventListener("load", res);
10160
- link2.addEventListener(
10161
- "error",
10162
- () => rej(new Error(`Unable to preload CSS for ${dep}`))
10163
- );
10164
- });
10165
- }
10166
- })
10167
- );
10168
- }
10169
- function handlePreloadError(err) {
10170
- const e = new Event("vite:preloadError", {
10171
- cancelable: true
10172
- });
10173
- e.payload = err;
10174
- window.dispatchEvent(e);
10175
- if (!e.defaultPrevented) {
10176
- throw err;
10177
- }
10178
- }
10179
- return promise.then((res) => {
10180
- for (const item of res || []) {
10181
- if (item.status !== "rejected") continue;
10182
- handlePreloadError(item.reason);
10183
- }
10184
- return baseModule().catch(handlePreloadError);
10185
- });
10186
- };
10187
10113
  function $constructor(name2, initializer2, params) {
10188
10114
  function init(inst, def) {
10189
10115
  if (!inst._zod) {
@@ -13341,6 +13267,18 @@ function _array(Class, element2, params) {
13341
13267
  });
13342
13268
  }
13343
13269
  // @__NO_SIDE_EFFECTS__
13270
+ function _custom(Class, fn2, _params) {
13271
+ const norm = normalizeParams(_params);
13272
+ norm.abort ?? (norm.abort = true);
13273
+ const schema = new Class({
13274
+ type: "custom",
13275
+ check: "custom",
13276
+ fn: fn2,
13277
+ ...norm
13278
+ });
13279
+ return schema;
13280
+ }
13281
+ // @__NO_SIDE_EFFECTS__
13344
13282
  function _refine(Class, fn2, _params) {
13345
13283
  const schema = new Class({
13346
13284
  type: "custom",
@@ -14847,6 +14785,9 @@ const ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => {
14847
14785
  ZodType.init(inst, def);
14848
14786
  inst._zod.processJSONSchema = (ctx, json, params) => customProcessor(inst, ctx);
14849
14787
  });
14788
+ function custom(fn2, _params) {
14789
+ return /* @__PURE__ */ _custom(ZodCustom, fn2 ?? (() => true), _params);
14790
+ }
14850
14791
  function refine(fn2, _params = {}) {
14851
14792
  return /* @__PURE__ */ _refine(ZodCustom, fn2, _params);
14852
14793
  }
@@ -14954,6 +14895,21 @@ const TERMINAL_STEP_EVENT_TYPES = TerminalStepEventTypeSchema.options;
14954
14895
  function isTerminalStepEventType(eventType) {
14955
14896
  return TERMINAL_STEP_EVENT_TYPES.includes(eventType);
14956
14897
  }
14898
+ const ENTITY_EVENT_CLASS_BY_TYPE = {
14899
+ step_created: "step_created",
14900
+ step_started: "step_started",
14901
+ step_retrying: "step_retrying",
14902
+ step_completed: "step_terminal",
14903
+ step_failed: "step_terminal",
14904
+ wait_created: "wait_created",
14905
+ wait_completed: "wait_completed",
14906
+ hook_created: "hook_created",
14907
+ hook_disposed: "hook_disposed",
14908
+ run_started: "run_started"
14909
+ };
14910
+ function entityEventClass(eventType) {
14911
+ return ENTITY_EVENT_CLASS_BY_TYPE[eventType];
14912
+ }
14957
14913
  const HookLifecycleEventTypeSchema = EventTypeSchema.extract([
14958
14914
  "hook_created",
14959
14915
  "hook_received",
@@ -15680,6 +15636,19 @@ const RunInputSchema = object({
15680
15636
  */
15681
15637
  environment: string$2().optional()
15682
15638
  });
15639
+ const StepDispatchInputSchema = object({
15640
+ /**
15641
+ * The serialized step input, reused verbatim from the direct write. Always
15642
+ * binary: producers only attach `stepInput` when the dehydrated input is a
15643
+ * `Uint8Array` and the run's queue transport preserves bytes (CBOR).
15644
+ * Validated here so a malformed or transport-mangled payload fails the
15645
+ * message parse instead of being silently written into a `step_created` as
15646
+ * non-binary data. `Buffer` is a `Uint8Array` subclass and passes.
15647
+ */
15648
+ input: custom((value) => value instanceof Uint8Array, {
15649
+ message: "stepInput.input must be a Uint8Array"
15650
+ })
15651
+ });
15683
15652
  const HookResumeInputSchema = object({
15684
15653
  /** Stable idempotency key minted once per `resumeHook()` call. */
15685
15654
  resumeId: string$2(),
@@ -15701,7 +15670,33 @@ const HookResumeInputSchema = object({
15701
15670
  * `(runId, resumeId)` constraint — required because the v4 payload ref is not
15702
15671
  * content-stable server-side.
15703
15672
  */
15704
- payloadDigest: string$2()
15673
+ payloadDigest: string$2(),
15674
+ /**
15675
+ * The deployment the run is pinned to, from the producer's resume context.
15676
+ * Lets the consumer detect a misrouted delivery with a cheap ambient
15677
+ * deployment-id comparison BEFORE its hoisted `hook_received` replay-preload
15678
+ * write — only a detected mismatch pays for the authoritative run fetch and
15679
+ * the deployment-affinity guard. Optional for queued-message compatibility:
15680
+ * messages from older producers omit it and simply skip the pre-write
15681
+ * check (the authoritative guard before replay still protects them).
15682
+ */
15683
+ deploymentId: string$2().optional()
15684
+ });
15685
+ const HookResumeTimingSchema = object({
15686
+ /** Epoch ms at entry into `resumeHook()` — the start of the TTR window. */
15687
+ resumeRequestedAtMs: number$3(),
15688
+ /** Epoch ms immediately before the queue publish was requested. */
15689
+ queuePublishRequestedAtMs: number$3(),
15690
+ /** Which `resumeHook()` dispatch path ran: `parallel` or `sequential`. */
15691
+ strategy: string$2().optional(),
15692
+ /** Epoch ms the final consumer's queue handler was entered. */
15693
+ consumerStartedAtMs: number$3().optional(),
15694
+ /** Epoch ms this invocation's first replay pass began. */
15695
+ replayStartedAtMs: number$3().optional(),
15696
+ /** Epoch ms replay first encountered a durable step after the resume. */
15697
+ nextStepEncounteredAtMs: number$3().optional(),
15698
+ /** How the consumer initialized replay state: see `ResumeSetupSource`. */
15699
+ setupSource: string$2().optional()
15705
15700
  });
15706
15701
  const WorkflowInvokePayloadSchema = object({
15707
15702
  runId: string$2(),
@@ -15736,7 +15731,28 @@ const WorkflowInvokePayloadSchema = object({
15736
15731
  * fast path. A consumer that understands this field idempotently ensures the
15737
15732
  * `hook_received` event exists (keyed by `resumeId`) before replaying.
15738
15733
  */
15739
- hookInput: HookResumeInputSchema.optional()
15734
+ hookInput: HookResumeInputSchema.optional(),
15735
+ /**
15736
+ * Resilient step dispatch data, only present alongside `stepId` when the
15737
+ * producer parallelized the `step_created` write with this queue publish. A
15738
+ * consumer that understands this field idempotently ensures the
15739
+ * `step_created` event exists (keyed by `stepId`) before executing the step.
15740
+ */
15741
+ stepInput: StepDispatchInputSchema.optional(),
15742
+ /**
15743
+ * Hook-resume TTR timing. Present on both `resumeHook()` dispatch paths
15744
+ * (unlike `hookInput`, which only rides the parallel fast path), and
15745
+ * forwarded onto a dispatched step message when the resuming invocation
15746
+ * hands the next durable step to another invocation. Purely observational —
15747
+ * see {@link HookResumeTimingSchema}.
15748
+ *
15749
+ * `.catch(undefined)` because this field must never be able to fail the
15750
+ * parse of the invocation payload: a malformed value (a NaN boundary, a
15751
+ * shape change from a future producer) would otherwise throw on every
15752
+ * delivery of that message and burn the run's delivery budget over a
15753
+ * telemetry field. Anything unparseable degrades to "no measurement".
15754
+ */
15755
+ hookResumeTiming: HookResumeTimingSchema.optional().catch(void 0)
15740
15756
  });
15741
15757
  const HealthCheckPayloadSchema = object({
15742
15758
  __healthCheck: literal(true),
@@ -15841,6 +15857,80 @@ object({
15841
15857
  });
15842
15858
  string$2().ulid();
15843
15859
  templateLiteral(["wrun_", ulid()]);
15860
+ const scriptRel = "modulepreload";
15861
+ const assetsURL = function(dep) {
15862
+ return "/" + dep;
15863
+ };
15864
+ const seen = {};
15865
+ const __vitePreload = function preload(baseModule, deps, importerUrl) {
15866
+ let promise = Promise.resolve();
15867
+ if (deps && deps.length > 0) {
15868
+ let allSettled2 = function(promises) {
15869
+ return Promise.all(
15870
+ promises.map(
15871
+ (p2) => Promise.resolve(p2).then(
15872
+ (value) => ({ status: "fulfilled", value }),
15873
+ (reason) => ({ status: "rejected", reason })
15874
+ )
15875
+ )
15876
+ );
15877
+ };
15878
+ document.getElementsByTagName("link");
15879
+ const cspNonceMeta = document.querySelector(
15880
+ "meta[property=csp-nonce]"
15881
+ );
15882
+ const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce"));
15883
+ promise = allSettled2(
15884
+ deps.map((dep) => {
15885
+ dep = assetsURL(dep);
15886
+ if (dep in seen) return;
15887
+ seen[dep] = true;
15888
+ const isCss = dep.endsWith(".css");
15889
+ const cssSelector = isCss ? '[rel="stylesheet"]' : "";
15890
+ if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) {
15891
+ return;
15892
+ }
15893
+ const link2 = document.createElement("link");
15894
+ link2.rel = isCss ? "stylesheet" : scriptRel;
15895
+ if (!isCss) {
15896
+ link2.as = "script";
15897
+ }
15898
+ link2.crossOrigin = "";
15899
+ link2.href = dep;
15900
+ if (cspNonce) {
15901
+ link2.setAttribute("nonce", cspNonce);
15902
+ }
15903
+ document.head.appendChild(link2);
15904
+ if (isCss) {
15905
+ return new Promise((res, rej) => {
15906
+ link2.addEventListener("load", res);
15907
+ link2.addEventListener(
15908
+ "error",
15909
+ () => rej(new Error(`Unable to preload CSS for ${dep}`))
15910
+ );
15911
+ });
15912
+ }
15913
+ })
15914
+ );
15915
+ }
15916
+ function handlePreloadError(err) {
15917
+ const e = new Event("vite:preloadError", {
15918
+ cancelable: true
15919
+ });
15920
+ e.payload = err;
15921
+ window.dispatchEvent(e);
15922
+ if (!e.defaultPrevented) {
15923
+ throw err;
15924
+ }
15925
+ }
15926
+ return promise.then((res) => {
15927
+ for (const item of res || []) {
15928
+ if (item.status !== "rejected") continue;
15929
+ handlePreloadError(item.reason);
15930
+ }
15931
+ return baseModule().catch(handlePreloadError);
15932
+ });
15933
+ };
15844
15934
  const UNDEFINED = -1;
15845
15935
  const HOLE = -2;
15846
15936
  const NAN = -3;
@@ -17432,7 +17522,7 @@ async function hydrateResourceIOAsync(resource, key) {
17432
17522
  return { hydrateDataWithKey: hydrateDataWithKey3, deriveRunPayloadKeys: deriveRunPayloadKeys3 };
17433
17523
  }, true ? void 0 : void 0);
17434
17524
  const { ensureZstdDecoderRegistered } = await __vitePreload(async () => {
17435
- const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-DemK2pIP.js");
17525
+ const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-CAEVa0bm.js");
17436
17526
  return { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 };
17437
17527
  }, true ? __vite__mapDeps([0,1]) : void 0);
17438
17528
  ensureZstdDecoderRegistered();
@@ -18952,23 +19042,17 @@ function Spinner({ size: size2 = 14, color: color2 }) {
18952
19042
  lineW: size2 * 0.24,
18953
19043
  lineH: size2 * 0.08
18954
19044
  };
18955
- return jsxRuntimeExports.jsxs("span", { style: {
18956
- display: "inline-flex",
18957
- position: "relative",
19045
+ return jsxRuntimeExports.jsxs("span", { className: "relative inline-flex", style: {
18958
19046
  width: size2,
18959
19047
  height: size2
18960
- }, children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: KEYFRAMES } }), config2.delays.map((delay, i) => jsxRuntimeExports.jsx("span", { style: {
18961
- position: "absolute",
18962
- left: "50%",
18963
- top: "50%",
19048
+ }, children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: KEYFRAMES } }), config2.delays.map((delay, i) => jsxRuntimeExports.jsx("span", { className: "absolute top-1/2 left-1/2 rounded-[1px] bg-gray-700 [animation-iteration-count:infinite] [animation-name:wf-spinner-fade] [animation-timing-function:linear]", style: {
18964
19049
  width: config2.lineW,
18965
19050
  height: config2.lineH,
18966
19051
  marginLeft: -config2.lineW / 2,
18967
19052
  marginTop: -config2.lineH / 2,
18968
- borderRadius: 1,
18969
- backgroundColor: color2 ?? "var(--ds-gray-700)",
19053
+ backgroundColor: color2,
18970
19054
  transform: `rotate(${i * config2.angle}deg) translate(${size2 * 0.36}px)`,
18971
- animation: `wf-spinner-fade ${config2.duration}ms linear infinite`,
19055
+ animationDuration: `${config2.duration}ms`,
18972
19056
  animationDelay: `${delay}ms`
18973
19057
  } }, delay))] });
18974
19058
  }
@@ -19030,33 +19114,18 @@ function EncryptedInlineLabel() {
19030
19114
  ctx.onDecrypt();
19031
19115
  }, children: [ctx.isDecrypting ? jsxRuntimeExports.jsx(Spinner, { size: 10 }) : jsxRuntimeExports.jsx(Lock, { className: "h-3 w-3" }), jsxRuntimeExports.jsx("span", { children: "Decrypt" })] });
19032
19116
  }
19033
- return jsxRuntimeExports.jsxs("span", { style: { color: "var(--ds-gray-600)", fontStyle: "italic" }, children: [jsxRuntimeExports.jsx(Lock, { className: "h-3 w-3", style: {
19034
- display: "inline",
19035
- verticalAlign: "middle",
19036
- marginRight: "3px",
19037
- marginTop: "-1px"
19038
- } }), "Encrypted"] });
19117
+ return jsxRuntimeExports.jsxs("span", { className: "text-gray-600 italic", children: [jsxRuntimeExports.jsx(Lock, { className: "-mt-px mr-[3px] inline h-3 w-3 align-middle" }), "Encrypted"] });
19039
19118
  }
19040
19119
  function StreamRefInline({ streamRef }) {
19041
19120
  const onStreamClick = reactExports.useContext(StreamClickContext);
19042
- const [hovered, setHovered] = reactExports.useState(false);
19043
- return jsxRuntimeExports.jsxs("button", { type: "button", className: "inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-mono cursor-pointer underline decoration-transparent transition-colors", style: {
19044
- backgroundColor: hovered ? "var(--ds-blue-200)" : "var(--ds-blue-100)",
19045
- color: "var(--ds-blue-900)",
19046
- border: "1px solid var(--ds-blue-300)"
19047
- }, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), onClick: (e) => {
19121
+ return jsxRuntimeExports.jsxs("button", { type: "button", className: "inline-flex cursor-pointer items-center gap-1 rounded border border-blue-300 bg-blue-100 px-1.5 py-0.5 font-mono text-[10px] text-blue-900 underline decoration-transparent transition-colors hover:bg-blue-200", onClick: (e) => {
19048
19122
  e.stopPropagation();
19049
19123
  onStreamClick == null ? void 0 : onStreamClick(streamRef.streamId);
19050
19124
  }, title: `View stream: ${streamRef.streamId}`, children: [jsxRuntimeExports.jsx("span", { children: "📡" }), jsxRuntimeExports.jsx("span", { children: streamRef.streamId })] });
19051
19125
  }
19052
19126
  function RunRefInline({ runRef }) {
19053
19127
  const onRunClick = reactExports.useContext(RunClickContext);
19054
- const [hovered, setHovered] = reactExports.useState(false);
19055
- return jsxRuntimeExports.jsx("button", { type: "button", className: "inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-[10px] font-mono cursor-pointer underline decoration-transparent transition-colors", style: {
19056
- backgroundColor: hovered ? "var(--ds-purple-200)" : "var(--ds-purple-100)",
19057
- color: "var(--ds-purple-900)",
19058
- border: "1px solid var(--ds-purple-300)"
19059
- }, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), onClick: (e) => {
19128
+ return jsxRuntimeExports.jsx("button", { type: "button", className: "inline-flex cursor-pointer items-center gap-1 rounded border border-purple-300 bg-purple-100 px-1.5 py-0.5 font-mono text-[10px] text-purple-900 underline decoration-transparent transition-colors hover:bg-purple-200", onClick: (e) => {
19060
19129
  e.stopPropagation();
19061
19130
  onRunClick == null ? void 0 : onRunClick(runRef.runId);
19062
19131
  }, title: `View run: ${runRef.runId}`, children: jsxRuntimeExports.jsx("span", { children: runRef.runId }) });
@@ -19064,24 +19133,17 @@ function RunRefInline({ runRef }) {
19064
19133
  function DecodedBytesChunk({ decodedText, source }) {
19065
19134
  const [selectedView, setSelectedView] = reactExports.useState("decoded");
19066
19135
  const parsed = parseChunkData(decodedText);
19067
- return jsxRuntimeExports.jsxs("div", { className: "min-w-0", children: [selectedView === "decoded" ? jsxRuntimeExports.jsx("div", { className: "min-w-0", children: typeof parsed === "string" ? jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words", style: { color: "var(--ds-gray-1000)" }, children: deserializeChunkText(parsed) }) : jsxRuntimeExports.jsx(DataInspector, { data: parsed, expandLevel: 1 }) }) : jsxRuntimeExports.jsx(DecodedBytesInspector, { decodedText, source }), jsxRuntimeExports.jsx("div", { className: "mt-2 flex", children: jsxRuntimeExports.jsxs("div", { className: "inline-flex overflow-hidden rounded border", style: { borderColor: "var(--ds-gray-400)" }, title: `${source.type} decoded as ${source.encoding.toUpperCase()} text. Switch to Bytes to inspect the summarized raw value.`, children: [jsxRuntimeExports.jsx("button", { type: "button", className: "h-5 px-1.5 text-[10px] font-medium", style: {
19068
- backgroundColor: selectedView === "decoded" ? "var(--ds-gray-200)" : "var(--ds-gray-100)",
19069
- color: "var(--ds-gray-900)"
19070
- }, onClick: () => setSelectedView("decoded"), "aria-pressed": selectedView === "decoded", "aria-label": "Show decoded text", children: "Decoded" }), jsxRuntimeExports.jsx("button", { type: "button", className: "h-5 border-l px-1.5 text-[10px] font-medium", style: {
19071
- borderColor: "var(--ds-gray-400)",
19072
- backgroundColor: selectedView === "bytes" ? "var(--ds-gray-200)" : "var(--ds-gray-100)",
19073
- color: "var(--ds-gray-900)"
19074
- }, onClick: () => setSelectedView("bytes"), "aria-pressed": selectedView === "bytes", "aria-label": "Show raw bytes summary", children: "Bytes" })] }) })] });
19136
+ return jsxRuntimeExports.jsxs("div", { className: "min-w-0", children: [selectedView === "decoded" ? jsxRuntimeExports.jsx("div", { className: "min-w-0", children: typeof parsed === "string" ? jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words text-gray-1000", children: deserializeChunkText(parsed) }) : jsxRuntimeExports.jsx(DataInspector, { data: parsed, expandLevel: 1 }) }) : jsxRuntimeExports.jsx(DecodedBytesInspector, { decodedText, source }), jsxRuntimeExports.jsx("div", { className: "mt-2 flex", children: jsxRuntimeExports.jsxs("div", { className: "inline-flex overflow-hidden rounded border border-gray-400", title: `${source.type} decoded as ${source.encoding.toUpperCase()} text. Switch to Bytes to inspect the summarized raw value.`, children: [jsxRuntimeExports.jsx("button", { type: "button", className: cn$4("h-5 px-1.5 font-medium text-[10px] text-gray-900", selectedView === "decoded" ? "bg-gray-200" : "bg-gray-100"), onClick: () => setSelectedView("decoded"), "aria-pressed": selectedView === "decoded", "aria-label": "Show decoded text", children: "Decoded" }), jsxRuntimeExports.jsx("button", { type: "button", className: cn$4("h-5 border-gray-400 border-l px-1.5 font-medium text-[10px] text-gray-900", selectedView === "bytes" ? "bg-gray-200" : "bg-gray-100"), onClick: () => setSelectedView("bytes"), "aria-pressed": selectedView === "bytes", "aria-label": "Show raw bytes summary", children: "Bytes" })] }) })] });
19075
19137
  }
19076
19138
  function DecodedBytesInspector({ decodedText, source }) {
19077
19139
  const [expanded, setExpanded] = reactExports.useState(false);
19078
- return jsxRuntimeExports.jsxs("div", { className: "font-mono", children: [jsxRuntimeExports.jsxs("button", { type: "button", className: "flex max-w-full items-start gap-1 text-left", style: { color: "var(--ds-gray-1000)" }, onClick: () => setExpanded((value) => !value), title: `${source.type} decoded as ${source.encoding.toUpperCase()} text`, children: [jsxRuntimeExports.jsx("span", { className: "select-none", style: { color: "var(--ds-gray-700)" }, children: expanded ? "▼" : "▶" }), jsxRuntimeExports.jsx("span", { className: "min-w-0 break-words", children: source.rawSummary })] }), expanded && jsxRuntimeExports.jsxs("div", { className: "mt-1 pl-5", children: [jsxRuntimeExports.jsx("span", { style: { color: "var(--ds-gray-700)" }, children: "decoded: " }), jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words", style: { color: "var(--ds-green-900)" }, children: JSON.stringify(decodedText) })] })] });
19140
+ return jsxRuntimeExports.jsxs("div", { className: "font-mono", children: [jsxRuntimeExports.jsxs("button", { type: "button", className: "flex max-w-full items-start gap-1 text-left text-gray-1000", onClick: () => setExpanded((value) => !value), title: `${source.type} decoded as ${source.encoding.toUpperCase()} text`, children: [jsxRuntimeExports.jsx("span", { className: "select-none text-gray-700", children: expanded ? "▼" : "▶" }), jsxRuntimeExports.jsx("span", { className: "min-w-0 break-words", children: source.rawSummary })] }), expanded && jsxRuntimeExports.jsxs("div", { className: "mt-1 pl-5", children: [jsxRuntimeExports.jsx("span", { className: "text-gray-700", children: "decoded: " }), jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words text-green-900", children: JSON.stringify(decodedText) })] })] });
19079
19141
  }
19080
19142
  function BytesDisplayValue({ display }) {
19081
19143
  if (display.decodedFrom) {
19082
19144
  return jsxRuntimeExports.jsx(DecodedBytesChunk, { decodedText: display.text, source: display.decodedFrom });
19083
19145
  }
19084
- return jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words", style: { color: "var(--ds-gray-1000)" }, children: display.text });
19146
+ return jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words text-gray-1000", children: display.text });
19085
19147
  }
19086
19148
  function formatField(field) {
19087
19149
  return field === "" ? '""' : field;
@@ -19898,9 +19960,7 @@ function ContextCardProvider({ children: children2, portalTarget }) {
19898
19960
  distanceFromLast,
19899
19961
  lastOrigin
19900
19962
  ]);
19901
- return jsxRuntimeExports.jsxs(ContextCardContext.Provider, { value: contextValue, children: [children2, isMounted ? reactDomExports.createPortal(jsxRuntimeExports.jsx("div", { className: "w-full h-full inset-0 fixed pointer-events-none z-[100000]", ref, children: jsxRuntimeExports.jsx("div", { className: "min-w-max transition-all duration-150 ease-[easing-function:cubic-bezier(0.3,_0.57,_0.07,_0.95)] will-change-[transform,width,height] motion-reduce:!transition-none", style: {
19902
- opacity: visible ? 1 : 0
19903
- }, children: jsxRuntimeExports.jsxs("div", { className: cn$4("absolute bg-background-100 bg-clip-padding rounded-[6px] overflow-visible pointer-events-none z-[1000000] shadow-[var(--ds-shadow-tooltip),0_0_0_1px_var(--ds-background-100)] w-fit [--context-card-tip-stroke:#DBDBDB] dark-theme:[--context-card-tip-stroke:#252525]", skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-250 ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none"), "data-skip-transition": skipTransition, style: {
19963
+ return jsxRuntimeExports.jsxs(ContextCardContext.Provider, { value: contextValue, children: [children2, isMounted ? reactDomExports.createPortal(jsxRuntimeExports.jsx("div", { className: "w-full h-full inset-0 fixed pointer-events-none z-[100000]", ref, children: jsxRuntimeExports.jsx("div", { className: cn$4("min-w-max transition-all duration-150 ease-[easing-function:cubic-bezier(0.3,_0.57,_0.07,_0.95)] will-change-[transform,width,height] motion-reduce:!transition-none", visible ? "opacity-100" : "opacity-0"), children: jsxRuntimeExports.jsxs("div", { className: cn$4("absolute bg-background-100 bg-clip-padding rounded-[6px] overflow-visible pointer-events-none z-[1000000] shadow-[var(--ds-shadow-tooltip),0_0_0_1px_var(--ds-background-100)] w-fit [--context-card-tip-stroke:#DBDBDB] dark-theme:[--context-card-tip-stroke:#252525]", skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-[250ms] ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none"), "data-skip-transition": skipTransition, style: {
19904
19964
  transform: `translate(${activeBounds.x}px,${activeBounds.y}px)`,
19905
19965
  width: activeBounds.width,
19906
19966
  height: activeBounds.height
@@ -19909,18 +19969,13 @@ function ContextCardProvider({ children: children2, portalTarget }) {
19909
19969
  "right-full -translate-y-1/2 rotate-90 -mr-[3.5px]": activeBounds.side === "right",
19910
19970
  "bottom-full -translate-x-1/2 rotate-180": activeBounds.side === "bottom",
19911
19971
  "left-full -translate-y-1/2 rotate-[270deg] -ml-[3.5px]": activeBounds.side === "left"
19912
- }, skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-250 ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none"), style: {
19972
+ }, skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-[250ms] ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none"), style: {
19913
19973
  ...activeBounds.side === "top" || activeBounds.side === "bottom" ? {
19914
19974
  left: `calc(50% + ${activeBounds.arrowOffset.x}px)`
19915
19975
  } : {
19916
19976
  top: `calc(50% + ${activeBounds.arrowOffset.y}px)`
19917
19977
  }
19918
- }, "data-skip-transition": skipTransition, "data-side": activeBounds.side, children: jsxRuntimeExports.jsxs("svg", { width: "14", height: "7", viewBox: "0 0 14 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [jsxRuntimeExports.jsx("g", { clipPath: "url(#context-card-tip-clip)", children: jsxRuntimeExports.jsx("path", { d: "M15 -0.5V0.5H12.9834L12.8184 0.508789C12.4377 0.550822 12.0853 0.738056 11.8359 1.03418L8.53027 4.95996C7.73114 5.90893 6.26886 5.90892 5.46973 4.95996L2.16406 1.03418C1.87905 0.695733 1.45907 0.5 1.0166 0.5H-1V-0.5H15Z", fill: "var(--ds-background-100)", style: {
19919
- fill: "var(--ds-background-100)",
19920
- fillOpacity: 1,
19921
- stroke: "var(--context-card-tip-stroke)",
19922
- strokeOpacity: 1
19923
- } }) }), jsxRuntimeExports.jsx("defs", { children: jsxRuntimeExports.jsx("clipPath", { id: "context-card-tip-clip", children: jsxRuntimeExports.jsx("rect", { width: "14", height: "7", fill: "white", style: { fill: "white", fillOpacity: 1 } }) }) })] }) }), jsxRuntimeExports.jsx("div", { ref: portalRef })] }) }) }), resolvedPortalTarget ?? document.body) : null] });
19978
+ }, "data-skip-transition": skipTransition, "data-side": activeBounds.side, children: jsxRuntimeExports.jsxs("svg", { width: "14", height: "7", viewBox: "0 0 14 7", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", children: [jsxRuntimeExports.jsx("g", { clipPath: "url(#context-card-tip-clip)", children: jsxRuntimeExports.jsx("path", { d: "M15 -0.5V0.5H12.9834L12.8184 0.508789C12.4377 0.550822 12.0853 0.738056 11.8359 1.03418L8.53027 4.95996C7.73114 5.90893 6.26886 5.90892 5.46973 4.95996L2.16406 1.03418C1.87905 0.695733 1.45907 0.5 1.0166 0.5H-1V-0.5H15Z", fill: "var(--ds-background-100)", className: "fill-background-100 stroke-[var(--context-card-tip-stroke)]" }) }), jsxRuntimeExports.jsx("defs", { children: jsxRuntimeExports.jsx("clipPath", { id: "context-card-tip-clip", children: jsxRuntimeExports.jsx("rect", { width: "14", height: "7", fill: "white", className: "fill-background-100" }) }) })] }) }), jsxRuntimeExports.jsx("div", { ref: portalRef })] }) }) }), resolvedPortalTarget ?? document.body) : null] });
19924
19979
  }
19925
19980
  function ContextCardTrigger({ content: content2, children: children2, side = "right", align = "center", sideOffset = 16, alignOffset = 0, ignoreCardPointerEvents = false, noPadding, asChild, className, hide: hide2, inactiveTimeoutMs = INACTIVE_TIMEOUT_MS }) {
19926
19981
  const triggerRef = reactExports.useRef(null);
@@ -20155,15 +20210,15 @@ function ContextCardTrigger({ content: content2, children: children2, side = "ri
20155
20210
  }
20156
20211
  }
20157
20212
  const Comp = asChild ? Root : "div";
20158
- return jsxRuntimeExports.jsxs(Comp, { className: cn$4("inline-flex cursor-pointer flex-[0_1_auto] overflow-hidden", className), onMouseEnter, onMouseLeave, onClick: handleClick, ref: triggerRef, children: [jsxRuntimeExports.jsx(Slottable, { children: children2 }), (portalRef == null ? void 0 : portalRef.current) && (localHover || persisting) ? reactDomExports.createPortal(jsxRuntimeExports.jsx("div", { className: cn$4("absolute top-0 p-3 left-0 max-w-max transition-[transform,width,height] duration-250 ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none", skipTransition && "!transition-none"), ref: contentRef, style: {
20159
- ...noPadding ? { padding: 0 } : {},
20160
- pointerEvents: rootVisible && visible && !ignoreCardPointerEvents ? "all" : "none"
20161
- }, children: jsxRuntimeExports.jsx("div", { className: cn$4("min-w-max transition-all duration-150 ease-[easing-function:cubic-bezier(0.3,_0.57,_0.07,_0.95)] will-change-[transform,width,height] motion-reduce:!transition-none", skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-250 ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none"), ref: contentMeasureRef, style: {
20162
- opacity: Number(visible)
20163
- }, children: content2 }) }, id), portalRef.current) : null] });
20213
+ return jsxRuntimeExports.jsxs(Comp, { className: cn$4("inline-flex cursor-pointer flex-[0_1_auto] overflow-hidden", className), onMouseEnter, onMouseLeave, onClick: handleClick, ref: triggerRef, children: [jsxRuntimeExports.jsx(Slottable, { children: children2 }), (portalRef == null ? void 0 : portalRef.current) && (localHover || persisting) ? reactDomExports.createPortal(jsxRuntimeExports.jsx("div", { className: cn$4("absolute top-0 p-3 left-0 max-w-max transition-[transform,width,height] duration-[250ms] ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none", skipTransition && "!transition-none", noPadding && "p-0", rootVisible && visible && !ignoreCardPointerEvents ? "pointer-events-auto" : "pointer-events-none"), ref: contentRef, children: jsxRuntimeExports.jsx("div", { className: cn$4("min-w-max transition-all duration-150 ease-[easing-function:cubic-bezier(0.3,_0.57,_0.07,_0.95)] will-change-[transform,width,height] motion-reduce:!transition-none", skipTransition ? "!transition-none" : "transition-[transform,width,height] duration-[250ms] ease-[easing-function:cubic-bezier(0.29,0.31,0.05,0.96)] will-change-[transform,width,height] motion-reduce:!transition-none", visible ? "opacity-100" : "opacity-0"), ref: contentMeasureRef, children: content2 }) }, id), portalRef.current) : null] });
20164
20214
  }
20215
+ const TooltipProvider = Provider;
20216
+ const Tooltip$1 = Root3;
20217
+ const TooltipTrigger$1 = Trigger;
20218
+ const TooltipContent$1 = reactExports.forwardRef(({ className, sideOffset = 8, showArrow = true, children: children2, ...props }, ref) => jsxRuntimeExports.jsx(Portal, { children: jsxRuntimeExports.jsxs(Content2, { ref, sideOffset, className: cn$4("z-[99999] flex items-center gap-1 rounded-[10px] bg-gray-1000 px-2 py-1.5 !text-label-13 text-background-100 shadow-md select-none", className), ...props, children: [children2, showArrow ? jsxRuntimeExports.jsx(Arrow2, { width: 11, height: 5, className: "fill-gray-1000" }) : null] }) }));
20219
+ TooltipContent$1.displayName = Content2.displayName;
20165
20220
  function Skeleton({ className, style: style2, ...props }) {
20166
- return jsxRuntimeExports.jsx("div", { ...props, className: cn$4("rounded-md", className), style: { backgroundColor: "var(--ds-gray-200)", ...style2 } });
20221
+ return jsxRuntimeExports.jsx("div", { ...props, className: cn$4("rounded-md bg-gray-200", className), style: style2 });
20167
20222
  }
20168
20223
  const TIME_UNITS = [
20169
20224
  { unit: "year", ms: 31536e6 },
@@ -45058,7 +45113,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
45058
45113
  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 });
45059
45114
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
45060
45115
  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 }) });
45061
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-B5pbFkUr.js"), true ? __vite__mapDeps([2,1]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
45116
+ var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-Dc1dLaUr.js"), true ? __vite__mapDeps([2,1]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
45062
45117
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
45063
45118
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
45064
45119
  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 }) })] }) });
@@ -45838,13 +45893,13 @@ function useSidebarDataOptional() {
45838
45893
  return reactExports.useContext(SidebarDataContext);
45839
45894
  }
45840
45895
  const STREAM_SKELETON_ROWS = [
45841
- { id: "stream-skeleton-row-1", width: "72%" },
45842
- { id: "stream-skeleton-row-2", width: "58%" },
45843
- { id: "stream-skeleton-row-3", width: "80%" },
45844
- { id: "stream-skeleton-row-4", width: "64%" }
45896
+ { id: "stream-skeleton-row-1", widthClassName: "w-[72%]" },
45897
+ { id: "stream-skeleton-row-2", widthClassName: "w-[58%]" },
45898
+ { id: "stream-skeleton-row-3", widthClassName: "w-4/5" },
45899
+ { id: "stream-skeleton-row-4", widthClassName: "w-[64%]" }
45845
45900
  ];
45846
45901
  function StreamViewerSkeleton() {
45847
- return jsxRuntimeExports.jsxs("output", { "aria-busy": "true", "aria-label": "Loading stream", className: "flex h-full min-h-0 w-full flex-col overflow-hidden bg-background-100", children: [jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Loading stream…" }), jsxRuntimeExports.jsx("div", { className: "flex h-10 min-h-10 items-center border-b border-gray-alpha-400 px-3", children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3 w-10" }) }), jsxRuntimeExports.jsx("div", { className: "flex flex-col", children: STREAM_SKELETON_ROWS.map((row) => jsxRuntimeExports.jsxs("div", { className: "flex h-10 items-center gap-2 border-b border-gray-alpha-400 px-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-3", style: { width: row.width } }), jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-4 shrink-0 rounded-sm" })] }, row.id)) })] });
45902
+ return jsxRuntimeExports.jsxs("output", { "aria-busy": "true", "aria-label": "Loading stream", className: "flex h-full min-h-0 w-full flex-col overflow-hidden bg-background-100", children: [jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Loading stream…" }), jsxRuntimeExports.jsx("div", { className: "flex h-10 min-h-10 items-center border-b border-gray-alpha-400 px-3", children: jsxRuntimeExports.jsx(Skeleton, { className: "h-3 w-10" }) }), jsxRuntimeExports.jsx("div", { className: "flex flex-col", children: STREAM_SKELETON_ROWS.map((row) => jsxRuntimeExports.jsxs("div", { className: "flex h-10 items-center gap-2 border-b border-gray-alpha-400 px-3", children: [jsxRuntimeExports.jsx(Skeleton, { className: `h-3 ${row.widthClassName}` }), jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-4 shrink-0 rounded-sm" })] }, row.id)) })] });
45848
45903
  }
45849
45904
  const ChunkRow = ReactExports.memo(function ChunkRow2({ chunk }) {
45850
45905
  return jsxRuntimeExports.jsxs("div", { className: "flex w-full items-start gap-1 border-b border-gray-alpha-400 px-3 py-2", children: [jsxRuntimeExports.jsx("div", { className: "min-w-0 flex-1", children: typeof chunk.value === "string" ? jsxRuntimeExports.jsx("span", { className: "whitespace-pre-wrap break-words text-label-12 font-mono text-gray-1000", children: chunk.value }) : jsxRuntimeExports.jsx(DataInspector, { data: chunk.value, expandLevel: 1 }) }), jsxRuntimeExports.jsx(CopyButton, { copyText: serializeForClipboard(chunk.value), ariaLabel: "Copy chunk", className: "shrink-0 -mr-1 [&>div]:h-4 [&>div]:w-4 [&_svg]:h-4 [&_svg]:w-4" })] });
@@ -45865,7 +45920,7 @@ function StreamViewer({ streamId: _streamId, chunks, isLive, error, isLoading, o
45865
45920
  if (isLoading && chunks.length === 0) {
45866
45921
  return jsxRuntimeExports.jsx(StreamViewerSkeleton, {});
45867
45922
  }
45868
- return jsxRuntimeExports.jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden bg-background-100", children: [jsxRuntimeExports.jsx("div", { className: "flex h-10 min-h-10 items-center gap-1.5 border-b border-gray-alpha-400 px-3", children: isLive && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("span", { className: "inline-block h-2 w-2 rounded-full bg-green-600" }), jsxRuntimeExports.jsx("span", { className: "text-label-12 text-green-700", children: "Live" })] }) }), jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0", children: error ? jsxRuntimeExports.jsxs("div", { className: "border-b border-red-400 bg-red-100 px-3 py-2 text-label-12 text-red-900", children: [jsxRuntimeExports.jsx("div", { children: "Error reading stream:" }), jsxRuntimeExports.jsx("div", { children: error })] }) : chunks.length === 0 ? jsxRuntimeExports.jsx("div", { className: "flex h-10 items-center border-b border-gray-alpha-400 bg-background-200 px-3 text-label-12 text-gray-900", children: isLive ? "Waiting for stream data..." : "Stream is empty" }) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd == null ? void 0 : onScrollEnd(), itemContent: (index2) => jsxRuntimeExports.jsx("div", { className: "w-full", children: jsxRuntimeExports.jsx(ChunkRow, { chunk: chunks[index2] }) }), style: { flex: 1, minHeight: 0 } }) })] });
45923
+ return jsxRuntimeExports.jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden bg-background-100", children: [jsxRuntimeExports.jsx("div", { className: "flex h-10 min-h-10 items-center gap-1.5 border-b border-gray-alpha-400 px-3", children: isLive && jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("span", { className: "inline-block h-2 w-2 rounded-full bg-green-600" }), jsxRuntimeExports.jsx("span", { className: "text-label-12 text-green-700", children: "Live" })] }) }), jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0", children: error ? jsxRuntimeExports.jsxs("div", { className: "border-b border-red-400 bg-red-100 px-3 py-2 text-label-12 text-red-900", children: [jsxRuntimeExports.jsx("div", { children: "Error reading stream:" }), jsxRuntimeExports.jsx("div", { children: error })] }) : chunks.length === 0 ? jsxRuntimeExports.jsx("div", { className: "flex h-10 items-center border-b border-gray-alpha-400 bg-background-200 px-3 text-label-12 text-gray-900", children: isLive ? "Waiting for stream data..." : "Stream is empty" }) : jsxRuntimeExports.jsx(Yr, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd == null ? void 0 : onScrollEnd(), itemContent: (index2) => jsxRuntimeExports.jsx("div", { className: "w-full", children: jsxRuntimeExports.jsx(ChunkRow, { chunk: chunks[index2] }) }), className: "min-h-0 flex-1" }) })] });
45869
45924
  }
45870
45925
  const iconButtonVariants = cva([
45871
45926
  "m-0 inline-flex shrink-0 appearance-none items-center justify-center border-0 bg-transparent p-0 align-baseline font-inherit no-underline [background:none] [-webkit-appearance:none] [-webkit-tap-highlight-color:transparent]",
@@ -45890,11 +45945,6 @@ const iconButtonVariants = cva([
45890
45945
  });
45891
45946
  const IconButton = reactExports.forwardRef(({ className, variant, size: size2, type = "button", ...props }, ref) => jsxRuntimeExports.jsx("button", { ref, type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props }));
45892
45947
  IconButton.displayName = "IconButton";
45893
- const TooltipProvider = Provider;
45894
- const Tooltip$1 = Root3;
45895
- const TooltipTrigger$1 = Trigger;
45896
- const TooltipContent$1 = reactExports.forwardRef(({ className, sideOffset = 8, showArrow = true, children: children2, ...props }, ref) => jsxRuntimeExports.jsx(Portal, { children: jsxRuntimeExports.jsxs(Content2, { ref, sideOffset, className: cn$4("z-[99999] flex items-center gap-1 rounded-[10px] bg-gray-1000 px-2 py-1.5 !text-label-13 text-background-100 shadow-md select-none", className), ...props, children: [children2, showArrow ? jsxRuntimeExports.jsx(Arrow2, { width: 11, height: 5, className: "fill-gray-1000" }) : null] }) }));
45897
- TooltipContent$1.displayName = Content2.displayName;
45898
45948
  const ActiveSpanContext = reactExports.createContext(null);
45899
45949
  ActiveSpanContext.displayName = "ActiveSpanContext";
45900
45950
  function ActiveSpanProvider({ spans, children: children2 }) {
@@ -46215,41 +46265,31 @@ function computeSpanDelta(anchor, hovered, viewStart, viewEnd) {
46215
46265
  hoveredOffscreen: hoveredStart > viewEnd ? "right" : hoveredEnd < viewStart ? "left" : null
46216
46266
  };
46217
46267
  }
46218
- const RESOURCE_COLORS = {
46268
+ const RESOURCE_CLASS_NAMES = {
46219
46269
  run: {
46220
- bg: "var(--ds-blue-200)",
46221
- border: "var(--ds-blue-500)",
46222
- errorBg: "var(--ds-red-200)",
46223
- errorBorder: "var(--ds-red-500)"
46270
+ className: "border-blue-500 bg-blue-200",
46271
+ errorClassName: "border-red-500 bg-red-200"
46224
46272
  },
46225
46273
  step: {
46226
- bg: "var(--ds-green-200)",
46227
- border: "var(--ds-green-500)",
46228
- errorBg: "var(--ds-red-200)",
46229
- errorBorder: "var(--ds-red-500)"
46274
+ className: "border-green-500 bg-green-200",
46275
+ errorClassName: "border-red-500 bg-red-200"
46230
46276
  },
46231
46277
  // Passive spans (hooks) stay gray — matches event-list icons and the minimap.
46232
46278
  hook: {
46233
- bg: "var(--ds-gray-200)",
46234
- border: "var(--ds-gray-500)",
46235
- errorBg: "var(--ds-red-200)",
46236
- errorBorder: "var(--ds-red-500)"
46279
+ className: "border-gray-500 bg-gray-200",
46280
+ errorClassName: "border-red-500 bg-red-200"
46237
46281
  },
46238
46282
  sleep: {
46239
- bg: "var(--ds-purple-200)",
46240
- border: "var(--ds-purple-500)",
46241
- errorBg: "var(--ds-red-200)",
46242
- errorBorder: "var(--ds-red-500)"
46283
+ className: "border-purple-500 bg-purple-200",
46284
+ errorClassName: "border-red-500 bg-red-200"
46243
46285
  },
46244
46286
  default: {
46245
- bg: "var(--ds-gray-200)",
46246
- border: "var(--ds-gray-500)",
46247
- errorBg: "var(--ds-red-200)",
46248
- errorBorder: "var(--ds-red-500)"
46287
+ className: "border-gray-500 bg-gray-200",
46288
+ errorClassName: "border-red-500 bg-red-200"
46249
46289
  }
46250
46290
  };
46251
- function getResourceColor(resource) {
46252
- return RESOURCE_COLORS[resource] ?? RESOURCE_COLORS.default;
46291
+ function getResourceClassNames(resource) {
46292
+ return RESOURCE_CLASS_NAMES[resource] ?? RESOURCE_CLASS_NAMES.default;
46253
46293
  }
46254
46294
  function clampFraction(value) {
46255
46295
  return Math.max(0, Math.min(1, value));
@@ -46594,10 +46634,6 @@ const SEGMENT_CLASSES = {
46594
46634
  sleeping: "bg-gray-400 border border-gray-500",
46595
46635
  received: "bg-blue-200 border border-blue-500"
46596
46636
  };
46597
- const TIMELINE_INSET_STYLE = {
46598
- left: TIMELINE_PADDING_PX,
46599
- right: TIMELINE_PADDING_PX
46600
- };
46601
46637
  const STRIPED_SEGMENT_STATUSES = /* @__PURE__ */ new Set([
46602
46638
  "pending",
46603
46639
  "running",
@@ -46678,8 +46714,8 @@ function BoundaryArrow({ direction }) {
46678
46714
  const Icon2 = direction === "right" ? ArrowRight : ArrowLeft;
46679
46715
  return jsxRuntimeExports.jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-[0.25rem]", children: jsxRuntimeExports.jsx(Icon2, { className: "size-3 text-gray-900" }) });
46680
46716
  }
46681
- function PlainBar({ bg, border, label }) {
46682
- return jsxRuntimeExports.jsx("div", { className: "relative h-6 w-full min-w-1 rounded-[0.25rem] border", style: { background: bg, borderColor: border }, children: label ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null });
46717
+ function PlainBar({ className, label }) {
46718
+ return jsxRuntimeExports.jsx("div", { className: cn$4("relative h-6 w-full min-w-1 rounded-[0.25rem] border", className), children: label ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null });
46683
46719
  }
46684
46720
  function LeadInConnector({ leftPct, widthPct, label }) {
46685
46721
  return jsxRuntimeExports.jsxs("div", { className: "absolute top-1/2 h-6 -translate-y-1/2", style: {
@@ -46699,11 +46735,10 @@ function SegmentBar({ segments, showLabels = true }) {
46699
46735
  }
46700
46736
  const label = formatDurationPrecise(seg.fullDurationMs);
46701
46737
  const showLabel = showLabels && seg.pixelWidth >= Math.max(40, estimateLabelWidthPx(label));
46702
- return jsxRuntimeExports.jsxs("div", { className: cn$4("absolute h-full overflow-hidden rounded-[0.25rem]", SEGMENT_CLASSES[seg.status]), style: {
46738
+ return jsxRuntimeExports.jsxs("div", { className: cn$4("absolute h-full min-w-px overflow-hidden rounded-[0.25rem]", SEGMENT_CLASSES[seg.status]), style: {
46703
46739
  // 1px gap between adjacent segments, distributed equally.
46704
46740
  left: `calc(${seg.leftPct}% + 0.5px)`,
46705
- width: `calc(${seg.widthPct}% - 1px)`,
46706
- minWidth: 1
46741
+ width: `calc(${seg.widthPct}% - 1px)`
46707
46742
  }, children: [STRIPED_SEGMENT_STATUSES.has(seg.status) ? jsxRuntimeExports.jsx(AnimatedStripes, { status: seg.status }) : null, showLabel ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null] }, i);
46708
46743
  }) });
46709
46744
  }
@@ -46719,15 +46754,14 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
46719
46754
  const offscreen = reactExports.useMemo(() => geometry.mode.kind === "full" ? computeOffscreenMarkers(baseMarkers, geometry.visibleStartMs, geometry.visibleEndMs) : { left: null, right: null }, [geometry, baseMarkers]);
46720
46755
  const hasMarkers = markers.length > 0 || offscreen.left !== null || offscreen.right !== null;
46721
46756
  const isErrored = isSpanErrored(span);
46722
- const colors = getResourceColor(span.resource);
46723
- const fallbackBg = isErrored ? colors.errorBg ?? "var(--ds-red-200)" : colors.bg;
46724
- const fallbackBorder = isErrored ? colors.errorBorder ?? "var(--ds-red-500)" : colors.border;
46757
+ const colors = getResourceClassNames(span.resource);
46758
+ const fallbackClassName = isErrored ? colors.errorClassName ?? "border-red-500 bg-red-200" : colors.className;
46725
46759
  const totalLabel = formatDurationPrecise(totalDurationMs);
46726
46760
  const showTotalLabel = geometry.visiblePixelWidth >= Math.max(40, estimateLabelWidthPx(totalLabel));
46727
46761
  const handleClick = reactExports.useCallback(() => {
46728
46762
  onSelect(span.spanId);
46729
46763
  }, [onSelect, span.spanId]);
46730
- return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsxs("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: [jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 overflow-hidden rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments, showLabels: !hasMarkers }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }), hasMarkers ? jsxRuntimeExports.jsxs("div", { className: "pointer-events-none absolute top-1/2 h-6 -translate-y-1/2", style: getBarPositionStyle(geometry), children: [markers.length > 0 ? jsxRuntimeExports.jsx(MarkerLayer, { markers }) : null, offscreen.left ? jsxRuntimeExports.jsx(OffscreenMarkerIndicator, { direction: "left", count: offscreen.left.count, targetMs: offscreen.left.nearestMs, onReveal: onRevealTime }) : null, offscreen.right ? jsxRuntimeExports.jsx(OffscreenMarkerIndicator, { direction: "right", count: offscreen.right.count, targetMs: offscreen.right.nearestMs, onReveal: onRevealTime }) : null, showTotalLabel ? jsxRuntimeExports.jsx(DurationLabel, {
46764
+ return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsxs("div", { className: "absolute inset-x-4 inset-y-0", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 overflow-hidden rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: cn$4("h-6 rounded-[0.25rem] border", fallbackClassName) }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments, showLabels: !hasMarkers }) : jsxRuntimeExports.jsx(PlainBar, { className: fallbackClassName, label: showTotalLabel ? totalLabel : null }) }), hasMarkers ? jsxRuntimeExports.jsxs("div", { className: "pointer-events-none absolute top-1/2 h-6 -translate-y-1/2", style: getBarPositionStyle(geometry), children: [markers.length > 0 ? jsxRuntimeExports.jsx(MarkerLayer, { markers }) : null, offscreen.left ? jsxRuntimeExports.jsx(OffscreenMarkerIndicator, { direction: "left", count: offscreen.left.count, targetMs: offscreen.left.nearestMs, onReveal: onRevealTime }) : null, offscreen.right ? jsxRuntimeExports.jsx(OffscreenMarkerIndicator, { direction: "right", count: offscreen.right.count, targetMs: offscreen.right.nearestMs, onReveal: onRevealTime }) : null, showTotalLabel ? jsxRuntimeExports.jsx(DurationLabel, {
46731
46765
  label: totalLabel,
46732
46766
  // Shift clear of the left edge indicator so it isn't covered.
46733
46767
  className: offscreen.left ? "pl-10" : void 0
@@ -46748,9 +46782,8 @@ const DeltaMeasureLine = reactExports.memo(function DeltaMeasureLine2({ delta, a
46748
46782
  const label = formatDurationPrecise(delta.deltaMs);
46749
46783
  const labelWidthPx = estimateLabelWidthPx(label);
46750
46784
  const labelPlacement = endX - startX >= labelWidthPx ? { left: (startX + endX) / 2, translate: "-translate-x-1/2" } : endX + 4 + labelWidthPx <= timelineWidth ? { left: endX + 4, translate: "" } : { left: startX - 4, translate: "-translate-x-full" };
46751
- return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "absolute h-px bg-amber-800", style: {
46785
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "absolute h-px w-1 bg-amber-800", style: {
46752
46786
  left: Math.min(anchorX, guideX),
46753
- width: MEASURE_GUIDE_OUTSET_PX,
46754
46787
  top: anchorCenterY
46755
46788
  } }), jsxRuntimeExports.jsx("div", { className: "absolute w-px bg-amber-800", style: {
46756
46789
  left: guideX,
@@ -46800,10 +46833,10 @@ function Timeline({ spans, viewStart, viewEnd, markers, selectedId, searchResult
46800
46833
  const delta = computeSpanDelta(anchorSpan, hoveredSpan, viewStart, viewEnd);
46801
46834
  return delta ? { delta, anchorRowIndex: anchorIndex, hoveredRowIndex: hover.rowIndex } : null;
46802
46835
  }, [altHeld, anchorIndex, hover, spans, viewStart, viewEnd]);
46803
- return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers.map((marker) => (
46836
+ return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-x-4 inset-y-0", children: markers.map((marker) => (
46804
46837
  // Skip the "0s" origin marker since the left edge already implies it.
46805
46838
  Math.abs(marker.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker.position * 100}%` } }, String(marker.value)) : null
46806
- )) }), hover != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hover.fraction * 100}%` } }) }), jsxRuntimeExports.jsx("div", { style: { transform: `translateY(${start * ROW_HEIGHT_PX}px)` }, children: spans.slice(start, end).map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect, onRevealTime }, span.spanId)) }), altHeld && anchorIndex < 0 && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gapMeasurements.map((gap) => jsxRuntimeExports.jsx(DeltaMeasureLine, { ...gap, timelineWidth }, gap.anchorRowIndex)) }), measurement && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none z-20", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx(DeltaMeasureLine, { ...measurement, timelineWidth }) })] });
46839
+ )) }), hover != null && jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-x-4 inset-y-0 z-10", children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hover.fraction * 100}%` } }) }), jsxRuntimeExports.jsx("div", { style: { transform: `translateY(${start * ROW_HEIGHT_PX}px)` }, children: spans.slice(start, end).map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect, onRevealTime }, span.spanId)) }), altHeld && anchorIndex < 0 && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-x-4 inset-y-0", children: gapMeasurements.map((gap) => jsxRuntimeExports.jsx(DeltaMeasureLine, { ...gap, timelineWidth }, gap.anchorRowIndex)) }), measurement && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "pointer-events-none absolute inset-x-4 inset-y-0 z-20", children: jsxRuntimeExports.jsx(DeltaMeasureLine, { ...measurement, timelineWidth }) })] });
46807
46840
  }
46808
46841
  const CANVAS_PAD_Y_PX = 6;
46809
46842
  const MIN_LINE_HEIGHT_PX = 1.5;
@@ -49491,7 +49524,7 @@ const mermaid3ZIDBTTL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.def
49491
49524
  Mermaid: Nt
49492
49525
  }, Symbol.toStringTag, { value: "Module" }));
49493
49526
  export {
49494
- CollapsibleRoot as $,
49527
+ CopyableDataBlock as $,
49495
49528
  Anchor as A,
49496
49529
  Button as B,
49497
49530
  Check as C,
@@ -49516,108 +49549,109 @@ export {
49516
49549
  VISUALLY_HIDDEN_STYLES as V,
49517
49550
  createContext2 as W,
49518
49551
  fetchWorkflowsManifest as X,
49519
- cn$4 as Y,
49520
- CopyableDataBlock as Z,
49552
+ entityEventClass as Y,
49553
+ cn$4 as Z,
49521
49554
  __vitePreload as _,
49522
49555
  TooltipTrigger as a,
49523
- apiBase as a$,
49524
- CollapsibleTrigger as a0,
49525
- CollapsibleContent as a1,
49526
- CopyButton as a2,
49527
- RESERVED_ATTRIBUTE_KEY_PREFIX as a3,
49528
- Spinner as a4,
49529
- ContextCardProvider as a5,
49530
- Skeleton as a6,
49531
- DecryptClickContext as a7,
49532
- Yr as a8,
49533
- isEncryptedMarker$1 as a9,
49534
- useRowWindow as aA,
49535
- isSpanDimmedBySearch as aB,
49536
- ROW_HEIGHT_PX as aC,
49537
- getSpanDurationMs as aD,
49538
- isSpanErrored as aE,
49539
- formatDurationPrecise as aF,
49540
- TooltipProvider as aG,
49541
- ActiveSpanProvider as aH,
49542
- useReducedMotion as aI,
49543
- searchSpans as aJ,
49544
- computeRootBounds as aK,
49545
- computeTimeMarkers as aL,
49546
- clampViewportToRoot as aM,
49547
- getHighResInMs as aN,
49548
- scrollRowIntoView as aO,
49549
- TIMELINE_PADDING_PX as aP,
49550
- Minimap as aQ,
49551
- Timeline as aR,
49552
- TimelineHeader as aS,
49553
- wheelZoomScaleFactor as aT,
49554
- wheelDeltaToPixels as aU,
49555
- SidebarDataProvider as aV,
49556
- fetchHook as aW,
49557
- hydrateResourceIOAsync as aX,
49558
- fetchStep as aY,
49559
- hydrateResourceIO as aZ,
49560
- fetchStreams as a_,
49561
- TimestampTooltip as aa,
49562
- formatDuration as ab,
49563
- DataInspector as ac,
49564
- _r as ad,
49565
- isHookLifecycleEventType as ae,
49566
- isTerminalStepEventType as af,
49567
- isWaitEventType as ag,
49568
- isStepEventType as ah,
49569
- RunClickContext as ai,
49570
- StreamClickContext as aj,
49571
- Collapsible as ak,
49572
- isExpiredMarker as al,
49573
- isDoStreamStep as am,
49574
- extractConversation as an,
49575
- EncryptedDataBlock as ao,
49576
- getEventDataRefFields as ap,
49577
- hasEncryptedFields as aq,
49578
- useSidebarDataOptional as ar,
49579
- isTerminalWorkflowRunStatus as as,
49580
- clsx as at,
49581
- useActiveSpan as au,
49582
- useSidebarData as av,
49583
- Tooltip$1 as aw,
49584
- TooltipTrigger$1 as ax,
49585
- IconButton as ay,
49586
- TooltipContent$1 as az,
49556
+ fetchStreams as a$,
49557
+ CollapsibleRoot as a0,
49558
+ CollapsibleTrigger as a1,
49559
+ CollapsibleContent as a2,
49560
+ CopyButton as a3,
49561
+ RESERVED_ATTRIBUTE_KEY_PREFIX as a4,
49562
+ Spinner as a5,
49563
+ TooltipProvider as a6,
49564
+ Tooltip$1 as a7,
49565
+ TooltipTrigger$1 as a8,
49566
+ TooltipContent$1 as a9,
49567
+ useSidebarData as aA,
49568
+ IconButton as aB,
49569
+ useRowWindow as aC,
49570
+ isSpanDimmedBySearch as aD,
49571
+ ROW_HEIGHT_PX as aE,
49572
+ getSpanDurationMs as aF,
49573
+ isSpanErrored as aG,
49574
+ formatDurationPrecise as aH,
49575
+ ActiveSpanProvider as aI,
49576
+ useReducedMotion as aJ,
49577
+ searchSpans as aK,
49578
+ computeRootBounds as aL,
49579
+ computeTimeMarkers as aM,
49580
+ clampViewportToRoot as aN,
49581
+ getHighResInMs as aO,
49582
+ scrollRowIntoView as aP,
49583
+ TIMELINE_PADDING_PX as aQ,
49584
+ Minimap as aR,
49585
+ Timeline as aS,
49586
+ TimelineHeader as aT,
49587
+ wheelZoomScaleFactor as aU,
49588
+ wheelDeltaToPixels as aV,
49589
+ SidebarDataProvider as aW,
49590
+ fetchHook as aX,
49591
+ hydrateResourceIOAsync as aY,
49592
+ fetchStep as aZ,
49593
+ hydrateResourceIO as a_,
49594
+ ContextCardProvider as aa,
49595
+ Skeleton as ab,
49596
+ DecryptClickContext as ac,
49597
+ Yr as ad,
49598
+ isEncryptedMarker$1 as ae,
49599
+ TimestampTooltip as af,
49600
+ formatDuration as ag,
49601
+ DataInspector as ah,
49602
+ _r as ai,
49603
+ isHookLifecycleEventType as aj,
49604
+ isTerminalStepEventType as ak,
49605
+ isWaitEventType as al,
49606
+ isStepEventType as am,
49607
+ RunClickContext as an,
49608
+ StreamClickContext as ao,
49609
+ Collapsible as ap,
49610
+ isExpiredMarker as aq,
49611
+ isDoStreamStep as ar,
49612
+ extractConversation as as,
49613
+ EncryptedDataBlock as at,
49614
+ getEventDataRefFields as au,
49615
+ hasEncryptedFields as av,
49616
+ useSidebarDataOptional as aw,
49617
+ isTerminalWorkflowRunStatus as ax,
49618
+ clsx as ay,
49619
+ useActiveSpan as az,
49587
49620
  TooltipContent as b,
49588
- Slot as b0,
49589
- Slottable as b1,
49590
- buttonVariants as b2,
49591
- fetchEvent as b3,
49592
- fetchEventsByCorrelationId as b4,
49593
- isEncryptedData as b5,
49594
- hydrateData as b6,
49595
- decrypt as b7,
49596
- deriveRunPayloadKeys as b8,
49597
- getWebRevivers as b9,
49598
- LIVE_UPDATE_INTERVAL_MS as ba,
49599
- getEncryptionKeyForRun as bb,
49600
- StreamViewerSkeleton as bc,
49601
- Lock as bd,
49602
- StreamViewer as be,
49603
- composeRefs as bf,
49604
- useFloating as bg,
49605
- offset as bh,
49606
- shift as bi,
49607
- limitShift as bj,
49608
- flip as bk,
49609
- size as bl,
49610
- arrow as bm,
49611
- hide as bn,
49612
- autoUpdate as bo,
49613
- VERCEL_403_ERROR_MESSAGE as bp,
49614
- bulkCancelRuns as bq,
49615
- reenqueueRun as br,
49616
- wakeUpRun as bs,
49617
- resumeHook as bt,
49618
- fetchHookToken as bu,
49619
- cancelRun as bv,
49620
- recreateRun as bw,
49621
+ apiBase as b0,
49622
+ Slot as b1,
49623
+ Slottable as b2,
49624
+ buttonVariants as b3,
49625
+ fetchEvent as b4,
49626
+ fetchEventsByCorrelationId as b5,
49627
+ isEncryptedData as b6,
49628
+ hydrateData as b7,
49629
+ decrypt as b8,
49630
+ deriveRunPayloadKeys as b9,
49631
+ getWebRevivers as ba,
49632
+ LIVE_UPDATE_INTERVAL_MS as bb,
49633
+ getEncryptionKeyForRun as bc,
49634
+ StreamViewerSkeleton as bd,
49635
+ Lock as be,
49636
+ StreamViewer as bf,
49637
+ composeRefs as bg,
49638
+ useFloating as bh,
49639
+ offset as bi,
49640
+ shift as bj,
49641
+ limitShift as bk,
49642
+ flip as bl,
49643
+ size as bm,
49644
+ arrow as bn,
49645
+ hide as bo,
49646
+ autoUpdate as bp,
49647
+ VERCEL_403_ERROR_MESSAGE as bq,
49648
+ bulkCancelRuns as br,
49649
+ reenqueueRun as bs,
49650
+ wakeUpRun as bt,
49651
+ resumeHook as bu,
49652
+ fetchHookToken as bv,
49653
+ cancelRun as bw,
49654
+ recreateRun as bx,
49621
49655
  createLucideIcon as c,
49622
49656
  runHealthCheck as d,
49623
49657
  cn as e,