@tonyclaw/agent-inspector 2.0.42 → 2.0.43

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/nitro.json +1 -1
  2. package/.output/public/assets/{CompareDrawer-Cfqxlo-U.js → CompareDrawer-CxM1gCfL.js} +1 -1
  3. package/.output/public/assets/{ProxyViewerContainer-CE9pAX4c.js → ProxyViewerContainer-TtRG-0E7.js} +37 -37
  4. package/.output/public/assets/{ReplayDialog-daRidZo_.js → ReplayDialog-UseUkucS.js} +1 -1
  5. package/.output/public/assets/{RequestAnatomy-CJ7EPQGQ.js → RequestAnatomy-aPxgEJ2L.js} +1 -1
  6. package/.output/public/assets/{ResponseView-xBmr54hB.js → ResponseView-DA-F4F97.js} +1 -1
  7. package/.output/public/assets/{StreamingChunkSequence-nK-0LpbM.js → StreamingChunkSequence-JSQEPeNS.js} +1 -1
  8. package/.output/public/assets/_sessionId-BEXuCWq5.js +1 -0
  9. package/.output/public/assets/index-Bhsa_2xX.js +1 -0
  10. package/.output/public/assets/index-DOWlRJ0W.css +1 -0
  11. package/.output/public/assets/{main-DOy_Q96H.js → main-BpGVJcpB.js} +2 -2
  12. package/.output/server/{_sessionId-DtYRZHlM.mjs → _sessionId-DGn-TENM.mjs} +2 -2
  13. package/.output/server/_ssr/{CompareDrawer-fy1ARwtx.mjs → CompareDrawer-CFElCSYY.mjs} +2 -2
  14. package/.output/server/_ssr/{ProxyViewerContainer-9GJtCWCq.mjs → ProxyViewerContainer-B7SR9mrD.mjs} +258 -76
  15. package/.output/server/_ssr/{ReplayDialog-BrS7syOE.mjs → ReplayDialog-DfKapj0k.mjs} +3 -3
  16. package/.output/server/_ssr/{RequestAnatomy-BtWt1cWY.mjs → RequestAnatomy-CUxTCg31.mjs} +2 -2
  17. package/.output/server/_ssr/{ResponseView-CkKGYE6m.mjs → ResponseView-BXY0w197.mjs} +2 -2
  18. package/.output/server/_ssr/{StreamingChunkSequence-C7rB3osr.mjs → StreamingChunkSequence-CzMnES9H.mjs} +2 -2
  19. package/.output/server/_ssr/{index-D24WforP.mjs → index-CVlT-REW.mjs} +2 -2
  20. package/.output/server/_ssr/index.mjs +2 -2
  21. package/.output/server/_ssr/{router-CVqVjBzJ.mjs → router-B2d1LUx6.mjs} +4 -4
  22. package/.output/server/{_tanstack-start-manifest_v-DSikvwru.mjs → _tanstack-start-manifest_v-Drpi28BM.mjs} +1 -1
  23. package/.output/server/index.mjs +61 -61
  24. package/package.json +1 -1
  25. package/src/components/ProxyViewer.tsx +156 -17
  26. package/src/components/ProxyViewerContainer.tsx +66 -4
  27. package/src/components/groups/GroupsDialog.tsx +11 -10
  28. package/src/components/proxy-viewer/LogEntry.tsx +107 -56
  29. package/src/components/ui/dialog.tsx +1 -1
  30. package/.output/public/assets/_sessionId-CbWEG5ej.js +0 -1
  31. package/.output/public/assets/index-BfGJEb-2.css +0 -1
  32. package/.output/public/assets/index-D1MkoT4l.js +0 -1
@@ -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, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as JsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-9GJtCWCq.mjs";
3
- import "./router-CVqVjBzJ.mjs";
2
+ import { g as getLogFormatAdapter, f as formatTokens, c as cn, v as getStatusCategory, B as Badge, w as Collapsible, x as CollapsibleTrigger, y as CollapsibleContent, z as ScrollArea, E as JsonViewer, F as safeJsonValue } from "./ProxyViewerContainer-B7SR9mrD.mjs";
3
+ import "./router-B2d1LUx6.mjs";
4
4
  import "../_libs/modelcontextprotocol__server.mjs";
5
5
  import "../_libs/jszip.mjs";
