@tonyclaw/agent-inspector 2.0.34 → 2.0.36

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 (32) hide show
  1. package/.output/cli.js +19 -1
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-s5T7W5_w.js → CompareDrawer-Bg2mo0NZ.js} +1 -1
  4. package/.output/public/assets/{ProxyViewerContainer-DfGfP9VH.js → ProxyViewerContainer-C_Lq5T5V.js} +9 -9
  5. package/.output/public/assets/{ReplayDialog-DIxp-ccL.js → ReplayDialog-Bns-ayOg.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-tfdpiRgw.js → RequestAnatomy-BBcPAIWx.js} +1 -1
  7. package/.output/public/assets/{ResponseView-DMZp3aLW.js → ResponseView-DSRS3rHt.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-xXzLVw7m.js → StreamingChunkSequence-CzZxKE5-.js} +1 -1
  9. package/.output/public/assets/_sessionId-DurHDwM1.js +1 -0
  10. package/.output/public/assets/index-BfGJEb-2.css +1 -0
  11. package/.output/public/assets/index-sGphugFR.js +1 -0
  12. package/.output/public/assets/{main-DHq8ZD95.js → main-BVKRHBUl.js} +4 -4
  13. package/.output/server/{_sessionId-Bow47H8m.mjs → _sessionId-Dsd36Yhc.mjs} +2 -2
  14. package/.output/server/_ssr/{CompareDrawer-Ctn56NJX.mjs → CompareDrawer-BbJ5UdYD.mjs} +2 -2
  15. package/.output/server/_ssr/{ProxyViewerContainer-DgPsLI2Q.mjs → ProxyViewerContainer-7igCY291.mjs} +14 -6
  16. package/.output/server/_ssr/{ReplayDialog-BD9_rksD.mjs → ReplayDialog-CgWweshq.mjs} +3 -3
  17. package/.output/server/_ssr/{RequestAnatomy-BJyzD8pO.mjs → RequestAnatomy-BAyM_j7a.mjs} +2 -2
  18. package/.output/server/_ssr/{ResponseView-lebGC0QX.mjs → ResponseView-iZQH7EYu.mjs} +2 -2
  19. package/.output/server/_ssr/{StreamingChunkSequence-BcOLywzn.mjs → StreamingChunkSequence-BU6hyHMg.mjs} +2 -2
  20. package/.output/server/_ssr/{index-CgJOsItz.mjs → index-D7QF4E6v.mjs} +2 -2
  21. package/.output/server/_ssr/index.mjs +2 -2
  22. package/.output/server/_ssr/{router-BMv4lGQi.mjs → router-DLLY6gv_.mjs} +17 -4
  23. package/.output/server/{_tanstack-start-manifest_v-D2LyT1-l.mjs → _tanstack-start-manifest_v-CHmIZaVV.mjs} +1 -1
  24. package/.output/server/index.mjs +58 -58
  25. package/README.md +5 -0
  26. package/package.json +1 -1
  27. package/src/cli/templates/codex-skill-onboard.ts +19 -1
  28. package/src/components/providers/SettingsDialog.tsx +10 -0
  29. package/src/router.tsx +17 -0
  30. package/.output/public/assets/_sessionId-Dfxcty_X.js +0 -1
  31. package/.output/public/assets/index-C_8PFAm2.css +0 -1
  32. package/.output/public/assets/index-DztLtWHr.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-DgPsLI2Q.mjs";
3
- import { R as Route$x } from "./_ssr/router-BMv4lGQi.mjs";
2
+ import { P as ProxyViewerContainer } from "./_ssr/ProxyViewerContainer-7igCY291.mjs";
3
+ import { R as Route$x } from "./_ssr/router-DLLY6gv_.mjs";
4
4
  import "./_libs/jszip.mjs";
5
5
  import "./_libs/modelcontextprotocol__server.mjs";
6
6
  import "./_libs/swr.mjs";
