@workflow/web 5.0.0-beta.41 → 5.0.0-beta.43

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-jWH-UQH9.js → arrow-up-right-D39pnGsD.js} +1 -1
  3. package/build/client/assets/{highlighted-body-B3W2YXNL-DmmWu7VM.js → highlighted-body-B3W2YXNL-Dc1dLaUr.js} +1 -1
  4. package/build/client/assets/{home-BwYHJJJr.js → home-C6CuMqQu.js} +3 -3
  5. package/build/client/assets/{loader-circle-fFQM94Ej.js → loader-circle-BOxaTUjK.js} +1 -1
  6. package/build/client/assets/{manifest-f6a9dca2.js → manifest-157e28f1.js} +1 -1
  7. package/build/client/assets/{mermaid-3ZIDBTTL-DchhEfRL.js → mermaid-3ZIDBTTL-gEw-Ch1C.js} +308 -284
  8. package/build/client/assets/{root-D6p4Hb4F.js → root-BfhMCbkz.js} +3 -3
  9. package/build/client/assets/root-Bl5xphvU.css +1 -0
  10. package/build/client/assets/{run-detail-vPCbZIXx.js → run-detail-BG_1K2Hq.js} +339 -130
  11. package/build/client/assets/{workflow-graph-viewer-t_fSwuwz.js → workflow-graph-viewer-CxrWityD.js} +3 -145
  12. package/build/client/assets/{zstd-browser-decoder-BTw1glGN.js → zstd-browser-decoder-CAEVa0bm.js} +1 -1
  13. package/build/server/assets/{app-D8GiFFR6.js → app-_xgEuKqE.js} +1533 -799
  14. package/build/server/assets/{highlighted-body-B3W2YXNL-BZVc2guG.js → highlighted-body-B3W2YXNL-B1Smd86a.js} +5 -4
  15. package/build/server/assets/index-CSsrecUx.js +161 -0
  16. package/build/server/assets/{index-DTci39F3.js → index-Ck5CB_wQ.js} +1 -1
  17. package/build/server/assets/{mermaid-3ZIDBTTL-DOefrphg.js → mermaid-3ZIDBTTL-CwYR558N.js} +5 -4
  18. package/build/server/assets/{token-c3byIJRC.js → token-COK7oHMh.js} +1 -1
  19. package/build/server/assets/{token-util-C2yENsqE.js → token-util-BhmVdeCX.js} +1 -1
  20. package/build/server/assets/{websocket-server-DagS_hnJ.js → websocket-server-ByjlHAhQ.js} +1 -1
  21. package/build/server/assets/{wrapper-Cnumc4u1.js → wrapper-DWeVTope.js} +7 -6
  22. package/build/server/assets/{ws-transport-2gJL6hC2.js → ws-transport-BCfcEhAO.js} +45 -6
  23. package/build/server/assets/{zstd-browser-decoder-BCVvr1WT.js → zstd-browser-decoder-D8JD_nwS.js} +5 -4
  24. package/build/server/index.js +7 -6
  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-BByEr1g6.js +0 -154
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/zstd-browser-decoder-BTw1glGN.js","assets/index-PFjW8YjQ.js","assets/highlighted-body-B3W2YXNL-DmmWu7VM.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(),
@@ -15713,6 +15682,22 @@ const HookResumeInputSchema = object({
15713
15682
  */
15714
15683
  deploymentId: string$2().optional()
15715
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()
15700
+ });
15716
15701
  const WorkflowInvokePayloadSchema = object({
15717
15702
  runId: string$2(),
15718
15703
  traceCarrier: TraceCarrierSchema.optional(),
@@ -15746,7 +15731,28 @@ const WorkflowInvokePayloadSchema = object({
15746
15731
  * fast path. A consumer that understands this field idempotently ensures the
15747
15732
  * `hook_received` event exists (keyed by `resumeId`) before replaying.
15748
15733
  */
15749
- 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)
15750
15756
  });
15751
15757
  const HealthCheckPayloadSchema = object({
15752
15758
  __healthCheck: literal(true),
@@ -15851,6 +15857,80 @@ object({
15851
15857
  });
15852
15858
  string$2().ulid();
15853
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
+ };
15854
15934
  const UNDEFINED = -1;
15855
15935
  const HOLE = -2;
15856
15936
  const NAN = -3;
@@ -17442,7 +17522,7 @@ async function hydrateResourceIOAsync(resource, key) {
17442
17522
  return { hydrateDataWithKey: hydrateDataWithKey3, deriveRunPayloadKeys: deriveRunPayloadKeys3 };
17443
17523
  }, true ? void 0 : void 0);
17444
17524
  const { ensureZstdDecoderRegistered } = await __vitePreload(async () => {
17445
- const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-BTw1glGN.js");
17525
+ const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-CAEVa0bm.js");
17446
17526
  return { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 };
17447
17527
  }, true ? __vite__mapDeps([0,1]) : void 0);
17448
17528
  ensureZstdDecoderRegistered();
@@ -18962,23 +19042,17 @@ function Spinner({ size: size2 = 14, color: color2 }) {
18962
19042
  lineW: size2 * 0.24,
18963
19043
  lineH: size2 * 0.08
18964
19044
  };
18965
- return jsxRuntimeExports.jsxs("span", { style: {
18966
- display: "inline-flex",
18967
- position: "relative",
19045
+ return jsxRuntimeExports.jsxs("span", { className: "relative inline-flex", style: {
18968
19046
  width: size2,
18969
19047
  height: size2
18970
- }, children: [jsxRuntimeExports.jsx("style", { dangerouslySetInnerHTML: { __html: KEYFRAMES } }), config2.delays.map((delay, i) => jsxRuntimeExports.jsx("span", { style: {
18971
- position: "absolute",
18972
- left: "50%",
18973
- 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: {
18974
19049
  width: config2.lineW,
18975
19050
  height: config2.lineH,
18976
19051
  marginLeft: -config2.lineW / 2,
18977
19052
  marginTop: -config2.lineH / 2,
18978
- borderRadius: 1,
18979
- backgroundColor: color2 ?? "var(--ds-gray-700)",
19053
+ backgroundColor: color2,
18980
19054
  transform: `rotate(${i * config2.angle}deg) translate(${size2 * 0.36}px)`,
18981
- animation: `wf-spinner-fade ${config2.duration}ms linear infinite`,
19055
+ animationDuration: `${config2.duration}ms`,
18982
19056
  animationDelay: `${delay}ms`
18983
19057
  } }, delay))] });
18984
19058
  }
@@ -19040,33 +19114,18 @@ function EncryptedInlineLabel() {
19040
19114
  ctx.onDecrypt();
19041
19115
  }, children: [ctx.isDecrypting ? jsxRuntimeExports.jsx(Spinner, { size: 10 }) : jsxRuntimeExports.jsx(Lock, { className: "h-3 w-3" }), jsxRuntimeExports.jsx("span", { children: "Decrypt" })] });
19042
19116
  }
19043
- return jsxRuntimeExports.jsxs("span", { style: { color: "var(--ds-gray-600)", fontStyle: "italic" }, children: [jsxRuntimeExports.jsx(Lock, { className: "h-3 w-3", style: {
19044
- display: "inline",
19045
- verticalAlign: "middle",
19046
- marginRight: "3px",
19047
- marginTop: "-1px"
19048
- } }), "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"] });
19049
19118
  }
