@tonyclaw/agent-inspector 2.0.21 → 2.0.23
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/cli.js +10 -0
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-ztKMd-FE.js → CompareDrawer-DnYQtd8R.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-BTYGkg36.js +115 -0
- package/.output/public/assets/{ReplayDialog-RNhfLSsW.js → ReplayDialog-B-3V95xT.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-fsUI5HhH.js → RequestAnatomy-CT8hLGLa.js} +1 -1
- package/.output/public/assets/{ResponseView-B3YTDBBX.js → ResponseView-DK3CYom0.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-CbGqQ0mO.js → StreamingChunkSequence-D3jJutjp.js} +1 -1
- package/.output/public/assets/_sessionId-DpdfAzbo.js +1 -0
- package/.output/public/assets/index-780zTVwp.css +1 -0
- package/.output/public/assets/index-BpJNbm9G.js +1 -0
- package/.output/public/assets/{main-lTQKpxiU.js → main-hF_572U6.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +27 -27
- package/.output/server/{_sessionId-DsF6LFJG.mjs → _sessionId-BqhNE2M8.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-DgdZcMpg.mjs → CompareDrawer-C4LQW4S1.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-DaFW1IVu.mjs → ProxyViewerContainer-BKInvawk.mjs} +214 -41
- package/.output/server/_ssr/{ReplayDialog-BOaTX1ir.mjs → ReplayDialog-C3ZiRihL.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-C-2_dejd.mjs → RequestAnatomy-DlVAPIQZ.mjs} +3 -3
- package/.output/server/_ssr/{ResponseView-BtRVhgzy.mjs → ResponseView-nMS0rkxu.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-DZaerowX.mjs → StreamingChunkSequence-PDWqrNiO.mjs} +3 -3
- package/.output/server/_ssr/{index-B3_fgwFy.mjs → index-Cd1zD-lo.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-CDOnHAWy.mjs → router-R9gm7_sh.mjs} +394 -151
- package/.output/server/{_tanstack-start-manifest_v-Brrx1NEa.mjs → _tanstack-start-manifest_v-BnLVH_EX.mjs} +1 -1
- package/.output/server/index.mjs +60 -60
- package/package.json +1 -1
- package/src/cli/templates/codex-skill-onboard.ts +5 -0
- package/src/cli/templates/skill-onboard.ts +5 -0
- package/src/components/OnboardingBanner.tsx +4 -0
- package/src/components/ProxyViewer.tsx +5 -0
- package/src/components/providers/ProviderCard.tsx +178 -38
- package/src/components/providers/ProvidersPanel.tsx +21 -3
- package/src/components/providers/SettingsDialog.tsx +76 -2
- package/src/lib/providerTestContract.ts +13 -0
- package/src/lib/runtimeConfig.ts +8 -0
- package/src/lib/useOnboarding.ts +3 -0
- package/src/lib/useStripConfig.ts +22 -0
- package/src/proxy/config.ts +4 -0
- package/src/proxy/store.ts +198 -135
- package/src/routes/api/config.ts +7 -0
- package/src/routes/api/logs.stream.ts +1 -1
- package/src/routes/api/providers.$providerId.test.log.ts +28 -12
- package/.output/public/assets/ProxyViewerContainer-BT8Ilsbs.js +0 -114
- package/.output/public/assets/_sessionId-C9cpyfLX.js +0 -1
- package/.output/public/assets/index-0mTTpvA2.js +0 -1
- package/.output/public/assets/index-DynnYt7S.css +0 -1
package/.output/server/_ssr/{ProxyViewerContainer-DaFW1IVu.mjs → ProxyViewerContainer-BKInvawk.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
|
|
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, d as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, j as createPendingProviderTestResults, k as ProviderTestResultsSchema, l as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, n as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, h as providerHasContextMetadata, i as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, o as resolveProviderContextWindow, K as KnowledgeCandidateSchema, f as stripClaudeCodeBillingHeader, q as isPlainRecord } from "./router-R9gm7_sh.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";
|
|
@@ -9,7 +9,7 @@ import { R as Root, T as Trigger$2, C as Content, a as Close, b as Title, P as P
|
|
|
9
9
|
import { d as diffJson, a as diffLines } from "../_libs/diff.mjs";
|
|
10
10
|
import { u as useWindowVirtualizer, a as useVirtualizer } from "../_libs/tanstack__react-virtual.mjs";
|
|
11
11
|
import { R as Root2, T as Trigger, I as Icon, V as Value, P as Portal, C as Content2, a as Viewport, b as Item, c as ItemIndicator, d as ItemText, S as ScrollUpButton, e as ScrollDownButton } from "../_libs/radix-ui__react-select.mjs";
|
|
12
|
-
import { C as Check, X, P as Plus, D as Download, S as Settings, A as ArrowLeft, a as Copy, b as ChevronDown, U as Upload, c as Scan, d as CircleAlert, T as Terminal, e as ChevronUp, E as EyeOff, f as Eye, g as ExternalLink, R as RotateCw, h as Clock, i as
|
|
12
|
+
import { C as Check, X, P as Plus, D as Download, S as Settings, A as ArrowLeft, a as Copy, b as ChevronDown, U as Upload, c as Scan, d as CircleAlert, T as Terminal, e as ChevronUp, E as EyeOff, f as Eye, g as ExternalLink, R as RotateCw, h as Clock, i as ChevronRight, j as Pencil, k as Trash2, L as LoaderCircle, l as ArrowUpRight, m as ArrowDownRight, n as User, M as MessageSquare, Z as Zap, W as Wrench, o as TriangleAlert, B as Brain, p as Minus, q as CircleCheckBig, r as CircleX, s as ShieldCheck, t as RefreshCw, u as Save, F as FileSearch, v as CircleCheck, w as CloudUpload, O as OctagonAlert, G as Globe, x as FileTerminal, y as Radio, z as ChevronsUp, H as ChevronsDown, I as FileDiff, J as History, K as RotateCcw, N as Search, Q as GitCompareArrows, V as CircleQuestionMark, Y as Server, _ as Gauge, $ as Lock, a0 as Wifi, a1 as WifiOff, a2 as ArrowUp, a3 as ArrowDown, a4 as Ellipsis, a5 as CodeXml, a6 as Blocks, a7 as MousePointerClick, a8 as FileText, a9 as Rows3, aa as Columns2 } from "../_libs/lucide-react.mjs";
|
|
13
13
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
14
14
|
import { u as union, d as object, a as array, l as literal, b as string, n as number, c as boolean, _ as _enum } from "../_libs/zod.mjs";
|
|
15
15
|
import { P as Provider, R as Root3, T as Trigger$1, a as Portal$1, C as Content2$1, A as Arrow2 } from "../_libs/radix-ui__react-tooltip.mjs";
|
|
@@ -75,11 +75,13 @@ function useStripConfig() {
|
|
|
75
75
|
const strip = response.data?.stripClaudeCodeBillingHeader ?? false;
|
|
76
76
|
const captureMode = response.data?.captureMode ?? DEFAULT_CAPTURE_MODE;
|
|
77
77
|
const slowResponseThresholdSeconds = response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS;
|
|
78
|
+
const providerTestTimeoutSeconds = response.data?.providerTestTimeoutSeconds ?? DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS;
|
|
78
79
|
const timeDisplayFormat = response.data?.timeDisplayFormat ?? DEFAULT_TIME_DISPLAY_FORMAT;
|
|
79
80
|
const optimisticConfig = (patch) => ({
|
|
80
81
|
stripClaudeCodeBillingHeader: response.data?.stripClaudeCodeBillingHeader ?? false,
|
|
81
82
|
hasSeenOnboarding: response.data?.hasSeenOnboarding ?? false,
|
|
82
83
|
slowResponseThresholdSeconds: response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
84
|
+
providerTestTimeoutSeconds: response.data?.providerTestTimeoutSeconds ?? DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS,
|
|
83
85
|
timeDisplayFormat: response.data?.timeDisplayFormat ?? DEFAULT_TIME_DISPLAY_FORMAT,
|
|
84
86
|
captureMode,
|
|
85
87
|
...patch
|
|
@@ -113,15 +115,28 @@ function useStripConfig() {
|
|
|
113
115
|
revalidate: false
|
|
114
116
|
});
|
|
115
117
|
};
|
|
118
|
+
const setProviderTestTimeoutSeconds = async (next) => {
|
|
119
|
+
await globalMutate(
|
|
120
|
+
STRIP_CONFIG_SWR_KEY,
|
|
121
|
+
setRuntimeConfig({ providerTestTimeoutSeconds: next }),
|
|
122
|
+
{
|
|
123
|
+
optimisticData: optimisticConfig({ providerTestTimeoutSeconds: next }),
|
|
124
|
+
rollbackOnError: true,
|
|
125
|
+
revalidate: false
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
};
|
|
116
129
|
return {
|
|
117
130
|
strip,
|
|
118
131
|
captureMode,
|
|
119
132
|
slowResponseThresholdSeconds,
|
|
133
|
+
providerTestTimeoutSeconds,
|
|
120
134
|
timeDisplayFormat,
|
|
121
135
|
isLoading: response.isLoading,
|
|
122
136
|
isError: response.error !== void 0,
|
|
123
137
|
setStrip,
|
|
124
138
|
setSlowResponseThresholdSeconds,
|
|
139
|
+
setProviderTestTimeoutSeconds,
|
|
125
140
|
setTimeDisplayFormat
|
|
126
141
|
};
|
|
127
142
|
}
|
|
@@ -164,6 +179,7 @@ function useOnboarding() {
|
|
|
164
179
|
stripClaudeCodeBillingHeader: response.data?.stripClaudeCodeBillingHeader ?? false,
|
|
165
180
|
hasSeenOnboarding: true,
|
|
166
181
|
slowResponseThresholdSeconds: response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
182
|
+
providerTestTimeoutSeconds: response.data?.providerTestTimeoutSeconds ?? DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS,
|
|
167
183
|
timeDisplayFormat: response.data?.timeDisplayFormat ?? DEFAULT_TIME_DISPLAY_FORMAT,
|
|
168
184
|
captureMode
|
|
169
185
|
},
|
|
@@ -234,6 +250,12 @@ function OnboardingBanner() {
|
|
|
234
250
|
" ",
|
|
235
251
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "agent-inspector-onboard" }),
|
|
236
252
|
"."
|
|
253
|
+
] }),
|
|
254
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("li", { children: [
|
|
255
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Container networking" }),
|
|
256
|
+
": if the AI tool runs outside this Inspector container or host, replace ",
|
|
257
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "localhost" }),
|
|
258
|
+
" with a reachable address."
|
|
237
259
|
] })
|
|
238
260
|
] })
|
|
239
261
|
] }),
|
|
@@ -420,7 +442,7 @@ function useProviders() {
|
|
|
420
442
|
mutate: response.mutate
|
|
421
443
|
};
|
|
422
444
|
}
|
|
423
|
-
const version = "2.0.
|
|
445
|
+
const version = "2.0.23";
|
|
424
446
|
const packageJson = {
|
|
425
447
|
version
|
|
426
448
|
};
|
|
@@ -1481,19 +1503,19 @@ function useCopyFeedback(text) {
|
|
|
1481
1503
|
return { copied, copy };
|
|
1482
1504
|
}
|
|
1483
1505
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1484
|
-
() => import("./CompareDrawer-
|
|
1506
|
+
() => import("./CompareDrawer-C4LQW4S1.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1485
1507
|
);
|
|
1486
1508
|
const LazyReplayDialog = reactExports.lazy(
|
|
1487
|
-
() => import("./ReplayDialog-
|
|
1509
|
+
() => import("./ReplayDialog-C3ZiRihL.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1488
1510
|
);
|
|
1489
1511
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1490
|
-
() => import("./RequestAnatomy-
|
|
1512
|
+
() => import("./RequestAnatomy-DlVAPIQZ.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1491
1513
|
);
|
|
1492
1514
|
const LazyResponseView = reactExports.lazy(
|
|
1493
|
-
() => import("./ResponseView-
|
|
1515
|
+
() => import("./ResponseView-nMS0rkxu.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1494
1516
|
);
|
|
1495
1517
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1496
|
-
() => import("./StreamingChunkSequence-
|
|
1518
|
+
() => import("./StreamingChunkSequence-PDWqrNiO.mjs").then((m) => ({
|
|
1497
1519
|
default: m.StreamingChunkSequence
|
|
1498
1520
|
}))
|
|
1499
1521
|
);
|
|
@@ -5599,6 +5621,75 @@ function hasSuccessField(result) {
|
|
|
5599
5621
|
function isNotConfiguredState(result) {
|
|
5600
5622
|
return Object.prototype.hasOwnProperty.call(result, "notConfigured");
|
|
5601
5623
|
}
|
|
5624
|
+
function hasText(value) {
|
|
5625
|
+
return value !== void 0 && value.trim() !== "";
|
|
5626
|
+
}
|
|
5627
|
+
function formatHeaders(headers) {
|
|
5628
|
+
if (headers === void 0) {
|
|
5629
|
+
return void 0;
|
|
5630
|
+
}
|
|
5631
|
+
const lines = Object.entries(headers).map(([name, value]) => `${name}: ${value}`);
|
|
5632
|
+
if (lines.length === 0) {
|
|
5633
|
+
return void 0;
|
|
5634
|
+
}
|
|
5635
|
+
return lines.join("\n");
|
|
5636
|
+
}
|
|
5637
|
+
function hasHeaderDetails(headers) {
|
|
5638
|
+
return formatHeaders(headers) !== void 0;
|
|
5639
|
+
}
|
|
5640
|
+
function hasDiagnosticDetails(result) {
|
|
5641
|
+
const debug = result.debug;
|
|
5642
|
+
return hasText(result.error?.hint) || hasText(result.error?.details) || hasText(result.rawResponse) || hasText(debug?.requestUrl) || hasText(debug?.requestBody) || hasText(debug?.responseBody) || hasHeaderDetails(debug?.requestHeaders) || hasHeaderDetails(debug?.responseHeaders) || debug?.responseStatus !== void 0;
|
|
5643
|
+
}
|
|
5644
|
+
function DiagnosticSection({
|
|
5645
|
+
title,
|
|
5646
|
+
children
|
|
5647
|
+
}) {
|
|
5648
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
|
|
5649
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-medium text-foreground/80", children: title }),
|
|
5650
|
+
children
|
|
5651
|
+
] });
|
|
5652
|
+
}
|
|
5653
|
+
function DiagnosticPre({ value }) {
|
|
5654
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "max-h-40 overflow-auto whitespace-pre-wrap break-all rounded-md bg-background/80 p-2 font-mono text-[11px] leading-relaxed text-foreground/80", children: value });
|
|
5655
|
+
}
|
|
5656
|
+
function ProviderTestDetails({ result }) {
|
|
5657
|
+
const debug = result.debug;
|
|
5658
|
+
const requestUrl = debug?.requestUrl;
|
|
5659
|
+
const requestMethod = debug?.requestMethod ?? "POST";
|
|
5660
|
+
const requestHeaders = formatHeaders(debug?.requestHeaders);
|
|
5661
|
+
const responseHeaders = formatHeaders(debug?.responseHeaders);
|
|
5662
|
+
const responseStatus = debug?.responseStatus !== void 0 ? `${debug.responseStatus}${hasText(debug.responseStatusText) ? ` ${debug.responseStatusText}` : ""}` : void 0;
|
|
5663
|
+
const responseBody = debug?.responseBody ?? result.rawResponse;
|
|
5664
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-h-80 max-w-full space-y-2 overflow-auto rounded-md border bg-muted/50 p-2 text-xs text-muted-foreground shadow-sm sm:w-[520px]", children: [
|
|
5665
|
+
hasText(result.error?.hint) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Hint", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: result.error.hint }) }),
|
|
5666
|
+
hasText(result.error?.details) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Error", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticPre, { value: result.error.details }) }),
|
|
5667
|
+
hasText(requestUrl) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Request", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-md bg-background/80 p-2 font-mono text-[11px] break-all text-foreground/80", children: [
|
|
5668
|
+
requestMethod,
|
|
5669
|
+
" ",
|
|
5670
|
+
requestUrl
|
|
5671
|
+
] }) }),
|
|
5672
|
+
requestHeaders !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Request Headers", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticPre, { value: requestHeaders }) }),
|
|
5673
|
+
hasText(debug?.requestBody) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Request Body", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticPre, { value: debug.requestBody }) }),
|
|
5674
|
+
hasText(responseStatus) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Response Status", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "rounded-md bg-background/80 p-2 font-mono text-[11px] text-foreground/80", children: responseStatus }) }),
|
|
5675
|
+
responseHeaders !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Response Headers", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticPre, { value: responseHeaders }) }),
|
|
5676
|
+
hasText(responseBody) && /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticSection, { title: "Response Body", children: /* @__PURE__ */ jsxRuntimeExports.jsx(DiagnosticPre, { value: responseBody }) })
|
|
5677
|
+
] });
|
|
5678
|
+
}
|
|
5679
|
+
function ProviderFormatTestStatus({
|
|
5680
|
+
results
|
|
5681
|
+
}) {
|
|
5682
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [
|
|
5683
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
|
|
5684
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground", children: "Non-stream" }),
|
|
5685
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TestStatus, { result: results.nonStreaming })
|
|
5686
|
+
] }),
|
|
5687
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
|
|
5688
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-muted-foreground", children: "Stream" }),
|
|
5689
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TestStatus, { result: results.streaming })
|
|
5690
|
+
] })
|
|
5691
|
+
] });
|
|
5692
|
+
}
|
|
5602
5693
|
function getErrorIcon(type) {
|
|
5603
5694
|
const iconProps = { className: "size-3", strokeWidth: 2 };
|
|
5604
5695
|
switch (type) {
|
|
@@ -5686,9 +5777,8 @@ function TestStatus({ result }) {
|
|
|
5686
5777
|
}
|
|
5687
5778
|
const error = result.error;
|
|
5688
5779
|
const errorMessage = error?.message ?? "Connection failed";
|
|
5689
|
-
const errorHint = error?.hint;
|
|
5690
|
-
const errorDetails = error?.details;
|
|
5691
5780
|
const errorType = error?.type ?? "unknown";
|
|
5781
|
+
const hasDetails = hasDiagnosticDetails(result);
|
|
5692
5782
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-1 shrink-0", children: [
|
|
5693
5783
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-xs text-red-600 max-w-[200px]", children: [
|
|
5694
5784
|
getErrorIcon(errorType),
|
|
@@ -5696,23 +5786,22 @@ function TestStatus({ result }) {
|
|
|
5696
5786
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: errorMessage }) }),
|
|
5697
5787
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: "Connection test failed" })
|
|
5698
5788
|
] }) }),
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5789
|
+
hasDetails && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
5790
|
+
"button",
|
|
5791
|
+
{
|
|
5792
|
+
type: "button",
|
|
5793
|
+
onClick: () => setShowDetails((value) => !value),
|
|
5794
|
+
"aria-expanded": showDetails,
|
|
5795
|
+
"aria-label": showDetails ? "Hide provider test diagnostics" : "Show provider test diagnostics",
|
|
5796
|
+
className: "inline-flex h-5 shrink-0 items-center gap-1 rounded border border-border/70 bg-background/70 px-1.5 text-[10px] text-muted-foreground transition-colors hover:text-foreground",
|
|
5797
|
+
children: [
|
|
5798
|
+
showDetails ? /* @__PURE__ */ jsxRuntimeExports.jsx(EyeOff, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Eye, { className: "size-3" }),
|
|
5799
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: showDetails ? "Hide" : "Details" })
|
|
5800
|
+
]
|
|
5801
|
+
}
|
|
5802
|
+
)
|
|
5711
5803
|
] }),
|
|
5712
|
-
showDetails &&
|
|
5713
|
-
errorHint !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mb-1", children: errorHint }),
|
|
5714
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-mono whitespace-pre-wrap break-all text-red-400/80", children: errorDetails })
|
|
5715
|
-
] })
|
|
5804
|
+
showDetails && hasDetails && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderTestDetails, { result })
|
|
5716
5805
|
] });
|
|
5717
5806
|
}
|
|
5718
5807
|
function formatTimeAgo(isoString) {
|
|
@@ -5886,21 +5975,21 @@ function ProviderCard({
|
|
|
5886
5975
|
}
|
|
5887
5976
|
)
|
|
5888
5977
|
] }),
|
|
5889
|
-
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex
|
|
5890
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-muted-foreground
|
|
5978
|
+
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [
|
|
5979
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 text-xs text-muted-foreground", children: [
|
|
5891
5980
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium", children: "Anthropic:" }),
|
|
5892
5981
|
" ",
|
|
5893
5982
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: provider.anthropicBaseUrl })
|
|
5894
5983
|
] }),
|
|
5895
|
-
testResults && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5984
|
+
testResults !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: testResults.anthropic })
|
|
5896
5985
|
] }),
|
|
5897
|
-
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex
|
|
5898
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-muted-foreground
|
|
5986
|
+
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [
|
|
5987
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 text-xs text-muted-foreground", children: [
|
|
5899
5988
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium", children: "OpenAI:" }),
|
|
5900
5989
|
" ",
|
|
5901
5990
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: provider.openaiBaseUrl })
|
|
5902
5991
|
] }),
|
|
5903
|
-
testResults && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5992
|
+
testResults !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: testResults.openai })
|
|
5904
5993
|
] }),
|
|
5905
5994
|
testResults?.testedAt !== void 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-muted-foreground flex items-center gap-1", children: [
|
|
5906
5995
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
@@ -5917,7 +6006,7 @@ function ProviderCard({
|
|
|
5917
6006
|
onClick: () => setShowModelResults((value) => !value),
|
|
5918
6007
|
className: "text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1",
|
|
5919
6008
|
children: [
|
|
5920
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
6009
|
+
showModelResults ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-3" }),
|
|
5921
6010
|
"Model Test Results (",
|
|
5922
6011
|
Object.keys(testResults.models).length,
|
|
5923
6012
|
")"
|
|
@@ -5932,8 +6021,8 @@ function ProviderCard({
|
|
|
5932
6021
|
] }) }),
|
|
5933
6022
|
/* @__PURE__ */ jsxRuntimeExports.jsx("tbody", { children: Object.entries(testResults.models).map(([modelName, modelResult]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "border-b border-border/50 last:border-0", children: [
|
|
5934
6023
|
/* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 font-medium", children: modelName }),
|
|
5935
|
-
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5936
|
-
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
6024
|
+
provider.anthropicBaseUrl !== void 0 && provider.anthropicBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.anthropic }) }),
|
|
6025
|
+
provider.openaiBaseUrl !== void 0 && provider.openaiBaseUrl !== "" && /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "py-1 px-2 align-top", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderFormatTestStatus, { results: modelResult.openai }) })
|
|
5937
6026
|
] }, modelName)) })
|
|
5938
6027
|
] }) })
|
|
5939
6028
|
] }),
|
|
@@ -6657,7 +6746,6 @@ const ModelMetadataRefreshResponseSchema = object({
|
|
|
6657
6746
|
missingModels: array(string()),
|
|
6658
6747
|
sourceUrl: string()
|
|
6659
6748
|
});
|
|
6660
|
-
const TEST_TIMEOUT_SECONDS = 30;
|
|
6661
6749
|
const NETWORK_ERROR_MESSAGE = "Network error: could not reach the server. Is the proxy running?";
|
|
6662
6750
|
function createProviderPayload(data) {
|
|
6663
6751
|
return {
|
|
@@ -6672,6 +6760,10 @@ function createProviderPayload(data) {
|
|
|
6672
6760
|
source: data.source
|
|
6673
6761
|
};
|
|
6674
6762
|
}
|
|
6763
|
+
function getProviderTestTimeoutSeconds(provider, timeoutSecondsPerModel) {
|
|
6764
|
+
const modelCount = provider?.models?.map((model) => model.trim()).filter((model) => model !== "").length ?? 0;
|
|
6765
|
+
return Math.max(1, modelCount) * timeoutSecondsPerModel;
|
|
6766
|
+
}
|
|
6675
6767
|
async function persistProviderTestLog(providerId, results) {
|
|
6676
6768
|
if (results.models === void 0) {
|
|
6677
6769
|
return;
|
|
@@ -6714,6 +6806,7 @@ function ProvidersPanel({
|
|
|
6714
6806
|
const [refreshingMetadataProviders, setRefreshingMetadataProviders] = reactExports.useState(
|
|
6715
6807
|
/* @__PURE__ */ new Set()
|
|
6716
6808
|
);
|
|
6809
|
+
const { providerTestTimeoutSeconds } = useStripConfig();
|
|
6717
6810
|
const listScrollRef = reactExports.useRef(null);
|
|
6718
6811
|
const highlightTimeoutRef = reactExports.useRef(null);
|
|
6719
6812
|
const providers = externalProviders ?? [];
|
|
@@ -6809,7 +6902,9 @@ function ProvidersPanel({
|
|
|
6809
6902
|
updateTestResults(providerId, createPendingProviderTestResults());
|
|
6810
6903
|
updateTestingState(providerId, true);
|
|
6811
6904
|
const controller = new AbortController();
|
|
6812
|
-
|
|
6905
|
+
const provider = providers.find((candidate) => candidate.id === providerId);
|
|
6906
|
+
const timeoutSeconds = getProviderTestTimeoutSeconds(provider, providerTestTimeoutSeconds);
|
|
6907
|
+
let remaining = timeoutSeconds;
|
|
6813
6908
|
setTestingTimeLeft(providerId, remaining);
|
|
6814
6909
|
const intervalId = setInterval(() => {
|
|
6815
6910
|
remaining--;
|
|
@@ -6851,7 +6946,13 @@ function ProvidersPanel({
|
|
|
6851
6946
|
updateTestingState(providerId, false);
|
|
6852
6947
|
}
|
|
6853
6948
|
},
|
|
6854
|
-
[
|
|
6949
|
+
[
|
|
6950
|
+
providerTestTimeoutSeconds,
|
|
6951
|
+
providers,
|
|
6952
|
+
setTestingTimeLeft,
|
|
6953
|
+
updateTestResults,
|
|
6954
|
+
updateTestingState
|
|
6955
|
+
]
|
|
6855
6956
|
);
|
|
6856
6957
|
const refreshProviderMetadata = reactExports.useCallback(
|
|
6857
6958
|
async (providerId, url, showError = true) => {
|
|
@@ -7301,6 +7402,7 @@ function StorageSettingsTab() {
|
|
|
7301
7402
|
const [stats, setStats] = reactExports.useState(null);
|
|
7302
7403
|
const [error, setError] = reactExports.useState(null);
|
|
7303
7404
|
const [loading, setLoading] = reactExports.useState(false);
|
|
7405
|
+
const [copiedId, setCopiedId] = reactExports.useState(null);
|
|
7304
7406
|
const refresh = reactExports.useCallback(async () => {
|
|
7305
7407
|
setLoading(true);
|
|
7306
7408
|
setError(null);
|
|
@@ -7326,6 +7428,12 @@ function StorageSettingsTab() {
|
|
|
7326
7428
|
reactExports.useEffect(() => {
|
|
7327
7429
|
void refresh();
|
|
7328
7430
|
}, [refresh]);
|
|
7431
|
+
const handleCopy = reactExports.useCallback((id, value) => {
|
|
7432
|
+
void window.navigator.clipboard.writeText(value).then(() => {
|
|
7433
|
+
setCopiedId(id);
|
|
7434
|
+
setTimeout(() => setCopiedId(null), 1600);
|
|
7435
|
+
});
|
|
7436
|
+
}, []);
|
|
7329
7437
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
|
|
7330
7438
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
7331
7439
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
@@ -7335,6 +7443,26 @@ function StorageSettingsTab() {
|
|
|
7335
7443
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: () => void refresh(), children: loading ? "Refreshing..." : "Refresh" })
|
|
7336
7444
|
] }),
|
|
7337
7445
|
stats !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-2 text-xs", children: [
|
|
7446
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7447
|
+
CopyableSetupValue,
|
|
7448
|
+
{
|
|
7449
|
+
id: "log-dir",
|
|
7450
|
+
label: "Log storage path",
|
|
7451
|
+
value: stats.logDir,
|
|
7452
|
+
copiedId,
|
|
7453
|
+
onCopy: handleCopy
|
|
7454
|
+
}
|
|
7455
|
+
),
|
|
7456
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7457
|
+
CopyableSetupValue,
|
|
7458
|
+
{
|
|
7459
|
+
id: "chunk-dir",
|
|
7460
|
+
label: "Streaming chunks storage path",
|
|
7461
|
+
value: stats.chunkDir,
|
|
7462
|
+
copiedId,
|
|
7463
|
+
onCopy: handleCopy
|
|
7464
|
+
}
|
|
7465
|
+
),
|
|
7338
7466
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2", children: [
|
|
7339
7467
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-medium", children: "In-memory logs" }),
|
|
7340
7468
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 font-mono text-muted-foreground", children: [
|
|
@@ -7344,7 +7472,6 @@ function StorageSettingsTab() {
|
|
|
7344
7472
|
] }),
|
|
7345
7473
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2", children: [
|
|
7346
7474
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Log files" }),
|
|
7347
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 break-all font-mono text-muted-foreground", children: stats.logDir }),
|
|
7348
7475
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 font-mono text-muted-foreground", children: [
|
|
7349
7476
|
stats.logFileCount.toLocaleString(),
|
|
7350
7477
|
" files / ",
|
|
@@ -7353,7 +7480,6 @@ function StorageSettingsTab() {
|
|
|
7353
7480
|
] }),
|
|
7354
7481
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-md border border-border bg-muted/20 px-3 py-2", children: [
|
|
7355
7482
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Streaming chunks" }),
|
|
7356
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-1 break-all font-mono text-muted-foreground", children: stats.chunkDir }),
|
|
7357
7483
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1 font-mono text-muted-foreground", children: [
|
|
7358
7484
|
stats.chunkFileCount.toLocaleString(),
|
|
7359
7485
|
" files / ",
|
|
@@ -7454,6 +7580,10 @@ function OnboardingSettingsTab() {
|
|
|
7454
7580
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
7455
7581
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-emerald-500" }),
|
|
7456
7582
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Captured sessions can produce reviewable memory candidates." })
|
|
7583
|
+
] }),
|
|
7584
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
|
|
7585
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
|
|
7586
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "If your AI tool runs in another container or host, replace localhost with an address reachable from that tool and verify the network/firewall path." })
|
|
7457
7587
|
] })
|
|
7458
7588
|
] })
|
|
7459
7589
|
] });
|
|
@@ -7463,10 +7593,12 @@ function ProxySettingsTab() {
|
|
|
7463
7593
|
strip,
|
|
7464
7594
|
captureMode,
|
|
7465
7595
|
slowResponseThresholdSeconds,
|
|
7596
|
+
providerTestTimeoutSeconds,
|
|
7466
7597
|
timeDisplayFormat,
|
|
7467
7598
|
isLoading,
|
|
7468
7599
|
setStrip,
|
|
7469
7600
|
setSlowResponseThresholdSeconds,
|
|
7601
|
+
setProviderTestTimeoutSeconds,
|
|
7470
7602
|
setTimeDisplayFormat
|
|
7471
7603
|
} = useStripConfig();
|
|
7472
7604
|
const [error, setError] = reactExports.useState(null);
|
|
@@ -7500,6 +7632,20 @@ function ProxySettingsTab() {
|
|
|
7500
7632
|
},
|
|
7501
7633
|
[setSlowResponseThresholdSeconds]
|
|
7502
7634
|
);
|
|
7635
|
+
const handleProviderTestTimeoutChange = reactExports.useCallback(
|
|
7636
|
+
async (next) => {
|
|
7637
|
+
setError(null);
|
|
7638
|
+
setPending(true);
|
|
7639
|
+
try {
|
|
7640
|
+
await setProviderTestTimeoutSeconds(next);
|
|
7641
|
+
} catch (err) {
|
|
7642
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
7643
|
+
} finally {
|
|
7644
|
+
setPending(false);
|
|
7645
|
+
}
|
|
7646
|
+
},
|
|
7647
|
+
[setProviderTestTimeoutSeconds]
|
|
7648
|
+
);
|
|
7503
7649
|
const handleTimeDisplayFormatChange = reactExports.useCallback(
|
|
7504
7650
|
async (next) => {
|
|
7505
7651
|
setError(null);
|
|
@@ -7589,6 +7735,32 @@ function ProxySettingsTab() {
|
|
|
7589
7735
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: "seconds" })
|
|
7590
7736
|
] })
|
|
7591
7737
|
] }),
|
|
7738
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
|
|
7739
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: "provider-test-timeout", className: "text-sm font-semibold", children: "Provider test timeout" }),
|
|
7740
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Provider Test waits this many seconds per configured model before aborting slow probes. The full test window scales with model count." }),
|
|
7741
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
7742
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7743
|
+
"input",
|
|
7744
|
+
{
|
|
7745
|
+
id: "provider-test-timeout",
|
|
7746
|
+
type: "number",
|
|
7747
|
+
min: 1,
|
|
7748
|
+
max: MAX_PROVIDER_TEST_TIMEOUT_SECONDS,
|
|
7749
|
+
step: 1,
|
|
7750
|
+
value: providerTestTimeoutSeconds,
|
|
7751
|
+
disabled: isLoading || pending,
|
|
7752
|
+
onChange: (e) => {
|
|
7753
|
+
const next = Number(e.currentTarget.value);
|
|
7754
|
+
if (!Number.isInteger(next)) return;
|
|
7755
|
+
if (next < 1 || next > MAX_PROVIDER_TEST_TIMEOUT_SECONDS) return;
|
|
7756
|
+
void handleProviderTestTimeoutChange(next);
|
|
7757
|
+
},
|
|
7758
|
+
className: "h-8 w-24 rounded-md border border-input bg-transparent px-2 text-sm font-mono disabled:cursor-not-allowed disabled:opacity-50"
|
|
7759
|
+
}
|
|
7760
|
+
),
|
|
7761
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: "seconds / model" })
|
|
7762
|
+
] })
|
|
7763
|
+
] }),
|
|
7592
7764
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
|
|
7593
7765
|
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: "time-display-format", className: "text-sm font-semibold", children: "Time display" }),
|
|
7594
7766
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-muted-foreground", children: "Controls timestamps in session summaries, conversation headers, and log rows." }),
|
|
@@ -9510,7 +9682,8 @@ function ProxyViewer({
|
|
|
9510
9682
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-2", children: [
|
|
9511
9683
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CopyableCommand, { command: "ANTHROPIC_BASE_URL=http://localhost:25947/proxy <your-tool>" }),
|
|
9512
9684
|
/* @__PURE__ */ jsxRuntimeExports.jsx(CopyableCommand, { command: "OPENAI_BASE_URL=http://localhost:25947/proxy <your-tool>" })
|
|
9513
|
-
] })
|
|
9685
|
+
] }),
|
|
9686
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mx-auto max-w-xl text-xs leading-relaxed text-muted-foreground", children: "Container note: if your AI tool runs in a different container or host than Agent Inspector, replace localhost with an address reachable from that tool and verify the network/firewall path." })
|
|
9514
9687
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
9515
9688
|
"div",
|
|
9516
9689
|
{
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import { C as CapturedLogSchema } from "./router-
|
|
2
|
+
import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-BKInvawk.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-nMS0rkxu.mjs";
|
|
4
|
+
import { C as CapturedLogSchema } from "./router-R9gm7_sh.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { K as RotateCcw, ac as Braces, ad as Minimize2 } from "../_libs/lucide-react.mjs";
|
|
8
8
|
import { d as object, n as number, a as array, c as boolean, b as string } from "../_libs/zod.mjs";
|
|
9
9
|
import "../_libs/swr.mjs";
|
|
10
10
|
import "../_libs/use-sync-external-store.mjs";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-BKInvawk.mjs";
|
|
3
|
+
import "./router-R9gm7_sh.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
|
-
import { ae as Info, b as ChevronDown,
|
|
6
|
+
import { ae as Info, b as ChevronDown, i as ChevronRight } from "../_libs/lucide-react.mjs";
|
|
7
7
|
import "../_libs/swr.mjs";
|
|
8
8
|
import "../_libs/use-sync-external-store.mjs";
|
|
9
9
|
import "../_libs/dequal.mjs";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-BKInvawk.mjs";
|
|
3
|
+
import "./router-R9gm7_sh.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
|
-
import { Z as Zap, o as TriangleAlert, af as CircleStop, B as Brain, b as ChevronDown,
|
|
6
|
+
import { Z as Zap, o as TriangleAlert, af as CircleStop, B as Brain, b as ChevronDown, i as ChevronRight, T as Terminal } from "../_libs/lucide-react.mjs";
|
|
7
7
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
8
8
|
import { R as Root } from "../_libs/radix-ui__react-separator.mjs";
|
|
9
9
|
import "../_libs/swr.mjs";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-BKInvawk.mjs";
|
|
3
|
+
import "./router-R9gm7_sh.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
|
-
import { b as ChevronDown,
|
|
6
|
+
import { b as ChevronDown, i as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
|
|
7
7
|
import "../_libs/swr.mjs";
|
|
8
8
|
import "../_libs/use-sync-external-store.mjs";
|
|
9
9
|
import "../_libs/dequal.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-
|
|
1
|
+
import { P as ProxyViewerContainer } from "./ProxyViewerContainer-BKInvawk.mjs";
|
|
2
2
|
import "../_libs/react.mjs";
|
|
3
|
-
import "./router-
|
|
3
|
+
import "./router-R9gm7_sh.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-BnLVH_EX.mjs");
|
|
202
202
|
const startManifest = tsrStartManifest();
|
|
203
203
|
const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
|
|
204
204
|
rootRoute.assets = rootRoute.assets || [];
|
|
@@ -767,7 +767,7 @@ let entriesPromise;
|
|
|
767
767
|
let baseManifestPromise;
|
|
768
768
|
let cachedFinalManifestPromise;
|
|
769
769
|
async function loadEntries() {
|
|
770
|
-
const routerEntry = await import("./router-
|
|
770
|
+
const routerEntry = await import("./router-R9gm7_sh.mjs").then((n) => n.t);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|