@@ -1,6 +1,6 @@
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, J as JsonViewerFromString } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
3
- import "./router-BMv4lGQi.mjs";
2
+ import { g as getLogFormatAdapter, r as resolveLogFormat, a as getConversationId, c as cn, B as Badge, f as formatTokens, J as JsonViewerFromString } from "./ProxyViewerContainer-7igCY291.mjs";
3
+ import "./router-DLLY6gv_.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { X, aa as Rows3, ab as Columns2, r as Minus, P as Plus, m as Pencil, l as ChevronRight, ac as Equal, C as Check, b 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_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, v as packageJson, h as GroupEvidenceExportResultSchema, i as DeleteInspectorGroupResponseSchema, d as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, l as createPendingProviderTestResults, n as ProviderTestResultsSchema, o as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, q as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, j as providerHasContextMetadata, k as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, t as resolveProviderContextWindow, K as KnowledgeCandidateSchema, f as stripClaudeCodeBillingHeader, u as isPlainRecord, G as GroupEvidenceReadResponseSchema, I as InspectorGroupsListResponseSchema } from "./router-BMv4lGQi.mjs";
2
+ import { C as CapturedLogSchema, D as DEFAULT_CAPTURE_MODE, a as DEFAULT_SLOW_RESPONSE_THRESHOLD_SECONDS, b as DEFAULT_PROVIDER_TEST_TIMEOUT_SECONDS, c as DEFAULT_TIME_DISPLAY_FORMAT, v as packageJson, h as GroupEvidenceExportResultSchema, i as DeleteInspectorGroupResponseSchema, d as RuntimeConfigSchema, P as ProviderConfigSchema, r as requestFormatForPath, l as createPendingProviderTestResults, n as ProviderTestResultsSchema, o as createFailedProviderTestResults, M as MAX_SLOW_RESPONSE_THRESHOLD_SECONDS, q as MAX_PROVIDER_TEST_TIMEOUT_SECONDS, T as TimeDisplayFormatSchema, m as maskApiKey, j as providerHasContextMetadata, k as findProviderModelMetadata, g as getSessionPath, p as parseOpenAIResponse, O as OpenAIRequestSchema, A as AnthropicResponseSchema$1, e as AnthropicRequestSchema, s as safeGetOwnProperty, t as resolveProviderContextWindow, K as KnowledgeCandidateSchema, f as stripClaudeCodeBillingHeader, u as isPlainRecord, G as GroupEvidenceReadResponseSchema, I as InspectorGroupsListResponseSchema } from "./router-DLLY6gv_.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";
@@ -1572,19 +1572,19 @@ function useCopyFeedback(text) {
1572
1572
  return { copied, copy };
1573
1573
  }
1574
1574
  const LazyCompareDrawer = reactExports.lazy(
1575
- () => import("./CompareDrawer-Ctn56NJX.mjs").then((m) => ({ default: m.CompareDrawer }))
1575
+ () => import("./CompareDrawer-BbJ5UdYD.mjs").then((m) => ({ default: m.CompareDrawer }))
1576
1576
  );
1577
1577
  const LazyReplayDialog = reactExports.lazy(
1578
- () => import("./ReplayDialog-BD9_rksD.mjs").then((m) => ({ default: m.ReplayDialog }))
1578
+ () => import("./ReplayDialog-CgWweshq.mjs").then((m) => ({ default: m.ReplayDialog }))
1579
1579
  );
1580
1580
  const LazyRequestAnatomy = reactExports.lazy(
1581
- () => import("./RequestAnatomy-BJyzD8pO.mjs").then((m) => ({ default: m.RequestAnatomy }))
1581
+ () => import("./RequestAnatomy-BAyM_j7a.mjs").then((m) => ({ default: m.RequestAnatomy }))
1582
1582
  );
1583
1583
  const LazyResponseView = reactExports.lazy(
1584
- () => import("./ResponseView-lebGC0QX.mjs").then((m) => ({ default: m.ResponseView }))
1584
+ () => import("./ResponseView-iZQH7EYu.mjs").then((m) => ({ default: m.ResponseView }))
1585
1585
  );
1586
1586
  const LazyStreamingChunkSequence = reactExports.lazy(
1587
- () => import("./StreamingChunkSequence-BcOLywzn.mjs").then((m) => ({
1587
+ () => import("./StreamingChunkSequence-BU6hyHMg.mjs").then((m) => ({
1588
1588
  default: m.StreamingChunkSequence
1589
1589
  }))
1590
1590
  );
@@ -8582,6 +8582,14 @@ function OnboardingSettingsTab() {
8582
8582
  /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-emerald-500" }),
8583
8583
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Captured sessions can produce reviewable memory candidates." })
8584
8584
  ] }),
8585
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
8586
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
8587
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
8588
+ "Streamable HTTP clients should use the MCP URL directly. Stdio-only clients should use",
8589
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "mx-1 rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground", children: "agent-inspector-mcp stdio" }),
8590
+ "instead. Configure only one entry for the same Inspector."
8591
+ ] })
8592
+ ] }),
8585
8593
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2", children: [
8586
8594
  /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "mt-0.5 size-3.5 text-emerald-500" }),
