@tonyclaw/llm-inspector 1.18.1 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.output/cli.js +776 -139
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-CAhlM_Gq.js → CompareDrawer-DwayZPPO.js} +1 -1
  4. package/.output/public/assets/ProxyViewerContainer-iv3LVMEW.js +101 -0
  5. package/.output/public/assets/{ReplayDialog-Bqu2f5HE.js → ReplayDialog-CaV1elYO.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-CpVNH0CD.js → RequestAnatomy-CSfnjK7j.js} +1 -1
  7. package/.output/public/assets/{ResponseView-B_Gg37Lr.js → ResponseView-YkOL__xm.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-E2M_SS1A.js → StreamingChunkSequence-D_p6L-oB.js} +1 -1
  9. package/.output/public/assets/_sessionId-BgCVUC6R.js +1 -0
  10. package/.output/public/assets/index-CWA4S0FO.js +1 -0
  11. package/.output/public/assets/index-DeJyypsp.css +1 -0
  12. package/.output/public/assets/{json-viewer-DqhA-ODG.js → json-viewer-BB-9bqnP.js} +2 -2
  13. package/.output/public/assets/{main-DpH7JlHv.js → main-COVN451W.js} +7 -7
  14. package/.output/server/_libs/lucide-react.mjs +100 -73
  15. package/.output/server/{_sessionId-DcJ0RDNl.mjs → _sessionId-BJT5qIib.mjs} +3 -3
  16. package/.output/server/_ssr/{CompareDrawer-DajC3x7u.mjs → CompareDrawer-DNGYdUXs.mjs} +5 -5
  17. package/.output/server/_ssr/{ProxyViewerContainer-C2dnFXoC.mjs → ProxyViewerContainer-B-zDOLYE.mjs} +501 -352
  18. package/.output/server/_ssr/{ReplayDialog-BnCLuA5z.mjs → ReplayDialog-DWeqMA4y.mjs} +5 -5
  19. package/.output/server/_ssr/{RequestAnatomy-OHE3iT-f.mjs → RequestAnatomy-TOsrMu9-.mjs} +4 -4
  20. package/.output/server/_ssr/{ResponseView-NPshHwOv.mjs → ResponseView-BuqdPrzm.mjs} +5 -5
  21. package/.output/server/_ssr/{StreamingChunkSequence-BfukoR7F.mjs → StreamingChunkSequence-DuzNZkqL.mjs} +5 -5
  22. package/.output/server/_ssr/{index-CF8M0tsv.mjs → index-1nCQUt3y.mjs} +3 -3
  23. package/.output/server/_ssr/index.mjs +2 -2
  24. package/.output/server/_ssr/{json-viewer-CHBa-Oas.mjs → json-viewer-BL8xhHbi.mjs} +10 -6
  25. package/.output/server/_ssr/{router-B5hOtKSn.mjs → router-aCaUgVTW.mjs} +32 -17
  26. package/.output/server/{_tanstack-start-manifest_v-CFyWvIH6.mjs → _tanstack-start-manifest_v-cBRxvCjb.mjs} +1 -1
  27. package/.output/server/index.mjs +66 -66
  28. package/README.md +109 -59
  29. package/package.json +2 -1
  30. package/src/assets/logos/mcp.png +0 -0
  31. package/src/cli/detect-tools.ts +146 -0
  32. package/src/cli/onboard.ts +229 -0
  33. package/src/cli/templates/command-onboard.ts +17 -0
  34. package/src/cli/templates/skill-onboard.ts +325 -0
  35. package/src/cli.ts +185 -163
  36. package/src/components/ProxyViewer.tsx +297 -136
  37. package/src/components/ProxyViewerContainer.tsx +24 -9
  38. package/src/components/proxy-viewer/ConversationHeader.tsx +7 -22
  39. package/src/components/proxy-viewer/LogEntry.tsx +136 -157
  40. package/src/components/proxy-viewer/LogEntryHeader.tsx +147 -66
  41. package/src/components/proxy-viewer/useCopyFeedback.ts +36 -0
  42. package/src/components/ui/json-viewer.tsx +12 -0
  43. package/src/components/ui/mcp-logo.tsx +20 -0
  44. package/src/lib/sessionUrl.ts +44 -0
  45. package/src/routes/session/$sessionId.tsx +5 -57
  46. package/.output/public/assets/ProxyViewerContainer--miVHNPZ.js +0 -101
  47. package/.output/public/assets/_sessionId-P9LgC1bF.js +0 -1
  48. package/.output/public/assets/index-C0wv3YP9.css +0 -1
  49. package/.output/public/assets/index-kboKku6a.js +0 -1