6
6
  import { Z as Zap, q as TriangleAlert, ah 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 { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as JsonViewer } from "./ProxyViewerContainer-9GJtCWCq.mjs";
3
- import "./router-CVqVjBzJ.mjs";
2
+ import { m as TooltipProvider, n as Tooltip, o as TooltipTrigger, B as Badge, p as TooltipContent, E as JsonViewer } from "./ProxyViewerContainer-B7SR9mrD.mjs";
3
+ import "./router-B2d1LUx6.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-9GJtCWCq.mjs";
1
+ import { P as ProxyViewerContainer } from "./ProxyViewerContainer-B7SR9mrD.mjs";
2
2
  import "../_libs/react.mjs";
3
- import "./router-CVqVjBzJ.mjs";
3
+ import "./router-B2d1LUx6.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-DSikvwru.mjs");
201
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-Drpi28BM.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-CVqVjBzJ.mjs").then((n) => n.w);
779
+ const routerEntry = await import("./router-B2d1LUx6.mjs").then((n) => n.w);
780
780
  const startEntry = await import("./start-HYkvq4Ni.mjs");
781
781
  return { startEntry, routerEntry };
782
782
  }
@@ -65,7 +65,7 @@ import "../_libs/immediate.mjs";
65
65
  import "../_libs/setimmediate.mjs";
66
66
  import "../_libs/pako.mjs";
67
67
  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";
68
- const appCss = "/assets/index-BfGJEb-2.css";
68
+ const appCss = "/assets/index-DOWlRJ0W.css";
69
69
  const Route$z = createRootRoute({
70
70
  head: () => ({
71
71
  meta: [
@@ -108,7 +108,7 @@ function RootDocument({ children }) {
108
108
  ] })
109
109
  ] });
110
110
  }
111
- const $$splitComponentImporter$1 = () => import("./index-D24WforP.mjs");
111
+ const $$splitComponentImporter$1 = () => import("./index-CVlT-REW.mjs");
112
112
  const Route$y = createFileRoute("/")({
113
113
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
114
114
  });