19050
19119
  function StreamRefInline({ streamRef }) {
19051
19120
  const onStreamClick = reactExports.useContext(StreamClickContext);
19052
- const [hovered, setHovered] = reactExports.useState(false);
19053
- 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: {
19054
- backgroundColor: hovered ? "var(--ds-blue-200)" : "var(--ds-blue-100)",
19055
- color: "var(--ds-blue-900)",
19056
- border: "1px solid var(--ds-blue-300)"
19057
- }, 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) => {
19058
19122
  e.stopPropagation();
19059
19123
  onStreamClick == null ? void 0 : onStreamClick(streamRef.streamId);
19060
19124
  }, title: `View stream: ${streamRef.streamId}`, children: [jsxRuntimeExports.jsx("span", { children: "📡" }), jsxRuntimeExports.jsx("span", { children: streamRef.streamId })] });
19061
19125
  }
19062
19126
  function RunRefInline({ runRef }) {
19063
19127
  const onRunClick = reactExports.useContext(RunClickContext);
19064
- const [hovered, setHovered] = reactExports.useState(false);
19065
- 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: {
19066
- backgroundColor: hovered ? "var(--ds-purple-200)" : "var(--ds-purple-100)",
19067
- color: "var(--ds-purple-900)",
19068
- border: "1px solid var(--ds-purple-300)"
19069
- }, 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) => {
19070
19129
  e.stopPropagation();
19071
19130
  onRunClick == null ? void 0 : onRunClick(runRef.runId);
19072
19131
  }, title: `View run: ${runRef.runId}`, children: jsxRuntimeExports.jsx("span", { children: runRef.runId }) });
