@tonyclaw/agent-inspector 2.0.39 → 2.0.41
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/.output/nitro.json +1 -1
- package/.output/public/assets/CompareDrawer-DCg6S2cl.js +1 -0
- package/.output/public/assets/ProxyViewerContainer-DsU6QETm.js +115 -0
- package/.output/public/assets/{ReplayDialog-B58TbTtY.js → ReplayDialog-ClVgjSDE.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-d4P6JNiP.js → RequestAnatomy-BhqvLQp9.js} +1 -1
- package/.output/public/assets/ResponseView-BZAJoK6B.js +1 -0
- package/.output/public/assets/StreamingChunkSequence-CaORmoKX.js +1 -0
- package/.output/public/assets/_sessionId-BHqywvM3.js +1 -0
- package/.output/public/assets/index-B_LPYuM0.js +1 -0
- package/.output/public/assets/{main-DK9PoBjx.js → main-CI3HFEcV.js} +2 -2
- package/.output/server/{_sessionId-DjarbXpT.mjs → _sessionId-DQ0ljHQ8.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-C5Z6AlUk.mjs → CompareDrawer-nkVa9epn.mjs} +4 -3
- package/.output/server/_ssr/{ProxyViewerContainer-4pXsBywn.mjs → ProxyViewerContainer-CXA7iH3H.mjs} +140 -45
- package/.output/server/_ssr/{ReplayDialog-w1vc1p5e.mjs → ReplayDialog-CK71-ucq.mjs} +3 -3
- package/.output/server/_ssr/{RequestAnatomy-2HaBhsNV.mjs → RequestAnatomy-DDCUJJ3X.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-SO_Y_W85.mjs → ResponseView-C6ZA7V3B.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-CXEa2DkO.mjs → StreamingChunkSequence-DW5v_o6G.mjs} +2 -2
- package/.output/server/_ssr/{index-DuCGt4a2.mjs → index-Ckex98yq.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-D0BaSzkZ.mjs → router-ChJIVv7-.mjs} +434 -6
- package/.output/server/{_tanstack-start-manifest_v-6N4SODyd.mjs → _tanstack-start-manifest_v-CJ4__weU.mjs} +1 -1
- package/.output/server/index.mjs +62 -62
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +5 -2
- package/src/components/providers/ProviderCard.tsx +6 -3
- package/src/components/providers/ProviderForm.tsx +6 -3
- package/src/components/providers/ProvidersPanel.tsx +6 -1
- package/src/components/providers/SettingsDialog.tsx +5 -2
- package/src/components/proxy-viewer/CompareDrawer.tsx +3 -1
- package/src/components/proxy-viewer/LogEntry.tsx +23 -6
- package/src/components/proxy-viewer/LogEntryHeader.tsx +20 -0
- package/src/components/proxy-viewer/useCopyFeedback.ts +3 -1
- package/src/components/ui/json-viewer.tsx +7 -2
- package/src/contracts/log.ts +1 -0
- package/src/lib/clipboard.ts +67 -0
- package/src/proxy/logFinalizer.ts +58 -0
- package/src/proxy/logSearch.ts +1 -0
- package/src/proxy/toolSchemaWarnings.ts +515 -0
- package/.output/public/assets/CompareDrawer-Jfe6M6DQ.js +0 -1
- package/.output/public/assets/ProxyViewerContainer-CQKV0Bqq.js +0 -115
- package/.output/public/assets/ResponseView-Bum1a3tG.js +0 -1
- package/.output/public/assets/StreamingChunkSequence-CjBDp5E9.js +0 -1
- package/.output/public/assets/_sessionId-BupV2gtf.js +0 -1
- package/.output/public/assets/index-DHSww5em.js +0 -1
package/.output/server/_ssr/{ProxyViewerContainer-4pXsBywn.mjs → ProxyViewerContainer-CXA7iH3H.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, a as React } from "../_libs/react.mjs";
|
|
2
|
-
import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, v as packageJson, i as GroupEvidenceExportResultSchema, j as DeleteInspectorGroupResponseSchema, d as RuntimeConfigSchema, P as ProviderConfigSchema, f as apiFormatForPath, n as createPendingProviderTestResults, o as ProviderTestResultsSchema, q as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, r as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, k as providerHasContextMetadata, l as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, t as resolveProviderContextWindow, K as KnowledgeCandidateSchema, h as stripClaudeCodeBillingHeader, u as isPlainRecord, G as GroupEvidenceReadResponseSchema, I as InspectorGroupsListResponseSchema } from "./router-
|
|
2
|
+
import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, v as packageJson, i as GroupEvidenceExportResultSchema, j as DeleteInspectorGroupResponseSchema, d as RuntimeConfigSchema, P as ProviderConfigSchema, f as apiFormatForPath, n as createPendingProviderTestResults, o as ProviderTestResultsSchema, q as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, r as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, k as providerHasContextMetadata, l as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, t as resolveProviderContextWindow, K as KnowledgeCandidateSchema, h as stripClaudeCodeBillingHeader, u as isPlainRecord, G as GroupEvidenceReadResponseSchema, I as InspectorGroupsListResponseSchema } from "./router-ChJIVv7-.mjs";
|
|
3
3
|
import { u as useSWR, a as useSWRConfig } from "../_libs/swr.mjs";
|
|
4
4
|
import { J as JSZip } from "../_libs/jszip.mjs";
|
|
5
5
|
import { c as clsx } from "../_libs/clsx.mjs";
|
|
@@ -414,6 +414,61 @@ async function exportLogsAsZip(logs, mode = "redacted") {
|
|
|
414
414
|
URL.revokeObjectURL(url);
|
|
415
415
|
return { ok: true };
|
|
416
416
|
}
|
|
417
|
+
function restoreSelection(selection, ranges) {
|
|
418
|
+
if (selection === null) return;
|
|
419
|
+
selection.removeAllRanges();
|
|
420
|
+
for (const range of ranges) {
|
|
421
|
+
selection.addRange(range);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
function readSelectionRanges(selection) {
|
|
425
|
+
if (selection === null) return [];
|
|
426
|
+
const ranges = [];
|
|
427
|
+
for (let index = 0; index < selection.rangeCount; index++) {
|
|
428
|
+
ranges.push(selection.getRangeAt(index));
|
|
429
|
+
}
|
|
430
|
+
return ranges;
|
|
431
|
+
}
|
|
432
|
+
function copyWithTextareaFallback(text) {
|
|
433
|
+
if (typeof document === "undefined") return false;
|
|
434
|
+
const activeElement = document.activeElement;
|
|
435
|
+
const selection = document.getSelection();
|
|
436
|
+
const ranges = readSelectionRanges(selection);
|
|
437
|
+
const textarea = document.createElement("textarea");
|
|
438
|
+
textarea.value = text;
|
|
439
|
+
textarea.setAttribute("readonly", "");
|
|
440
|
+
textarea.style.position = "fixed";
|
|
441
|
+
textarea.style.top = "0";
|
|
442
|
+
textarea.style.left = "-9999px";
|
|
443
|
+
textarea.style.opacity = "0";
|
|
444
|
+
document.body.appendChild(textarea);
|
|
445
|
+
textarea.focus();
|
|
446
|
+
textarea.select();
|
|
447
|
+
textarea.setSelectionRange(0, text.length);
|
|
448
|
+
let copied = false;
|
|
449
|
+
try {
|
|
450
|
+
copied = document.execCommand("copy");
|
|
451
|
+
} catch {
|
|
452
|
+
} finally {
|
|
453
|
+
document.body.removeChild(textarea);
|
|
454
|
+
restoreSelection(selection, ranges);
|
|
455
|
+
if (typeof HTMLElement !== "undefined" && activeElement instanceof HTMLElement) {
|
|
456
|
+
activeElement.focus({ preventScroll: true });
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return copied;
|
|
460
|
+
}
|
|
461
|
+
async function copyTextToClipboard(text) {
|
|
462
|
+
const clipboard = globalThis.navigator?.clipboard;
|
|
463
|
+
if (clipboard !== void 0) {
|
|
464
|
+
try {
|
|
465
|
+
await clipboard.writeText(text);
|
|
466
|
+
return true;
|
|
467
|
+
} catch {
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return copyWithTextareaFallback(text);
|
|
471
|
+
}
|
|
417
472
|
function formatTimestamp$1(iso, format) {
|
|
418
473
|
switch (format) {
|
|
419
474
|
case "full":
|
|
@@ -1870,7 +1925,8 @@ function useCopyFeedback(text) {
|
|
|
1870
1925
|
(event) => {
|
|
1871
1926
|
event.stopPropagation();
|
|
1872
1927
|
if (text === null) return;
|
|
1873
|
-
void
|
|
1928
|
+
void copyTextToClipboard(text).then((success) => {
|
|
1929
|
+
if (!success) return;
|
|
1874
1930
|
setCopied(true);
|
|
1875
1931
|
if (timerRef.current !== null) clearTimeout(timerRef.current);
|
|
1876
1932
|
timerRef.current = setTimeout(() => setCopied(false), 2e3);
|
|
@@ -1881,19 +1937,19 @@ function useCopyFeedback(text) {
|
|
|
1881
1937
|
return { copied, copy };
|
|
1882
1938
|
}
|
|
1883
1939
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1884
|
-
() => import("./CompareDrawer-
|
|
1940
|
+
() => import("./CompareDrawer-nkVa9epn.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1885
1941
|
);
|
|
1886
1942
|
const LazyReplayDialog = reactExports.lazy(
|
|
1887
|
-
() => import("./ReplayDialog-
|
|
1943
|
+
() => import("./ReplayDialog-CK71-ucq.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1888
1944
|
);
|
|
1889
1945
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1890
|
-
() => import("./RequestAnatomy-
|
|
1946
|
+
() => import("./RequestAnatomy-DDCUJJ3X.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1891
1947
|
);
|
|
1892
1948
|
const LazyResponseView = reactExports.lazy(
|
|
1893
|
-
() => import("./ResponseView-
|
|
1949
|
+
() => import("./ResponseView-C6ZA7V3B.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1894
1950
|
);
|
|
1895
1951
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1896
|
-
() => import("./StreamingChunkSequence-
|
|
1952
|
+
() => import("./StreamingChunkSequence-DW5v_o6G.mjs").then((m) => ({
|
|
1897
1953
|
default: m.StreamingChunkSequence
|
|
1898
1954
|
}))
|
|
1899
1955
|
);
|
|
@@ -2336,6 +2392,7 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
2336
2392
|
const tokensPerSecond = log.tokensPerSecond ?? null;
|
|
2337
2393
|
const firstChunkLabel = firstChunkMs === null ? null : formatElapsed$3(firstChunkMs);
|
|
2338
2394
|
const tokenRateLabel = tokensPerSecond === null || tokensPerSecond <= 0 ? null : formatTokenRate$1(tokensPerSecond);
|
|
2395
|
+
const warningCount = log.warnings?.length ?? 0;
|
|
2339
2396
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2340
2397
|
"div",
|
|
2341
2398
|
{
|
|
@@ -2384,6 +2441,20 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
2384
2441
|
]
|
|
2385
2442
|
}
|
|
2386
2443
|
),
|
|
2444
|
+
warningCount > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
2445
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2446
|
+
Badge,
|
|
2447
|
+
{
|
|
2448
|
+
variant: "outline",
|
|
2449
|
+
className: "text-[10px] px-1.5 py-0 h-5 font-mono tabular-nums gap-1 bg-amber-500/15 text-amber-400 border-amber-500/25",
|
|
2450
|
+
children: [
|
|
2451
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3", "aria-label": "Tool schema warnings" }),
|
|
2452
|
+
warningCount
|
|
2453
|
+
]
|
|
2454
|
+
}
|
|
2455
|
+
) }),
|
|
2456
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: warningCount === 1 ? "1 tool schema warning" : `${warningCount} tool schema warnings` })
|
|
2457
|
+
] }),
|
|
2387
2458
|
log.elapsedMs !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
2388
2459
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2389
2460
|
"span",
|
|
@@ -2721,7 +2792,8 @@ function CopyValueButton({ value }) {
|
|
|
2721
2792
|
const [copied, setCopied] = reactExports.useState(false);
|
|
2722
2793
|
function handleCopy(e) {
|
|
2723
2794
|
e.stopPropagation();
|
|
2724
|
-
void
|
|
2795
|
+
void copyTextToClipboard(JSON.stringify(value, null, 2)).then((success) => {
|
|
2796
|
+
if (!success) return;
|
|
2725
2797
|
setCopied(true);
|
|
2726
2798
|
setTimeout(() => {
|
|
2727
2799
|
setCopied(false);
|
|
@@ -2734,6 +2806,7 @@ function CopyValueButton({ value }) {
|
|
|
2734
2806
|
type: "button",
|
|
2735
2807
|
onClick: handleCopy,
|
|
2736
2808
|
className: "inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground transition-colors",
|
|
2809
|
+
"aria-label": copied ? "Copied JSON" : "Copy JSON",
|
|
2737
2810
|
title: "Copy JSON",
|
|
2738
2811
|
children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 text-green-500" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-3" })
|
|
2739
2812
|
}
|
|
@@ -2743,7 +2816,8 @@ function CopyButton({ value }) {
|
|
|
2743
2816
|
const [copied, setCopied] = reactExports.useState(false);
|
|
2744
2817
|
function handleCopy(e) {
|
|
2745
2818
|
e.stopPropagation();
|
|
2746
|
-
void
|
|
2819
|
+
void copyTextToClipboard(JSON.stringify(value, null, 2)).then((success) => {
|
|
2820
|
+
if (!success) return;
|
|
2747
2821
|
setCopied(true);
|
|
2748
2822
|
setTimeout(() => {
|
|
2749
2823
|
setCopied(false);
|
|
@@ -2756,6 +2830,7 @@ function CopyButton({ value }) {
|
|
|
2756
2830
|
type: "button",
|
|
2757
2831
|
onClick: handleCopy,
|
|
2758
2832
|
className: "opacity-0 group-hover/row:opacity-100 hover:bg-muted p-0.5 rounded transition-opacity shrink-0",
|
|
2833
|
+
"aria-label": copied ? "Copied JSON value" : "Copy JSON value",
|
|
2759
2834
|
title: "Copy to clipboard",
|
|
2760
2835
|
children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 text-green-500" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-3 text-muted-foreground" })
|
|
2761
2836
|
}
|
|
@@ -3612,6 +3687,7 @@ const LogEntry = reactExports.memo(function({
|
|
|
3612
3687
|
() => parseRequestTools(requestExpansion.parsedData),
|
|
3613
3688
|
[requestExpansion.parsedData]
|
|
3614
3689
|
);
|
|
3690
|
+
const warnings = log.warnings ?? [];
|
|
3615
3691
|
const anatomyPaths = reactExports.useMemo(() => {
|
|
3616
3692
|
if (anatomySegments === null) return void 0;
|
|
3617
3693
|
return new Set(anatomySegments.map((s) => s.path));
|
|
@@ -3623,9 +3699,12 @@ const LogEntry = reactExports.memo(function({
|
|
|
3623
3699
|
if (activeTab !== "request") setActiveTab("request");
|
|
3624
3700
|
}
|
|
3625
3701
|
});
|
|
3626
|
-
reactExports.
|
|
3627
|
-
|
|
3628
|
-
|
|
3702
|
+
const handleToggleExpanded = reactExports.useCallback(() => {
|
|
3703
|
+
const nextExpanded = !expanded;
|
|
3704
|
+
if (nextExpanded) {
|
|
3705
|
+
setActiveTab(anatomySegments !== null ? "anatomy" : "request");
|
|
3706
|
+
}
|
|
3707
|
+
setExpanded(nextExpanded);
|
|
3629
3708
|
}, [anatomySegments, expanded]);
|
|
3630
3709
|
reactExports.useEffect(() => {
|
|
3631
3710
|
const handleLogFocusRequest = (event) => {
|
|
@@ -3649,7 +3728,7 @@ const LogEntry = reactExports.memo(function({
|
|
|
3649
3728
|
messageCount: requestAnalysis.messageCount,
|
|
3650
3729
|
toolCount: requestAnalysis.toolCount,
|
|
3651
3730
|
expanded,
|
|
3652
|
-
onToggle:
|
|
3731
|
+
onToggle: handleToggleExpanded,
|
|
3653
3732
|
cacheTrend,
|
|
3654
3733
|
slowResponseThresholdSeconds,
|
|
3655
3734
|
timeDisplayFormat,
|
|
@@ -3679,6 +3758,13 @@ const LogEntry = reactExports.memo(function({
|
|
|
3679
3758
|
}
|
|
3680
3759
|
) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "font-mono text-xs whitespace-pre-wrap break-words", children: log.rawRequestBody }) }) }),
|
|
3681
3760
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "request", children: activeTab === "request" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-4 pt-1 pb-3", children: [
|
|
3761
|
+
warnings.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-3 rounded border border-amber-500/30 bg-amber-500/10 p-3 text-xs", children: [
|
|
3762
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 font-semibold text-amber-300", children: [
|
|
3763
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3.5" }),
|
|
3764
|
+
"Tool schema warnings"
|
|
3765
|
+
] }),
|
|
3766
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "mt-2 space-y-1 text-muted-foreground", children: warnings.map((warning) => /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: warning }, warning)) })
|
|
3767
|
+
] }),
|
|
3682
3768
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3683
3769
|
RequestTools,
|
|
3684
3770
|
{
|
|
@@ -6709,10 +6795,11 @@ function ProviderCard({
|
|
|
6709
6795
|
const [copied, setCopied] = reactExports.useState(false);
|
|
6710
6796
|
const [showModelResults, setShowModelResults] = reactExports.useState(false);
|
|
6711
6797
|
function handleCopy() {
|
|
6712
|
-
|
|
6798
|
+
void copyTextToClipboard(provider.apiKey).then((success) => {
|
|
6799
|
+
if (!success) return;
|
|
6800
|
+
setCopied(true);
|
|
6801
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
6713
6802
|
});
|
|
6714
|
-
setCopied(true);
|
|
6715
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
6716
6803
|
}
|
|
6717
6804
|
const docsUrl = provider.apiDocsUrl ?? Object.entries(KNOWN_PROVIDER_DOCS).find(
|
|
6718
6805
|
([keyword]) => provider.name.toLowerCase().includes(keyword)
|
|
@@ -7169,10 +7256,11 @@ function ProviderForm({ provider, onSubmit, onCancel }) {
|
|
|
7169
7256
|
const suggestedModels = isMiniMax ? MINIMAX_MODELS : isZhipu ? ZHIPU_MODELS : isAlibaba ? ALIBABA_MODELS : [];
|
|
7170
7257
|
const hasContextMetadata = provider?.modelMetadata?.some((metadata) => metadata.contextWindow !== void 0) ?? false;
|
|
7171
7258
|
function handleCopy() {
|
|
7172
|
-
|
|
7259
|
+
void copyTextToClipboard(apiKey).then((success) => {
|
|
7260
|
+
if (!success) return;
|
|
7261
|
+
setCopied(true);
|
|
7262
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
7173
7263
|
});
|
|
7174
|
-
setCopied(true);
|
|
7175
|
-
setTimeout(() => setCopied(false), 2e3);
|
|
7176
7264
|
}
|
|
7177
7265
|
reactExports.useEffect(() => {
|
|
7178
7266
|
if (provider) {
|
|
@@ -8229,12 +8317,14 @@ function ProvidersPanel({
|
|
|
8229
8317
|
{
|
|
8230
8318
|
type: "button",
|
|
8231
8319
|
onClick: () => {
|
|
8232
|
-
void
|
|
8320
|
+
void copyTextToClipboard(configPath).then((success) => {
|
|
8321
|
+
if (!success) return;
|
|
8233
8322
|
setConfigPathCopied(true);
|
|
8234
8323
|
setTimeout(() => setConfigPathCopied(false), 2e3);
|
|
8235
8324
|
});
|
|
8236
8325
|
},
|
|
8237
8326
|
className: "shrink-0 ml-auto text-muted-foreground hover:text-foreground transition-colors",
|
|
8327
|
+
"aria-label": configPathCopied ? "Copied config file path" : "Copy config file path",
|
|
8238
8328
|
children: configPathCopied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3 text-green-500" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-3" })
|
|
8239
8329
|
}
|
|
8240
8330
|
) }),
|
|
@@ -8433,7 +8523,8 @@ function StorageSettingsTab() {
|
|
|
8433
8523
|
void refresh();
|
|
8434
8524
|
}, [refresh]);
|
|
8435
8525
|
const handleCopy = reactExports.useCallback((id, value) => {
|
|
8436
|
-
void
|
|
8526
|
+
void copyTextToClipboard(value).then((success) => {
|
|
8527
|
+
if (!success) return;
|
|
8437
8528
|
setCopiedId(id);
|
|
8438
8529
|
setTimeout(() => setCopiedId(null), 1600);
|
|
8439
8530
|
});
|
|
@@ -8567,7 +8658,8 @@ function OnboardingSettingsTab() {
|
|
|
8567
8658
|
[origin]
|
|
8568
8659
|
);
|
|
8569
8660
|
const handleCopy = reactExports.useCallback((id, value) => {
|
|
8570
|
-
void
|
|
8661
|
+
void copyTextToClipboard(value).then((success) => {
|
|
8662
|
+
if (!success) return;
|
|
8571
8663
|
setCopiedId(id);
|
|
8572
8664
|
setTimeout(() => setCopiedId(null), 1600);
|
|
8573
8665
|
});
|
|
@@ -10151,7 +10243,8 @@ function openLogContext(logId) {
|
|
|
10151
10243
|
function CopyableCommand({ command }) {
|
|
10152
10244
|
const [copied, setCopied] = reactExports.useState(false);
|
|
10153
10245
|
const handleCopy = reactExports.useCallback(() => {
|
|
10154
|
-
void
|
|
10246
|
+
void copyTextToClipboard(command).then((success) => {
|
|
10247
|
+
if (!success) return;
|
|
10155
10248
|
setCopied(true);
|
|
10156
10249
|
setTimeout(() => setCopied(false), 2e3);
|
|
10157
10250
|
});
|
|
@@ -10409,7 +10502,8 @@ function SessionContextBar({
|
|
|
10409
10502
|
);
|
|
10410
10503
|
const userAgent = reactExports.useMemo(() => getFirstUserAgent(logs), [logs]);
|
|
10411
10504
|
const handleCopyLink = reactExports.useCallback(() => {
|
|
10412
|
-
void
|
|
10505
|
+
void copyTextToClipboard(window.location.href).then((success) => {
|
|
10506
|
+
if (!success) return;
|
|
10413
10507
|
setCopied(true);
|
|
10414
10508
|
setTimeout(() => setCopied(false), 2e3);
|
|
10415
10509
|
});
|
|
@@ -11070,36 +11164,37 @@ export {
|
|
|
11070
11164
|
Badge as B,
|
|
11071
11165
|
CONTEXT_USAGE_THRESHOLDS as C,
|
|
11072
11166
|
Dialog as D,
|
|
11073
|
-
|
|
11167
|
+
JsonViewer as E,
|
|
11168
|
+
safeJsonValue as F,
|
|
11074
11169
|
JsonViewerFromString as J,
|
|
11075
11170
|
ProxyViewerContainer as P,
|
|
11076
11171
|
ROLE_COLOR_CLASSES as R,
|
|
11077
11172
|
SegmentBar as S,
|
|
11078
11173
|
Tabs as T,
|
|
11079
11174
|
getConversationId as a,
|
|
11080
|
-
|
|
11175
|
+
copyTextToClipboard as b,
|
|
11081
11176
|
cn as c,
|
|
11082
|
-
|
|
11083
|
-
|
|
11177
|
+
DialogContent as d,
|
|
11178
|
+
DialogHeader as e,
|
|
11084
11179
|
formatTokens as f,
|
|
11085
11180
|
getLogFormatAdapter as g,
|
|
11086
|
-
|
|
11087
|
-
|
|
11088
|
-
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11093
|
-
|
|
11094
|
-
|
|
11095
|
-
|
|
11181
|
+
DialogTitle as h,
|
|
11182
|
+
TabsList as i,
|
|
11183
|
+
TabsTrigger as j,
|
|
11184
|
+
TabsContent as k,
|
|
11185
|
+
Button as l,
|
|
11186
|
+
TooltipProvider as m,
|
|
11187
|
+
Tooltip as n,
|
|
11188
|
+
TooltipTrigger as o,
|
|
11189
|
+
TooltipContent as p,
|
|
11190
|
+
dispatchLogFocusRequest as q,
|
|
11096
11191
|
resolveLogFormat as r,
|
|
11097
|
-
|
|
11098
|
-
|
|
11192
|
+
analyzeContextIntelligence as s,
|
|
11193
|
+
formatContextWindowTokens as t,
|
|
11099
11194
|
useProviders as u,
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11195
|
+
getStatusCategory as v,
|
|
11196
|
+
Collapsible as w,
|
|
11197
|
+
CollapsibleTrigger as x,
|
|
11198
|
+
CollapsibleContent as y,
|
|
11199
|
+
ScrollArea as z
|
|
11105
11200
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, D as Dialog,
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import { C as CapturedLogSchema } from "./router-
|
|
2
|
+
import { u as useProviders, D as Dialog, d as DialogContent, e as DialogHeader, h as DialogTitle, T as Tabs, i as TabsList, j as TabsTrigger, k as TabsContent, l as Button, m as TooltipProvider, n as Tooltip, o as TooltipTrigger, p as TooltipContent, q as dispatchLogFocusRequest } from "./ProxyViewerContainer-CXA7iH3H.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-C6ZA7V3B.mjs";
|
|
4
|
+
import { C as CapturedLogSchema } from "./router-ChJIVv7-.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
7
7
|
import { V as RotateCcw, ae as Braces, af as Minimize2 } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders,
|
|
3
|
-
import "./router-
|
|
2
|
+
import { u as useProviders, s as analyzeContextIntelligence, f as formatTokens, m as TooltipProvider, c as cn, n as Tooltip, o as TooltipTrigger, p as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, t as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-CXA7iH3H.mjs";
|
|
3
|
+
import "./router-ChJIVv7-.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { ag as Info, c as ChevronDown, l as ChevronRight } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn,
|
|
3
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as JsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-CXA7iH3H.mjs";
|
|
3
|
+
import "./router-ChJIVv7-.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { Z as Zap, q as TriangleAlert, ah as CircleStop, B as Brain, c as ChevronDown, l as ChevronRight, f as Terminal } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import "./router-
|
|
2
|
+
import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as JsonViewer } from "./ProxyViewerContainer-CXA7iH3H.mjs";
|
|
3
|
+
import "./router-ChJIVv7-.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { c as ChevronDown, l as ChevronRight, a as LoaderCircle } from "../_libs/lucide-react.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-
|
|
1
|
+
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-CXA7iH3H.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-ChJIVv7-.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/swr.mjs";
|
|
@@ -198,7 +198,7 @@ function getResponse() {
|
|
|
198
198
|
return event.res;
|
|
199
199
|
}
|
|
200
200
|
async function getStartManifest(matchedRoutes) {
|
|
201
|
-
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-
|
|
201
|
+
const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-CJ4__weU.mjs");
|
|
202
202
|
const startManifest = tsrStartManifest();
|
|
203
203
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
204
204
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -776,7 +776,7 @@ let entriesPromise;
|
|
|
776
776
|
let baseManifestPromise;
|
|
777
777
|
let cachedFinalManifestPromise;
|
|
778
778
|
async function loadEntries() {
|
|
779
|
-
const routerEntry = await import("./router-
|
|
779
|
+
const routerEntry = await import("./router-ChJIVv7-.mjs").then((n) => n.w);
|
|
780
780
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
781
781
|
return { startEntry, routerEntry };
|
|
782
782
|
}
|