8587
8595
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "If your AI tool runs in another container or host, replace localhost with an address reachable from that tool and verify the network/firewall path." })
@@ -1,7 +1,7 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
3
- import { ResponseView } from "./ResponseView-lebGC0QX.mjs";
4
- import { C as CapturedLogSchema } from "./router-BMv4lGQi.mjs";
2
+ import { u as useProviders, D as Dialog, b as DialogContent, d as DialogHeader, e as DialogTitle, T as Tabs, h as TabsList, i as TabsTrigger, j as TabsContent, k as Button, l as TooltipProvider, m as Tooltip, n as TooltipTrigger, o as TooltipContent, p as dispatchLogFocusRequest } from "./ProxyViewerContainer-7igCY291.mjs";
3
+ import { ResponseView } from "./ResponseView-iZQH7EYu.mjs";
4
+ import { C as CapturedLogSchema } from "./router-DLLY6gv_.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import "../_libs/modelcontextprotocol__server.mjs";
7
7
  import { Q as RotateCcw, ad as Braces, ae as Minimize2 } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
3
- import "./router-BMv4lGQi.mjs";
2
+ import { u as useProviders, q as analyzeContextIntelligence, f as formatTokens, l as TooltipProvider, c as cn, m as Tooltip, n as TooltipTrigger, o as TooltipContent, S as SegmentBar, R as ROLE_COLOR_CLASSES, A as ANATOMY_ROLE_LABELS, s as formatContextWindowTokens, C as CONTEXT_USAGE_THRESHOLDS } from "./ProxyViewerContainer-7igCY291.mjs";
3
+ import "./router-DLLY6gv_.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { af as Info, c as ChevronDown, l as ChevronRight } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
3
- import "./router-BMv4lGQi.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, t as getStatusCategory, B as Badge, v as Collapsible, w as CollapsibleTrigger, x as CollapsibleContent, y as ScrollArea, z as JsonViewer, E as safeJsonValue } from "./ProxyViewerContainer-7igCY291.mjs";
3
+ import "./router-DLLY6gv_.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Z as Zap, q as TriangleAlert, ag as CircleStop, B as Brain, c as ChevronDown, l as ChevronRight, f as Terminal } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "../_libs/react.mjs";
2
- import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
3
- import "./router-BMv4lGQi.mjs";
2
+ import { l as TooltipProvider, m as Tooltip, n as TooltipTrigger, B as Badge, o as TooltipContent, z as JsonViewer } from "./ProxyViewerContainer-7igCY291.mjs";
3
+ import "./router-DLLY6gv_.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { c as ChevronDown, l as ChevronRight, a as LoaderCircle } from "../_libs/lucide-react.mjs";
@@ -1,6 +1,6 @@
1
- import { P as ProxyViewerContainer } from "./ProxyViewerContainer-DgPsLI2Q.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-7igCY291.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-BMv4lGQi.mjs";
3
+ import "./router-DLLY6gv_.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-D2LyT1-l.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-CHmIZaVV.mjs");
202
202
  const startManifest = tsrStartManifest();
203
203
  const rootRoute = startManifest.routes[rootRouteId] = startManifest.routes[rootRouteId] || {};
204
204
  rootRoute.assets = rootRoute.assets || [];
@@ -776,7 +776,7 @@ let entriesPromise;
776
776
  let baseManifestPromise;
777
777
  let cachedFinalManifestPromise;
778
778
  async function loadEntries() {
779
- const routerEntry = await import("./router-BMv4lGQi.mjs").then((n) => n.w);
779
+ const routerEntry = await import("./router-DLLY6gv_.mjs").then((n) => n.w);
780
780
  const startEntry = await import("./start-HYkvq4Ni.mjs");
781
781
  return { startEntry, routerEntry };
782
782
  }
@@ -50,7 +50,7 @@ import "../_libs/mimic-function.mjs";
50
50
  import "../_libs/semver.mjs";
51
51
  import "../_libs/uint8array-extras.mjs";