@@ -19074,24 +19133,17 @@ function RunRefInline({ runRef }) {
19074
19133
  function DecodedBytesChunk({ decodedText, source }) {
19075
19134
  const [selectedView, setSelectedView] = reactExports.useState("decoded");
19076
19135
  const parsed = parseChunkData(decodedText);
19077
- 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: {
19078
- backgroundColor: selectedView === "decoded" ? "var(--ds-gray-200)" : "var(--ds-gray-100)",
19079
- color: "var(--ds-gray-900)"
19080
- }, 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: {
19081
- borderColor: "var(--ds-gray-400)",
19082
- backgroundColor: selectedView === "bytes" ? "var(--ds-gray-200)" : "var(--ds-gray-100)",
19083
- color: "var(--ds-gray-900)"
19084
- }, 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" })] }) })] });
19085
19137
  }
19086
19138
  function DecodedBytesInspector({ decodedText, source }) {
19087
19139
  const [expanded, setExpanded] = reactExports.useState(false);
19088
- 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) })] })] });
19089
19141
  }
19090
19142
  function BytesDisplayValue({ display }) {
19091
19143
  if (display.decodedFrom) {
19092
19144
  return jsxRuntimeExports.jsx(DecodedBytesChunk, { decodedText: display.text, source: display.decodedFrom });
19093
19145
  }
19094
- 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 });
19095
19147
  }
19096
19148
  function formatField(field) {
19097
19149
  return field === "" ? '""' : field;
@@ -19908,9 +19960,7 @@ function ContextCardProvider({ children: children2, portalTarget }) {
19908
19960
  distanceFromLast,
19909
19961
  lastOrigin
19910
19962
  ]);
19911
- 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: {
19912
- opacity: visible ? 1 : 0
19913
- }, 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: {
19914
19964
  transform: `translate(${activeBounds.x}px,${activeBounds.y}px)`,
19915
19965
  width: activeBounds.width,
19916
19966
  height: activeBounds.height
@@ -19919,18 +19969,13 @@ function ContextCardProvider({ children: children2, portalTarget }) {
19919
19969
  "right-full -translate-y-1/2 rotate-90 -mr-[3.5px]": activeBounds.side === "right",
19920
19970
  "bottom-full -translate-x-1/2 rotate-180": activeBounds.side === "bottom",
19921
19971
  "left-full -translate-y-1/2 rotate-[270deg] -ml-[3.5px]": activeBounds.side === "left"
19922
- }, 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: {
19923
19973
  ...activeBounds.side === "top" || activeBounds.side === "bottom" ? {
19924
19974
  left: `calc(50% + ${activeBounds.arrowOffset.x}px)`
19925
19975
  } : {
19926
19976
  top: `calc(50% + ${activeBounds.arrowOffset.y}px)`
19927
19977
  }
19928
- }, "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: {
19929
- fill: "var(--ds-background-100)",
19930
- fillOpacity: 1,
19931
- stroke: "var(--context-card-tip-stroke)",
19932
- strokeOpacity: 1
19933
- } }) }), 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] });
19934
19979
  }
