@tonyclaw/llm-inspector 1.19.2 → 1.19.3

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 (29) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-BzTsEelr.js → CompareDrawer-AMCFfwDw.js} +1 -1
  3. package/.output/public/assets/{ProxyViewerContainer-BHm-n-_W.js → ProxyViewerContainer-Bi1QXDYo.js} +4 -4
  4. package/.output/public/assets/{ReplayDialog-Dxxo80xO.js → ReplayDialog-C1x2-73A.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-D-swiaii.js → RequestAnatomy-CBNqMbxo.js} +1 -1
  6. package/.output/public/assets/{ResponseView-DvdH2bGk.js → ResponseView-BsBxYW8b.js} +1 -1
  7. package/.output/public/assets/{StreamingChunkSequence-D_RzgyKq.js → StreamingChunkSequence-BjX20-9R.js} +1 -1
  8. package/.output/public/assets/_sessionId-DE0J5YHU.js +1 -0
  9. package/.output/public/assets/index-DqgTchf4.js +1 -0
  10. package/.output/public/assets/{json-viewer-DIHZbEId.js → json-viewer-CyJ5nYhX.js} +1 -1
  11. package/.output/public/assets/{main-Br2EjrqZ.js → main-DpODUL6C.js} +4 -4
  12. package/.output/server/{_sessionId-CPkCxTP8.mjs → _sessionId-DJ9Eab2q.mjs} +2 -2
  13. package/.output/server/_ssr/{CompareDrawer-DKHgXC5-.mjs → CompareDrawer-CZjtgISX.mjs} +3 -3
  14. package/.output/server/_ssr/{ProxyViewerContainer-B41D-2Eo.mjs → ProxyViewerContainer-PjfpTAwC.mjs} +9 -9
  15. package/.output/server/_ssr/{ReplayDialog-D2piRWb0.mjs → ReplayDialog-OiEK8Sbt.mjs} +4 -4
  16. package/.output/server/_ssr/{RequestAnatomy-Ce7QdQNP.mjs → RequestAnatomy-DN7d-srT.mjs} +2 -2
  17. package/.output/server/_ssr/{ResponseView-D50UPv-r.mjs → ResponseView-7iJG8mU_.mjs} +3 -3
  18. package/.output/server/_ssr/{StreamingChunkSequence-CDlNFS3Z.mjs → StreamingChunkSequence-DgtV9nLT.mjs} +3 -3
  19. package/.output/server/_ssr/{index-DhAQxjnZ.mjs → index-YZwFhEEr.mjs} +2 -2
  20. package/.output/server/_ssr/index.mjs +2 -2
  21. package/.output/server/_ssr/{json-viewer-BZRjG_f7.mjs → json-viewer-0GHTWO7g.mjs} +2 -2
  22. package/.output/server/_ssr/{router-yP98-Gq-.mjs → router-DCW8d1sw.mjs} +7 -3
  23. package/.output/server/{_tanstack-start-manifest_v-d4a4xlOi.mjs → _tanstack-start-manifest_v-CxTbhyJ_.mjs} +1 -1
  24. package/.output/server/index.mjs +63 -63
  25. package/package.json +2 -2
  26. package/src/assets/favicon.svg +18 -0
  27. package/src/routes/__root.tsx +5 -1
  28. package/.output/public/assets/_sessionId-DdODJCYY.js +0 -1
  29. package/.output/public/assets/index-EvnsNPOK.js +0 -1
@@ -1,6 +1,6 @@
1
1
  import { j as jsxRuntimeExports } from "./_libs/react.mjs";
2
- import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-B41D-2Eo.mjs";
3
- import { R as Route$j } from "./_ssr/router-yP98-Gq-.mjs";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import { R as Route$j } from "./_ssr/router-DCW8d1sw.mjs";
4
4
  import "./_libs/jszip.mjs";
5
5
  import "./_libs/modelcontextprotocol__server.mjs";
6
6
  import "./_libs/swr.mjs";