52
52
  const faviconSvg = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2064%2064'%20role='img'%20aria-label='Agent%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%3cpath%20d='M14%2047l9-8%208%209c-5%203.5-12%203-17-1z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M18%2046l5-5%205%206c-3%201.6-7%201.4-10-1z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M23%2041v10'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.6'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='31'%20cy='48'%20r='1.8'%20fill='%23c2412d'%20/%3e%3cpath%20d='M24%2044l13-11%2014%2013c-8%205.8-18%205.3-27-2z'%20fill='%232f6b3f'%20opacity='.97'%20/%3e%3cpath%20d='M30%2043l7-7%209%209c-5%202.7-11%202.5-16-2z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M37%2036v14'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='2'%20stroke-linecap='round'%20/%3e%3cpath%20d='M30%2043c5-2%2011-1.5%2016%202'%20fill='none'%20stroke='%239fca78'%20stroke-width='1.8'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='51'%20cy='46'%20r='2'%20fill='%23c2412d'%20/%3e%3cpath%20d='M40%2050l8-8%207%208c-4.2%203.2-10%203-15%200z'%20fill='%232f6b3f'%20opacity='.95'%20/%3e%3cpath%20d='M43%2049l5-5%204.5%205.5c-3%201.5-6%201.2-9.5-.5z'%20fill='%236fb36f'%20opacity='.95'%20/%3e%3cpath%20d='M48%2044v9'%20fill='none'%20stroke='%23d6b45f'%20stroke-width='1.5'%20stroke-linecap='round'%20/%3e%3ccircle%20cx='55'%20cy='50'%20r='1.7'%20fill='%23c2412d'%20/%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";
53
- const appCss = "/assets/index-C_8PFAm2.css";
53
+ const appCss = "/assets/index-BfGJEb-2.css";
54
54
  const Route$z = createRootRoute({
55
55
  head: () => ({
56
56
  meta: [
@@ -93,7 +93,7 @@ function RootDocument({ children }) {
93
93
  ] })
94
94
  ] });
95
95
  }
96
- const $$splitComponentImporter$1 = () => import("./index-CgJOsItz.mjs");
96
+ const $$splitComponentImporter$1 = () => import("./index-D7QF4E6v.mjs");
97
97
  const Route$y = createFileRoute("/")({
98
98
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
99
99
  });
@@ -136,7 +136,7 @@ function decodeSessionIdFromPath(encoded) {
136
136
  function getSessionPath(sessionId) {
137
137
  return `/session/${encodeSessionIdForPath(sessionId)}`;
138
138
  }
139
- const $$splitComponentImporter = () => import("../_sessionId-Bow47H8m.mjs");
139
+ const $$splitComponentImporter = () => import("../_sessionId-Dsd36Yhc.mjs");
140
140
  const Route$x = createFileRoute("/session/$sessionId")({
141
141
  component: lazyRouteComponent($$splitComponentImporter, "component"),
142
142
  parseParams: (params) => ({
@@ -6096,7 +6096,7 @@ const Route$s = createFileRoute("/api/models")({
6096
6096
  }
6097
6097
  }
6098
6098
  });
6099
- const version = "2.0.34";
6099
+ const version = "2.0.36";
6100
6100
  const packageJson = {
6101
6101
  version
6102
6102
  };
@@ -11695,8 +11695,21 @@ function getRouter() {
11695
11695
  routeTree,
11696
11696
  scrollRestoration: false
11697
11697
  });
11698
+ attachServerSsrStoreCompatibility(router2);
11698
11699
  return router2;
11699
11700
  }
11701
+ function attachServerSsrStoreCompatibility(router2) {
11702
+ const existingStores = Object.getOwnPropertyDescriptor(router2, "stores");
11703
+ if (existingStores !== void 0) return;
11704
+ Object.defineProperty(router2, "stores", {
11705
+ configurable: true,
11706
+ value: {
11707
+ matches: {
11708
+ get: () => router2.state.matches
11709
+ }
11710
+ }
11711
+ });
11712
+ }
11700
11713
  const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11701
11714
  __proto__: null,
11702
11715
  getRouter
@@ -1,4 +1,4 @@
1
- const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/groups", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/runs", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-DHq8ZD95.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-DztLtWHr.js", "/assets/ProxyViewerContainer-DfGfP9VH.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/groups": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.ts", "children": ["/api/groups/$groupId"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/runs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.ts", "children": ["/api/runs/$runId"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-Dfxcty_X.js", "/assets/ProxyViewerContainer-DfGfP9VH.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/groups/$groupId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.ts", "children": ["/api/groups/$groupId/evidence", "/api/groups/$groupId/sessions"] }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/runs/$runId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.$runId.ts", "children": ["/api/runs/$runId/evidence"] }, "/api/groups/$groupId/evidence": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.evidence.ts" }, "/api/groups/$groupId/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.sessions.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/runs/$runId/evidence": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.$runId.evidence.ts" }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-DHq8ZD95.js" });
1
+ const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/config", "/api/groups", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/runs", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-BVKRHBUl.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-sGphugFR.js", "/assets/ProxyViewerContainer-C_Lq5T5V.js"] }, "/api/config": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.ts", "children": ["/api/config/paths"] }, "/api/groups": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.ts", "children": ["/api/groups/$groupId"] }, "/api/health": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/health.ts" }, "/api/logs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.ts", "children": ["/api/logs/$id", "/api/logs/stream"] }, "/api/mcp": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/mcp.ts" }, "/api/models": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/models.ts" }, "/api/providers": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.ts", "children": ["/api/providers/$providerId", "/api/providers/export", "/api/providers/import", "/api/providers/scan"] }, "/api/runs": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.ts", "children": ["/api/runs/$runId"] }, "/api/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/sessions.ts" }, "/proxy/$": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/proxy/$.ts" }, "/session/$sessionId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/session/$sessionId.tsx", "assets": [], "preloads": ["/assets/_sessionId-DurHDwM1.js", "/assets/ProxyViewerContainer-C_Lq5T5V.js"] }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/groups/$groupId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.ts", "children": ["/api/groups/$groupId/evidence", "/api/groups/$groupId/sessions"] }, "/api/knowledge/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.ts", "children": ["/api/knowledge/candidates/$candidateId"] }, "/api/knowledge/project-context": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.project-context.ts" }, "/api/knowledge/search": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.search.ts" }, "/api/logs/$id": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.ts", "children": ["/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/stream": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.stream.ts" }, "/api/providers/$providerId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.ts", "children": ["/api/providers/$providerId/model-metadata", "/api/providers/$providerId/test"] }, "/api/providers/export": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.export.ts" }, "/api/providers/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.import.ts" }, "/api/providers/scan": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.scan.ts" }, "/api/runs/$runId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.$runId.ts", "children": ["/api/runs/$runId/evidence"] }, "/api/groups/$groupId/evidence": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.evidence.ts" }, "/api/groups/$groupId/sessions": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/groups.$groupId.sessions.ts" }, "/api/knowledge/candidates/$candidateId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.ts", "children": ["/api/knowledge/candidates/$candidateId/promote"] }, "/api/logs/$id/chunks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.chunks.ts" }, "/api/logs/$id/replay": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.replay.ts" }, "/api/providers/$providerId/model-metadata": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.model-metadata.ts" }, "/api/providers/$providerId/test": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.ts", "children": ["/api/providers/$providerId/test/log"] }, "/api/runs/$runId/evidence": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/runs.$runId.evidence.ts" }, "/api/knowledge/candidates/$candidateId/promote": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.candidates.$candidateId.promote.ts" }, "/api/knowledge/sessions/$sessionId/candidates": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/knowledge.sessions.$sessionId.candidates.ts" }, "/api/providers/$providerId/test/log": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/providers.$providerId.test.log.ts" } }, "clientEntry": "/assets/main-BVKRHBUl.js" });
2
2
  export {
3
3
  tsrStartManifest
4
4
  };