19935
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 }) {
19936
19981
  const triggerRef = reactExports.useRef(null);
@@ -20165,15 +20210,15 @@ function ContextCardTrigger({ content: content2, children: children2, side = "ri
20165
20210
  }
20166
20211
  }
20167
20212
  const Comp = asChild ? Root : "div";
20168
- 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: {
20169
- ...noPadding ? { padding: 0 } : {},
20170
- pointerEvents: rootVisible && visible && !ignoreCardPointerEvents ? "all" : "none"
20171
- }, 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: {
20172
- opacity: Number(visible)
20173
- }, 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] });
20174
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;
20175
20220
  function Skeleton({ className, style: style2, ...props }) {
20176
- 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 });
20177
20222
  }
20178
20223
  const TIME_UNITS = [
20179
20224
  { unit: "year", ms: 31536e6 },
@@ -45068,7 +45113,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
45068
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 });
45069
45114
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
45070
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 }) });
45071
- var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-DmmWu7VM.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 }) => {
45072
45117
  let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
45073
45118
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
45074
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 }) })] }) });
@@ -45848,13 +45893,13 @@ function useSidebarDataOptional() {
45848
45893
  return reactExports.useContext(SidebarDataContext);
45849
45894
  }
45850
45895
  const STREAM_SKELETON_ROWS = [
45851
- { id: "stream-skeleton-row-1", width: "72%" },
45852
- { id: "stream-skeleton-row-2", width: "58%" },
45853
- { id: "stream-skeleton-row-3", width: "80%" },
45854
- { 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%]" }
45855
45900
  ];
45856
45901
  function StreamViewerSkeleton() {
45857
- 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)) })] });
45858
45903
  }
45859
45904
  const ChunkRow = ReactExports.memo(function ChunkRow2({ chunk }) {
45860
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" })] });
@@ -45875,7 +45920,7 @@ function StreamViewer({ streamId: _streamId, chunks, isLive, error, isLoading, o
45875
45920
  if (isLoading && chunks.length === 0) {
45876
45921
  return jsxRuntimeExports.jsx(StreamViewerSkeleton, {});
45877
45922
  }
45878
- 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" }) })] });
45879
45924
  }
45880
45925
  const iconButtonVariants = cva([
45881
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]",
@@ -45900,11 +45945,6 @@ const iconButtonVariants = cva([
45900
45945
  });
45901
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 }));
45902
45947
  IconButton.displayName = "IconButton";
45903
- const TooltipProvider = Provider;
45904
- const Tooltip$1 = Root3;
45905
- const TooltipTrigger$1 = Trigger;
45906
- 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] }) }));
45907
- TooltipContent$1.displayName = Content2.displayName;
45908
45948
  const ActiveSpanContext = reactExports.createContext(null);
45909
45949
  ActiveSpanContext.displayName = "ActiveSpanContext";
45910
45950
  function ActiveSpanProvider({ spans, children: children2 }) {
@@ -46225,41 +46265,31 @@ function computeSpanDelta(anchor, hovered, viewStart, viewEnd) {
46225
46265
  hoveredOffscreen: hoveredStart > viewEnd ? "right" : hoveredEnd < viewStart ? "left" : null
46226
46266
  };
46227
46267
  }