@@ -1,7 +1,7 @@
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 "./ProxyViewerContainer-B41D-2Eo.mjs";
3
- import { JsonViewerFromString } from "./json-viewer-BZRjG_f7.mjs";
4
- import "./router-yP98-Gq-.mjs";
2
+ import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens } from "./ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import { JsonViewerFromString } from "./json-viewer-0GHTWO7g.mjs";
4
+ import "./router-DCW8d1sw.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
7
  import { X, J as Rows3, K as Columns2, m as Minus, P as Plus, l as Pencil, f as ChevronRight, N as Equal, C as Check, a as Copy } 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, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, d as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, g as getSessionPath, e as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, b as AnthropicRequestSchema } from "./router-yP98-Gq-.mjs";
2
+ import { C as CapturedLogSchema, D as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, a as RuntimeConfigSchema, r as requestFormatForPath, c as createPendingProviderTestResults, P as ProviderTestResultsSchema, d as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, g as getSessionPath, e as ProviderConfigSchema, s as stripClaudeCodeBillingHeader, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, b as AnthropicRequestSchema } from "./router-DCW8d1sw.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";
@@ -275,7 +275,7 @@ function getStatusCategory(status) {
275
275
  if (status >= 500) return "server_error";
276
276
  return "pending";
277
277
  }
278
- const version = "1.19.2";
278
+ const version = "1.19.3";
279
279
  const packageJson = {
280
280
  version
281
281
  };
@@ -1343,27 +1343,27 @@ function useCopyFeedback(text) {
1343
1343
  return { copied, copy };
1344
1344
  }
1345
1345
  const LazyCompareDrawer = reactExports.lazy(
1346
- () => import("./CompareDrawer-DKHgXC5-.mjs").then((m) => ({ default: m.CompareDrawer }))
1346
+ () => import("./CompareDrawer-CZjtgISX.mjs").then((m) => ({ default: m.CompareDrawer }))
1347
1347
  );
1348
1348
  const LazyReplayDialog = reactExports.lazy(
1349
- () => import("./ReplayDialog-D2piRWb0.mjs").then((m) => ({ default: m.ReplayDialog }))
1349
+ () => import("./ReplayDialog-OiEK8Sbt.mjs").then((m) => ({ default: m.ReplayDialog }))
1350
1350
  );
1351
1351
  const LazyRequestAnatomy = reactExports.lazy(
1352
- () => import("./RequestAnatomy-Ce7QdQNP.mjs").then((m) => ({ default: m.RequestAnatomy }))
1352
+ () => import("./RequestAnatomy-DN7d-srT.mjs").then((m) => ({ default: m.RequestAnatomy }))
1353
1353
  );
1354
1354
  const LazyResponseView = reactExports.lazy(
1355
- () => import("./ResponseView-D50UPv-r.mjs").then((m) => ({ default: m.ResponseView }))
1355
+ () => import("./ResponseView-7iJG8mU_.mjs").then((m) => ({ default: m.ResponseView }))
1356
1356
  );
