@workflow/web 5.0.0-beta.17 → 5.0.0-beta.19
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.
- package/build/client/assets/{highlighted-body-B3W2YXNL-QKf7Yrcl.js → highlighted-body-B3W2YXNL-BDAdDO0w.js} +1 -1
- package/build/client/assets/{home-C2tAadK2.js → home-CJauHJtz.js} +2 -2
- package/build/client/assets/index-C7C6cDW5.js +200 -0
- package/build/client/assets/{manifest-96e6bcc7.js → manifest-41c15b7c.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-DQJ4rkIZ.js → mermaid-3ZIDBTTL-CO5WTIpO.js} +554 -293
- package/build/client/assets/mermaid-3ZIDBTTL-DYmT7Gxj.css +1 -0
- package/build/client/assets/root-1hd8ZXAx.css +1 -0
- package/build/client/assets/{root-QCHdCGTF.js → root-YgrrwLRm.js} +1 -1
- package/build/client/assets/{run-detail-D4mcR51B.js → run-detail-QryL_6ec.js} +84 -156
- package/build/client/assets/server-build-NFow1VGe.css +1 -0
- package/build/client/assets/{workflow-graph-viewer-BEhdopGj.js → workflow-graph-viewer-DE9gHUqH.js} +1 -1
- package/build/client/assets/zstd-B5R2yJjB.wasm +0 -0
- package/build/client/assets/zstd-browser-decoder-Cf0Zee4U.js +27 -0
- package/build/server/assets/{app-BEmI6bFe.js → app-BPycGx4j.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-B_a6Jc52.js → highlighted-body-B3W2YXNL-DOFGe_gB.js} +2 -2
- package/build/server/assets/index-C7C6cDW5.js +200 -0
- package/build/server/assets/{index-Bg5S_1qh.js → index-CjQDTwmY.js} +27 -26
- package/build/server/assets/{mermaid-3ZIDBTTL-C7y9g953.js → mermaid-3ZIDBTTL-CC2oHOb_.js} +2 -2
- package/build/server/assets/{server-build-B3KD951q.js → server-build-D2BAH5fL.js} +744 -318
- package/build/server/assets/{token-B95VJmzW.js → token-BuB8DbpT.js} +2 -2
- package/build/server/assets/{token-util-q0eyRDZK.js → token-util-bxOuz2AK.js} +2 -2
- package/build/server/assets/zstd-browser-decoder-D_rFps2o.js +64 -0
- package/build/server/index.js +1 -1
- package/package.json +5 -5
- package/build/client/assets/mermaid-3ZIDBTTL-CVTQRy2j.css +0 -1
- package/build/client/assets/root-D1iC2mNY.css +0 -1
- package/build/client/assets/server-build-6KQbeuD8.css +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/encryption-g14N5vQl.js","assets/index-B6-SzLmT.js","assets/index-BXZSIDEp.js","assets/highlighted-body-B3W2YXNL-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/encryption-g14N5vQl.js","assets/index-B6-SzLmT.js","assets/index-BXZSIDEp.js","assets/zstd-browser-decoder-Cf0Zee4U.js","assets/highlighted-body-B3W2YXNL-BDAdDO0w.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);
|
|
@@ -10359,7 +10359,11 @@ const SerializationFormat = {
|
|
|
10359
10359
|
/** devalue stringify/parse with TextEncoder/TextDecoder */
|
|
10360
10360
|
DEVALUE_V1: "devl",
|
|
10361
10361
|
/** Encrypted payload (inner payload has its own format prefix after decryption) */
|
|
10362
|
-
ENCRYPTED: "encr"
|
|
10362
|
+
ENCRYPTED: "encr",
|
|
10363
|
+
/** Gzip-compressed payload (inner payload has its own format prefix after decompression) */
|
|
10364
|
+
GZIP: "gzip",
|
|
10365
|
+
/** Zstandard-compressed payload (inner payload has its own format prefix after decompression) */
|
|
10366
|
+
ZSTD: "zstd"
|
|
10363
10367
|
};
|
|
10364
10368
|
const FORMAT_PREFIX_LENGTH = 4;
|
|
10365
10369
|
new TextEncoder();
|
|
@@ -10405,6 +10409,71 @@ function isEncryptedData(data) {
|
|
|
10405
10409
|
const prefix = formatDecoder.decode(data.subarray(0, FORMAT_PREFIX_LENGTH));
|
|
10406
10410
|
return prefix === SerializationFormat.ENCRYPTED;
|
|
10407
10411
|
}
|
|
10412
|
+
function isCompressedData(data) {
|
|
10413
|
+
if (!(data instanceof Uint8Array) || data.length < FORMAT_PREFIX_LENGTH) {
|
|
10414
|
+
return false;
|
|
10415
|
+
}
|
|
10416
|
+
const prefix = formatDecoder.decode(data.subarray(0, FORMAT_PREFIX_LENGTH));
|
|
10417
|
+
return prefix === SerializationFormat.GZIP || prefix === SerializationFormat.ZSTD;
|
|
10418
|
+
}
|
|
10419
|
+
function getNodeZlib() {
|
|
10420
|
+
var _a3, _b2;
|
|
10421
|
+
try {
|
|
10422
|
+
return (_b2 = (_a3 = globalThis.process) == null ? void 0 : _a3.getBuiltinModule) == null ? void 0 : _b2.call(_a3, "node:zlib");
|
|
10423
|
+
} catch {
|
|
10424
|
+
return void 0;
|
|
10425
|
+
}
|
|
10426
|
+
}
|
|
10427
|
+
function decompressSyncIfAvailable(format, payload) {
|
|
10428
|
+
try {
|
|
10429
|
+
const zlib = getNodeZlib();
|
|
10430
|
+
if (format === SerializationFormat.GZIP && (zlib == null ? void 0 : zlib.gunzipSync)) {
|
|
10431
|
+
return new Uint8Array(zlib.gunzipSync(payload));
|
|
10432
|
+
}
|
|
10433
|
+
if (format === SerializationFormat.ZSTD && (zlib == null ? void 0 : zlib.zstdDecompressSync)) {
|
|
10434
|
+
return new Uint8Array(zlib.zstdDecompressSync(payload));
|
|
10435
|
+
}
|
|
10436
|
+
} catch {
|
|
10437
|
+
}
|
|
10438
|
+
return void 0;
|
|
10439
|
+
}
|
|
10440
|
+
let zstdBrowserDecoder;
|
|
10441
|
+
function registerZstdDecoder(decoder2) {
|
|
10442
|
+
zstdBrowserDecoder = decoder2;
|
|
10443
|
+
}
|
|
10444
|
+
async function decompressAsync(format, payload) {
|
|
10445
|
+
if (format === SerializationFormat.ZSTD) {
|
|
10446
|
+
const sync = decompressSyncIfAvailable(format, payload);
|
|
10447
|
+
if (sync)
|
|
10448
|
+
return sync;
|
|
10449
|
+
if (zstdBrowserDecoder)
|
|
10450
|
+
return zstdBrowserDecoder(payload);
|
|
10451
|
+
throw new Error("zstd-compressed workflow data encountered but no zstd decoder is available. Node.js 22.15+ decodes natively; in the browser register one via registerZstdDecoder (the web o11y package does this).");
|
|
10452
|
+
}
|
|
10453
|
+
const transform2 = new DecompressionStream("gzip");
|
|
10454
|
+
const writer = transform2.writable.getWriter();
|
|
10455
|
+
const writePromise = writer.write(payload).then(() => writer.close());
|
|
10456
|
+
writePromise.catch(() => {
|
|
10457
|
+
});
|
|
10458
|
+
const chunks = [];
|
|
10459
|
+
let total = 0;
|
|
10460
|
+
const reader = transform2.readable.getReader();
|
|
10461
|
+
for (; ; ) {
|
|
10462
|
+
const { done, value } = await reader.read();
|
|
10463
|
+
if (done)
|
|
10464
|
+
break;
|
|
10465
|
+
chunks.push(value);
|
|
10466
|
+
total += value.length;
|
|
10467
|
+
}
|
|
10468
|
+
await writePromise;
|
|
10469
|
+
const out = new Uint8Array(total);
|
|
10470
|
+
let offset2 = 0;
|
|
10471
|
+
for (const chunk of chunks) {
|
|
10472
|
+
out.set(chunk, offset2);
|
|
10473
|
+
offset2 += chunk.length;
|
|
10474
|
+
}
|
|
10475
|
+
return out;
|
|
10476
|
+
}
|
|
10408
10477
|
function hydrateData(value, revivers) {
|
|
10409
10478
|
if (value instanceof Uint8Array) {
|
|
10410
10479
|
if (isEncryptedData(value)) {
|
|
@@ -10415,6 +10484,13 @@ function hydrateData(value, revivers) {
|
|
|
10415
10484
|
const str = new TextDecoder().decode(payload);
|
|
10416
10485
|
return parse$4(str, revivers);
|
|
10417
10486
|
}
|
|
10487
|
+
if (format === SerializationFormat.GZIP || format === SerializationFormat.ZSTD) {
|
|
10488
|
+
const inflated = decompressSyncIfAvailable(format, payload);
|
|
10489
|
+
if (inflated === void 0) {
|
|
10490
|
+
return value;
|
|
10491
|
+
}
|
|
10492
|
+
return hydrateData(inflated, revivers);
|
|
10493
|
+
}
|
|
10418
10494
|
throw new Error(`Unsupported serialization format: ${format}`);
|
|
10419
10495
|
}
|
|
10420
10496
|
if (Array.isArray(value)) {
|
|
@@ -10423,16 +10499,20 @@ function hydrateData(value, revivers) {
|
|
|
10423
10499
|
return value;
|
|
10424
10500
|
}
|
|
10425
10501
|
async function hydrateDataWithKey(value, revivers, key) {
|
|
10426
|
-
|
|
10502
|
+
let data = value;
|
|
10503
|
+
if (data instanceof Uint8Array && isEncryptedData(data) && key) {
|
|
10427
10504
|
const { decrypt } = await __vitePreload(async () => {
|
|
10428
10505
|
const { decrypt: decrypt2 } = await import("./encryption-g14N5vQl.js");
|
|
10429
10506
|
return { decrypt: decrypt2 };
|
|
10430
10507
|
}, true ? __vite__mapDeps([0,1,2]) : void 0);
|
|
10431
|
-
const { payload } = decodeFormatPrefix(
|
|
10432
|
-
|
|
10433
|
-
|
|
10508
|
+
const { payload } = decodeFormatPrefix(data);
|
|
10509
|
+
data = await decrypt(key, payload);
|
|
10510
|
+
}
|
|
10511
|
+
if (data instanceof Uint8Array && isCompressedData(data)) {
|
|
10512
|
+
const { format, payload } = decodeFormatPrefix(data);
|
|
10513
|
+
data = await decompressAsync(format, payload);
|
|
10434
10514
|
}
|
|
10435
|
-
return hydrateData(
|
|
10515
|
+
return hydrateData(data, revivers);
|
|
10436
10516
|
}
|
|
10437
10517
|
const STREAM_ID_PREFIX = "strm_";
|
|
10438
10518
|
const STREAM_REF_TYPE$1 = "__workflow_stream_ref__";
|
|
@@ -10685,10 +10765,12 @@ const serializationFormat = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object
|
|
|
10685
10765
|
hydrateData,
|
|
10686
10766
|
hydrateDataWithKey,
|
|
10687
10767
|
hydrateResourceIO: hydrateResourceIO$1,
|
|
10768
|
+
isCompressedData,
|
|
10688
10769
|
isEncryptedData,
|
|
10689
10770
|
isExpiredStub,
|
|
10690
10771
|
isRunRef: isRunRef$1,
|
|
10691
10772
|
observabilityRevivers,
|
|
10773
|
+
registerZstdDecoder,
|
|
10692
10774
|
serializedClassToString,
|
|
10693
10775
|
serializedInstanceToRef,
|
|
10694
10776
|
serializedRunToRunRef,
|
|
@@ -16115,6 +16197,11 @@ async function hydrateResourceIOWithKey(resource, key) {
|
|
|
16115
16197
|
const { importKey: importKey2 } = await import("./encryption-g14N5vQl.js");
|
|
16116
16198
|
return { importKey: importKey2 };
|
|
16117
16199
|
}, true ? __vite__mapDeps([0,1,2]) : void 0);
|
|
16200
|
+
const { ensureZstdDecoderRegistered } = await __vitePreload(async () => {
|
|
16201
|
+
const { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 } = await import("./zstd-browser-decoder-Cf0Zee4U.js");
|
|
16202
|
+
return { ensureZstdDecoderRegistered: ensureZstdDecoderRegistered2 };
|
|
16203
|
+
}, true ? __vite__mapDeps([3,2]) : void 0);
|
|
16204
|
+
ensureZstdDecoderRegistered();
|
|
16118
16205
|
const cryptoKey = await importKey(key);
|
|
16119
16206
|
const revivers = getRevivers();
|
|
16120
16207
|
async function decryptField(value, rev, k2) {
|
|
@@ -19286,6 +19373,114 @@ function ContextCardTrigger({ content: content2, children: children2, side = "ri
|
|
|
19286
19373
|
function Skeleton$1({ className, style: style2, ...props }) {
|
|
19287
19374
|
return jsxRuntimeExports.jsx("div", { ...props, className: cn$4("rounded-md", className), style: { backgroundColor: "var(--ds-gray-200)", ...style2 } });
|
|
19288
19375
|
}
|
|
19376
|
+
const TIME_UNITS = [
|
|
19377
|
+
{ unit: "year", ms: 31536e6 },
|
|
19378
|
+
{ unit: "month", ms: 2628e6 },
|
|
19379
|
+
{ unit: "day", ms: 864e5 },
|
|
19380
|
+
{ unit: "hour", ms: 36e5 },
|
|
19381
|
+
{ unit: "minute", ms: 6e4 },
|
|
19382
|
+
{ unit: "second", ms: 1e3 }
|
|
19383
|
+
];
|
|
19384
|
+
function formatTimeDifference(diff) {
|
|
19385
|
+
let remaining = Math.abs(diff);
|
|
19386
|
+
const result = [];
|
|
19387
|
+
for (const { unit, ms } of TIME_UNITS) {
|
|
19388
|
+
const value = Math.floor(remaining / ms);
|
|
19389
|
+
if (value > 0 || result.length > 0) {
|
|
19390
|
+
result.push(`${value} ${unit}${value !== 1 ? "s" : ""}`);
|
|
19391
|
+
remaining %= ms;
|
|
19392
|
+
}
|
|
19393
|
+
if (result.length === 3)
|
|
19394
|
+
break;
|
|
19395
|
+
}
|
|
19396
|
+
return result.join(", ");
|
|
19397
|
+
}
|
|
19398
|
+
function useTimeAgo(date2) {
|
|
19399
|
+
const [timeAgo, setTimeAgo] = reactExports.useState("");
|
|
19400
|
+
reactExports.useEffect(() => {
|
|
19401
|
+
const updateTimeAgo = () => {
|
|
19402
|
+
const diff = Date.now() - date2;
|
|
19403
|
+
const formattedDiff = formatTimeDifference(diff);
|
|
19404
|
+
setTimeAgo(formattedDiff ? `${formattedDiff} ago` : "Just now");
|
|
19405
|
+
};
|
|
19406
|
+
updateTimeAgo();
|
|
19407
|
+
const timer = setInterval(updateTimeAgo, 1e3);
|
|
19408
|
+
return () => clearInterval(timer);
|
|
19409
|
+
}, [date2]);
|
|
19410
|
+
return timeAgo;
|
|
19411
|
+
}
|
|
19412
|
+
function useShortTimeAgo(date2) {
|
|
19413
|
+
const [shortTimeAgo, setShortTimeAgo] = reactExports.useState("");
|
|
19414
|
+
reactExports.useEffect(() => {
|
|
19415
|
+
if (!date2) {
|
|
19416
|
+
setShortTimeAgo("");
|
|
19417
|
+
return;
|
|
19418
|
+
}
|
|
19419
|
+
const updateShortTimeAgo = () => {
|
|
19420
|
+
const diff = Date.now() - date2;
|
|
19421
|
+
const days = Math.floor(diff / (1e3 * 60 * 60 * 24));
|
|
19422
|
+
const hours = Math.floor(diff / (1e3 * 60 * 60));
|
|
19423
|
+
const minutes = Math.floor(diff / (1e3 * 60));
|
|
19424
|
+
if (days > 0) {
|
|
19425
|
+
setShortTimeAgo(`${days} day${days > 1 ? "s" : ""} ago`);
|
|
19426
|
+
} else if (hours > 0) {
|
|
19427
|
+
setShortTimeAgo(`${hours} hour${hours > 1 ? "s" : ""} ago`);
|
|
19428
|
+
} else if (minutes > 0) {
|
|
19429
|
+
setShortTimeAgo(`${minutes} minute${minutes > 1 ? "s" : ""} ago`);
|
|
19430
|
+
} else {
|
|
19431
|
+
setShortTimeAgo("Just now");
|
|
19432
|
+
}
|
|
19433
|
+
};
|
|
19434
|
+
updateShortTimeAgo();
|
|
19435
|
+
const timer = setInterval(updateShortTimeAgo, 6e4);
|
|
19436
|
+
return () => clearInterval(timer);
|
|
19437
|
+
}, [date2]);
|
|
19438
|
+
return shortTimeAgo;
|
|
19439
|
+
}
|
|
19440
|
+
function ZoneDateTimeRow({ date: date2, zone }) {
|
|
19441
|
+
var _a3;
|
|
19442
|
+
const dateObj = new Date(date2);
|
|
19443
|
+
const formattedZone = ((_a3 = new Intl.DateTimeFormat("en-US", {
|
|
19444
|
+
timeZone: zone,
|
|
19445
|
+
timeZoneName: "short"
|
|
19446
|
+
}).formatToParts(dateObj).find((part) => part.type === "timeZoneName")) == null ? void 0 : _a3.value) || zone;
|
|
19447
|
+
const formattedDate = dateObj.toLocaleString("en-US", {
|
|
19448
|
+
timeZone: zone,
|
|
19449
|
+
year: "numeric",
|
|
19450
|
+
month: "long",
|
|
19451
|
+
day: "numeric"
|
|
19452
|
+
});
|
|
19453
|
+
const formattedTime = dateObj.toLocaleTimeString("en-US", {
|
|
19454
|
+
timeZone: zone,
|
|
19455
|
+
hour: "2-digit",
|
|
19456
|
+
minute: "2-digit",
|
|
19457
|
+
second: "2-digit"
|
|
19458
|
+
});
|
|
19459
|
+
return jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5", children: [jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-4 px-1.5 bg-gray-200 rounded-xs", children: jsxRuntimeExports.jsx("span", { className: "text-[12px] font-mono text-gray-900", children: formattedZone }) }), jsxRuntimeExports.jsx("span", { className: "text-[13px] text-gray-1000", children: formattedDate })] }), jsxRuntimeExports.jsx("span", { className: "tabular-nums text-[12px] font-mono text-gray-900", children: formattedTime })] });
|
|
19460
|
+
}
|
|
19461
|
+
function RelativeTimeContextCardContent({ date: date2 }) {
|
|
19462
|
+
const localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
19463
|
+
const timeAgo = useTimeAgo(date2);
|
|
19464
|
+
return jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3 min-w-[300px]", children: [jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3", children: jsxRuntimeExports.jsx("span", { className: "tabular-nums text-[13px] text-gray-900", children: timeAgo }) }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [jsxRuntimeExports.jsx(ZoneDateTimeRow, { date: date2, zone: "UTC" }), jsxRuntimeExports.jsx(ZoneDateTimeRow, { date: date2, zone: localTimezone })] })] });
|
|
19465
|
+
}
|
|
19466
|
+
function DefaultTimeText({ date: date2 }) {
|
|
19467
|
+
const shortTimeAgo = useShortTimeAgo(date2);
|
|
19468
|
+
return jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-900", children: shortTimeAgo });
|
|
19469
|
+
}
|
|
19470
|
+
function RelativeTimeCard({ date: date2, children: _children, ...props }) {
|
|
19471
|
+
const children2 = _children === void 0 ? jsxRuntimeExports.jsx(DefaultTimeText, { date: date2 }) : _children;
|
|
19472
|
+
if (!date2)
|
|
19473
|
+
return children2;
|
|
19474
|
+
return jsxRuntimeExports.jsx(ContextCardTrigger, { content: jsxRuntimeExports.jsx(RelativeTimeContextCardContent, { date: date2 }), ...props, children: children2 });
|
|
19475
|
+
}
|
|
19476
|
+
function TimestampTooltip({ date: date2, children: children2, side = "top" }) {
|
|
19477
|
+
const hasProvider = useHasContextCardProvider();
|
|
19478
|
+
const ts = date2 == null ? null : typeof date2 === "number" ? date2 : new Date(date2).getTime();
|
|
19479
|
+
if (ts == null || Number.isNaN(ts))
|
|
19480
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children2 });
|
|
19481
|
+
const card = jsxRuntimeExports.jsx(RelativeTimeCard, { date: ts, side, asChild: true, children: children2 });
|
|
19482
|
+
return hasProvider ? card : jsxRuntimeExports.jsx(ContextCardProvider, { children: card });
|
|
19483
|
+
}
|
|
19289
19484
|
const convert = (
|
|
19290
19485
|
// Note: overloads in JSDoc can’t yet use different `@template`s.
|
|
19291
19486
|
/**
|
|
@@ -44048,7 +44243,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
44048
44243
|
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 });
|
|
44049
44244
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
44050
44245
|
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 }) });
|
|
44051
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-
|
|
44246
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-BDAdDO0w.js"), true ? __vite__mapDeps([4,2]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
44052
44247
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
44053
44248
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
44054
44249
|
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 }) })] }) });
|
|
@@ -44869,127 +45064,127 @@ const TraceViewerContext = reactExports.createContext({
|
|
|
44869
45064
|
TraceViewerContext.displayName = "TraceViewerContext";
|
|
44870
45065
|
const useTraceViewer = () => reactExports.useContext(TraceViewerContext);
|
|
44871
45066
|
reactExports.createContext(null);
|
|
44872
|
-
const traceNode = "
|
|
44873
|
-
const childRow = "
|
|
44874
|
-
const spanNode = "
|
|
44875
|
-
const huge = "
|
|
44876
|
-
const spanName = "
|
|
44877
|
-
const spanSpacer = "
|
|
44878
|
-
const spanDuration = "
|
|
44879
|
-
const small = "
|
|
44880
|
-
const xHover = "
|
|
44881
|
-
const spanNodeEvent = "
|
|
44882
|
-
const eventDiamond = "
|
|
44883
|
-
const customEventColor = "
|
|
44884
|
-
const hoverInfo = "
|
|
44885
|
-
const eventName = "
|
|
44886
|
-
const eventTimestamp = "
|
|
44887
|
-
const alignStart = "
|
|
44888
|
-
const alignEnd = "
|
|
44889
|
-
const colorVercel = "
|
|
44890
|
-
const color0 = "
|
|
44891
|
-
const color1 = "
|
|
44892
|
-
const color2 = "
|
|
44893
|
-
const color3 = "
|
|
44894
|
-
const color4 = "
|
|
44895
|
-
const colorHighlight = "
|
|
44896
|
-
const unlit = "
|
|
44897
|
-
const mapContainer = "
|
|
44898
|
-
const spanDetailPanel = "
|
|
44899
|
-
const spanDetailPanelResizer = "
|
|
44900
|
-
const spanDetailPanelTop = "
|
|
44901
|
-
const spanDetailPanelBody = "
|
|
44902
|
-
const spanDetailPanelTopInfo = "
|
|
44903
|
-
const spanNameDetailPanel = "
|
|
44904
|
-
const spanDetailPanelTruncatedHeading = "
|
|
44905
|
-
const spanDetailPanelName = "
|
|
44906
|
-
const spanDetailPanelDuration = "
|
|
44907
|
-
const spanDetailPanelCorner = "
|
|
44908
|
-
const spanDetailPanelCornerInner = "
|
|
44909
|
-
const spanDetailPanelCloseVerticalRule = "
|
|
44910
|
-
const spanDetailPanelClose = "
|
|
44911
|
-
const spanDetailPanelAttribute = "
|
|
44912
|
-
const spanDetailPanelAttributeKey = "
|
|
44913
|
-
const spanDetailPanelAttributeValue = "
|
|
44914
|
-
const spanDetailPanelQuickLink = "
|
|
44915
|
-
const spanDetailPanelQuickLinkLabel = "
|
|
44916
|
-
const detailGroup = "
|
|
44917
|
-
const expanded = "
|
|
44918
|
-
const collapsed = "
|
|
44919
|
-
const ancestorGroup = "
|
|
44920
|
-
const detailHeading = "
|
|
44921
|
-
const buttonLink = "
|
|
44922
|
-
const note = "
|
|
44923
|
-
const skeleton = "
|
|
44924
|
-
const skeletonRounded = "
|
|
44925
|
-
const detailHeadingIcon = "
|
|
44926
|
-
const infraSpanDescription = "
|
|
44927
|
-
const ancestorNode = "
|
|
44928
|
-
const ancestorText = "
|
|
44929
|
-
const ancestorName = "
|
|
44930
|
-
const ancestorDuration = "
|
|
44931
|
-
const ancestorLineContainer = "
|
|
44932
|
-
const ancestorLine = "
|
|
44933
|
-
const zoomButtonGroup = "
|
|
44934
|
-
const zoomButton = "
|
|
44935
|
-
const divider = "
|
|
44936
|
-
const markersContainer = "
|
|
44937
|
-
const markers = "
|
|
44938
|
-
const marker = "
|
|
44939
|
-
const notch = "
|
|
44940
|
-
const markerLabel = "
|
|
44941
|
-
const markerClockTime = "
|
|
44942
|
-
const eventMarkersContainer = "
|
|
44943
|
-
const eventMarkers = "
|
|
44944
|
-
const eventMarker = "
|
|
44945
|
-
const cursorMarkerStickyParent = "
|
|
44946
|
-
const cursorMarkerLabelContainer = "
|
|
44947
|
-
const cursorMarkerLabel = "
|
|
44948
|
-
const cursorMarkerContainer = "
|
|
44949
|
-
const cursorMarker = "
|
|
44950
|
-
const cursorSelection = "
|
|
44951
|
-
const traceViewer = "
|
|
44952
|
-
const mapCanvas = "
|
|
44953
|
-
const zoomButtonTraceViewer = "
|
|
44954
|
-
const timeline = "
|
|
44955
|
-
const searchBar = "
|
|
44956
|
-
const searchInput = "
|
|
44957
|
-
const searchInputLabel = "
|
|
44958
|
-
const searchInputPrefix = "
|
|
44959
|
-
const mapThumb = "
|
|
44960
|
-
const spanDetailPanelTraceViewer = "
|
|
44961
|
-
const traceViewerContent = "
|
|
44962
|
-
const inert = "
|
|
44963
|
-
const hidden = "
|
|
44964
|
-
const mobile = "
|
|
44965
|
-
const spanRunning = "
|
|
44966
|
-
const spanPending = "
|
|
44967
|
-
const spanCompleted = "
|
|
44968
|
-
const spanCancelled = "
|
|
44969
|
-
const spanFailed = "
|
|
44970
|
-
const spanPendingStriped = "
|
|
44971
|
-
const hasQueuedTime = "
|
|
44972
|
-
const spanSleep = "
|
|
44973
|
-
const spanHook = "
|
|
44974
|
-
const segmentLayer = "
|
|
44975
|
-
const segment = "
|
|
44976
|
-
const segmentLabel = "
|
|
44977
|
-
const segmentTag = "
|
|
44978
|
-
const segQueued = "
|
|
44979
|
-
const segRunning = "
|
|
44980
|
-
const segFailed = "
|
|
44981
|
-
const segRetrying = "
|
|
44982
|
-
const segSucceeded = "
|
|
44983
|
-
const segWaiting = "
|
|
44984
|
-
const segSleeping = "
|
|
44985
|
-
const segReceived = "
|
|
44986
|
-
const boundaryMarker = "
|
|
44987
|
-
const boundaryLine = "
|
|
44988
|
-
const hasSegments = "
|
|
44989
|
-
const eventFailed = "
|
|
44990
|
-
const eventRetrying = "
|
|
44991
|
-
const eventHook = "
|
|
44992
|
-
const eventDefault = "
|
|
45067
|
+
const traceNode = "_traceNode_1ytrx_1";
|
|
45068
|
+
const childRow = "_childRow_1ytrx_5";
|
|
45069
|
+
const spanNode = "_spanNode_1ytrx_11";
|
|
45070
|
+
const huge = "_huge_1ytrx_31";
|
|
45071
|
+
const spanName = "_spanName_1ytrx_34";
|
|
45072
|
+
const spanSpacer = "_spanSpacer_1ytrx_40";
|
|
45073
|
+
const spanDuration = "_spanDuration_1ytrx_44";
|
|
45074
|
+
const small = "_small_1ytrx_62";
|
|
45075
|
+
const xHover = "_xHover_1ytrx_62";
|
|
45076
|
+
const spanNodeEvent = "_spanNodeEvent_1ytrx_118";
|
|
45077
|
+
const eventDiamond = "_eventDiamond_1ytrx_124";
|
|
45078
|
+
const customEventColor = "_customEventColor_1ytrx_140";
|
|
45079
|
+
const hoverInfo = "_hoverInfo_1ytrx_145";
|
|
45080
|
+
const eventName = "_eventName_1ytrx_149";
|
|
45081
|
+
const eventTimestamp = "_eventTimestamp_1ytrx_153";
|
|
45082
|
+
const alignStart = "_alignStart_1ytrx_174";
|
|
45083
|
+
const alignEnd = "_alignEnd_1ytrx_178";
|
|
45084
|
+
const colorVercel = "_colorVercel_1ytrx_205";
|
|
45085
|
+
const color0 = "_color0_1ytrx_213";
|
|
45086
|
+
const color1 = "_color1_1ytrx_220";
|
|
45087
|
+
const color2 = "_color2_1ytrx_227";
|
|
45088
|
+
const color3 = "_color3_1ytrx_234";
|
|
45089
|
+
const color4 = "_color4_1ytrx_241";
|
|
45090
|
+
const colorHighlight = "_colorHighlight_1ytrx_248";
|
|
45091
|
+
const unlit = "_unlit_1ytrx_256";
|
|
45092
|
+
const mapContainer = "_mapContainer_1ytrx_262";
|
|
45093
|
+
const spanDetailPanel = "_spanDetailPanel_1ytrx_329";
|
|
45094
|
+
const spanDetailPanelResizer = "_spanDetailPanelResizer_1ytrx_338";
|
|
45095
|
+
const spanDetailPanelTop = "_spanDetailPanelTop_1ytrx_353";
|
|
45096
|
+
const spanDetailPanelBody = "_spanDetailPanelBody_1ytrx_362";
|
|
45097
|
+
const spanDetailPanelTopInfo = "_spanDetailPanelTopInfo_1ytrx_375";
|
|
45098
|
+
const spanNameDetailPanel = "_spanNameDetailPanel_1ytrx_389";
|
|
45099
|
+
const spanDetailPanelTruncatedHeading = "_spanDetailPanelTruncatedHeading_1ytrx_395";
|
|
45100
|
+
const spanDetailPanelName = "_spanDetailPanelName_1ytrx_405";
|
|
45101
|
+
const spanDetailPanelDuration = "_spanDetailPanelDuration_1ytrx_416";
|
|
45102
|
+
const spanDetailPanelCorner = "_spanDetailPanelCorner_1ytrx_427";
|
|
45103
|
+
const spanDetailPanelCornerInner = "_spanDetailPanelCornerInner_1ytrx_437";
|
|
45104
|
+
const spanDetailPanelCloseVerticalRule = "_spanDetailPanelCloseVerticalRule_1ytrx_445";
|
|
45105
|
+
const spanDetailPanelClose = "_spanDetailPanelClose_1ytrx_445";
|
|
45106
|
+
const spanDetailPanelAttribute = "_spanDetailPanelAttribute_1ytrx_467";
|
|
45107
|
+
const spanDetailPanelAttributeKey = "_spanDetailPanelAttributeKey_1ytrx_484";
|
|
45108
|
+
const spanDetailPanelAttributeValue = "_spanDetailPanelAttributeValue_1ytrx_492";
|
|
45109
|
+
const spanDetailPanelQuickLink = "_spanDetailPanelQuickLink_1ytrx_503";
|
|
45110
|
+
const spanDetailPanelQuickLinkLabel = "_spanDetailPanelQuickLinkLabel_1ytrx_506";
|
|
45111
|
+
const detailGroup = "_detailGroup_1ytrx_519";
|
|
45112
|
+
const expanded = "_expanded_1ytrx_533";
|
|
45113
|
+
const collapsed = "_collapsed_1ytrx_534";
|
|
45114
|
+
const ancestorGroup = "_ancestorGroup_1ytrx_535";
|
|
45115
|
+
const detailHeading = "_detailHeading_1ytrx_539";
|
|
45116
|
+
const buttonLink = "_buttonLink_1ytrx_562";
|
|
45117
|
+
const note = "_note_1ytrx_581";
|
|
45118
|
+
const skeleton = "_skeleton_1ytrx_589";
|
|
45119
|
+
const skeletonRounded = "_skeletonRounded_1ytrx_595";
|
|
45120
|
+
const detailHeadingIcon = "_detailHeadingIcon_1ytrx_599";
|
|
45121
|
+
const infraSpanDescription = "_infraSpanDescription_1ytrx_603";
|
|
45122
|
+
const ancestorNode = "_ancestorNode_1ytrx_613";
|
|
45123
|
+
const ancestorText = "_ancestorText_1ytrx_629";
|
|
45124
|
+
const ancestorName = "_ancestorName_1ytrx_639";
|
|
45125
|
+
const ancestorDuration = "_ancestorDuration_1ytrx_644";
|
|
45126
|
+
const ancestorLineContainer = "_ancestorLineContainer_1ytrx_649";
|
|
45127
|
+
const ancestorLine = "_ancestorLine_1ytrx_649";
|
|
45128
|
+
const zoomButtonGroup = "_zoomButtonGroup_1ytrx_701";
|
|
45129
|
+
const zoomButton = "_zoomButton_1ytrx_701";
|
|
45130
|
+
const divider = "_divider_1ytrx_751";
|
|
45131
|
+
const markersContainer = "_markersContainer_1ytrx_758";
|
|
45132
|
+
const markers = "_markers_1ytrx_758";
|
|
45133
|
+
const marker = "_marker_1ytrx_758";
|
|
45134
|
+
const notch = "_notch_1ytrx_792";
|
|
45135
|
+
const markerLabel = "_markerLabel_1ytrx_798";
|
|
45136
|
+
const markerClockTime = "_markerClockTime_1ytrx_807";
|
|
45137
|
+
const eventMarkersContainer = "_eventMarkersContainer_1ytrx_816";
|
|
45138
|
+
const eventMarkers = "_eventMarkers_1ytrx_816";
|
|
45139
|
+
const eventMarker = "_eventMarker_1ytrx_816";
|
|
45140
|
+
const cursorMarkerStickyParent = "_cursorMarkerStickyParent_1ytrx_839";
|
|
45141
|
+
const cursorMarkerLabelContainer = "_cursorMarkerLabelContainer_1ytrx_848";
|
|
45142
|
+
const cursorMarkerLabel = "_cursorMarkerLabel_1ytrx_848";
|
|
45143
|
+
const cursorMarkerContainer = "_cursorMarkerContainer_1ytrx_898";
|
|
45144
|
+
const cursorMarker = "_cursorMarker_1ytrx_839";
|
|
45145
|
+
const cursorSelection = "_cursorSelection_1ytrx_916";
|
|
45146
|
+
const traceViewer = "_traceViewer_1ytrx_966";
|
|
45147
|
+
const mapCanvas = "_mapCanvas_1ytrx_972";
|
|
45148
|
+
const zoomButtonTraceViewer = "_zoomButtonTraceViewer_1ytrx_988";
|
|
45149
|
+
const timeline = "_timeline_1ytrx_1011";
|
|
45150
|
+
const searchBar = "_searchBar_1ytrx_1019";
|
|
45151
|
+
const searchInput = "_searchInput_1ytrx_1031";
|
|
45152
|
+
const searchInputLabel = "_searchInputLabel_1ytrx_1038";
|
|
45153
|
+
const searchInputPrefix = "_searchInputPrefix_1ytrx_1063";
|
|
45154
|
+
const mapThumb = "_mapThumb_1ytrx_1101";
|
|
45155
|
+
const spanDetailPanelTraceViewer = "_spanDetailPanelTraceViewer_1ytrx_1115";
|
|
45156
|
+
const traceViewerContent = "_traceViewerContent_1ytrx_1134";
|
|
45157
|
+
const inert = "_inert_1ytrx_1144";
|
|
45158
|
+
const hidden = "_hidden_1ytrx_1180";
|
|
45159
|
+
const mobile = "_mobile_1ytrx_1184";
|
|
45160
|
+
const spanRunning = "_spanRunning_1ytrx_1194";
|
|
45161
|
+
const spanPending = "_spanPending_1ytrx_1195";
|
|
45162
|
+
const spanCompleted = "_spanCompleted_1ytrx_1203";
|
|
45163
|
+
const spanCancelled = "_spanCancelled_1ytrx_1211";
|
|
45164
|
+
const spanFailed = "_spanFailed_1ytrx_1219";
|
|
45165
|
+
const spanPendingStriped = "_spanPendingStriped_1ytrx_1228";
|
|
45166
|
+
const hasQueuedTime = "_hasQueuedTime_1ytrx_1242";
|
|
45167
|
+
const spanSleep = "_spanSleep_1ytrx_1254";
|
|
45168
|
+
const spanHook = "_spanHook_1ytrx_1263";
|
|
45169
|
+
const segmentLayer = "_segmentLayer_1ytrx_1275";
|
|
45170
|
+
const segment = "_segment_1ytrx_1275";
|
|
45171
|
+
const segmentLabel = "_segmentLabel_1ytrx_1291";
|
|
45172
|
+
const segmentTag = "_segmentTag_1ytrx_1306";
|
|
45173
|
+
const segQueued = "_segQueued_1ytrx_1314";
|
|
45174
|
+
const segRunning = "_segRunning_1ytrx_1325";
|
|
45175
|
+
const segFailed = "_segFailed_1ytrx_1330";
|
|
45176
|
+
const segRetrying = "_segRetrying_1ytrx_1335";
|
|
45177
|
+
const segSucceeded = "_segSucceeded_1ytrx_1346";
|
|
45178
|
+
const segWaiting = "_segWaiting_1ytrx_1351";
|
|
45179
|
+
const segSleeping = "_segSleeping_1ytrx_1362";
|
|
45180
|
+
const segReceived = "_segReceived_1ytrx_1367";
|
|
45181
|
+
const boundaryMarker = "_boundaryMarker_1ytrx_1372";
|
|
45182
|
+
const boundaryLine = "_boundaryLine_1ytrx_1373";
|
|
45183
|
+
const hasSegments = "_hasSegments_1ytrx_1395";
|
|
45184
|
+
const eventFailed = "_eventFailed_1ytrx_1432";
|
|
45185
|
+
const eventRetrying = "_eventRetrying_1ytrx_1441";
|
|
45186
|
+
const eventHook = "_eventHook_1ytrx_1450";
|
|
45187
|
+
const eventDefault = "_eventDefault_1ytrx_1459";
|
|
44993
45188
|
const styles$1 = {
|
|
44994
45189
|
traceNode,
|
|
44995
45190
|
childRow,
|
|
@@ -45053,7 +45248,7 @@ const styles$1 = {
|
|
|
45053
45248
|
ancestorLineContainer,
|
|
45054
45249
|
ancestorLine,
|
|
45055
45250
|
zoomButtonGroup,
|
|
45056
|
-
"zoom-buttons-fade-in": "_zoom-buttons-fade-
|
|
45251
|
+
"zoom-buttons-fade-in": "_zoom-buttons-fade-in_1ytrx_1",
|
|
45057
45252
|
zoomButton,
|
|
45058
45253
|
divider,
|
|
45059
45254
|
markersContainer,
|
|
@@ -45072,7 +45267,7 @@ const styles$1 = {
|
|
|
45072
45267
|
cursorMarker,
|
|
45073
45268
|
cursorSelection,
|
|
45074
45269
|
traceViewer,
|
|
45075
|
-
"span-skeleton": "_span-
|
|
45270
|
+
"span-skeleton": "_span-skeleton_1ytrx_1",
|
|
45076
45271
|
mapCanvas,
|
|
45077
45272
|
zoomButtonTraceViewer,
|
|
45078
45273
|
timeline,
|
|
@@ -46399,7 +46594,7 @@ function computeStepSegmentsFromSpan(startMs, duration2, events) {
|
|
|
46399
46594
|
"step_completed"
|
|
46400
46595
|
]);
|
|
46401
46596
|
if (marks.length === 0) {
|
|
46402
|
-
segments.push({ startFraction: 0, endFraction: 1, status: "
|
|
46597
|
+
segments.push({ startFraction: 0, endFraction: 1, status: "queued" });
|
|
46403
46598
|
return segments;
|
|
46404
46599
|
}
|
|
46405
46600
|
const firstFraction = timeToFraction(marks[0].time, startMs, duration2);
|
|
@@ -46424,7 +46619,7 @@ function computeStepSegmentsFromSpan(startMs, duration2, events) {
|
|
|
46424
46619
|
});
|
|
46425
46620
|
} else {
|
|
46426
46621
|
const nextType = nextMark.type;
|
|
46427
|
-
const attemptStatus = nextType === "step_retrying" || nextType === "step_failed" ? "failed" : nextType === "step_completed" ? "succeeded" : "
|
|
46622
|
+
const attemptStatus = nextType === "step_retrying" || nextType === "step_failed" ? "failed" : nextType === "step_completed" ? "succeeded" : "retrying";
|
|
46428
46623
|
segments.push({
|
|
46429
46624
|
startFraction: markFrac,
|
|
46430
46625
|
endFraction: nextFrac,
|
|
@@ -46453,35 +46648,16 @@ function computeHookSegmentsFromSpan(startMs, duration2, events) {
|
|
|
46453
46648
|
const segments = [];
|
|
46454
46649
|
if (duration2 <= 0)
|
|
46455
46650
|
return segments;
|
|
46456
|
-
const
|
|
46457
|
-
const received = sorted.find((e) => e.name === "hook_received");
|
|
46458
|
-
const disposed = sorted.find((e) => e.name === "hook_disposed");
|
|
46459
|
-
if (!received && !disposed) {
|
|
46460
|
-
segments.push({ startFraction: 0, endFraction: 1, status: "waiting" });
|
|
46461
|
-
return segments;
|
|
46462
|
-
}
|
|
46463
|
-
const receivedFrac = received ? timeToFraction(received.time, startMs, duration2) : null;
|
|
46651
|
+
const disposed = sortedEventMarks(events, ["hook_disposed"])[0];
|
|
46464
46652
|
const disposedFrac = disposed ? timeToFraction(disposed.time, startMs, duration2) : null;
|
|
46465
|
-
|
|
46653
|
+
const waitingEnd = disposedFrac ?? 1;
|
|
46654
|
+
if (waitingEnd > 1e-3) {
|
|
46466
46655
|
segments.push({
|
|
46467
46656
|
startFraction: 0,
|
|
46468
|
-
endFraction:
|
|
46469
|
-
status: "waiting"
|
|
46470
|
-
});
|
|
46471
|
-
} else if (receivedFrac === null && disposedFrac !== null) {
|
|
46472
|
-
segments.push({
|
|
46473
|
-
startFraction: 0,
|
|
46474
|
-
endFraction: disposedFrac,
|
|
46657
|
+
endFraction: waitingEnd,
|
|
46475
46658
|
status: "waiting"
|
|
46476
46659
|
});
|
|
46477
46660
|
}
|
|
46478
|
-
if (receivedFrac !== null) {
|
|
46479
|
-
segments.push({
|
|
46480
|
-
startFraction: receivedFrac,
|
|
46481
|
-
endFraction: disposedFrac ?? 1,
|
|
46482
|
-
status: "received"
|
|
46483
|
-
});
|
|
46484
|
-
}
|
|
46485
46661
|
if (disposedFrac !== null && disposedFrac < 0.999) {
|
|
46486
46662
|
segments.push({
|
|
46487
46663
|
startFraction: disposedFrac,
|
|
@@ -46572,6 +46748,33 @@ function computeSpanSegments(span) {
|
|
|
46572
46748
|
return [];
|
|
46573
46749
|
}
|
|
46574
46750
|
}
|
|
46751
|
+
const MARKER_EVENT_NAMES = ["hook_received", "attr_set"];
|
|
46752
|
+
function computeSpanMarkers(span) {
|
|
46753
|
+
return sortedEventMarks(span.events, MARKER_EVENT_NAMES).map((mark2) => ({
|
|
46754
|
+
timeMs: mark2.time
|
|
46755
|
+
}));
|
|
46756
|
+
}
|
|
46757
|
+
function computeOffscreenMarkers(markers2, visibleStartMs, visibleEndMs) {
|
|
46758
|
+
let leftCount = 0;
|
|
46759
|
+
let rightCount = 0;
|
|
46760
|
+
let nearestLeft = Number.NEGATIVE_INFINITY;
|
|
46761
|
+
let nearestRight = Number.POSITIVE_INFINITY;
|
|
46762
|
+
for (const { timeMs } of markers2) {
|
|
46763
|
+
if (timeMs < visibleStartMs) {
|
|
46764
|
+
leftCount++;
|
|
46765
|
+
if (timeMs > nearestLeft)
|
|
46766
|
+
nearestLeft = timeMs;
|
|
46767
|
+
} else if (timeMs > visibleEndMs) {
|
|
46768
|
+
rightCount++;
|
|
46769
|
+
if (timeMs < nearestRight)
|
|
46770
|
+
nearestRight = timeMs;
|
|
46771
|
+
}
|
|
46772
|
+
}
|
|
46773
|
+
return {
|
|
46774
|
+
left: leftCount > 0 ? { count: leftCount, nearestMs: nearestLeft } : null,
|
|
46775
|
+
right: rightCount > 0 ? { count: rightCount, nearestMs: nearestRight } : null
|
|
46776
|
+
};
|
|
46777
|
+
}
|
|
46575
46778
|
const INITIAL_VISIBLE_ROWS = 60;
|
|
46576
46779
|
function getScrollParent(el) {
|
|
46577
46780
|
let node2 = (el == null ? void 0 : el.parentElement) ?? null;
|
|
@@ -46620,6 +46823,75 @@ function useRowWindow(ref, rowCount, rowHeight, overscan = 12) {
|
|
|
46620
46823
|
return range;
|
|
46621
46824
|
}
|
|
46622
46825
|
const ROW_HEIGHT_PX = 40;
|
|
46826
|
+
function scrollRowIntoView(listEl, index2, rowHeight, opts) {
|
|
46827
|
+
const scroller = listEl ? getScrollParent(listEl) : null;
|
|
46828
|
+
if (!listEl || !scroller)
|
|
46829
|
+
return;
|
|
46830
|
+
const margin = (opts == null ? void 0 : opts.margin) ?? rowHeight;
|
|
46831
|
+
const listOffset = listEl.getBoundingClientRect().top - scroller.getBoundingClientRect().top + scroller.scrollTop;
|
|
46832
|
+
const rowTop = listOffset + index2 * rowHeight;
|
|
46833
|
+
const rowBottom = rowTop + rowHeight;
|
|
46834
|
+
const viewTop = scroller.scrollTop;
|
|
46835
|
+
const viewBottom = viewTop + scroller.clientHeight;
|
|
46836
|
+
let top = null;
|
|
46837
|
+
if (rowTop < viewTop) {
|
|
46838
|
+
top = rowTop - margin;
|
|
46839
|
+
} else if (rowBottom > viewBottom) {
|
|
46840
|
+
top = rowBottom + margin - scroller.clientHeight;
|
|
46841
|
+
}
|
|
46842
|
+
if (top === null)
|
|
46843
|
+
return;
|
|
46844
|
+
const max2 = scroller.scrollHeight - scroller.clientHeight;
|
|
46845
|
+
scroller.scrollTo({
|
|
46846
|
+
top: Math.max(0, Math.min(top, max2)),
|
|
46847
|
+
behavior: opts == null ? void 0 : opts.behavior
|
|
46848
|
+
});
|
|
46849
|
+
}
|
|
46850
|
+
function projectMarkers(markers2, visibleStartMs, visibleEndMs) {
|
|
46851
|
+
const visibleDurationMs = visibleEndMs - visibleStartMs;
|
|
46852
|
+
if (visibleDurationMs <= 0)
|
|
46853
|
+
return [];
|
|
46854
|
+
return markers2.flatMap((m2) => {
|
|
46855
|
+
if (m2.timeMs < visibleStartMs || m2.timeMs > visibleEndMs) {
|
|
46856
|
+
return [];
|
|
46857
|
+
}
|
|
46858
|
+
return [
|
|
46859
|
+
{
|
|
46860
|
+
leftPct: (m2.timeMs - visibleStartMs) / visibleDurationMs * 100,
|
|
46861
|
+
timeMs: m2.timeMs
|
|
46862
|
+
}
|
|
46863
|
+
];
|
|
46864
|
+
});
|
|
46865
|
+
}
|
|
46866
|
+
const MARKER_MIN_GAP_PX = 16;
|
|
46867
|
+
function cullCollidingMarkers(projected, pixelWidth) {
|
|
46868
|
+
const kept = [];
|
|
46869
|
+
let lastKeptPct = Number.NEGATIVE_INFINITY;
|
|
46870
|
+
for (const m2 of projected) {
|
|
46871
|
+
const gapPx = (m2.leftPct - lastKeptPct) / 100 * pixelWidth;
|
|
46872
|
+
if (gapPx < MARKER_MIN_GAP_PX)
|
|
46873
|
+
continue;
|
|
46874
|
+
kept.push(m2);
|
|
46875
|
+
lastKeptPct = m2.leftPct;
|
|
46876
|
+
}
|
|
46877
|
+
return kept;
|
|
46878
|
+
}
|
|
46879
|
+
function MarkerTick({ className }) {
|
|
46880
|
+
return jsxRuntimeExports.jsx("span", { className: cn$4("block w-[3px] rounded-full bg-gray-1000", className) });
|
|
46881
|
+
}
|
|
46882
|
+
function MarkerLayer({ markers: markers2 }) {
|
|
46883
|
+
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: markers2.map((m2) => jsxRuntimeExports.jsx("span", { className: "pointer-events-auto absolute top-0 bottom-0 z-10 flex w-8 -translate-x-1/2 items-center justify-center", style: { left: `clamp(8px, ${m2.leftPct}%, calc(100% - 8px))` }, children: jsxRuntimeExports.jsx(TimestampTooltip, { date: m2.timeMs, children: jsxRuntimeExports.jsx("span", { className: "flex h-6 w-8 items-center justify-center", children: jsxRuntimeExports.jsx(MarkerTick, { className: "h-3" }) }) }) }, m2.timeMs)) });
|
|
46884
|
+
}
|
|
46885
|
+
function OffscreenMarkerIndicator({ direction, count: count2, targetMs, onReveal }) {
|
|
46886
|
+
const Chevron = direction === "right" ? ArrowRight : ArrowLeft;
|
|
46887
|
+
const label = `${count2} marker${count2 === 1 ? "" : "s"} ${direction === "right" ? "ahead" : "behind"} — click to scroll to ${count2 === 1 ? "it" : "the nearest"}`;
|
|
46888
|
+
const chevron = jsxRuntimeExports.jsx("span", { className: "flex h-6 w-6 shrink-0 items-center justify-center", children: jsxRuntimeExports.jsx(Chevron, { className: "size-3 text-gray-900" }) });
|
|
46889
|
+
const tick = jsxRuntimeExports.jsx(MarkerTick, { className: "h-3.5 shrink-0" });
|
|
46890
|
+
return jsxRuntimeExports.jsx("button", { type: "button", "aria-label": label, title: label, onClick: (e) => {
|
|
46891
|
+
e.stopPropagation();
|
|
46892
|
+
onReveal == null ? void 0 : onReveal(targetMs);
|
|
46893
|
+
}, className: cn$4("pointer-events-auto absolute top-1/2 z-20 flex h-6 -translate-y-1/2 cursor-pointer items-center rounded-[0.25rem] border border-gray-alpha-400 bg-background-100 shadow-sm hover:bg-gray-100", direction === "right" ? "right-0 pl-1.5" : "left-0 pr-1.5"), children: direction === "left" ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [chevron, tick] }) : jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [tick, chevron] }) });
|
|
46894
|
+
}
|
|
46623
46895
|
const runningStripes = "_runningStripes_62ud0_1";
|
|
46624
46896
|
const styles = {
|
|
46625
46897
|
runningStripes
|
|
@@ -46630,7 +46902,7 @@ const TIMELINE_PADDING_PX = 16;
|
|
|
46630
46902
|
const SEGMENT_CLASSES = {
|
|
46631
46903
|
queued: "bg-gray-400 border border-gray-500",
|
|
46632
46904
|
retrying: "bg-gray-400 border border-gray-500",
|
|
46633
|
-
waiting: "bg-gray-
|
|
46905
|
+
waiting: "bg-gray-200 border border-gray-500",
|
|
46634
46906
|
running: "bg-blue-200 border border-blue-500",
|
|
46635
46907
|
completed: "bg-blue-200 border border-blue-500",
|
|
46636
46908
|
failed: "bg-red-200 border border-red-500",
|
|
@@ -46711,8 +46983,8 @@ function projectSegments(segments, spanStartMs, spanDurationMs, geometry) {
|
|
|
46711
46983
|
];
|
|
46712
46984
|
});
|
|
46713
46985
|
}
|
|
46714
|
-
function DurationLabel({ label }) {
|
|
46715
|
-
return jsxRuntimeExports.jsx("span", { className: "pointer-events-none absolute inset-0 flex items-center justify-start overflow-hidden px-1 text-[10px] font-mono font-medium leading-none whitespace-nowrap text-left text-gray-1000 tabular-nums opacity-0 group-hover/timeline-row:opacity-100", children: label });
|
|
46986
|
+
function DurationLabel({ label, className }) {
|
|
46987
|
+
return jsxRuntimeExports.jsx("span", { className: cn$4("pointer-events-none absolute inset-0 flex items-center justify-start overflow-hidden px-1 text-[10px] font-mono font-medium leading-none whitespace-nowrap text-left text-gray-1000 tabular-nums opacity-0 group-hover/timeline-row:opacity-100", className), children: label });
|
|
46716
46988
|
}
|
|
46717
46989
|
function BoundaryArrow({ direction }) {
|
|
46718
46990
|
const Icon2 = direction === "right" ? ArrowRight : ArrowLeft;
|
|
@@ -46727,15 +46999,18 @@ function LeadInConnector({ leftPct, widthPct, label }) {
|
|
|
46727
46999
|
width: `calc(${widthPct}% - 1px)`
|
|
46728
47000
|
}, children: [jsxRuntimeExports.jsx("div", { className: "absolute left-0 top-1/2 h-4 w-px -translate-y-1/2 bg-gray-500" }), jsxRuntimeExports.jsx("div", { className: "absolute inset-x-0 top-1/2 h-px -translate-y-1/2 bg-gray-500" }), label ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null] });
|
|
46729
47001
|
}
|
|
46730
|
-
function SegmentBar({ segments }) {
|
|
47002
|
+
function SegmentBar({ segments, showLabels = true }) {
|
|
46731
47003
|
return jsxRuntimeExports.jsx("div", { className: "relative h-6 w-full", children: segments.map((seg, i) => {
|
|
46732
47004
|
if (seg.status === "queued") {
|
|
46733
47005
|
const leadInLabel = formatDurationPrecise(seg.fullDurationMs);
|
|
46734
|
-
const showLeadInLabel = seg.pixelWidth >= Math.max(40, leadInLabel.length * 6 + 12);
|
|
46735
|
-
|
|
47006
|
+
const showLeadInLabel = showLabels && seg.pixelWidth >= Math.max(40, leadInLabel.length * 6 + 12);
|
|
47007
|
+
const isFullWidthQueued = segments.length === 1;
|
|
47008
|
+
return jsxRuntimeExports.jsxs(reactExports.Fragment, { children: [jsxRuntimeExports.jsx(LeadInConnector, { leftPct: seg.leftPct, widthPct: seg.widthPct, label: showLeadInLabel ? leadInLabel : null }), isFullWidthQueued ? jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-4 w-px -translate-y-1/2 bg-gray-500", style: {
|
|
47009
|
+
left: `calc(${seg.leftPct + seg.widthPct}% - 1.5px)`
|
|
47010
|
+
} }) : null] }, i);
|
|
46736
47011
|
}
|
|
46737
47012
|
const label = formatDurationPrecise(seg.fullDurationMs);
|
|
46738
|
-
const showLabel = seg.pixelWidth >= Math.max(40, label.length * 6 + 12);
|
|
47013
|
+
const showLabel = showLabels && seg.pixelWidth >= Math.max(40, label.length * 6 + 12);
|
|
46739
47014
|
return jsxRuntimeExports.jsxs("div", { className: cn$4("absolute h-full overflow-hidden rounded-[0.25rem]", SEGMENT_CLASSES[seg.status]), style: {
|
|
46740
47015
|
// 1px gap between adjacent segments, distributed equally.
|
|
46741
47016
|
left: `calc(${seg.leftPct}% + 0.5px)`,
|
|
@@ -46744,31 +47019,7 @@ function SegmentBar({ segments }) {
|
|
|
46744
47019
|
}, children: [ACTIVE_SEGMENT_STATUSES.has(seg.status) ? jsxRuntimeExports.jsx(RunningStripes, {}) : null, showLabel ? jsxRuntimeExports.jsx(DurationLabel, { label }) : null] }, i);
|
|
46745
47020
|
}) });
|
|
46746
47021
|
}
|
|
46747
|
-
function
|
|
46748
|
-
const date2 = new Date(ms);
|
|
46749
|
-
return date2.toLocaleTimeString("en-US", {
|
|
46750
|
-
hour: "2-digit",
|
|
46751
|
-
minute: "2-digit",
|
|
46752
|
-
second: "2-digit",
|
|
46753
|
-
hour12: false
|
|
46754
|
-
}) + "." + date2.getMilliseconds().toString().padStart(3, "0");
|
|
46755
|
-
}
|
|
46756
|
-
function AttrSetMarkers({ span, viewStart, viewDuration }) {
|
|
46757
|
-
const markers2 = reactExports.useMemo(() => span.events.filter((e) => e.name === "attr_set"), [span.events]);
|
|
46758
|
-
if (markers2.length === 0 || viewDuration <= 0)
|
|
46759
|
-
return null;
|
|
46760
|
-
return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: markers2.map((event, index2) => {
|
|
46761
|
-
const timeMs = getHighResInMs(event.timestamp);
|
|
46762
|
-
const frac = (timeMs - viewStart) / viewDuration;
|
|
46763
|
-
if (frac < 0 || frac > 1)
|
|
46764
|
-
return null;
|
|
46765
|
-
return jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx("div", { "aria-label": "Attributes set", className: "absolute top-1/2 z-10 flex h-4 w-4 -translate-x-1/2 -translate-y-1/2 cursor-pointer items-center justify-center", style: { left: `${frac * 100}%` }, children: jsxRuntimeExports.jsx("div", { className: "h-2 w-2 rotate-45 rounded-[1px] border", style: {
|
|
46766
|
-
backgroundColor: "var(--ds-teal-400)",
|
|
46767
|
-
borderColor: "var(--ds-teal-900)"
|
|
46768
|
-
} }) }) }), jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Attributes set · ", formatMarkerTime(timeMs)] })] }, `attr-set-${index2}`);
|
|
46769
|
-
}) });
|
|
46770
|
-
}
|
|
46771
|
-
const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, viewDuration, containerWidth, isSelected, isDimmed, onSelect }) {
|
|
47022
|
+
const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, viewDuration, containerWidth, isSelected, isDimmed, onSelect, onRevealTime }) {
|
|
46772
47023
|
var _a3;
|
|
46773
47024
|
const startMs = getHighResInMs(span.startTime);
|
|
46774
47025
|
const endMs = getHighResInMs(span.endTime);
|
|
@@ -46776,6 +47027,10 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
|
|
|
46776
47027
|
const geometry = reactExports.useMemo(() => computeBarGeometry(startMs, endMs, viewStart, viewStart + viewDuration, containerWidth), [startMs, endMs, viewStart, viewDuration, containerWidth]);
|
|
46777
47028
|
const baseSegments = reactExports.useMemo(() => computeSpanSegments(span), [span]);
|
|
46778
47029
|
const segments = reactExports.useMemo(() => geometry.mode.kind === "full" ? projectSegments(baseSegments, startMs, totalDurationMs, geometry) : [], [geometry, baseSegments, startMs, totalDurationMs]);
|
|
47030
|
+
const baseMarkers = reactExports.useMemo(() => computeSpanMarkers(span), [span]);
|
|
47031
|
+
const markers2 = reactExports.useMemo(() => geometry.mode.kind === "full" ? cullCollidingMarkers(projectMarkers(baseMarkers, geometry.visibleStartMs, geometry.visibleEndMs), geometry.visiblePixelWidth) : [], [geometry, baseMarkers]);
|
|
47032
|
+
const offscreen = reactExports.useMemo(() => geometry.mode.kind === "full" ? computeOffscreenMarkers(baseMarkers, geometry.visibleStartMs, geometry.visibleEndMs) : { left: null, right: null }, [geometry, baseMarkers]);
|
|
47033
|
+
const hasMarkers = markers2.length > 0 || offscreen.left !== null || offscreen.right !== null;
|
|
46779
47034
|
const workflowStatus = (_a3 = span.attributes.data) == null ? void 0 : _a3.status;
|
|
46780
47035
|
const isErrored = span.status.code === 2 || workflowStatus === "failed";
|
|
46781
47036
|
const colors = getResourceColor(span.resource);
|
|
@@ -46786,7 +47041,11 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
|
|
|
46786
47041
|
const handleClick = reactExports.useCallback(() => {
|
|
46787
47042
|
onSelect(span.spanId);
|
|
46788
47043
|
}, [onSelect, span.spanId]);
|
|
46789
|
-
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 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 }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }), jsxRuntimeExports.
|
|
47044
|
+
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: [markers2.length > 0 ? jsxRuntimeExports.jsx(MarkerLayer, { markers: markers2 }) : 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, {
|
|
47045
|
+
label: totalLabel,
|
|
47046
|
+
// Shift clear of the left edge indicator so it isn't covered.
|
|
47047
|
+
className: offscreen.left ? "pl-10" : void 0
|
|
47048
|
+
}) : null] }) : null] }) });
|
|
46790
47049
|
});
|
|
46791
47050
|
const DELTA_CAP_HEIGHT_PX = 8;
|
|
46792
47051
|
const DELTA_ROW_OFFSET_PX = 8;
|
|
@@ -46802,7 +47061,7 @@ const DeltaIndicator = reactExports.memo(function DeltaIndicator2({ leftFrac, ri
|
|
|
46802
47061
|
function TimelineHeader({ markers: markers2, hoverInfo: hoverInfo2 }) {
|
|
46803
47062
|
return jsxRuntimeExports.jsx("div", { className: "relative bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-end px-4 pb-1", children: jsxRuntimeExports.jsxs("div", { className: "relative h-full flex-1", children: [markers2.map((m2) => jsxRuntimeExports.jsx("span", { className: "absolute bottom-1 font-mono text-xs font-normal leading-4 text-gray-900 whitespace-nowrap", style: { left: `${m2.position * 100}%` }, children: m2.label }, String(m2.value))), hoverInfo2 && jsxRuntimeExports.jsx("span", { className: "absolute top-1 pointer-events-none z-10 font-mono text-[11px] leading-4 text-gray-1000 whitespace-nowrap bg-background-100 border border-gray-alpha-400 rounded px-1 -translate-x-1/2", style: { left: `${hoverInfo2.fraction * 100}%` }, children: hoverInfo2.label })] }) });
|
|
46804
47063
|
}
|
|
46805
|
-
function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, searchResult, onSelect, hoverFraction, altHeld = false }) {
|
|
47064
|
+
function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, searchResult, onSelect, onRevealTime, hoverFraction, altHeld = false }) {
|
|
46806
47065
|
const containerRef = reactExports.useRef(null);
|
|
46807
47066
|
const [containerWidth, setContainerWidth] = reactExports.useState(0);
|
|
46808
47067
|
const viewDuration = viewEnd - viewStart;
|
|
@@ -46822,7 +47081,7 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
|
|
|
46822
47081
|
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: markers2.map((marker2) => (
|
|
46823
47082
|
// Skip the "0s" origin marker since the left edge already implies it.
|
|
46824
47083
|
Math.abs(marker2.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker2.position * 100}%` } }, String(marker2.value)) : null
|
|
46825
|
-
)) }), hoverFraction != 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: `${hoverFraction * 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 }, span.spanId)) }), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
47084
|
+
)) }), hoverFraction != 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: `${hoverFraction * 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 && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
46826
47085
|
}
|
|
46827
47086
|
const ActiveSpanContext = reactExports.createContext(null);
|
|
46828
47087
|
ActiveSpanContext.displayName = "ActiveSpanContext";
|
|
@@ -49266,126 +49525,128 @@ const mermaid3ZIDBTTL = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.def
|
|
|
49266
49525
|
Mermaid: Nt
|
|
49267
49526
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
49268
49527
|
export {
|
|
49269
|
-
|
|
49528
|
+
RESERVED_ATTRIBUTE_KEY_PREFIX as $,
|
|
49270
49529
|
Anchor as A,
|
|
49271
49530
|
Button as B,
|
|
49272
49531
|
Content as C,
|
|
49273
49532
|
DEFAULT_PAGE_SIZE as D,
|
|
49274
|
-
|
|
49275
|
-
|
|
49276
|
-
|
|
49277
|
-
|
|
49278
|
-
|
|
49279
|
-
|
|
49533
|
+
Root2 as E,
|
|
49534
|
+
Arrow$1 as F,
|
|
49535
|
+
useComposedRefs as G,
|
|
49536
|
+
fetchRun as H,
|
|
49537
|
+
cva as I,
|
|
49538
|
+
Presence as J,
|
|
49280
49539
|
Ks as K,
|
|
49281
49540
|
LoaderCircle as L,
|
|
49282
|
-
|
|
49283
|
-
|
|
49284
|
-
|
|
49541
|
+
createContext2 as M,
|
|
49542
|
+
fetchWorkflowsManifest as N,
|
|
49543
|
+
cn$4 as O,
|
|
49285
49544
|
Primitive as P,
|
|
49286
49545
|
Qe as Q,
|
|
49287
49546
|
R,
|
|
49288
49547
|
ServerConfigProvider as S,
|
|
49289
49548
|
Tooltip as T,
|
|
49290
|
-
|
|
49549
|
+
DataInspector as U,
|
|
49291
49550
|
VISUALLY_HIDDEN_STYLES as V,
|
|
49292
|
-
|
|
49293
|
-
|
|
49294
|
-
|
|
49295
|
-
|
|
49296
|
-
|
|
49551
|
+
DecryptClickContext as W,
|
|
49552
|
+
Button$1 as X,
|
|
49553
|
+
Spinner as Y,
|
|
49554
|
+
Lock as Z,
|
|
49555
|
+
__vitePreload as _,
|
|
49297
49556
|
TooltipTrigger as a,
|
|
49298
|
-
|
|
49299
|
-
|
|
49557
|
+
hide as a$,
|
|
49558
|
+
ContextCardProvider as a0,
|
|
49300
49559
|
Skeleton$1 as a1,
|
|
49301
49560
|
Yr as a2,
|
|
49302
49561
|
isEncryptedMarker as a3,
|
|
49303
|
-
|
|
49304
|
-
|
|
49305
|
-
|
|
49306
|
-
|
|
49307
|
-
|
|
49308
|
-
|
|
49309
|
-
|
|
49310
|
-
|
|
49311
|
-
|
|
49312
|
-
|
|
49313
|
-
|
|
49314
|
-
|
|
49315
|
-
|
|
49316
|
-
|
|
49317
|
-
|
|
49318
|
-
|
|
49319
|
-
|
|
49320
|
-
|
|
49321
|
-
|
|
49322
|
-
|
|
49323
|
-
|
|
49324
|
-
|
|
49325
|
-
|
|
49326
|
-
|
|
49327
|
-
|
|
49328
|
-
|
|
49329
|
-
|
|
49330
|
-
|
|
49331
|
-
|
|
49332
|
-
|
|
49333
|
-
|
|
49334
|
-
|
|
49335
|
-
|
|
49336
|
-
|
|
49337
|
-
|
|
49338
|
-
|
|
49339
|
-
|
|
49340
|
-
|
|
49341
|
-
|
|
49342
|
-
|
|
49343
|
-
|
|
49344
|
-
|
|
49345
|
-
|
|
49346
|
-
|
|
49347
|
-
|
|
49348
|
-
|
|
49349
|
-
|
|
49350
|
-
|
|
49351
|
-
|
|
49352
|
-
|
|
49353
|
-
|
|
49354
|
-
|
|
49355
|
-
|
|
49356
|
-
|
|
49357
|
-
|
|
49358
|
-
|
|
49359
|
-
|
|
49360
|
-
|
|
49361
|
-
|
|
49562
|
+
TimestampTooltip as a4,
|
|
49563
|
+
formatDuration as a5,
|
|
49564
|
+
_r as a6,
|
|
49565
|
+
RunClickContext as a7,
|
|
49566
|
+
StreamClickContext as a8,
|
|
49567
|
+
isExpiredMarker as a9,
|
|
49568
|
+
TooltipTrigger$1 as aA,
|
|
49569
|
+
TooltipContent$1 as aB,
|
|
49570
|
+
SidebarDataProvider as aC,
|
|
49571
|
+
hydrateResourceIOWithKey as aD,
|
|
49572
|
+
hydrateResourceIO as aE,
|
|
49573
|
+
fetchHook as aF,
|
|
49574
|
+
fetchStep as aG,
|
|
49575
|
+
fetchStreams as aH,
|
|
49576
|
+
Slot as aI,
|
|
49577
|
+
Slottable as aJ,
|
|
49578
|
+
buttonVariants as aK,
|
|
49579
|
+
fetchEvent as aL,
|
|
49580
|
+
fetchEventsByCorrelationId as aM,
|
|
49581
|
+
isEncryptedData as aN,
|
|
49582
|
+
hydrateData as aO,
|
|
49583
|
+
getWebRevivers as aP,
|
|
49584
|
+
LIVE_UPDATE_INTERVAL_MS as aQ,
|
|
49585
|
+
getEncryptionKeyForRun as aR,
|
|
49586
|
+
StreamViewer as aS,
|
|
49587
|
+
composeRefs as aT,
|
|
49588
|
+
useFloating as aU,
|
|
49589
|
+
offset as aV,
|
|
49590
|
+
shift as aW,
|
|
49591
|
+
limitShift as aX,
|
|
49592
|
+
flip as aY,
|
|
49593
|
+
size as aZ,
|
|
49594
|
+
arrow as a_,
|
|
49595
|
+
isDoStreamStep as aa,
|
|
49596
|
+
extractConversation as ab,
|
|
49597
|
+
hasEncryptedFields as ac,
|
|
49598
|
+
EVENT_DATA_REF_FIELDS as ad,
|
|
49599
|
+
useSidebarDataOptional as ae,
|
|
49600
|
+
clsx as af,
|
|
49601
|
+
useRowWindow as ag,
|
|
49602
|
+
isSpanDimmedBySearch as ah,
|
|
49603
|
+
ROW_HEIGHT_PX as ai,
|
|
49604
|
+
getSpanDurationMs as aj,
|
|
49605
|
+
formatDurationPrecise as ak,
|
|
49606
|
+
TooltipProvider as al,
|
|
49607
|
+
ActiveSpanProvider as am,
|
|
49608
|
+
useActiveSpan as an,
|
|
49609
|
+
useSidebarData as ao,
|
|
49610
|
+
useReducedMotion as ap,
|
|
49611
|
+
searchSpans as aq,
|
|
49612
|
+
computeRootBounds as ar,
|
|
49613
|
+
computeTimeMarkers as as,
|
|
49614
|
+
getHighResInMs as at,
|
|
49615
|
+
scrollRowIntoView as au,
|
|
49616
|
+
TIMELINE_PADDING_PX as av,
|
|
49617
|
+
Timeline as aw,
|
|
49618
|
+
TimelineHeader as ax,
|
|
49619
|
+
IconButton as ay,
|
|
49620
|
+
Tooltip$1 as az,
|
|
49362
49621
|
TooltipContent as b,
|
|
49363
|
-
|
|
49364
|
-
|
|
49365
|
-
|
|
49366
|
-
|
|
49622
|
+
autoUpdate as b0,
|
|
49623
|
+
cancelRun as b1,
|
|
49624
|
+
reenqueueRun as b2,
|
|
49625
|
+
wakeUpRun as b3,
|
|
49626
|
+
resumeHook as b4,
|
|
49627
|
+
recreateRun as b5,
|
|
49367
49628
|
createLucideIcon as c,
|
|
49368
|
-
|
|
49369
|
-
|
|
49370
|
-
|
|
49371
|
-
|
|
49372
|
-
|
|
49373
|
-
|
|
49374
|
-
|
|
49375
|
-
|
|
49376
|
-
|
|
49377
|
-
|
|
49378
|
-
|
|
49379
|
-
|
|
49380
|
-
|
|
49381
|
-
|
|
49382
|
-
|
|
49383
|
-
|
|
49629
|
+
runHealthCheck as d,
|
|
49630
|
+
cn as e,
|
|
49631
|
+
Toaster as f,
|
|
49632
|
+
TooltipProvider$1 as g,
|
|
49633
|
+
useToast as h,
|
|
49634
|
+
fetchRuns as i,
|
|
49635
|
+
fetchHooks as j,
|
|
49636
|
+
getPaginationDisplay as k,
|
|
49637
|
+
fetchEvents as l,
|
|
49638
|
+
useCallbackRef as m,
|
|
49639
|
+
useComposedRefs$1 as n,
|
|
49640
|
+
composeEventHandlers as o,
|
|
49641
|
+
useLayoutEffect2 as p,
|
|
49642
|
+
Portal$1 as q,
|
|
49643
|
+
registerZstdDecoder as r,
|
|
49644
|
+
useId as s,
|
|
49384
49645
|
toast as t,
|
|
49385
49646
|
useServerConfig as u,
|
|
49386
|
-
|
|
49387
|
-
|
|
49388
|
-
|
|
49389
|
-
|
|
49390
|
-
|
|
49647
|
+
createPopperScope as v,
|
|
49648
|
+
DismissableLayer as w,
|
|
49649
|
+
createContextScope as x,
|
|
49650
|
+
createSlot as y,
|
|
49651
|
+
useControllableState as z
|
|
49391
49652
|
};
|