@@ -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 "./ProxyViewerContainer-C2dnFXoC.mjs";
3
- import { ResponseView } from "./ResponseView-NPshHwOv.mjs";
4
- import "./router-B5hOtKSn.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 "./ProxyViewerContainer-B-zDOLYE.mjs";
3
+ import { ResponseView } from "./ResponseView-BuqdPrzm.mjs";
4
+ import "./router-aCaUgVTW.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
- import "./json-viewer-CHBa-Oas.mjs";
7
+ import "./json-viewer-BL8xhHbi.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";
@@ -58,9 +58,9 @@ import "../_libs/radix-ui__react-arrow.mjs";
58
58
  import "../_libs/radix-ui__react-use-size.mjs";
59
59
  import "../_libs/radix-ui__react-use-previous.mjs";
60
60
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
61
+ import "../_libs/radix-ui__react-tooltip.mjs";
61
62
  import "../_libs/radix-ui__react-tabs.mjs";
62
63
  import "../_libs/radix-ui__react-roving-focus.mjs";
63
- import "../_libs/radix-ui__react-tooltip.mjs";
64
64
  import "../_libs/react-markdown.mjs";
65
65
  import "../_libs/devlop.mjs";
66
66
  import "../_libs/unified.mjs";
@@ -1,9 +1,9 @@
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 "./ProxyViewerContainer-C2dnFXoC.mjs";
3
- import "./router-B5hOtKSn.mjs";
2
+ import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-B-zDOLYE.mjs";
3
+ import "./router-aCaUgVTW.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { J as Info } from "../_libs/lucide-react.mjs";
6
+ import { Q as Info } 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";
@@ -56,9 +56,9 @@ import "../_libs/radix-ui__react-use-size.mjs";
56
56
  import "../_libs/radix-ui__react-use-previous.mjs";
57
57
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
58
58
  import "../_libs/zod.mjs";
59
+ import "../_libs/radix-ui__react-tooltip.mjs";
59
60
  import "../_libs/radix-ui__react-tabs.mjs";
60
61
  import "../_libs/radix-ui__react-roving-focus.mjs";
61
- import "../_libs/radix-ui__react-tooltip.mjs";
62
62
  import "../_libs/tanstack__react-router.mjs";
63
63
  import "../_libs/tiny-warning.mjs";
64
64
  import "../_libs/tanstack__router-core.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 "./ProxyViewerContainer-C2dnFXoC.mjs";