1357
1357
  const LazyStreamingChunkSequence = reactExports.lazy(
1358
- () => import("./StreamingChunkSequence-CDlNFS3Z.mjs").then((m) => ({
1358
+ () => import("./StreamingChunkSequence-DgtV9nLT.mjs").then((m) => ({
1359
1359
  default: m.StreamingChunkSequence
1360
1360
  }))
1361
1361
  );
1362
1362
  const LazyJsonViewer = reactExports.lazy(
1363
- () => import("./json-viewer-BZRjG_f7.mjs").then((m) => ({ default: m.JsonViewer }))
1363
+ () => import("./json-viewer-0GHTWO7g.mjs").then((m) => ({ default: m.JsonViewer }))
1364
1364
  );
1365
1365
  const LazyJsonViewerFromString = reactExports.lazy(
1366
- () => import("./json-viewer-BZRjG_f7.mjs").then((m) => ({ default: m.JsonViewerFromString }))
1366
+ () => import("./json-viewer-0GHTWO7g.mjs").then((m) => ({ default: m.JsonViewerFromString }))
1367
1367
  );
1368
1368
  const HIGHLIGHT_DURATION_MS = 1200;
1369
1369
  const MAX_HIGHLIGHT_ATTEMPTS = 12;
@@ -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-B41D-2Eo.mjs";
3
- import { ResponseView } from "./ResponseView-D50UPv-r.mjs";
4
- import "./router-yP98-Gq-.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-PjfpTAwC.mjs";
3
+ import { ResponseView } from "./ResponseView-7iJG8mU_.mjs";
4
+ import "./router-DCW8d1sw.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
- import "./json-viewer-BZRjG_f7.mjs";
7
+ import "./json-viewer-0GHTWO7g.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 "./ProxyViewerContainer-B41D-2Eo.mjs";
3
- import "./router-yP98-Gq-.mjs";
2
+ import { k as TooltipProvider, f as formatTokens, c as cn, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import "./router-DCW8d1sw.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Q as Info } from "../_libs/lucide-react.mjs";
@@ -1,7 +1,7 @@
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-B41D-2Eo.mjs";
3
- import { JsonViewer } from "./json-viewer-BZRjG_f7.mjs";
4
- import "./router-yP98-Gq-.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, p as getStatusCategory, B as Badge, s as safeJsonValue } from "./ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import { JsonViewer } from "./json-viewer-0GHTWO7g.mjs";
4
+ import "./router-DCW8d1sw.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
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";
@@ -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 "./ProxyViewerContainer-B41D-2Eo.mjs";
3
- import { JsonViewer } from "./json-viewer-BZRjG_f7.mjs";
4
- import "./router-yP98-Gq-.mjs";
2
+ import { k as TooltipProvider, l as Tooltip, m as TooltipTrigger, B as Badge, n as TooltipContent } from "./ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import { JsonViewer } from "./json-viewer-0GHTWO7g.mjs";
4
+ import "./router-DCW8d1sw.mjs";
5
5
  import "../_libs/modelcontextprotocol__server.mjs";
6
6
  import "../_libs/jszip.mjs";
7
7
  import { b as ChevronDown, f as ChevronRight, L as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-B41D-2Eo.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-PjfpTAwC.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-yP98-Gq-.mjs";
3
+ import "./router-DCW8d1sw.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-d4a4xlOi.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-CxTbhyJ_.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-yP98-Gq-.mjs").then((n) => n.f);
770
+ const routerEntry = await import("./router-DCW8d1sw.mjs").then((n) => n.f);
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 "./ProxyViewerContainer-B41D-2Eo.mjs";
3
- import "./router-yP98-Gq-.mjs";
2
+ import { q as parseJsonText, c as cn, k as TooltipProvider, l as Tooltip, m as TooltipTrigger, n as TooltipContent } from "./ProxyViewerContainer-PjfpTAwC.mjs";
3
+ import "./router-DCW8d1sw.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { C as Check, a as Copy, b as ChevronDown, f as ChevronRight, q as ChevronsDown } from "../_libs/lucide-react.mjs";
@@ -48,6 +48,7 @@ import "../_libs/debounce-fn.mjs";
48
48
  import "../_libs/mimic-function.mjs";
49
49
  import "../_libs/semver.mjs";
50
50
  import "../_libs/uint8array-extras.mjs";
51
+ const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='LLM%20Inspector'%3e%3crect%20width='64'%20height='64'%20rx='14'%20fill='%23111827'%20/%3e%3cg%20fill='none'%20stroke='%23f59e0b'%20stroke-width='4.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpath%20fill='%23f59e0b'%20d='M15%2036c0-11%207-18%2017-18s17%207%2017%2018c0%208-7%2013-17%2013s-17-5-17-13z'%20/%3e%3cpath%20d='M16%2031c-6-5-12-3-12%204%200%205%206%206%2011%202'%20/%3e%3cpath%20d='M48%2031c6-5%2012-3%2012%204%200%205-6%206-11%202'%20/%3e%3cpath%20d='M27%2019l-3-7'%20/%3e%3cpath%20d='M37%2019l3-7'%20/%3e%3cpath%20d='M19%2045l-6%209'%20/%3e%3cpath%20d='M27%2048l-3%209'%20/%3e%3cpath%20d='M37%2048l3%209'%20/%3e%3cpath%20d='M45%2045l6%209'%20/%3e%3c/g%3e%3ccircle%20cx='24'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='40'%20cy='11'%20r='3.2'%20fill='%23f59e0b'%20/%3e%3ccircle%20cx='25'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3ccircle%20cx='39'%20cy='34'%20r='2.1'%20fill='%23111827'%20/%3e%3c/svg%3e";
51
52
  const appCss = "/assets/index-Bqi9RAGS.css";
52
53
  const Route$l = createRootRoute({
53
54
  head: () => ({
@@ -56,7 +57,10 @@ const Route$l = createRootRoute({
56
57
  { name: "viewport", content: "width=device-width, initial-scale=1" },
57
58
  { title: "llm-inspector" }
58
59
  ],
59
- links: [{ rel: "stylesheet", href: appCss }]
60
+ links: [
61
+ { rel: "stylesheet", href: appCss },
62
+ { rel: "icon", type: "image/svg+xml", href: faviconSvg }
63
+ ]
60
64
  }),
61
65
  component: RootComponent
62
66
  });
@@ -72,7 +76,7 @@ function RootDocument({ children }) {
72
76
  ] })
73
77
  ] });
