@tonyclaw/llm-inspector 1.16.5 → 1.17.1
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-C1w4KUGZ.js → CompareDrawer-BhXCLr7m.js} +1 -1
- package/.output/public/assets/{ReplayDialog-DR2Sgq_g.js → ReplayDialog-CzRPSXwa.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-DAre35kj.js → RequestAnatomy-lMQonao2.js} +1 -1
- package/.output/public/assets/{ResponseView-ackes7_g.js → ResponseView-Bt0vngo0.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-GrXwIGKA.js → StreamingChunkSequence-Dq9XY2E9.js} +1 -1
- package/.output/public/assets/index-B4nxi_tZ.js +101 -0
- package/.output/public/assets/index-DoGvsnbA.css +1 -0
- package/.output/public/assets/{json-viewer-C_QUhGeu.js → json-viewer-C8ttTXtv.js} +1 -1
- package/.output/public/assets/{main-CDMdNDY_.js → main-Dgme52Fp.js} +1 -1
- package/.output/server/_libs/lucide-react.mjs +6 -6
- package/.output/server/_ssr/{CompareDrawer-ftkJxyk6.mjs → CompareDrawer-D-Nj8wmx.mjs} +4 -4
- package/.output/server/_ssr/{ReplayDialog-DcmE3lj5.mjs → ReplayDialog-DcucC22E.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-rK_LNMdG.mjs → RequestAnatomy-aL8GAcW2.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-CbQ4n-aJ.mjs → ResponseView-BHgpoGaF.mjs} +4 -4
- package/.output/server/_ssr/{StreamingChunkSequence-84FZkIzv.mjs → StreamingChunkSequence-DrT7StyS.mjs} +3 -3
- package/.output/server/_ssr/{index-CDjLoMsk.mjs → index-nUG0H1oS.mjs} +146 -29
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-B-qpM5xC.mjs → json-viewer-DLsDT0RE.mjs} +2 -2
- package/.output/server/_ssr/{router-BrdjOUEW.mjs → router-DG_jmXCF.mjs} +20 -6
- package/.output/server/{_tanstack-start-manifest_v-DmOZEcJ3.mjs → _tanstack-start-manifest_v-D0JtrQPv.mjs} +1 -1
- package/.output/server/index.mjs +54 -54
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +6 -1
- package/src/components/ProxyViewerContainer.tsx +2 -1
- package/src/components/providers/SettingsDialog.tsx +52 -1
- package/src/components/proxy-viewer/ConversationGroup.tsx +4 -0
- package/src/components/proxy-viewer/LogEntry.tsx +4 -0
- package/src/components/proxy-viewer/LogEntryHeader.tsx +34 -4
- package/src/components/proxy-viewer/TurnGroup.tsx +36 -7
- package/src/lib/runtimeConfig.ts +9 -0
- package/src/lib/useOnboarding.ts +7 -1
- package/src/lib/useStripConfig.ts +33 -2
- package/src/proxy/config.ts +17 -7
- package/src/routes/api/config.ts +7 -0
- package/.output/public/assets/index-BGzHFOEX.css +0 -1
- package/.output/public/assets/index-DX88k9br.js +0 -101
|
@@ -444,12 +444,12 @@ export {
|
|
|
444
444
|
ChevronRight as f,
|
|
445
445
|
User as g,
|
|
446
446
|
Clock as h,
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
447
|
+
TriangleAlert as i,
|
|
448
|
+
Eye as j,
|
|
449
|
+
ExternalLink as k,
|
|
450
|
+
Pencil as l,
|
|
451
|
+
Minus as m,
|
|
452
|
+
CircleCheckBig as n,
|
|
453
453
|
Globe as o,
|
|
454
454
|
Radio as p,
|
|
455
455
|
ChevronsUp as q,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens } from "./index-
|
|
3
|
-
import { JsonViewerFromString } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import { JsonViewerFromString } from "./json-viewer-DLsDT0RE.mjs";
|
|
4
|
+
import "./router-DG_jmXCF.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import { X, B as Rows3, H as Columns2,
|
|
7
|
+
import { X, B as Rows3, H as Columns2, m as Minus, P as Plus, l as Pencil, f as ChevronRight, I as Equal, C as Check, c as Copy } from "../_libs/lucide-react.mjs";
|
|
8
8
|
import "../_libs/swr.mjs";
|
|
9
9
|
import "../_libs/use-sync-external-store.mjs";
|
|
10
10
|
import "../_libs/dequal.mjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { 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 TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./index-
|
|
3
|
-
import { ResponseView } from "./ResponseView-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { 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 TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent, o as Button } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import { ResponseView } from "./ResponseView-BHgpoGaF.mjs";
|
|
4
|
+
import "./router-DG_jmXCF.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import "./json-viewer-
|
|
7
|
+
import "./json-viewer-DLsDT0RE.mjs";
|
|
8
8
|
import { s as RotateCcw } from "../_libs/lucide-react.mjs";
|
|
9
9
|
import { d as object, c as boolean, n as number, b as string } from "../_libs/zod.mjs";
|
|
10
10
|
import "../_libs/swr.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./index-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import "./router-DG_jmXCF.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { J as Info } from "../_libs/lucide-react.mjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./index-
|
|
3
|
-
import { JsonViewer } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import { JsonViewer } from "./json-viewer-DLsDT0RE.mjs";
|
|
4
|
+
import "./router-DG_jmXCF.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
|
-
import { Z as Zap,
|
|
7
|
+
import { Z as Zap, i as TriangleAlert, K as CircleStop, N as Brain, a as ChevronDown, f as ChevronRight, Q as Terminal } from "../_libs/lucide-react.mjs";
|
|
8
8
|
import { M as Markdown } from "../_libs/react-markdown.mjs";
|
|
9
9
|
import { R as Root } from "../_libs/radix-ui__react-separator.mjs";
|
|
10
10
|
import { R as Root$1, C as CollapsibleTrigger$1, a as CollapsibleContent$1 } from "../_libs/radix-ui__react-collapsible.mjs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./index-
|
|
3
|
-
import { JsonViewer } from "./json-viewer-
|
|
4
|
-
import "./router-
|
|
2
|
+
import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import { JsonViewer } from "./json-viewer-DLsDT0RE.mjs";
|
|
4
|
+
import "./router-DG_jmXCF.mjs";
|
|
5
5
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
6
6
|
import "../_libs/jszip.mjs";
|
|
7
7
|
import { a as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
|
|
@@ -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, R as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, b as createFailedProviderTestResults, d as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, a as AnthropicRequestSchema } from "./router-
|
|
2
|
+
import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, R as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, b as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, d as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, a as AnthropicRequestSchema } from "./router-DG_jmXCF.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$1, 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 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, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap, T as Trash2, E as EyeOff,
|
|
12
|
+
import { C as Check, X, D as Download, S as Settings, a as ChevronDown, U as Upload, b as Scan, P as Plus, c as Copy, d as CircleAlert, e as ChevronUp, L as LoaderCircle, f as ChevronRight, g as User, h as Clock, M as MessageSquare, Z as Zap, T as Trash2, i as TriangleAlert, E as EyeOff, j as Eye, k as ExternalLink, R as RotateCw, l as Pencil, G as GitCompareArrows, m as Minus, n as CircleCheckBig, O as OctagonAlert, W as Wrench, o as Globe, F as FileTerminal, p as Radio, q as ChevronsUp, r as ChevronsDown, s as RotateCcw, t as CircleQuestionMark, u as Server, v as Gauge, w as Lock, x as Wifi, y as WifiOff, A as ArrowUp, z as ArrowDown, B as Rows3, H as Columns2 } from "../_libs/lucide-react.mjs";
|
|
13
13
|
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";
|
|
14
14
|
import { R as Root2$1, L as List, T as Trigger$2, C as Content$1 } from "../_libs/radix-ui__react-tabs.mjs";
|
|
15
15
|
import { P as Provider, R as Root3, T as Trigger$3, a as Portal$2, C as Content2$1, A as Arrow2 } from "../_libs/radix-ui__react-tooltip.mjs";
|
|
@@ -165,12 +165,30 @@ function useStripConfig() {
|
|
|
165
165
|
);
|
|
166
166
|
const { mutate: globalMutate } = useSWRConfig();
|
|
167
167
|
const strip = response.data?.stripClaudeCodeBillingHeader ?? false;
|
|
168
|
+
const slowResponseThresholdSeconds = response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS;
|
|
169
|
+
const optimisticConfig = (patch) => ({
|
|
170
|
+
stripClaudeCodeBillingHeader: response.data?.stripClaudeCodeBillingHeader ?? false,
|
|
171
|
+
hasSeenOnboarding: response.data?.hasSeenOnboarding ?? false,
|
|
172
|
+
slowResponseThresholdSeconds: response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
173
|
+
...patch
|
|
174
|
+
});
|
|
168
175
|
const setStrip = async (next) => {
|
|
169
176
|
await globalMutate(
|
|
170
177
|
STRIP_CONFIG_SWR_KEY,
|
|
171
178
|
setRuntimeConfig({ stripClaudeCodeBillingHeader: next }),
|
|
172
179
|
{
|
|
173
|
-
optimisticData: { stripClaudeCodeBillingHeader: next },
|
|
180
|
+
optimisticData: optimisticConfig({ stripClaudeCodeBillingHeader: next }),
|
|
181
|
+
rollbackOnError: true,
|
|
182
|
+
revalidate: false
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
};
|
|
186
|
+
const setSlowResponseThresholdSeconds = async (next) => {
|
|
187
|
+
await globalMutate(
|
|
188
|
+
STRIP_CONFIG_SWR_KEY,
|
|
189
|
+
setRuntimeConfig({ slowResponseThresholdSeconds: next }),
|
|
190
|
+
{
|
|
191
|
+
optimisticData: optimisticConfig({ slowResponseThresholdSeconds: next }),
|
|
174
192
|
rollbackOnError: true,
|
|
175
193
|
revalidate: false
|
|
176
194
|
}
|
|
@@ -178,9 +196,11 @@ function useStripConfig() {
|
|
|
178
196
|
};
|
|
179
197
|
return {
|
|
180
198
|
strip,
|
|
199
|
+
slowResponseThresholdSeconds,
|
|
181
200
|
isLoading: response.isLoading,
|
|
182
201
|
isError: response.error !== void 0,
|
|
183
|
-
setStrip
|
|
202
|
+
setStrip,
|
|
203
|
+
setSlowResponseThresholdSeconds
|
|
184
204
|
};
|
|
185
205
|
}
|
|
186
206
|
const ONBOARDING_SWR_KEY = "/api/config";
|
|
@@ -219,7 +239,8 @@ function useOnboarding() {
|
|
|
219
239
|
await globalMutate(ONBOARDING_SWR_KEY, patchRuntimeConfig({ hasSeenOnboarding: true }), {
|
|
220
240
|
optimisticData: {
|
|
221
241
|
stripClaudeCodeBillingHeader: response.data?.stripClaudeCodeBillingHeader ?? false,
|
|
222
|
-
hasSeenOnboarding: true
|
|
242
|
+
hasSeenOnboarding: true,
|
|
243
|
+
slowResponseThresholdSeconds: response.data?.slowResponseThresholdSeconds ?? DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS
|
|
223
244
|
},
|
|
224
245
|
rollbackOnError: true,
|
|
225
246
|
revalidate: false
|
|
@@ -335,10 +356,6 @@ async function exportLogsAsZip(logs) {
|
|
|
335
356
|
document.body.removeChild(anchor);
|
|
336
357
|
URL.revokeObjectURL(url);
|
|
337
358
|
}
|
|
338
|
-
const version = "1.16.5";
|
|
339
|
-
const packageJson = {
|
|
340
|
-
version
|
|
341
|
-
};
|
|
342
359
|
function cn(...inputs) {
|
|
343
360
|
return twMerge(clsx(inputs));
|
|
344
361
|
}
|
|
@@ -353,6 +370,10 @@ function getStatusCategory(status) {
|
|
|
353
370
|
if (status >= 500) return "server_error";
|
|
354
371
|
return "pending";
|
|
355
372
|
}
|
|
373
|
+
const version = "1.17.1";
|
|
374
|
+
const packageJson = {
|
|
375
|
+
version
|
|
376
|
+
};
|
|
356
377
|
const badgeVariants = cva(
|
|
357
378
|
"inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
358
379
|
{
|
|
@@ -1402,27 +1423,27 @@ function TabsContent({
|
|
|
1402
1423
|
);
|
|
1403
1424
|
}
|
|
1404
1425
|
const LazyCompareDrawer = reactExports.lazy(
|
|
1405
|
-
() => import("./CompareDrawer-
|
|
1426
|
+
() => import("./CompareDrawer-D-Nj8wmx.mjs").then((m) => ({ default: m.CompareDrawer }))
|
|
1406
1427
|
);
|
|
1407
1428
|
const LazyReplayDialog = reactExports.lazy(
|
|
1408
|
-
() => import("./ReplayDialog-
|
|
1429
|
+
() => import("./ReplayDialog-DcucC22E.mjs").then((m) => ({ default: m.ReplayDialog }))
|
|
1409
1430
|
);
|
|
1410
1431
|
const LazyRequestAnatomy = reactExports.lazy(
|
|
1411
|
-
() => import("./RequestAnatomy-
|
|
1432
|
+
() => import("./RequestAnatomy-aL8GAcW2.mjs").then((m) => ({ default: m.RequestAnatomy }))
|
|
1412
1433
|
);
|
|
1413
1434
|
const LazyResponseView = reactExports.lazy(
|
|
1414
|
-
() => import("./ResponseView-
|
|
1435
|
+
() => import("./ResponseView-BHgpoGaF.mjs").then((m) => ({ default: m.ResponseView }))
|
|
1415
1436
|
);
|
|
1416
1437
|
const LazyStreamingChunkSequence = reactExports.lazy(
|
|
1417
|
-
() => import("./StreamingChunkSequence-
|
|
1438
|
+
() => import("./StreamingChunkSequence-DrT7StyS.mjs").then((m) => ({
|
|
1418
1439
|
default: m.StreamingChunkSequence
|
|
1419
1440
|
}))
|
|
1420
1441
|
);
|
|
1421
1442
|
const LazyJsonViewer = reactExports.lazy(
|
|
1422
|
-
() => import("./json-viewer-
|
|
1443
|
+
() => import("./json-viewer-DLsDT0RE.mjs").then((m) => ({ default: m.JsonViewer }))
|
|
1423
1444
|
);
|
|
1424
1445
|
const LazyJsonViewerFromString = reactExports.lazy(
|
|
1425
|
-
() => import("./json-viewer-
|
|
1446
|
+
() => import("./json-viewer-DLsDT0RE.mjs").then((m) => ({ default: m.JsonViewerFromString }))
|
|
1426
1447
|
);
|
|
1427
1448
|
const HIGHLIGHT_DURATION_MS = 1200;
|
|
1428
1449
|
const MAX_HIGHLIGHT_ATTEMPTS = 12;
|
|
@@ -1845,9 +1866,11 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
1845
1866
|
onCopyRequest,
|
|
1846
1867
|
requestCopied = false,
|
|
1847
1868
|
onToggleRequestExpansion,
|
|
1848
|
-
requestExpansionState = null
|
|
1869
|
+
requestExpansionState = null,
|
|
1870
|
+
slowResponseThresholdSeconds = 0
|
|
1849
1871
|
}) {
|
|
1850
1872
|
const statusCategory = getStatusCategory(log.responseStatus);
|
|
1873
|
+
const isSlowResponse = log.elapsedMs !== null && slowResponseThresholdSeconds > 0 && log.elapsedMs > slowResponseThresholdSeconds * 1e3;
|
|
1851
1874
|
const hasTokens = log.inputTokens !== null || log.outputTokens !== null;
|
|
1852
1875
|
const toolNamesJoined = reactExports.useMemo(() => responseToolNames?.join(", ") ?? null, [responseToolNames]);
|
|
1853
1876
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -1875,6 +1898,10 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
1875
1898
|
"#",
|
|
1876
1899
|
log.id
|
|
1877
1900
|
] }),
|
|
1901
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 text-muted-foreground text-xs shrink-0", children: [
|
|
1902
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
1903
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: log.timestamp })
|
|
1904
|
+
] }),
|
|
1878
1905
|
log.model !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
1879
1906
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderLogo, { provider: detectProvider(log.model), className: "size-4" }) }) }),
|
|
1880
1907
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: log.model })
|
|
@@ -1893,9 +1920,24 @@ const LogEntryHeader = reactExports.memo(function({
|
|
|
1893
1920
|
]
|
|
1894
1921
|
}
|
|
1895
1922
|
),
|
|
1896
|
-
log.elapsedMs !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1897
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
1898
|
-
|
|
1923
|
+
log.elapsedMs !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
1924
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
1925
|
+
"span",
|
|
1926
|
+
{
|
|
1927
|
+
className: cn(
|
|
1928
|
+
"flex items-center gap-1 text-xs shrink-0",
|
|
1929
|
+
isSlowResponse ? "text-amber-400" : "text-muted-foreground"
|
|
1930
|
+
),
|
|
1931
|
+
children: [
|
|
1932
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
1933
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatElapsed$1(log.elapsedMs) }),
|
|
1934
|
+
isSlowResponse && /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3", "aria-label": "Slow response" })
|
|
1935
|
+
]
|
|
1936
|
+
}
|
|
1937
|
+
) }),
|
|
1938
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: isSlowResponse ? `Slow response: ${formatElapsed$1(log.elapsedMs)} exceeds ${formatElapsed$1(
|
|
1939
|
+
slowResponseThresholdSeconds * 1e3
|
|
1940
|
+
)}` : "Elapsed response time" })
|
|
1899
1941
|
] }),
|
|
1900
1942
|
hasTokens && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 text-xs shrink-0", children: [
|
|
1901
1943
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Zap, { className: "size-3 text-muted-foreground" }),
|
|
@@ -2451,6 +2493,7 @@ const LogEntry = reactExports.memo(function({
|
|
|
2451
2493
|
log,
|
|
2452
2494
|
viewMode = "simple",
|
|
2453
2495
|
strip,
|
|
2496
|
+
slowResponseThresholdSeconds,
|
|
2454
2497
|
cacheTrend = null,
|
|
2455
2498
|
onCompareWithPrevious
|
|
2456
2499
|
}) {
|
|
@@ -2510,6 +2553,7 @@ const LogEntry = reactExports.memo(function({
|
|
|
2510
2553
|
onToggle: () => setExpanded(!expanded),
|
|
2511
2554
|
responseToolNames: responseAnalysis.toolNames,
|
|
2512
2555
|
cacheTrend,
|
|
2556
|
+
slowResponseThresholdSeconds,
|
|
2513
2557
|
onReplay: onCompareWithPrevious === void 0 ? void 0 : () => {
|
|
2514
2558
|
setReplayOpen(true);
|
|
2515
2559
|
},
|
|
@@ -2834,6 +2878,7 @@ const TurnGroup = reactExports.memo(function TurnGroup2({
|
|
|
2834
2878
|
entries,
|
|
2835
2879
|
viewMode,
|
|
2836
2880
|
strip,
|
|
2881
|
+
slowResponseThresholdSeconds,
|
|
2837
2882
|
cacheTrends,
|
|
2838
2883
|
onCompareWithPrevious,
|
|
2839
2884
|
comparisonPredecessors,
|
|
@@ -2897,6 +2942,7 @@ const TurnGroup = reactExports.memo(function TurnGroup2({
|
|
|
2897
2942
|
const StartCrab = reactExports.useMemo(() => getCrabVariant(entries[0]?.log.id ?? 0), [entries]);
|
|
2898
2943
|
const EndCrab = reactExports.useMemo(() => getCrabVariant(entries[lastIdx]?.log.id ?? 0), [entries, lastIdx]);
|
|
2899
2944
|
const bgClass = turnIndex % 2 === 0 ? "bg-muted/10" : "bg-muted/25";
|
|
2945
|
+
const aggregateIsSlow = aggregate.hasElapsed && slowResponseThresholdSeconds > 0 && aggregate.totalElapsed > slowResponseThresholdSeconds * 1e3;
|
|
2900
2946
|
const [layoutVersion, setLayoutVersion] = reactExports.useState(0);
|
|
2901
2947
|
const containerRef = reactExports.useRef(null);
|
|
2902
2948
|
reactExports.useEffect(() => {
|
|
@@ -3017,10 +3063,25 @@ const TurnGroup = reactExports.memo(function TurnGroup2({
|
|
|
3017
3063
|
entries.length > 1 ? "s" : ""
|
|
3018
3064
|
] }),
|
|
3019
3065
|
uniqueProviders.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex items-center gap-0.5 shrink-0", children: uniqueProviders.map((p) => /* @__PURE__ */ jsxRuntimeExports.jsx(ProviderLogo, { provider: p, className: "size-4" }, p)) }),
|
|
3020
|
-
aggregate.hasElapsed && /* @__PURE__ */ jsxRuntimeExports.
|
|
3021
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
3022
|
-
|
|
3023
|
-
|
|
3066
|
+
aggregate.hasElapsed && /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
3067
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
3068
|
+
"span",
|
|
3069
|
+
{
|
|
3070
|
+
className: cn(
|
|
3071
|
+
"flex items-center gap-1 shrink-0",
|
|
3072
|
+
aggregateIsSlow ? "text-amber-400" : "text-muted-foreground"
|
|
3073
|
+
),
|
|
3074
|
+
children: [
|
|
3075
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { className: "size-3" }),
|
|
3076
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono tabular-nums", children: formatElapsed(aggregate.totalElapsed) }),
|
|
3077
|
+
aggregateIsSlow && /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { className: "size-3", "aria-label": "Slow response" })
|
|
3078
|
+
]
|
|
3079
|
+
}
|
|
3080
|
+
) }),
|
|
3081
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: aggregateIsSlow ? `Slow response: ${formatElapsed(
|
|
3082
|
+
aggregate.totalElapsed
|
|
3083
|
+
)} exceeds ${formatElapsed(slowResponseThresholdSeconds * 1e3)}` : "Total elapsed response time" })
|
|
3084
|
+
] }) }),
|
|
3024
3085
|
aggregate.hasTokens && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex items-center gap-1 shrink-0", children: [
|
|
3025
3086
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Zap, { className: "size-3 text-muted-foreground" }),
|
|
3026
3087
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono tabular-nums", children: [
|
|
@@ -3069,6 +3130,7 @@ const TurnGroup = reactExports.memo(function TurnGroup2({
|
|
|
3069
3130
|
log,
|
|
3070
3131
|
viewMode,
|
|
3071
3132
|
strip,
|
|
3133
|
+
slowResponseThresholdSeconds,
|
|
3072
3134
|
cacheTrend: cacheTrends?.get(log.id) ?? null,
|
|
3073
3135
|
onCompareWithPrevious: comparisonPredecessors.has(log.id) ? onCompareWithPrevious : void 0
|
|
3074
3136
|
}
|
|
@@ -3092,6 +3154,7 @@ const ConversationGroup = reactExports.memo(function({
|
|
|
3092
3154
|
group,
|
|
3093
3155
|
viewMode = "simple",
|
|
3094
3156
|
strip,
|
|
3157
|
+
slowResponseThresholdSeconds,
|
|
3095
3158
|
cacheTrends,
|
|
3096
3159
|
onCompareWithPrevious,
|
|
3097
3160
|
comparisonPredecessors,
|
|
@@ -3131,6 +3194,7 @@ const ConversationGroup = reactExports.memo(function({
|
|
|
3131
3194
|
entries: tg.entries,
|
|
3132
3195
|
viewMode,
|
|
3133
3196
|
strip,
|
|
3197
|
+
slowResponseThresholdSeconds,
|
|
3134
3198
|
cacheTrends,
|
|
3135
3199
|
onCompareWithPrevious,
|
|
3136
3200
|
comparisonPredecessors,
|
|
@@ -4919,7 +4983,13 @@ function SettingsDialog() {
|
|
|
4919
4983
|
] });
|
|
4920
4984
|
}
|
|
4921
4985
|
function ProxySettingsTab() {
|
|
4922
|
-
const {
|
|
4986
|
+
const {
|
|
4987
|
+
strip,
|
|
4988
|
+
slowResponseThresholdSeconds,
|
|
4989
|
+
isLoading,
|
|
4990
|
+
setStrip,
|
|
4991
|
+
setSlowResponseThresholdSeconds
|
|
4992
|
+
} = useStripConfig();
|
|
4923
4993
|
const [error, setError] = reactExports.useState(null);
|
|
4924
4994
|
const [pending, setPending] = reactExports.useState(false);
|
|
4925
4995
|
const handleToggle = reactExports.useCallback(
|
|
@@ -4936,6 +5006,20 @@ function ProxySettingsTab() {
|
|
|
4936
5006
|
},
|
|
4937
5007
|
[setStrip]
|
|
4938
5008
|
);
|
|
5009
|
+
const handleThresholdChange = reactExports.useCallback(
|
|
5010
|
+
async (next) => {
|
|
5011
|
+
setError(null);
|
|
5012
|
+
setPending(true);
|
|
5013
|
+
try {
|
|
5014
|
+
await setSlowResponseThresholdSeconds(next);
|
|
5015
|
+
} catch (err) {
|
|
5016
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
5017
|
+
} finally {
|
|
5018
|
+
setPending(false);
|
|
5019
|
+
}
|
|
5020
|
+
},
|
|
5021
|
+
[setSlowResponseThresholdSeconds]
|
|
5022
|
+
);
|
|
4939
5023
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
|
|
4940
5024
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
|
|
4941
5025
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-semibold", children: "Claude Code billing header" }),
|
|
@@ -4965,6 +5049,36 @@ function ProxySettingsTab() {
|
|
|
4965
5049
|
),
|
|
4966
5050
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm", children: isLoading ? "Loading…" : strip ? "Stripping enabled" : "Stripping disabled" })
|
|
4967
5051
|
] }),
|
|
5052
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
|
|
5053
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("label", { htmlFor: "slow-response-threshold", className: "text-sm font-semibold", children: "Slow response threshold" }),
|
|
5054
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
5055
|
+
"Logs whose elapsed time exceeds this many seconds show a warning icon next to the duration. Set to ",
|
|
5056
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "0" }),
|
|
5057
|
+
" to disable the indicator."
|
|
5058
|
+
] }),
|
|
5059
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
5060
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5061
|
+
"input",
|
|
5062
|
+
{
|
|
5063
|
+
id: "slow-response-threshold",
|
|
5064
|
+
type: "number",
|
|
5065
|
+
min: 0,
|
|
5066
|
+
max: MAX_SLOW_RESPONSE_THRESHOLD_SECONDS,
|
|
5067
|
+
step: 1,
|
|
5068
|
+
value: slowResponseThresholdSeconds,
|
|
5069
|
+
disabled: isLoading || pending,
|
|
5070
|
+
onChange: (e) => {
|
|
5071
|
+
const next = Number(e.currentTarget.value);
|
|
5072
|
+
if (!Number.isInteger(next)) return;
|
|
5073
|
+
if (next < 0 || next > MAX_SLOW_RESPONSE_THRESHOLD_SECONDS) return;
|
|
5074
|
+
void handleThresholdChange(next);
|
|
5075
|
+
},
|
|
5076
|
+
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"
|
|
5077
|
+
}
|
|
5078
|
+
),
|
|
5079
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-muted-foreground", children: "seconds" })
|
|
5080
|
+
] })
|
|
5081
|
+
] }),
|
|
4968
5082
|
error !== null && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-destructive", children: [
|
|
4969
5083
|
"Failed to save: ",
|
|
4970
5084
|
error
|
|
@@ -5214,7 +5328,8 @@ function ProxyViewer({
|
|
|
5214
5328
|
onClearGroup,
|
|
5215
5329
|
viewMode,
|
|
5216
5330
|
onViewModeChange,
|
|
5217
|
-
strip
|
|
5331
|
+
strip,
|
|
5332
|
+
slowResponseThresholdSeconds
|
|
5218
5333
|
}) {
|
|
5219
5334
|
const { totalIn, totalOut } = reactExports.useMemo(() => computeTokenSummary(logs), [logs]);
|
|
5220
5335
|
const [exporting, setExporting] = reactExports.useState(false);
|
|
@@ -5344,7 +5459,7 @@ function ProxyViewer({
|
|
|
5344
5459
|
logs.length,
|
|
5345
5460
|
" request",
|
|
5346
5461
|
logs.length !== 1 ? "s" : "",
|
|
5347
|
-
totalIn > 0 || totalOut > 0 ? ` · ${totalIn
|
|
5462
|
+
totalIn > 0 || totalOut > 0 ? ` · ${formatTokens(totalIn)} in / ${formatTokens(totalOut)} out` : ""
|
|
5348
5463
|
] }),
|
|
5349
5464
|
logs.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
5350
5465
|
"button",
|
|
@@ -5389,6 +5504,7 @@ function ProxyViewer({
|
|
|
5389
5504
|
group,
|
|
5390
5505
|
viewMode,
|
|
5391
5506
|
strip,
|
|
5507
|
+
slowResponseThresholdSeconds,
|
|
5392
5508
|
cacheTrends,
|
|
5393
5509
|
onCompareWithPrevious: handleCompareWithPrevious,
|
|
5394
5510
|
comparisonPredecessors,
|
|
@@ -5589,7 +5705,7 @@ function ProxyViewerContainer() {
|
|
|
5589
5705
|
}
|
|
5590
5706
|
})();
|
|
5591
5707
|
}, []);
|
|
5592
|
-
const { strip } = useStripConfig();
|
|
5708
|
+
const { strip, slowResponseThresholdSeconds } = useStripConfig();
|
|
5593
5709
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
5594
5710
|
error !== null && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fixed top-4 right-4 bg-destructive text-destructive-foreground px-4 py-2 rounded-md text-sm z-50", children: error }),
|
|
5595
5711
|
/* @__PURE__ */ jsxRuntimeExports.jsx(OnboardingBanner, {}),
|
|
@@ -5607,7 +5723,8 @@ function ProxyViewerContainer() {
|
|
|
5607
5723
|
onClearGroup: handleClearGroup,
|
|
5608
5724
|
viewMode,
|
|
5609
5725
|
onViewModeChange: setViewMode,
|
|
5610
|
-
strip
|
|
5726
|
+
strip,
|
|
5727
|
+
slowResponseThresholdSeconds
|
|
5611
5728
|
}
|
|
5612
5729
|
)
|
|
5613
5730
|
] });
|
|
@@ -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-D0JtrQPv.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-DG_jmXCF.mjs").then((n) => n.e);
|
|
771
771
|
const startEntry = await import("./start-HYkvq4Ni.mjs");
|
|
772
772
|
return { startEntry, routerEntry };
|
|
773
773
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
|
|
2
|
-
import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./index-
|
|
3
|
-
import "./router-
|
|
2
|
+
import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./index-nUG0H1oS.mjs";
|
|
3
|
+
import "./router-DG_jmXCF.mjs";
|
|
4
4
|
import "../_libs/modelcontextprotocol__server.mjs";
|
|
5
5
|
import "../_libs/jszip.mjs";
|
|
6
6
|
import { C as Check, c as Copy, a as ChevronDown, f as ChevronRight, r as ChevronsDown } from "../_libs/lucide-react.mjs";
|
|
@@ -46,7 +46,7 @@ import "../_libs/debounce-fn.mjs";
|
|
|
46
46
|
import "../_libs/mimic-function.mjs";
|
|
47
47
|
import "../_libs/semver.mjs";
|
|
48
48
|
import "../_libs/uint8array-extras.mjs";
|
|
49
|
-
const appCss = "/assets/index-
|
|
49
|
+
const appCss = "/assets/index-DoGvsnbA.css";
|
|
50
50
|
const Route$k = createRootRoute({
|
|
51
51
|
head: () => ({
|
|
52
52
|
meta: [
|
|
@@ -70,7 +70,7 @@ function RootDocument({ children }) {
|
|
|
70
70
|
] })
|
|
71
71
|
] });
|
|
72
72
|
}
|
|
73
|
-
const $$splitComponentImporter = () => import("./index-
|
|
73
|
+
const $$splitComponentImporter = () => import("./index-nUG0H1oS.mjs").then((n) => n.t);
|
|
74
74
|
const Route$j = createFileRoute("/")({
|
|
75
75
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
76
76
|
});
|
|
@@ -2158,9 +2158,12 @@ async function getClientInfo(request) {
|
|
|
2158
2158
|
inflight.set(port, promise);
|
|
2159
2159
|
return promise;
|
|
2160
2160
|
}
|
|
2161
|
+
const DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS = 10;
|
|
2162
|
+
const MAX_SLOW_RESPONSE_THRESHOLD_SECONDS = 600;
|
|
2161
2163
|
const RuntimeConfigSchema = object({
|
|
2162
2164
|
stripClaudeCodeBillingHeader: boolean(),
|
|
2163
|
-
hasSeenOnboarding: boolean().default(false)
|
|
2165
|
+
hasSeenOnboarding: boolean().default(false),
|
|
2166
|
+
slowResponseThresholdSeconds: number().int().min(0).max(MAX_SLOW_RESPONSE_THRESHOLD_SECONDS).default(DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS)
|
|
2164
2167
|
});
|
|
2165
2168
|
function getConfigFilePath() {
|
|
2166
2169
|
return join(getDataDir(), "config.json");
|
|
@@ -2190,9 +2193,17 @@ function resolveInitialConfig() {
|
|
|
2190
2193
|
}
|
|
2191
2194
|
}
|
|
2192
2195
|
if (process.env["LLM_INSPECTOR_STRIP_CLAUDE_CODE_BILLING_HEADER"] === "1") {
|
|
2193
|
-
return {
|
|
2196
|
+
return {
|
|
2197
|
+
stripClaudeCodeBillingHeader: true,
|
|
2198
|
+
hasSeenOnboarding: false,
|
|
2199
|
+
slowResponseThresholdSeconds: DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS
|
|
2200
|
+
};
|
|
2194
2201
|
}
|
|
2195
|
-
return {
|
|
2202
|
+
return {
|
|
2203
|
+
stripClaudeCodeBillingHeader: false,
|
|
2204
|
+
hasSeenOnboarding: false,
|
|
2205
|
+
slowResponseThresholdSeconds: DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS
|
|
2206
|
+
};
|
|
2196
2207
|
}
|
|
2197
2208
|
function getConfig() {
|
|
2198
2209
|
return currentConfig;
|
|
@@ -3279,7 +3290,8 @@ const Route$c = createFileRoute("/api/health")({
|
|
|
3279
3290
|
});
|
|
3280
3291
|
const RuntimeConfigPatchSchema = object({
|
|
3281
3292
|
stripClaudeCodeBillingHeader: boolean().optional(),
|
|
3282
|
-
hasSeenOnboarding: boolean().optional()
|
|
3293
|
+
hasSeenOnboarding: boolean().optional(),
|
|
3294
|
+
slowResponseThresholdSeconds: number().int().min(0).max(MAX_SLOW_RESPONSE_THRESHOLD_SECONDS).optional()
|
|
3283
3295
|
}).strict().refine((v) => Object.keys(v).length > 0, {
|
|
3284
3296
|
message: "At least one field must be provided"
|
|
3285
3297
|
});
|
|
@@ -5016,6 +5028,8 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
5016
5028
|
export {
|
|
5017
5029
|
AnthropicResponseSchema$1 as A,
|
|
5018
5030
|
CapturedLogSchema as C,
|
|
5031
|
+
DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS as D,
|
|
5032
|
+
MAX_SLOW_RESPONSE_THRESHOLD_SECONDS as M,
|
|
5019
5033
|
OpenAIRequestSchema as O,
|
|
5020
5034
|
ProviderTestResultsSchema as P,
|
|
5021
5035
|
RuntimeConfigSchema as R,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$"], "preloads": ["/assets/main-
|
|
1
|
+
const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/sessions", "/proxy/$"], "preloads": ["/assets/main-Dgme52Fp.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-B4nxi_tZ.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/proxy/$.ts" }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/config.paths.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.scan.ts" }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-Dgme52Fp.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|