3
- import { JsonViewer } from "./json-viewer-CHBa-Oas.mjs";
4
- import "./router-B5hOtKSn.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./ProxyViewerContainer-B-zDOLYE.mjs";
3
+ import { JsonViewer } from "./json-viewer-BL8xhHbi.mjs";
4
+ import "./router-aCaUgVTW.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
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";
7
+ import { Z as Zap, i as TriangleAlert, V as CircleStop, Y as Brain, b as ChevronDown, f as ChevronRight, _ 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";
@@ -61,9 +61,9 @@ import "../_libs/radix-ui__react-use-size.mjs";
61
61
  import "../_libs/radix-ui__react-use-previous.mjs";
62
62
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
63
63
  import "../_libs/zod.mjs";
64
+ import "../_libs/radix-ui__react-tooltip.mjs";
64
65
  import "../_libs/radix-ui__react-tabs.mjs";
65
66
  import "../_libs/radix-ui__react-roving-focus.mjs";
66
- import "../_libs/radix-ui__react-tooltip.mjs";
67
67
  import "../_libs/tanstack__react-router.mjs";
68
68
  import "../_libs/tiny-warning.mjs";
69
69
  import "../_libs/tanstack__router-core.mjs";
@@ -1,10 +1,10 @@
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 "./ProxyViewerContainer-C2dnFXoC.mjs";
3
- import { JsonViewer } from "./json-viewer-CHBa-Oas.mjs";
4
- import "./router-B5hOtKSn.mjs";
2
+ import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./ProxyViewerContainer-B-zDOLYE.mjs";
3
+ import { JsonViewer } from "./json-viewer-BL8xhHbi.mjs";
4
+ import "./router-aCaUgVTW.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
- import { a as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
7
+ import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } 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";
@@ -57,9 +57,9 @@ import "../_libs/radix-ui__react-use-size.mjs";
57
57
  import "../_libs/radix-ui__react-use-previous.mjs";
58
58
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
59
59
  import "../_libs/zod.mjs";
60
+ import "../_libs/radix-ui__react-tooltip.mjs";
60
61
  import "../_libs/radix-ui__react-tabs.mjs";
61
62
  import "../_libs/radix-ui__react-roving-focus.mjs";
62
- import "../_libs/radix-ui__react-tooltip.mjs";
63
63
  import "../_libs/react-markdown.mjs";
64
64
  import "../_libs/devlop.mjs";
65
65
  import "../_libs/unified.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-C2dnFXoC.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-B-zDOLYE.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-B5hOtKSn.mjs";
3
+ import "./router-aCaUgVTW.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/swr.mjs";
@@ -56,9 +56,9 @@ import "../_libs/radix-ui__react-use-previous.mjs";
56
56
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
57
57
  import "../_libs/lucide-react.mjs";
58
58
  import "../_libs/zod.mjs";
59
+ import "../_libs/radix-ui__react-tooltip.mjs";
59
60
  import "../_libs/radix-ui__react-tabs.mjs";
60
61
  import "../_libs/radix-ui__react-roving-focus.mjs";
61
- import "../_libs/radix-ui__react-tooltip.mjs";
62
62
  import "../_libs/tanstack__react-router.mjs";
63
63
  import "../_libs/tiny-warning.mjs";
64
64
  import "../_libs/tanstack__router-core.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-CFyWvIH6.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-cBRxvCjb.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-B5hOtKSn.mjs").then((n) => n.f);
770
+ const routerEntry = await import("./router-aCaUgVTW.mjs").then((n) => n.f);
771
771
  const startEntry = await import("./start-HYkvq4Ni.mjs");
772
772
  return { startEntry, routerEntry };
773
773
  }
@@ -1,9 +1,9 @@
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 "./ProxyViewerContainer-C2dnFXoC.mjs";
3
- import "./router-B5hOtKSn.mjs";
2
+ import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-B-zDOLYE.mjs";
3
+ import "./router-aCaUgVTW.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
- import { C as Check, c as Copy, a as ChevronDown, f as ChevronRight, r as ChevronsDown } from "../_libs/lucide-react.mjs";
6
+ import { C as Check, a as Copy, b as ChevronDown, f as ChevronRight, q as ChevronsDown } from "../_libs/lucide-react.mjs";
7
7
  import { M as Markdown } from "../_libs/react-markdown.mjs";
8
8
  import "../_libs/swr.mjs";
9
9
  import "../_libs/use-sync-external-store.mjs";
@@ -57,9 +57,9 @@ import "../_libs/radix-ui__react-use-size.mjs";
57
57
  import "../_libs/radix-ui__react-use-previous.mjs";
58
58
  import "../_libs/@radix-ui/react-visually-hidden+[...].mjs";
59
59
  import "../_libs/zod.mjs";
60
+ import "../_libs/radix-ui__react-tooltip.mjs";
60
61
  import "../_libs/radix-ui__react-tabs.mjs";
61
62
  import "../_libs/radix-ui__react-roving-focus.mjs";
62
- import "../_libs/radix-ui__react-tooltip.mjs";
63
63
  import "../_libs/tanstack__react-router.mjs";
64
64
  import "../_libs/tiny-warning.mjs";