74
78
  }
75
- const $$splitComponentImporter$1 = () => import("./index-DhAQxjnZ.mjs");
79
+ const $$splitComponentImporter$1 = () => import("./index-YZwFhEEr.mjs");
76
80
  const Route$k = createFileRoute("/")({
77
81
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
78
82
  });
@@ -115,7 +119,7 @@ function decodeSessionIdFromPath(encoded) {
115
119
  function getSessionPath(sessionId) {
116
120
  return `/session/${encodeSessionIdForPath(sessionId)}`;
117
121
  }
118
- const $$splitComponentImporter = () => import("../_sessionId-CPkCxTP8.mjs");
122
+ const $$splitComponentImporter = () => import("../_sessionId-DJ9Eab2q.mjs");
119
123
  const Route$j = createFileRoute("/session/$sessionId")({
120
124
  component: lazyRouteComponent($$splitComponentImporter, "component"),
121
125
  parseParams: (params) => ({
@@ -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-Br2EjrqZ.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-EvnsNPOK.js", "/assets/ProxyViewerContainer-BHm-n-_W.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-DdODJCYY.js", "/assets/ProxyViewerContainer-BHm-n-_W.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-Br2EjrqZ.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-DpODUL6C.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/llm-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-DqgTchf4.js", "/assets/ProxyViewerContainer-Bi1QXDYo.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-DE0J5YHU.js", "/assets/ProxyViewerContainer-Bi1QXDYo.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-DpODUL6C.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/index-EvnsNPOK.js": {
39
- "type": "text/javascript; charset=utf-8",
40
- "etag": '"74-Ttr2CWyviy8DiIX5gb9+i1f50ew"',
41
- "mtime": "2026-06-18T08:23:57.371Z",
42
- "size": 116,
43
- "path": "../public/assets/index-EvnsNPOK.js"
44
- },
45
38
  "/assets/alibaba-TTwafVwX.svg": {
46
39
  "type": "image/svg+xml",
47
40
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
48
- "mtime": "2026-06-18T08:23:57.367Z",
41
+ "mtime": "2026-06-18T09:12:22.689Z",
49
42
  "size": 5915,
50
43
  "path": "../public/assets/alibaba-TTwafVwX.svg"
51
44
  },
52
45
  "/assets/index-Bqi9RAGS.css": {
53
46
  "type": "text/css; charset=utf-8",
54
47
  "etag": '"177a9-QMoW/GsYu1jERI0JyFHA9CiB/o0"',
55
- "mtime": "2026-06-18T08:23:57.371Z",
48
+ "mtime": "2026-06-18T09:12:22.692Z",
56
49
  "size": 96169,
57
50
  "path": "../public/assets/index-Bqi9RAGS.css"
58
51
  },
59
- "/assets/CompareDrawer-BzTsEelr.js": {
52
+ "/assets/json-viewer-CyJ5nYhX.js": {
60
53
  "type": "text/javascript; charset=utf-8",
61
- "etag": '"4a1f-Qg1+Rt9EXNIgQdrNcwWDBW4GbSo"',
62
- "mtime": "2026-06-18T08:23:57.371Z",
63
- "size": 18975,
64
- "path": "../public/assets/CompareDrawer-BzTsEelr.js"
65
- },
66
- "/assets/minimax-BPMzvuL-.jpeg": {
67
- "type": "image/jpeg",
68
- "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
69
- "mtime": "2026-06-18T08:23:57.370Z",
70
- "size": 6918,
71
- "path": "../public/assets/minimax-BPMzvuL-.jpeg"
72
- },
73
- "/assets/main-Br2EjrqZ.js": {
74
- "type": "text/javascript; charset=utf-8",
75
- "etag": '"50a37-vmFQ+AWLZBZB2He0hGozNaRNVJI"',
76
- "mtime": "2026-06-18T08:23:57.371Z",
77
- "size": 330295,
78
- "path": "../public/assets/main-Br2EjrqZ.js"
79
- },
80
- "/assets/json-viewer-DIHZbEId.js": {
81
- "type": "text/javascript; charset=utf-8",
82
- "etag": '"1e651-45Abi6ZVH/q1l0aOWq20PEO9Tcg"',
83
- "mtime": "2026-06-18T08:23:57.371Z",
54
+ "etag": '"1e651-ydiPWeNOTBxab1yp6aZhKmFLc9w"',
55
+ "mtime": "2026-06-18T09:12:22.693Z",
84
56
  "size": 124497,
85
- "path": "../public/assets/json-viewer-DIHZbEId.js"
57
+ "path": "../public/assets/json-viewer-CyJ5nYhX.js"
86
58
  },
87
- "/assets/RequestAnatomy-D-swiaii.js": {
59
+ "/assets/index-DqgTchf4.js": {
88
60
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"142a-gnEHcgfEHRgV0NMxY0iXIZHIAC0"',
90
- "mtime": "2026-06-18T08:23:57.371Z",
91
- "size": 5162,
92
- "path": "../public/assets/RequestAnatomy-D-swiaii.js"
61
+ "etag": '"74-dCXgAHXAyb0J55GEgjrhbbUgzbc"',
62
+ "mtime": "2026-06-18T09:12:22.692Z",
63
+ "size": 116,
64
+ "path": "../public/assets/index-DqgTchf4.js"
93
65
  },
94
- "/assets/ResponseView-DvdH2bGk.js": {
66
+ "/assets/CompareDrawer-AMCFfwDw.js": {
95
67
  "type": "text/javascript; charset=utf-8",
96
- "etag": '"6e91-Q4HU85yuyXxRWZzw+CnDW/vnjAo"',
97
- "mtime": "2026-06-18T08:23:57.371Z",
98
- "size": 28305,
99
- "path": "../public/assets/ResponseView-DvdH2bGk.js"
68
+ "etag": '"4a1f-JS26/3WLLROR+e/DYSYJ+f7WiQc"',
69
+ "mtime": "2026-06-18T09:12:22.693Z",
70
+ "size": 18975,
71
+ "path": "../public/assets/CompareDrawer-AMCFfwDw.js"
100
72
  },
101
- "/assets/ReplayDialog-Dxxo80xO.js": {
73
+ "/assets/ReplayDialog-C1x2-73A.js": {
102
74
  "type": "text/javascript; charset=utf-8",
103
- "etag": '"11c0-L7iZUpQjkDLpKkR+MgAZO1Q6ns8"',
104
- "mtime": "2026-06-18T08:23:57.371Z",
75
+ "etag": '"11c0-0BdsMUTzMbm8+qZrAg7WR+cZJxI"',
76
+ "mtime": "2026-06-18T09:12:22.692Z",
105
77
  "size": 4544,
106
- "path": "../public/assets/ReplayDialog-Dxxo80xO.js"
78
+ "path": "../public/assets/ReplayDialog-C1x2-73A.js"
107
79
  },
108
- "/assets/StreamingChunkSequence-D_RzgyKq.js": {
80
+ "/assets/StreamingChunkSequence-BjX20-9R.js": {
109
81
  "type": "text/javascript; charset=utf-8",
110
- "etag": '"d81-8i4/6r70kba84fXrnFFC/+/S8Sw"',
111
- "mtime": "2026-06-18T08:23:57.371Z",
82
+ "etag": '"d81-wlp9qhgGUggvmv1Zxwa60zK7kv0"',
83
+ "mtime": "2026-06-18T09:12:22.693Z",
112
84
  "size": 3457,
113
- "path": "../public/assets/StreamingChunkSequence-D_RzgyKq.js"
85
+ "path": "../public/assets/StreamingChunkSequence-BjX20-9R.js"
86
+ },
87
+ "/assets/ResponseView-BsBxYW8b.js": {
88
+ "type": "text/javascript; charset=utf-8",
89
+ "etag": '"6e91-dcQF6OvaeJlJzeXqydW9EwIelj8"',
90
+ "mtime": "2026-06-18T09:12:22.693Z",
91
+ "size": 28305,
92
+ "path": "../public/assets/ResponseView-BsBxYW8b.js"
93
+ },
94
+ "/assets/minimax-BPMzvuL-.jpeg": {
95
+ "type": "image/jpeg",
96
+ "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
97
+ "mtime": "2026-06-18T09:12:22.692Z",
98
+ "size": 6918,
99
+ "path": "../public/assets/minimax-BPMzvuL-.jpeg"
114
100
  },
115
101
  "/assets/zhipuai-BPNAnxo-.svg": {
116
102
  "type": "image/svg+xml",
117
103
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
118
- "mtime": "2026-06-18T08:23:57.370Z",
104
+ "mtime": "2026-06-18T09:12:22.692Z",
119
105
  "size": 11256,
120
106
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
121
107
  },
122
- "/assets/_sessionId-DdODJCYY.js": {
108
+ "/assets/main-DpODUL6C.js": {
123
109
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"d2-f13W0xvGzYOxgV34bdQslyMj4WE"',
125
- "mtime": "2026-06-18T08:23:57.371Z",
126
- "size": 210,
127
- "path": "../public/assets/_sessionId-DdODJCYY.js"
110
+ "etag": '"50e93-I+c4WJ0eqNgllRdD+TE3/FNhdZw"',
111
+ "mtime": "2026-06-18T09:12:22.692Z",
112
+ "size": 331411,
113
+ "path": "../public/assets/main-DpODUL6C.js"
128
114
  },
129
115
  "/assets/qwen-CONDcHqt.png": {
130
116
  "type": "image/png",
131
117
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
132
- "mtime": "2026-06-18T08:23:57.371Z",
118
+ "mtime": "2026-06-18T09:12:22.692Z",
133
119
  "size": 357059,
134
120
  "path": "../public/assets/qwen-CONDcHqt.png"
135
121
  },
136
- "/assets/ProxyViewerContainer-BHm-n-_W.js": {
122
+ "/assets/RequestAnatomy-CBNqMbxo.js": {
123
+ "type": "text/javascript; charset=utf-8",
124
+ "etag": '"142a-OyCo/ZrZQjHOESLPR2QHdrDlSfY"',
125
+ "mtime": "2026-06-18T09:12:22.693Z",
126
+ "size": 5162,
127
+ "path": "../public/assets/RequestAnatomy-CBNqMbxo.js"
128
+ },
129
+ "/assets/ProxyViewerContainer-Bi1QXDYo.js": {
137
130
  "type": "text/javascript; charset=utf-8",
138
- "etag": '"76fed-fJVWNR0ZLTxGc3xnZxX5o1sFXvc"',
139
- "mtime": "2026-06-18T08:23:57.371Z",
131
+ "etag": '"76fed-g89dZRBRI198ItonW8vjcw/8gls"',
132
+ "mtime": "2026-06-18T09:12:22.692Z",
140
133
  "size": 487405,
141
- "path": "../public/assets/ProxyViewerContainer-BHm-n-_W.js"
134
+ "path": "../public/assets/ProxyViewerContainer-Bi1QXDYo.js"
135
+ },
136
+ "/assets/_sessionId-DE0J5YHU.js": {
137
+ "type": "text/javascript; charset=utf-8",
138
+ "etag": '"d2-yTX8F3UFbyfcaXlKoGMrmxJtX0U"',
139
+ "mtime": "2026-06-18T09:12:22.692Z",
140
+ "size": 210,
141
+ "path": "../public/assets/_sessionId-DE0J5YHU.js"
142
142
  }
143
143
  };
144
144
  function readAsset(id) {
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@tonyclaw/llm-inspector",
3
- "version": "1.19.2",
3
+ "version": "1.19.3",
4
4
  "type": "module",
5
- "description": "LLM API proxy inspector captures and displays requests/responses from AI coding tools in a web UI",
5
+ "description": "Local LLM API inspector for AI coding tools, with real-time request and response capture.",
6
6
  "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git"
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="LLM Inspector">
2
+ <rect width="64" height="64" rx="14" fill="#111827" />
3
+ <g fill="none" stroke="#f59e0b" stroke-width="4.2" stroke-linecap="round" stroke-linejoin="round">
4
+ <path fill="#f59e0b" d="M15 36c0-11 7-18 17-18s17 7 17 18c0 8-7 13-17 13s-17-5-17-13z" />
5
+ <path d="M16 31c-6-5-12-3-12 4 0 5 6 6 11 2" />
6
+ <path d="M48 31c6-5 12-3 12 4 0 5-6 6-11 2" />
7
+ <path d="M27 19l-3-7" />
8
+ <path d="M37 19l3-7" />
9
+ <path d="M19 45l-6 9" />
10
+ <path d="M27 48l-3 9" />
11
+ <path d="M37 48l3 9" />
12
+ <path d="M45 45l6 9" />
13
+ </g>
14
+ <circle cx="24" cy="11" r="3.2" fill="#f59e0b" />
15
+ <circle cx="40" cy="11" r="3.2" fill="#f59e0b" />
16
+ <circle cx="25" cy="34" r="2.1" fill="#111827" />
17
+ <circle cx="39" cy="34" r="2.1" fill="#111827" />
18
+ </svg>
@@ -2,6 +2,7 @@
2
2
  import { Outlet, createRootRoute, HeadContent, Scripts } from "@tanstack/react-router";
3
3
  import type { ReactNode } from "react";
4
4
  import { SWRConfig } from "swr";
5
+ import faviconSvg from "../assets/favicon.svg?url";
5
6
  import appCss from "../index.css?url";
6
7
 
7
8
  export const Route = createRootRoute({
@@ -11,7 +12,10 @@ export const Route = createRootRoute({
11
12
  { name: "viewport", content: "width=device-width, initial-scale=1" },
12
13
  { title: "llm-inspector" },
13
14
  ],
14
- links: [{ rel: "stylesheet", href: appCss }],
15
+ links: [
16
+ { rel: "stylesheet", href: appCss },
17
+ { rel: "icon", type: "image/svg+xml", href: faviconSvg },
18
+ ],
15
19
  }),
16
20
  component: RootComponent,
17
21
  });
@@ -1 +0,0 @@
1
- import{R as s,j as e}from"./main-Br2EjrqZ.js";import{P as i}from"./ProxyViewerContainer-BHm-n-_W.js";function t(){const{sessionId:o}=s.useParams();return e.jsx(i,{initialSessionId:o},o)}export{t as component};
@@ -1 +0,0 @@
1
- import{P as o}from"./ProxyViewerContainer-BHm-n-_W.js";import"./main-Br2EjrqZ.js";const r=o;export{r as component};