46228
- const RESOURCE_COLORS = {
46268
+ const RESOURCE_CLASS_NAMES = {
46229
46269
  run: {
46230
- bg: "var(--ds-blue-200)",
46231
- border: "var(--ds-blue-500)",
46232
- errorBg: "var(--ds-red-200)",
46233
- errorBorder: "var(--ds-red-500)"
46270
+ className: "border-blue-500 bg-blue-200",
46271
+ errorClassName: "border-red-500 bg-red-200"
46234
46272
  },
46235
46273
  step: {
46236
- bg: "var(--ds-green-200)",
46237
- border: "var(--ds-green-500)",
46238
- errorBg: "var(--ds-red-200)",
46239
- errorBorder: "var(--ds-red-500)"
46274
+ className: "border-green-500 bg-green-200",
46275
+ errorClassName: "border-red-500 bg-red-200"
46240
46276
  },
46241
46277
  // Passive spans (hooks) stay gray — matches event-list icons and the minimap.
46242
46278
  hook: {
46243
- bg: "var(--ds-gray-200)",
46244
- border: "var(--ds-gray-500)",
46245
- errorBg: "var(--ds-red-200)",
46246
- errorBorder: "var(--ds-red-500)"
46279
+ className: "border-gray-500 bg-gray-200",
46280
+ errorClassName: "border-red-500 bg-red-200"
46247
46281
  },
46248
46282
  sleep: {
46249
- bg: "var(--ds-purple-200)",
46250
- border: "var(--ds-purple-500)",
46251
- errorBg: "var(--ds-red-200)",
46252
- errorBorder: "var(--ds-red-500)"
46283
+ className: "border-purple-500 bg-purple-200",
46284
+ errorClassName: "border-red-500 bg-red-200"
46253
46285
  },
46254
46286
  default: {
46255
- bg: "var(--ds-gray-200)",
46256
- border: "var(--ds-gray-500)",
46257
- errorBg: "var(--ds-red-200)",
46258
- errorBorder: "var(--ds-red-500)"
46287
+ className: "border-gray-500 bg-gray-200",
46288
+ errorClassName: "border-red-500 bg-red-200"
46259
46289
  }
46260
46290
  };
46261
- function getResourceColor(resource) {
46262
- return RESOURCE_COLORS[resource] ?? RESOURCE_COLORS.default;
46291
+ function getResourceClassNames(resource) {
46292
+ return RESOURCE_CLASS_NAMES[resource] ?? RESOURCE_CLASS_NAMES.default;
46263
46293
  }
46264
46294
  function clampFraction(value) {
46265
46295
  return Math.max(0, Math.min(1, value));
@@ -46604,10 +46634,6 @@ const SEGMENT_CLASSES = {
46604
46634
  sleeping: "bg-gray-400 border border-gray-500",
46605
46635
  received: "bg-blue-200 border border-blue-500"
46606
46636
  };
46607
- const TIMELINE_INSET_STYLE = {
46608
- left: TIMELINE_PADDING_PX,
46609
- right: TIMELINE_PADDING_PX
46610
- };
46611
46637
  const STRIPED_SEGMENT_STATUSES = /* @__PURE__ */ new Set([
46612
46638
  "pending",
46613
46639
  "running",
@@ -46688,8 +46714,8 @@ function BoundaryArrow({ direction }) {
46688
46714
  const Icon2 = direction === "right" ? ArrowRight : ArrowLeft;
46689
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" }) });
46690
46716
  }
46691
- function PlainBar({ bg, border, label }) {
46692
- 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 });
46693
46719
  }
46694
46720
  function LeadInConnector({ leftPct, widthPct, label }) {
46695
46721
  return jsxRuntimeExports.jsxs("div", { className: "absolute top-1/2 h-6 -translate-y-1/2", style: {
@@ -46709,11 +46735,10 @@ function SegmentBar({ segments, showLabels = true }) {
46709
46735
  }
46710
46736
  const label = formatDurationPrecise(seg.fullDurationMs);
46711
46737
  const showLabel = showLabels && seg.pixelWidth >= Math.max(40, estimateLabelWidthPx(label));
46712
- 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: {
46713
46739
  // 1px gap between adjacent segments, distributed equally.
46714
46740
  left: `calc(${seg.leftPct}% + 0.5px)`,
46715
- width: `calc(${seg.widthPct}% - 1px)`,
46716
- minWidth: 1
46741
+ width: `calc(${seg.widthPct}% - 1px)`
46717
46742
  }, children: [STRIPED_SEGMENT_STATUSES.has(seg.status) ? jsxRuntimeExports.jsx(AnimatedStripes, { status: seg.status }) : null, showLabel ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null] }, i);
46718
46743
  }) });
46719
46744
  }