@@ -151,7 +151,7 @@ function decodeSessionIdFromPath(encoded) {
151
151
  function getSessionPath(sessionId) {
152
152
  return `/session/${encodeSessionIdForPath(sessionId)}`;
153
153
  }
154
- const $$splitComponentImporter = () => import("../_sessionId-DtYRZHlM.mjs");
154
+ const $$splitComponentImporter = () => import("../_sessionId-DGn-TENM.mjs");
155
155
  const Route$x = createFileRoute("/session/$sessionId")({
156
156
  component: lazyRouteComponent($$splitComponentImporter, "component"),
157
157
  parseParams: (params) => ({
@@ -6921,7 +6921,7 @@ const Route$s = createFileRoute("/api/models")({
6921
6921
  }
6922
6922
  }
6923
6923
  });
6924
- const version = "2.0.42";
6924
+ const version = "2.0.43";
6925
6925
  const packageJson = {
6926
6926
  version
6927
6927
  };
@@ -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-DOy_Q96H.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-D1MkoT4l.js", "/assets/ProxyViewerContainer-CE9pAX4c.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-CbWEG5ej.js", "/assets/ProxyViewerContainer-CE9pAX4c.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-DOy_Q96H.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-BpGVJcpB.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-Bhsa_2xX.js", "/assets/ProxyViewerContainer-TtRG-0E7.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-BEXuCWq5.js", "/assets/ProxyViewerContainer-TtRG-0E7.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-BpGVJcpB.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-03T01:44:09.155Z",
41
+ "mtime": "2026-07-03T02:24:32.082Z",
42
42
  "size": 5915,
43
43
  "path": "../public/assets/alibaba-TTwafVwX.svg"
44
44
  },
45
- "/assets/index-D1MkoT4l.js": {
45
+ "/assets/CompareDrawer-CxM1gCfL.js": {
46
46
  "type": "text/javascript; charset=utf-8",
47
- "etag": '"74-5tWPGheuXYTT+KVstHwHWELFTpU"',
48
- "mtime": "2026-07-03T01:44:09.155Z",
49
- "size": 116,
50
- "path": "../public/assets/index-D1MkoT4l.js"
51
- },
52
- "/assets/minimax-BPMzvuL-.jpeg": {
53
- "type": "image/jpeg",
54
- "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
55
- "mtime": "2026-07-03T01:44:09.155Z",
56
- "size": 6918,
57
- "path": "../public/assets/minimax-BPMzvuL-.jpeg"
58
- },
59
- "/assets/index-BfGJEb-2.css": {
60
- "type": "text/css; charset=utf-8",
61
- "etag": '"1acc9-JrjZs7fIRGuBr66cqP9miLHcLKk"',
62
- "mtime": "2026-07-03T01:44:09.155Z",
63
- "size": 109769,
64
- "path": "../public/assets/index-BfGJEb-2.css"
65
- },
66
- "/assets/CompareDrawer-Cfqxlo-U.js": {
67
- "type": "text/javascript; charset=utf-8",
68
- "etag": '"49e8-4/OM/oQ2JC3boP6H31ljkTMqaic"',
69
- "mtime": "2026-07-03T01:44:09.157Z",
47
+ "etag": '"49e8-MWCeQ8XhCRwryE9ztGUYYFSWZMU"',
48
+ "mtime": "2026-07-03T02:24:32.084Z",
70
49
  "size": 18920,
71
- "path": "../public/assets/CompareDrawer-Cfqxlo-U.js"
50
+ "path": "../public/assets/CompareDrawer-CxM1gCfL.js"
72
51
  },
73
- "/assets/main-DOy_Q96H.js": {
52
+ "/assets/index-Bhsa_2xX.js": {
74
53
  "type": "text/javascript; charset=utf-8",
75
- "etag": '"517d9-GvqATjRQp0lZCEyGodPErXeDUXg"',
76
- "mtime": "2026-07-03T01:44:09.157Z",
77
- "size": 333785,
78
- "path": "../public/assets/main-DOy_Q96H.js"
54
+ "etag": '"74-FekOZ7LhkvEikN+5Vtic9whLu2c"',
55
+ "mtime": "2026-07-03T02:24:32.084Z",
56
+ "size": 116,
57
+ "path": "../public/assets/index-Bhsa_2xX.js"
79
58
  },
80
- "/assets/ReplayDialog-daRidZo_.js": {
81
- "type": "text/javascript; charset=utf-8",
82
- "etag": '"318c-LNphXs3XdCOanUWleZMjvNJbyo4"',
83
- "mtime": "2026-07-03T01:44:09.155Z",
84
- "size": 12684,
85
- "path": "../public/assets/ReplayDialog-daRidZo_.js"
59
+ "/assets/index-DOWlRJ0W.css": {
60
+ "type": "text/css; charset=utf-8",
61
+ "etag": '"1ad8b-QtGZOCeSfvBzb+puIlHYbHPVBvo"',
62
+ "mtime": "2026-07-03T02:24:32.084Z",
63
+ "size": 109963,
64
+ "path": "../public/assets/index-DOWlRJ0W.css"
86
65
  },
87
- "/assets/StreamingChunkSequence-nK-0LpbM.js": {
66
+ "/assets/ReplayDialog-UseUkucS.js": {
88
67
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"d5c-pin0T6zoaVTMLQgDVheLwJQdCbc"',
90
- "mtime": "2026-07-03T01:44:09.157Z",
91
- "size": 3420,
92
- "path": "../public/assets/StreamingChunkSequence-nK-0LpbM.js"
68
+ "etag": '"318c-kKQJY2fzKwzsc7gAjVFVbioolPs"',
69
+ "mtime": "2026-07-03T02:24:32.084Z",
70
+ "size": 12684,
71
+ "path": "../public/assets/ReplayDialog-UseUkucS.js"
93
72
  },
94
- "/assets/RequestAnatomy-CJ7EPQGQ.js": {
73
+ "/assets/RequestAnatomy-aPxgEJ2L.js": {
95
74
  "type": "text/javascript; charset=utf-8",
96
- "etag": '"4485-sqyRSWpcGItAjW8EQpuyuH2NJkM"',
97
- "mtime": "2026-07-03T01:44:09.157Z",
75
+ "etag": '"4485-mO43pmS8TLLXBnkqeHw5yJys4xE"',
76
+ "mtime": "2026-07-03T02:24:32.084Z",
98
77
  "size": 17541,
99
- "path": "../public/assets/RequestAnatomy-CJ7EPQGQ.js"
78
+ "path": "../public/assets/RequestAnatomy-aPxgEJ2L.js"
100
79
  },
101
- "/assets/ResponseView-xBmr54hB.js": {
80
+ "/assets/ResponseView-DA-F4F97.js": {
102
81
  "type": "text/javascript; charset=utf-8",
103
- "etag": '"30d1-XQa3i7Dl3IpHmJVZY7j7wGeKTWA"',
104
- "mtime": "2026-07-03T01:44:09.157Z",
82
+ "etag": '"30d1-5KGpGiZC9fD4bpancX3Blld/U6c"',
83
+ "mtime": "2026-07-03T02:24:32.084Z",
105
84
  "size": 12497,
106
- "path": "../public/assets/ResponseView-xBmr54hB.js"
85
+ "path": "../public/assets/ResponseView-DA-F4F97.js"
86
+ },
87
+ "/assets/minimax-BPMzvuL-.jpeg": {
88
+ "type": "image/jpeg",
89
+ "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
90
+ "mtime": "2026-07-03T02:24:32.082Z",
91
+ "size": 6918,
92
+ "path": "../public/assets/minimax-BPMzvuL-.jpeg"
93
+ },
94
+ "/assets/StreamingChunkSequence-JSQEPeNS.js": {
95
+ "type": "text/javascript; charset=utf-8",
96
+ "etag": '"d5c-ZXGtNk6QwMMsBCwiFU85hEx0MWk"',
97
+ "mtime": "2026-07-03T02:24:32.084Z",
98
+ "size": 3420,
99
+ "path": "../public/assets/StreamingChunkSequence-JSQEPeNS.js"
107
100
  },
108
101
  "/assets/zhipuai-BPNAnxo-.svg": {
109
102
  "type": "image/svg+xml",
110
103
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
111
- "mtime": "2026-07-03T01:44:09.155Z",
104
+ "mtime": "2026-07-03T02:24:32.082Z",
112
105
  "size": 11256,
113
106
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
114
107
  },
115
- "/assets/_sessionId-CbWEG5ej.js": {
108
+ "/assets/_sessionId-BEXuCWq5.js": {
116
109
  "type": "text/javascript; charset=utf-8",
117
- "etag": '"d2-znIEA1ArIEaTdapPt/+hhunhTEA"',
118
- "mtime": "2026-07-03T01:44:09.155Z",
110
+ "etag": '"d2-exeT3w9Bi3c+xV7elTFmaQnyqhI"',
111
+ "mtime": "2026-07-03T02:24:32.084Z",
119
112
  "size": 210,
120
- "path": "../public/assets/_sessionId-CbWEG5ej.js"
113
+ "path": "../public/assets/_sessionId-BEXuCWq5.js"
114
+ },
115
+ "/assets/main-BpGVJcpB.js": {
116
+ "type": "text/javascript; charset=utf-8",
117
+ "etag": '"517d9-g8ehe8xaUgKICmE82dajQ3Rg1Aw"',
118
+ "mtime": "2026-07-03T02:24:32.084Z",
119
+ "size": 333785,
120
+ "path": "../public/assets/main-BpGVJcpB.js"
121
121
  },
122
122
  "/assets/qwen-CONDcHqt.png": {
123
123
  "type": "image/png",
124
124
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
125
- "mtime": "2026-07-03T01:44:09.155Z",
125
+ "mtime": "2026-07-03T02:24:32.084Z",
126
126
  "size": 357059,
127
127
  "path": "../public/assets/qwen-CONDcHqt.png"
128
128
  },
129
- "/assets/ProxyViewerContainer-CE9pAX4c.js": {
129
+ "/assets/ProxyViewerContainer-TtRG-0E7.js": {
130
130
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"b6dd2-a7szrizd/RNOpvOe2NWIYoJTdEQ"',
132
- "mtime": "2026-07-03T01:44:09.157Z",
133
- "size": 749010,
134
- "path": "../public/assets/ProxyViewerContainer-CE9pAX4c.js"
131
+ "etag": '"b7ea9-7bsvy+ETcxfBpFGaacydCBqQiqA"',
132
+ "mtime": "2026-07-03T02:24:32.084Z",
133
+ "size": 753321,
134
+ "path": "../public/assets/ProxyViewerContainer-TtRG-0E7.js"
135
135
  }
136
136
  };
137
137
  function readAsset(id) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "2.0.42",
3
+ "version": "2.0.43",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
@@ -14,6 +14,7 @@ import {
14
14
  import type { CapturedLog } from "../contracts";
15
15
  import { exportLogsAsZip, type ExportMode } from "../lib/export-logs";
16
16
  import { copyTextToClipboard } from "../lib/clipboard";
17
+ import type { InspectorGroupEvidence, InspectorGroupMember } from "../lib/groupContract";
17
18
  import type { CaptureMode, TimeDisplayFormat } from "../lib/runtimeConfig";
18
19
  import { formatTimestampRange } from "../lib/timeDisplay";
19
20
  import { cn, formatContextWindowTokens, formatTokens } from "../lib/utils";
@@ -86,6 +87,17 @@ export type SessionContextScope = {
86
87
  showBackLink: boolean;
87
88
  };
88
89
 
90
+ export type SessionMembershipEvidence = {
91
+ groupId: string;
92
+ groupTitle: string;
93
+ groupKind: string;
94
+ groupStatus: string;
95
+ groupTask: string | null;
96
+ groupProject: string | null;
97
+ groupEvidence: InspectorGroupEvidence | null;
98
+ member: InspectorGroupMember;
99
+ };
100
+
89
101
  function formatTimeRange(logs: CapturedLog[], timeDisplayFormat: TimeDisplayFormat): string | null {
90
102
  const first = logs[0];
91
103
  const last = logs[logs.length - 1];
@@ -194,6 +206,114 @@ function formatContextWindow(summary: SessionModelContextSummary): string {
194
206
  return `Context window ${formatContextWindowTokens(tokens)}`;
195
207
  }
196
208
 
209
+ const MEMBER_METADATA_KEYS: string[] = [
210
+ "score",
211
+ "decision",
212
+ "final_status",
213
+ "validation_pass_ratio",
214
+ "semantic_memory_score",
215
+ "opencode_exit",
216
+ "actual_model",
217
+ "run_dir",
218
+ "workspace",
219
+ "project_dir",
220
+ "work_dir",
221
+ ];
222
+
223
+ function formatMetadataValue(value: InspectorGroupMember["metadata"][string]): string | null {
224
+ if (typeof value === "string") return value.length > 0 ? value : null;
225
+ if (typeof value === "number" || typeof value === "boolean") return String(value);
226
+ if (value === null) return null;
227
+ return JSON.stringify(value);
228
+ }
229
+
230
+ function getMemberMetadataRows(member: InspectorGroupMember): { key: string; value: string }[] {
231
+ const rows: { key: string; value: string }[] = [];
232
+ for (const key of MEMBER_METADATA_KEYS) {
233
+ const value = member.metadata[key];
234
+ if (value === undefined) continue;
235
+ const formatted = formatMetadataValue(value);
236
+ if (formatted !== null) rows.push({ key, value: formatted });
237
+ }
238
+ return rows;
239
+ }
240
+
241
+ function SessionMembershipPanel({
242
+ memberships,
243
+ }: {
244
+ memberships: SessionMembershipEvidence[];
245
+ }): JSX.Element | null {
246
+ if (memberships.length === 0) return null;
247
+
248
+ return (
249
+ <div className="mb-4 rounded-md border border-border bg-muted/10 px-3 py-2 text-xs">
250
+ <div className="mb-2 flex items-center justify-between gap-2">
251
+ <div className="font-semibold text-foreground">Group Member Evidence</div>
252
+ <div className="font-mono text-[10px] text-muted-foreground">
253
+ {memberships.length} group{memberships.length === 1 ? "" : "s"}
254
+ </div>
255
+ </div>
256
+ <div className="space-y-2">
257
+ {memberships.map((membership) => {
258
+ const member = membership.member;
259
+ const metadataRows = getMemberMetadataRows(member);
260
+ return (
261
+ <div key={`${membership.groupId}:${member.id}`} className="min-w-0">
262
+ <div className="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
263
+ <span
264
+ className="truncate font-medium text-foreground"
265
+ title={membership.groupTitle}
266
+ >
267
+ {membership.groupTitle}
268
+ </span>
269
+ <span className="font-mono text-[10px] uppercase text-muted-foreground">
270
+ {membership.groupStatus}
271
+ </span>
272
+ {member.status !== null && (
273
+ <span className="font-mono text-[10px] text-muted-foreground">
274
+ member {member.status}
275
+ </span>
276
+ )}
277
+ </div>
278
+ <div className="mt-1 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground">
279
+ <span className="font-mono" title={member.sessionId}>
280
+ {truncateSessionId(member.sessionId)}
281
+ </span>
282
+ {member.label !== null && <span>{member.label}</span>}
283
+ {member.provider !== null && <span>{member.provider}</span>}
284
+ {member.model !== null && <span className="font-mono">{member.model}</span>}
285
+ {member.runId !== null && (
286
+ <span className="font-mono" title={member.runId}>
287
+ run {truncateSessionId(member.runId)}
288
+ </span>
289
+ )}
290
+ </div>
291
+ {metadataRows.length > 0 && (
292
+ <div className="mt-2 grid gap-1 sm:grid-cols-2 xl:grid-cols-3">
293
+ {metadataRows.map((row) => (
294
+ <div
295
+ key={row.key}
296
+ className="min-w-0 rounded border border-border/60 px-2 py-1"
297
+ >
298
+ <div className="font-mono text-[10px] text-muted-foreground">{row.key}</div>
299
+ <div
300
+ className="truncate font-mono text-[11px] text-foreground"
301
+ title={row.value}
302
+ >
303
+ {row.value}
304
+ </div>
305
+ </div>
306
+ ))}
307
+ </div>
308
+ )}
309
+ </div>
310
+ );
311
+ })}
312
+ </div>
313
+ </div>
314
+ );
315
+ }
316
+
197
317
  function formatRequestCount(count: number): string {
198
318
  return `${count} ${count === 1 ? "request" : "requests"}`;
199
319
  }
@@ -641,6 +761,10 @@ export type ProxyViewerProps = {
641
761
  slowResponseThresholdSeconds: number;
642
762
  /** Controls whether timestamps render as compact local time or full ISO strings. */
643
763
  timeDisplayFormat: TimeDisplayFormat;
764
+ /** True while a pinned session page is waiting for its initial log scan. */
765
+ isLoading?: boolean;
766
+ /** Group/run member metadata attached to the pinned session id. */
767
+ sessionMemberships?: SessionMembershipEvidence[];
644
768
  /** Hide the session filter dropdown. Used on `/session/$id` routes where
645
769
  * the session is already pinned by the URL and the dropdown would just
646
770
  * fight the URL state. */
@@ -665,6 +789,8 @@ export function ProxyViewer({
665
789
  strip,
666
790
  slowResponseThresholdSeconds,
667
791
  timeDisplayFormat,
792
+ isLoading = false,
793
+ sessionMemberships = [],
668
794
  hideSessionFilter = false,
669
795
  pinnedSessionId,
670
796
  }: ProxyViewerProps): JSX.Element {
@@ -841,6 +967,10 @@ export function ProxyViewer({
841
967
  />
842
968
  )}
843
969
 
970
+ {hasSessionContext && pinnedSessionId !== undefined && sessionMemberships.length > 0 && (
971
+ <SessionMembershipPanel memberships={sessionMemberships} />
972
+ )}
973
+
844
974
  {/* Controls + Filters */}
845
975
  <div className="flex items-center gap-3 mb-4">
846
976
  {!hideSessionFilter && (
@@ -972,26 +1102,35 @@ export function ProxyViewer({
972
1102
  {logs.length === 0 ? (
973
1103
  selectedSession !== "__all__" ? (
974
1104
  <div className="text-center text-muted-foreground py-16 space-y-4">
975
- <p className="text-sm font-medium">Session not found</p>
1105
+ <p className="text-sm font-medium">
1106
+ {isLoading ? "Loading session data..." : "Session not found"}
1107
+ </p>
976
1108
  <p className="text-xs font-mono bg-muted px-3 py-1 rounded inline-block max-w-[500px] break-all">
977
1109
  {truncateSessionId(selectedSession)}
978
1110
  </p>
979
- <p className="text-xs">
980
- This session may have been cleared or never existed.{" "}
981
- {hideSessionFilter ? (
982
- <a href="/" className="underline hover:text-foreground transition-colors">
983
- Back to all sessions
984
- </a>
985
- ) : (
986
- <button
987
- type="button"
988
- onClick={() => onSessionChange("__all__")}
989
- className="underline hover:text-foreground transition-colors"
990
- >
991
- Show all sessions
992
- </button>
993
- )}
994
- </p>
1111
+ {sessionMemberships.length > 0 && (
1112
+ <div className="mx-auto max-w-3xl text-left">
1113
+ <SessionMembershipPanel memberships={sessionMemberships} />
1114
+ </div>
1115
+ )}
1116
+ {!isLoading && (
1117
+ <p className="text-xs">
1118
+ This session may have been cleared or never existed.{" "}
1119
+ {hideSessionFilter ? (
1120
+ <a href="/" className="underline hover:text-foreground transition-colors">
1121
+ Back to all sessions
1122
+ </a>
1123
+ ) : (
1124
+ <button
1125
+ type="button"
1126
+ onClick={() => onSessionChange("__all__")}
1127
+ className="underline hover:text-foreground transition-colors"
1128
+ >
1129
+ Show all sessions
1130
+ </button>
1131
+ )}
1132
+ </p>
1133
+ )}
995
1134
  </div>
996
1135
  ) : (
997
1136
  <div className="text-center text-muted-foreground py-16 space-y-4">