65
65
  import "../_libs/tanstack__router-core.mjs";
@@ -490,7 +490,9 @@ function JsonViewer({
490
490
  const JsonViewerFromString = reactExports.memo(function JsonViewerFromString2({
491
491
  text,
492
492
  defaultExpandDepth = 0,
493
- className
493
+ className,
494
+ bulkDepth,
495
+ bulkRevision
494
496
  }) {
495
497
  const parsed = reactExports.useMemo(() => parseJsonText(text), [text]);
496
498
  if (parsed.kind === "json") {
@@ -499,7 +501,9 @@ const JsonViewerFromString = reactExports.memo(function JsonViewerFromString2({
499
501
  {
500
502
  data: parsed.data,
501
503
  defaultExpandDepth,
502
- className
504
+ className,
505
+ bulkDepth,
506
+ bulkRevision
503
507
  }
504
508
  );
505
509
  }
@@ -47,7 +47,7 @@ import "../_libs/debounce-fn.mjs";
47
47
  import "../_libs/mimic-function.mjs";
48
48
  import "../_libs/semver.mjs";
49
49
  import "../_libs/uint8array-extras.mjs";
50
- const appCss = "/assets/index-C0wv3YP9.css";
50
+ const appCss = "/assets/index-DeJyypsp.css";
51
51
  const Route$l = createRootRoute({
52
52
  head: () => ({
53
53
  meta: [
@@ -71,13 +71,31 @@ function RootDocument({ children }) {
71
71
  ] })
72
72
  ] });
73
73
  }
74
- const $$splitComponentImporter$1 = () => import("./index-CF8M0tsv.mjs");
74
+ const $$splitComponentImporter$1 = () => import("./index-1nCQUt3y.mjs");
75
75
  const Route$k = createFileRoute("/")({
76
76
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
77
77
  });
78
- const $$splitComponentImporter = () => import("../_sessionId-DcJ0RDNl.mjs");
79
78
  const B64URL_RE = /^[A-Za-z0-9_-]+$/;
80
- function b64urlDecode(encoded) {
79
+ function bytesToBinary(bytes) {
80
+ let binary = "";
81
+ for (const byte of bytes) {
82
+ binary += String.fromCharCode(byte);
83
+ }
84
+ return binary;
85
+ }
86
+ function binaryToBytes(binary) {
87
+ const bytes = new Uint8Array(binary.length);
88
+ for (let i = 0; i < binary.length; i++) {
89
+ bytes[i] = binary.charCodeAt(i);
90
+ }
91
+ return bytes;
92
+ }
93
+ function encodeSessionIdForPath(sessionId) {
94
+ const bytes = new TextEncoder().encode(sessionId);
95
+ const base64 = btoa(bytesToBinary(bytes));
96
+ return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
97
+ }
98
+ function decodeSessionIdFromPath(encoded) {
81
99
  if (encoded.startsWith("%")) {
82
100
  return decodeURIComponent(encoded);
83
101
  }
@@ -85,29 +103,25 @@ function b64urlDecode(encoded) {
85
103
  return encoded;
86
104
  }
87
105
  try {
88
- const base64 = encoded.replace(/-/g, "+").replace(/_/g, "/");
89
- const decoded = atob(base64);
90
- for (let i = 0; i < decoded.length; i++) {
91
- const c = decoded.charCodeAt(i);
92
- if (c < 9 || c === 11 || c === 12 || c > 13 && c < 32 || c >= 127) {
93
- return encoded;
94
- }
95
- }
96
- return decoded;
106
+ const padded = encoded.padEnd(Math.ceil(encoded.length / 4) * 4, "=");
107
+ const base64 = padded.replace(/-/g, "+").replace(/_/g, "/");
108
+ const binary = atob(base64);
109
+ return new TextDecoder().decode(binaryToBytes(binary));
97
110
  } catch {
98
111
  return encoded;
99
112
  }
100
113
  }
101
- function b64urlEncode(raw) {
102
- return btoa(raw).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
114
+ function getSessionPath(sessionId) {
115
+ return `/session/${encodeSessionIdForPath(sessionId)}`;
103
116
  }
117
+ const $$splitComponentImporter = () => import("../_sessionId-BJT5qIib.mjs");
104
118
  const Route$j = createFileRoute("/session/$sessionId")({
105
119
  component: lazyRouteComponent($$splitComponentImporter, "component"),
106
120
  parseParams: (params) => ({
107
- sessionId: b64urlDecode(params.sessionId)
121
+ sessionId: decodeSessionIdFromPath(params.sessionId)
108
122
  }),
109
123
  stringifyParams: (params) => ({
110
- sessionId: b64urlEncode(params.sessionId)
124
+ sessionId: encodeSessionIdForPath(params.sessionId)
111
125
  })
112
126
  });
113
127
  const LOG_DIR_ENV = process.env["LOG_DIR"];
@@ -5629,6 +5643,7 @@ export {
5629
5643
  createFailedProviderTestResults as d,
5630
5644
  ProviderConfigSchema as e,
5631
5645
  router as f,
5646
+ getSessionPath as g,
5632
5647
  parseOpenAIResponse as p,
5633
5648
  requestFormatForPath as r,
5634
5649
  stripClaudeCodeBillingHeader as s
@@ -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/$", "/session/$sessionId"], "preloads": ["/assets/main-DpH7JlHv.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-kboKku6a.js", "/assets/ProxyViewerContainer--miVHNPZ.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" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-P9LgC1bF.js", "/assets/ProxyViewerContainer--miVHNPZ.js"] }, "/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-DpH7JlHv.js" });
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/$", "/session/$sessionId"], "preloads": ["/assets/main-COVN451W.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-CWA4S0FO.js", "/assets/ProxyViewerContainer-iv3LVMEW.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" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-BgCVUC6R.js", "/assets/ProxyViewerContainer-iv3LVMEW.js"] }, "/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-COVN451W.js" });
2
2
  export {
3
3
  tsrStartManifest
4
4
  };