@@ -38,100 +38,100 @@ const assets = {
38
38
  "/assets/alibaba-TTwafVwX.svg": {
39
39
  "type": "image/svg+xml",
40
40
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
41
- "mtime": "2026-07-01T04:23:14.476Z",
41
+ "mtime": "2026-07-01T04:58:19.201Z",
42
42
  "size": 5915,
43
43
  "path": "../public/assets/alibaba-TTwafVwX.svg"
44
44
  },
45
- "/assets/CompareDrawer-s5T7W5_w.js": {
45
+ "/assets/CompareDrawer-Bg2mo0NZ.js": {
46
46
  "type": "text/javascript; charset=utf-8",
47
- "etag": '"49fe-oHkdb2VBEz+0KprLQlfEGW+A03I"',
48
- "mtime": "2026-07-01T04:23:14.476Z",
47
+ "etag": '"49fe-RCFPReNqO+29uyWqCSboc4eRJiw"',
48
+ "mtime": "2026-07-01T04:58:19.202Z",
49
49
  "size": 18942,
50
- "path": "../public/assets/CompareDrawer-s5T7W5_w.js"
50
+ "path": "../public/assets/CompareDrawer-Bg2mo0NZ.js"
51
51
  },
52
- "/assets/index-C_8PFAm2.css": {
52
+ "/assets/index-BfGJEb-2.css": {
53
53
  "type": "text/css; charset=utf-8",
54
- "etag": '"1ac9e-HNLu+/ctAdlujlPfCr3RCZb1vrw"',
55
- "mtime": "2026-07-01T04:23:14.476Z",
56
- "size": 109726,
57
- "path": "../public/assets/index-C_8PFAm2.css"
58
- },
59
- "/assets/qwen-CONDcHqt.png": {
60
- "type": "image/png",
61
- "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
62
- "mtime": "2026-07-01T04:23:14.476Z",
63
- "size": 357059,
64
- "path": "../public/assets/qwen-CONDcHqt.png"
65
- },
66
- "/assets/ReplayDialog-DIxp-ccL.js": {
67
- "type": "text/javascript; charset=utf-8",
68
- "etag": '"318c-FkArmTYHetSE8PEKlgFl0NkdBmU"',
69
- "mtime": "2026-07-01T04:23:14.476Z",
70
- "size": 12684,
71
- "path": "../public/assets/ReplayDialog-DIxp-ccL.js"
54
+ "etag": '"1acc9-JrjZs7fIRGuBr66cqP9miLHcLKk"',
55
+ "mtime": "2026-07-01T04:58:19.202Z",
56
+ "size": 109769,
57
+ "path": "../public/assets/index-BfGJEb-2.css"
72
58
  },
73
59
  "/assets/minimax-BPMzvuL-.jpeg": {
74
60
  "type": "image/jpeg",
75
61
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
76
- "mtime": "2026-07-01T04:23:14.476Z",
62
+ "mtime": "2026-07-01T04:58:19.201Z",
77
63
  "size": 6918,
78
64
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
79
65
  },
80
- "/assets/index-DztLtWHr.js": {
66
+ "/assets/index-sGphugFR.js": {
81
67
  "type": "text/javascript; charset=utf-8",
82
- "etag": '"74-/Y4bzwSZHTFjGEhoEi+eZFYE6sQ"',
83
- "mtime": "2026-07-01T04:23:14.476Z",
68
+ "etag": '"74-U99mmMNtKqojd/yOIx20tXTHvv0"',
69
+ "mtime": "2026-07-01T04:58:19.202Z",
84
70
  "size": 116,
85
- "path": "../public/assets/index-DztLtWHr.js"
71
+ "path": "../public/assets/index-sGphugFR.js"
72
+ },
73
+ "/assets/ReplayDialog-Bns-ayOg.js": {
74
+ "type": "text/javascript; charset=utf-8",
75
+ "etag": '"318c-PpbkTF95foTOdbkrWMMu2juYBfw"',
76
+ "mtime": "2026-07-01T04:58:19.202Z",
77
+ "size": 12684,
78
+ "path": "../public/assets/ReplayDialog-Bns-ayOg.js"
86
79
  },
87
- "/assets/RequestAnatomy-tfdpiRgw.js": {
80
+ "/assets/RequestAnatomy-BBcPAIWx.js": {
88
81
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"4485-NlzsohxAOR6W6ymlvdljP+oS2JE"',
90
- "mtime": "2026-07-01T04:23:14.477Z",
82
+ "etag": '"4485-1vjOocGpUTcM93Vi7PdBPHFM1B4"',
83
+ "mtime": "2026-07-01T04:58:19.203Z",
91
84
  "size": 17541,
92
- "path": "../public/assets/RequestAnatomy-tfdpiRgw.js"
85
+ "path": "../public/assets/RequestAnatomy-BBcPAIWx.js"
93
86
  },
94
- "/assets/StreamingChunkSequence-xXzLVw7m.js": {
87
+ "/assets/main-BVKRHBUl.js": {
95
88
  "type": "text/javascript; charset=utf-8",
96
- "etag": '"d57-NNAYu93L4OG1D0XRt5goWl3T+xQ"',
97
- "mtime": "2026-07-01T04:23:14.477Z",
98
- "size": 3415,
99
- "path": "../public/assets/StreamingChunkSequence-xXzLVw7m.js"
89
+ "etag": '"517d9-JlNEG3a6o9EldCqhShuLgqml6as"',
90
+ "mtime": "2026-07-01T04:58:19.202Z",
91
+ "size": 333785,
92
+ "path": "../public/assets/main-BVKRHBUl.js"
100
93
  },
101
- "/assets/ResponseView-DMZp3aLW.js": {
94
+ "/assets/ResponseView-DSRS3rHt.js": {
102
95
  "type": "text/javascript; charset=utf-8",
103
- "etag": '"30d0-996y/AlkOJrAiyiM5s0kiAOFWvo"',
104
- "mtime": "2026-07-01T04:23:14.477Z",
96
+ "etag": '"30d0-10JA2gOO6is7MsXilPPj6fWA4d8"',
97
+ "mtime": "2026-07-01T04:58:19.203Z",
105
98
  "size": 12496,
106
- "path": "../public/assets/ResponseView-DMZp3aLW.js"
99
+ "path": "../public/assets/ResponseView-DSRS3rHt.js"
107
100
  },
108
- "/assets/main-DHq8ZD95.js": {
101
+ "/assets/_sessionId-DurHDwM1.js": {
109
102
  "type": "text/javascript; charset=utf-8",
110
- "etag": '"51726-26dSOtFsZbr+iQhmwf/Q8z434Fg"',
111
- "mtime": "2026-07-01T04:23:14.476Z",
112
- "size": 333606,
113
- "path": "../public/assets/main-DHq8ZD95.js"
103
+ "etag": '"d2-QnuU9hk4W1Z+guk3DjKKJHPPTuo"',
104
+ "mtime": "2026-07-01T04:58:19.202Z",
105
+ "size": 210,
106
+ "path": "../public/assets/_sessionId-DurHDwM1.js"
114
107
  },
115
108
  "/assets/zhipuai-BPNAnxo-.svg": {
116
109
  "type": "image/svg+xml",
117
110
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
118
- "mtime": "2026-07-01T04:23:14.476Z",
111
+ "mtime": "2026-07-01T04:58:19.202Z",
119
112
  "size": 11256,
120
113
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
121
114
  },
122
- "/assets/_sessionId-Dfxcty_X.js": {
115
+ "/assets/qwen-CONDcHqt.png": {
116
+ "type": "image/png",
117
+ "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
118
+ "mtime": "2026-07-01T04:58:19.202Z",
119
+ "size": 357059,
120
+ "path": "../public/assets/qwen-CONDcHqt.png"
121
+ },
122
+ "/assets/StreamingChunkSequence-CzZxKE5-.js": {
123
123
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"d2-sKYKR5qLwLwuBh5ylRNXNX6wiq0"',
125
- "mtime": "2026-07-01T04:23:14.476Z",
126
- "size": 210,
127
- "path": "../public/assets/_sessionId-Dfxcty_X.js"
124
+ "etag": '"d57-tTBqrJv/i9tGh9Lr7MzVvOm88mA"',
125
+ "mtime": "2026-07-01T04:58:19.203Z",
126
+ "size": 3415,
127
+ "path": "../public/assets/StreamingChunkSequence-CzZxKE5-.js"
128
128
  },
129
- "/assets/ProxyViewerContainer-DfGfP9VH.js": {
129
+ "/assets/ProxyViewerContainer-C_Lq5T5V.js": {
130
130
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"b565e-C35b5xm64qdL4d+qChRMrg4jp+c"',
132
- "mtime": "2026-07-01T04:23:14.477Z",
133
- "size": 743006,
134
- "path": "../public/assets/ProxyViewerContainer-DfGfP9VH.js"
131
+ "etag": '"b580f-2yWjKUIWYUjOcG8rUV1CazfX92Y"',
132
+ "mtime": "2026-07-01T04:58:19.203Z",
133
+ "size": 743439,
134
+ "path": "../public/assets/ProxyViewerContainer-C_Lq5T5V.js"
135
135
  }
136
136
  };
137
137
  function readAsset(id) {
package/README.md CHANGED
@@ -174,6 +174,11 @@ agent-inspector-mcp config codex
174
174
  The companion package is useful for MCP clients that expect a local command. Direct HTTP remains the
175
175
  shortest path for clients that support Streamable HTTP.
176
176
 
177
+ Use only one transport for the same Inspector instance. If the MCP client supports Streamable HTTP,
178
+ configure `http://localhost:25947/api/mcp` directly. If it only supports stdio, configure
179
+ `agent-inspector-mcp stdio`; that command is only a bridge to `/api/mcp`, not a second Inspector
180
+ server.
181
+
177
182
  Coding agents can use the MCP surface in three ways:
178
183
 
179
184
  - Tools: perform actions such as listing logs, reading bounded log details, testing providers,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "2.0.34",
3
+ "version": "2.0.36",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
@@ -45,6 +45,13 @@ http://localhost:${port}/api/mcp
45
45
  This skill is installed at \`~/.codex/skills/agent-inspector-onboard/SKILL.md\`.
46
46
  Codex user-level configuration lives in \`~/.codex/config.toml\`. Codex supports streamable HTTP MCP servers with \`mcp_servers.<id>.url\`, so no extra stdio bridge package is needed.
47
47
 
48
+ Use exactly one MCP transport for the same Inspector instance:
49
+
50
+ - Streamable HTTP MCP: configure \`url = "http://localhost:${port}/api/mcp"\`.
51
+ - Stdio-only MCP clients: configure \`agent-inspector-mcp stdio --url http://localhost:${port}/api/mcp\`.
52
+
53
+ Do not configure both transports in the same MCP client, or the client may show duplicate Inspector tools.
54
+
48
55
  Keep this setup local and explicit. Agent Inspector MCP tools can read captured requests and provider configuration, so only wire it into trusted local Codex environments.
49
56
 
50
57
  Agent Inspector starts in **Simple mode** by default. Keep Simple mode for everyday capture: requests, responses, tools, timing, and token usage stay available without retaining heavier raw headers, raw response, or detailed SSE chunk artifacts. Use **Full mode** only when the user is debugging provider headers, raw response payloads, or SSE stream details.
@@ -106,7 +113,7 @@ If the health check fails, show only the relevant error and ask whether to diagn
106
113
 
107
114
  Add an \`agent-inspector\` MCP server to \`~/.codex/config.toml\`. Preserve the user's existing config and merge the table instead of replacing the file.
108
115
 
109
- Recommended user-level config:
116
+ Recommended user-level config for Codex builds that support Streamable HTTP MCP:
110
117
 
111
118
  \`\`\`toml
112
119
  [mcp_servers.agent-inspector]
@@ -115,6 +122,16 @@ startup_timeout_sec = 30
115
122
  tool_timeout_sec = 60
116
123
  \`\`\`
117
124
 
125
+ Fallback config for a stdio-only MCP client:
126
+
127
+ \`\`\`toml
128
+ [mcp_servers.agent-inspector]
129
+ command = "agent-inspector-mcp"
130
+ args = ["stdio", "--url", "http://localhost:${port}/api/mcp"]
131
+ \`\`\`
132
+
133
+ The stdio command is only a bridge to the same HTTP MCP endpoint. It does not start a second Inspector server.
134
+
118
135
  If the user's Codex environment is managed by an admin allowlist, they may also need a matching identity rule in the managed requirements layer:
119
136
 
120
137
  \`\`\`toml
@@ -126,6 +143,7 @@ When editing:
126
143
 
127
144
  - Ask before changing \`~/.codex/config.toml\`.
128
145
  - Keep existing \`mcp_servers.*\`, \`projects.*\`, profiles, sandbox, approval, and model settings intact.
146
+ - Remove any duplicate Inspector MCP entry that points to the same \`/api/mcp\` endpoint or runs the same \`agent-inspector-mcp stdio\` bridge under another name.
129
147
  - Do not write provider API keys into Codex config.
130
148
  - Do not expose Agent Inspector MCP beyond localhost.
131
149
 
@@ -335,6 +335,16 @@ function OnboardingSettingsTab(): JSX.Element {
335
335
  <Check className="size-3.5 text-emerald-500" />
336
336
  <span>Captured sessions can produce reviewable memory candidates.</span>
337
337
  </div>
338
+ <div className="flex items-start gap-2">
339
+ <Check className="mt-0.5 size-3.5 text-emerald-500" />
340
+ <span>
341
+ Streamable HTTP clients should use the MCP URL directly. Stdio-only clients should use
342
+ <code className="mx-1 rounded bg-muted px-1 py-0.5 font-mono text-[11px] text-foreground">
343
+ agent-inspector-mcp stdio
344
+ </code>
345
+ instead. Configure only one entry for the same Inspector.
346
+ </span>
347
+ </div>
338
348
  <div className="flex items-start gap-2">
339
349
  <Check className="mt-0.5 size-3.5 text-emerald-500" />
340
350
  <span>
package/src/router.tsx CHANGED
@@ -6,9 +6,26 @@ export function getRouter() {
6
6
  routeTree,
7
7
  scrollRestoration: false,
8
8
  });
9
+ attachServerSsrStoreCompatibility(router);
9
10
  return router;
10
11
  }
11
12
 
13
+ function attachServerSsrStoreCompatibility(
14
+ router: Readonly<{ state: Readonly<{ matches: unknown }> }>,
15
+ ): void {
16
+ const existingStores = Object.getOwnPropertyDescriptor(router, "stores");
17
+ if (existingStores !== undefined) return;
18
+
19
+ Object.defineProperty(router, "stores", {
20
+ configurable: true,
21
+ value: {
22
+ matches: {
23
+ get: () => router.state.matches,
24
+ },
25
+ },
26
+ });
27
+ }
28
+
12
29
  declare module "@tanstack/react-router" {
13
30
  interface Register {
14
31
  router: ReturnType<typeof getRouter>;
@@ -1 +0,0 @@
1
- import{R as s,j as e}from"./main-DHq8ZD95.js";import{P as i}from"./ProxyViewerContainer-DfGfP9VH.js";function t(){const{sessionId:o}=s.useParams();return e.jsx(i,{initialSessionId:o},o)}export{t as component};