@@ -46729,15 +46754,14 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
46729
46754
  const offscreen = reactExports.useMemo(() => geometry.mode.kind === "full" ? computeOffscreenMarkers(baseMarkers, geometry.visibleStartMs, geometry.visibleEndMs) : { left: null, right: null }, [geometry, baseMarkers]);
46730
46755
  const hasMarkers = markers.length > 0 || offscreen.left !== null || offscreen.right !== null;
46731
46756
  const isErrored = isSpanErrored(span);
46732
- const colors = getResourceColor(span.resource);
46733
- const fallbackBg = isErrored ? colors.errorBg ?? "var(--ds-red-200)" : colors.bg;
46734
- 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;
46735
46759
  const totalLabel = formatDurationPrecise(totalDurationMs);
46736
46760
  const showTotalLabel = geometry.visiblePixelWidth >= Math.max(40, estimateLabelWidthPx(totalLabel));
46737
46761
  const handleClick = reactExports.useCallback(() => {
46738
46762
  onSelect(span.spanId);
46739
46763
  }, [onSelect, span.spanId]);
46740
- 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, {
46741
46765
  label: totalLabel,
46742
46766
  // Shift clear of the left edge indicator so it isn't covered.
46743
46767
  className: offscreen.left ? "pl-10" : void 0
@@ -46758,9 +46782,8 @@ const DeltaMeasureLine = reactExports.memo(function DeltaMeasureLine2({ delta, a
46758
46782
  const label = formatDurationPrecise(delta.deltaMs);
46759
46783
  const labelWidthPx = estimateLabelWidthPx(label);
46760
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" };
46761
- 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: {
46762
46786
  left: Math.min(anchorX, guideX),
46763
- width: MEASURE_GUIDE_OUTSET_PX,
46764
46787
  top: anchorCenterY
46765
46788
  } }), jsxRuntimeExports.jsx("div", { className: "absolute w-px bg-amber-800", style: {
46766
46789
  left: guideX,
@@ -46810,10 +46833,10 @@ function Timeline({ spans, viewStart, viewEnd, markers, selectedId, searchResult
46810
46833
  const delta = computeSpanDelta(anchorSpan, hoveredSpan, viewStart, viewEnd);
46811
46834
  return delta ? { delta, anchorRowIndex: anchorIndex, hoveredRowIndex: hover.rowIndex } : null;
46812
46835
  }, [altHeld, anchorIndex, hover, spans, viewStart, viewEnd]);
46813
- 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) => (
46814
46837
  // Skip the "0s" origin marker since the left edge already implies it.
46815
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
46816
- )) }), 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 }) })] });
46817
46840
  }
46818
46841
  const CANVAS_PAD_Y_PX = 6;
46819
46842
  const MIN_LINE_HEIGHT_PX = 1.5;
@@ -49501,7 +49524,7 @@ const mermaid3ZIDBTTL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.def
49501
49524
  Mermaid: Nt
49502
49525
  }, Symbol.toStringTag, { value: "Module" }));