@@ -35,110 +35,110 @@ const headers = ((m) => function headersRouteRule(event) {
35
35
  }
36
36
  });
37
37
  const assets = {
38
- "/assets/CompareDrawer-CAhlM_Gq.js": {
39
- "type": "text/javascript; charset=utf-8",
40
- "etag": '"4a1f-y89FV6x/6w2/xFAWh95OU08cw2g"',
41
- "mtime": "2026-06-17T07:06:44.790Z",
42
- "size": 18975,
43
- "path": "../public/assets/CompareDrawer-CAhlM_Gq.js"
44
- },
45
38
  "/assets/alibaba-TTwafVwX.svg": {
46
39
  "type": "image/svg+xml",
47
40
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
48
- "mtime": "2026-06-17T07:06:44.789Z",
41
+ "mtime": "2026-06-17T12:54:11.905Z",
49
42
  "size": 5915,
50
43
  "path": "../public/assets/alibaba-TTwafVwX.svg"
51
44
  },
45
+ "/assets/CompareDrawer-DwayZPPO.js": {
46
+ "type": "text/javascript; charset=utf-8",
47
+ "etag": '"4a1f-264SgIl+1g3c9tpGHL9lbRJnPKQ"',
48
+ "mtime": "2026-06-17T12:54:11.907Z",
49
+ "size": 18975,
50
+ "path": "../public/assets/CompareDrawer-DwayZPPO.js"
51
+ },
52
+ "/assets/index-CWA4S0FO.js": {
53
+ "type": "text/javascript; charset=utf-8",
54
+ "etag": '"74-LBsuhSxmzBMeLrsm7LPh3h+Pnag"',
55
+ "mtime": "2026-06-17T12:54:11.907Z",
56
+ "size": 116,
57
+ "path": "../public/assets/index-CWA4S0FO.js"
58
+ },
52
59
  "/assets/minimax-BPMzvuL-.jpeg": {
53
60
  "type": "image/jpeg",
54
61
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
55
- "mtime": "2026-06-17T07:06:44.790Z",
62
+ "mtime": "2026-06-17T12:54:11.904Z",
56
63
  "size": 6918,
57
64
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
58
65
  },
59
- "/assets/json-viewer-DqhA-ODG.js": {
60
- "type": "text/javascript; charset=utf-8",
61
- "etag": '"1e61b-cvFvDdfHWuFXXPHLY9FejOZavio"',
62
- "mtime": "2026-06-17T07:06:44.790Z",
63
- "size": 124443,
64
- "path": "../public/assets/json-viewer-DqhA-ODG.js"
66
+ "/assets/index-DeJyypsp.css": {
67
+ "type": "text/css; charset=utf-8",
68
+ "etag": '"17504-zMXz49VysEK/ru01MvYLc8/SiPI"',
69
+ "mtime": "2026-06-17T12:54:11.907Z",
70
+ "size": 95492,
71
+ "path": "../public/assets/index-DeJyypsp.css"
65
72
  },
66
- "/assets/index-kboKku6a.js": {
73
+ "/assets/json-viewer-BB-9bqnP.js": {
67
74
  "type": "text/javascript; charset=utf-8",
68
- "etag": '"74-7vD1f7Aks8vM9boCf9+bz+65N64"',
69
- "mtime": "2026-06-17T07:06:44.790Z",
70
- "size": 116,
71
- "path": "../public/assets/index-kboKku6a.js"
75
+ "etag": '"1e651-zdhq9AAv3eOfDUuAbYr+ugOVlCM"',
76
+ "mtime": "2026-06-17T12:54:11.907Z",
77
+ "size": 124497,
78
+ "path": "../public/assets/json-viewer-BB-9bqnP.js"
72
79
  },
73
- "/assets/ReplayDialog-Bqu2f5HE.js": {
80
+ "/assets/ReplayDialog-CaV1elYO.js": {
74
81
  "type": "text/javascript; charset=utf-8",
75
- "etag": '"11c0-Y7Vaq6CKT9L55S3+5Sa9W7I9n8s"',
76
- "mtime": "2026-06-17T07:06:44.790Z",
82
+ "etag": '"11c0-/RAWUYNo5/wpVD3wOoFAlfR1jXo"',
83
+ "mtime": "2026-06-17T12:54:11.907Z",
77
84
  "size": 4544,
78
- "path": "../public/assets/ReplayDialog-Bqu2f5HE.js"
79
- },
80
- "/assets/RequestAnatomy-CpVNH0CD.js": {
81
- "type": "text/javascript; charset=utf-8",
82
- "etag": '"142a-gffvyK42oeBHi9JIrm6g3lo0iWU"',
83
- "mtime": "2026-06-17T07:06:44.790Z",
84
- "size": 5162,
85
- "path": "../public/assets/RequestAnatomy-CpVNH0CD.js"
85
+ "path": "../public/assets/ReplayDialog-CaV1elYO.js"
86
86
  },
87
- "/assets/ResponseView-B_Gg37Lr.js": {
87
+ "/assets/ResponseView-YkOL__xm.js": {
88
88
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"6e91-J0Ed0EWJvllTNxdMCmIqjXKA4Qs"',
90
- "mtime": "2026-06-17T07:06:44.790Z",
89
+ "etag": '"6e91-iIWbEI2Zbmf8R84P7u0RBPcr9/E"',
90
+ "mtime": "2026-06-17T12:54:11.907Z",
91
91
  "size": 28305,
92
- "path": "../public/assets/ResponseView-B_Gg37Lr.js"
93
- },
94
- "/assets/index-C0wv3YP9.css": {
95
- "type": "text/css; charset=utf-8",
96
- "etag": '"16d47-6IBZNAFhhdOKDBjbqYEV1tHKGHM"',
97
- "mtime": "2026-06-17T07:06:44.790Z",
98
- "size": 93511,
99
- "path": "../public/assets/index-C0wv3YP9.css"
100
- },
101
- "/assets/StreamingChunkSequence-E2M_SS1A.js": {
102
- "type": "text/javascript; charset=utf-8",
103
- "etag": '"d81-dJdxGyEGg5FieAc0i4bhpLa8k6E"',
104
- "mtime": "2026-06-17T07:06:44.790Z",
105
- "size": 3457,
106
- "path": "../public/assets/StreamingChunkSequence-E2M_SS1A.js"
92
+ "path": "../public/assets/ResponseView-YkOL__xm.js"
107
93
  },
108
94
  "/assets/zhipuai-BPNAnxo-.svg": {
109
95
  "type": "image/svg+xml",
110
96
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
111
- "mtime": "2026-06-17T07:06:44.790Z",
97
+ "mtime": "2026-06-17T12:54:11.905Z",
112
98
  "size": 11256,
113
99
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
114
100
  },
115
- "/assets/_sessionId-P9LgC1bF.js": {
101
+ "/assets/RequestAnatomy-CSfnjK7j.js": {
116
102
  "type": "text/javascript; charset=utf-8",
117
- "etag": '"d2-+FN45iMQBovjOR/i3DdANjlSnyQ"',
118
- "mtime": "2026-06-17T07:06:44.790Z",
119
- "size": 210,
120
- "path": "../public/assets/_sessionId-P9LgC1bF.js"
103
+ "etag": '"142a-CwwpIZz2Gaf/JogYLj0DK/Poz8o"',
104
+ "mtime": "2026-06-17T12:54:11.907Z",
105
+ "size": 5162,
106
+ "path": "../public/assets/RequestAnatomy-CSfnjK7j.js"
121
107
  },
122
- "/assets/main-DpH7JlHv.js": {
108
+ "/assets/StreamingChunkSequence-D_p6L-oB.js": {
123
109
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"5094f-KMQDEPfcmVJob3HiAdpjSeV4lxg"',
125
- "mtime": "2026-06-17T07:06:44.790Z",
126
- "size": 330063,
127
- "path": "../public/assets/main-DpH7JlHv.js"
110
+ "etag": '"d81-IO4bgOssZoDdAbKHYgyONSXgSw8"',
111
+ "mtime": "2026-06-17T12:54:11.907Z",
112
+ "size": 3457,
113
+ "path": "../public/assets/StreamingChunkSequence-D_p6L-oB.js"
128
114
  },
129
- "/assets/ProxyViewerContainer--miVHNPZ.js": {
115
+ "/assets/_sessionId-BgCVUC6R.js": {
130
116
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"747c3-blZamGvYX0NAt5uQKaw2bydHZYI"',
132
- "mtime": "2026-06-17T07:06:44.790Z",
133
- "size": 477123,
134
- "path": "../public/assets/ProxyViewerContainer--miVHNPZ.js"
117
+ "etag": '"d2-qKl7gcPhCfGQU9AuDUFKCrL9cx0"',
118
+ "mtime": "2026-06-17T12:54:11.907Z",
119
+ "size": 210,
120
+ "path": "../public/assets/_sessionId-BgCVUC6R.js"
121
+ },
122
+ "/assets/main-COVN451W.js": {
123
+ "type": "text/javascript; charset=utf-8",
124
+ "etag": '"50a37-YPT2eeRreT3u8eoQvC2l/pD2i/4"',
125
+ "mtime": "2026-06-17T12:54:11.907Z",
126
+ "size": 330295,
127
+ "path": "../public/assets/main-COVN451W.js"
135
128
  },
136
129
  "/assets/qwen-CONDcHqt.png": {
137
130
  "type": "image/png",
138
131
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
139
- "mtime": "2026-06-17T07:06:44.790Z",
132
+ "mtime": "2026-06-17T12:54:11.907Z",
140
133
  "size": 357059,
141
134
  "path": "../public/assets/qwen-CONDcHqt.png"
135
+ },
136
+ "/assets/ProxyViewerContainer-iv3LVMEW.js": {
137
+ "type": "text/javascript; charset=utf-8",
138
+ "etag": '"76d0d-QZpfZOIsRRwrq+swugwZ7pHUlc0"',
139
+ "mtime": "2026-06-17T12:54:11.907Z",
140
+ "size": 486669,
141
+ "path": "../public/assets/ProxyViewerContainer-iv3LVMEW.js"
142
142
  }
143
143
  };
144
144
  function readAsset(id) {