49503
49526
  export {
49504
- CollapsibleRoot as $,
49527
+ CopyableDataBlock as $,
49505
49528
  Anchor as A,
49506
49529
  Button as B,
49507
49530
  Check as C,
@@ -49526,108 +49549,109 @@ export {
49526
49549
  VISUALLY_HIDDEN_STYLES as V,
49527
49550
  createContext2 as W,
49528
49551
  fetchWorkflowsManifest as X,
49529
- cn$4 as Y,
49530
- CopyableDataBlock as Z,
49552
+ entityEventClass as Y,
49553
+ cn$4 as Z,
49531
49554
  __vitePreload as _,
49532
49555
  TooltipTrigger as a,
49533
- apiBase as a$,
49534
- CollapsibleTrigger as a0,
49535
- CollapsibleContent as a1,
49536
- CopyButton as a2,
49537
- RESERVED_ATTRIBUTE_KEY_PREFIX as a3,
49538
- Spinner as a4,
49539
- ContextCardProvider as a5,
49540
- Skeleton as a6,
49541
- DecryptClickContext as a7,
49542
- Yr as a8,
49543
- isEncryptedMarker$1 as a9,
49544
- useRowWindow as aA,
49545
- isSpanDimmedBySearch as aB,
49546
- ROW_HEIGHT_PX as aC,
49547
- getSpanDurationMs as aD,
49548
- isSpanErrored as aE,
49549
- formatDurationPrecise as aF,
49550
- TooltipProvider as aG,
49551
- ActiveSpanProvider as aH,
49552
- useReducedMotion as aI,
49553
- searchSpans as aJ,
49554
- computeRootBounds as aK,
49555
- computeTimeMarkers as aL,
49556
- clampViewportToRoot as aM,
49557
- getHighResInMs as aN,
49558
- scrollRowIntoView as aO,
49559
- TIMELINE_PADDING_PX as aP,
49560
- Minimap as aQ,
49561
- Timeline as aR,
49562
- TimelineHeader as aS,
49563
- wheelZoomScaleFactor as aT,
49564
- wheelDeltaToPixels as aU,
49565
- SidebarDataProvider as aV,
49566
- fetchHook as aW,
49567
- hydrateResourceIOAsync as aX,
49568
- fetchStep as aY,
49569
- hydrateResourceIO as aZ,
49570
- fetchStreams as a_,
49571
- TimestampTooltip as aa,
49572
- formatDuration as ab,
49573
- DataInspector as ac,
49574
- _r as ad,
49575
- isHookLifecycleEventType as ae,
49576
- isTerminalStepEventType as af,
49577
- isWaitEventType as ag,
49578
- isStepEventType as ah,
49579
- RunClickContext as ai,
49580
- StreamClickContext as aj,
49581
- Collapsible as ak,
49582
- isExpiredMarker as al,
49583
- isDoStreamStep as am,
49584
- extractConversation as an,
49585
- EncryptedDataBlock as ao,
49586
- getEventDataRefFields as ap,
49587
- hasEncryptedFields as aq,
49588
- useSidebarDataOptional as ar,
49589
- isTerminalWorkflowRunStatus as as,
49590
- clsx as at,
49591
- useActiveSpan as au,
49592
- useSidebarData as av,
49593
- Tooltip$1 as aw,
49594
- TooltipTrigger$1 as ax,
49595
- IconButton as ay,
49596
- 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,
49597
49620
  TooltipContent as b,
49598
- Slot as b0,
49599
- Slottable as b1,
49600
- buttonVariants as b2,
49601
- fetchEvent as b3,
49602
- fetchEventsByCorrelationId as b4,
49603
- isEncryptedData as b5,
49604
- hydrateData as b6,
49605
- decrypt as b7,
49606
- deriveRunPayloadKeys as b8,
49607
- getWebRevivers as b9,
49608
- LIVE_UPDATE_INTERVAL_MS as ba,
49609
- getEncryptionKeyForRun as bb,
49610
- StreamViewerSkeleton as bc,
49611
- Lock as bd,
49612
- StreamViewer as be,
49613
- composeRefs as bf,
49614
- useFloating as bg,
49615
- offset as bh,
49616
- shift as bi,
49617
- limitShift as bj,
49618
- flip as bk,
49619
- size as bl,
49620
- arrow as bm,
49621
- hide as bn,
49622
- autoUpdate as bo,
49623
- VERCEL_403_ERROR_MESSAGE as bp,
49624
- bulkCancelRuns as bq,
49625
- reenqueueRun as br,
49626
- wakeUpRun as bs,
49627
- resumeHook as bt,
49628
- fetchHookToken as bu,
49629
- cancelRun as bv,
49630
- 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,
49631
49655
  createLucideIcon as c,
49632
49656
  runHealthCheck as d,
49633
49657
  cn as e,