@tonyclaw/agent-inspector 3.0.12 → 3.0.14

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 (40) hide show
  1. package/.output/cli.js +72 -6
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-BxgmeTyv.js → CompareDrawer-DDfwHQUi.js} +1 -1
  4. package/.output/public/assets/{ProxyViewerContainer-CchT6T-4.js → ProxyViewerContainer-CbNsaoQw.js} +41 -41
  5. package/.output/public/assets/{ReplayDialog-CMHVUtVB.js → ReplayDialog-D-26DMBt.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-CpqHIkD1.js → RequestAnatomy-B6zNFqNX.js} +1 -1
  7. package/.output/public/assets/{ResponseView-BvhBiQ5k.js → ResponseView-Ccy95rWI.js} +2 -2
  8. package/.output/public/assets/{StreamingChunkSequence-CcNvFNPp.js → StreamingChunkSequence-yIiscGuE.js} +1 -1
  9. package/.output/public/assets/{_sessionId-D5z6C77f.js → _sessionId-BnMB0zab.js} +1 -1
  10. package/.output/public/assets/index-49RC4dlD.js +1 -0
  11. package/.output/public/assets/{index-CXcH69lm.js → index-BbtAIxbg.js} +1 -1
  12. package/.output/public/assets/index-DXKupW0r.css +1 -0
  13. package/.output/public/assets/{json-viewer-DjRQ00mw.js → json-viewer-C838cVmD.js} +1 -1
  14. package/.output/public/assets/{main-CkKubKth.js → main-BfN4culo.js} +2 -2
  15. package/.output/server/_libs/lucide-react.mjs +33 -33
  16. package/.output/server/{_sessionId-IP7wEbnv.mjs → _sessionId-DoprmwZV.mjs} +3 -3
  17. package/.output/server/_ssr/{CompareDrawer-B4qTq3I9.mjs → CompareDrawer-YMLJNxXR.mjs} +3 -3
  18. package/.output/server/_ssr/{ProxyViewerContainer-CCIJ1EcB.mjs → ProxyViewerContainer-C62eZnva.mjs} +215 -24
  19. package/.output/server/_ssr/{ReplayDialog-BgxCdCxM.mjs → ReplayDialog-NmN7Ukjo.mjs} +3 -3
  20. package/.output/server/_ssr/{RequestAnatomy-De3QDi_x.mjs → RequestAnatomy-Dawm2qxe.mjs} +2 -2
  21. package/.output/server/_ssr/{ResponseView-Dvibk8g5.mjs → ResponseView-BHyAY83t.mjs} +3 -3
  22. package/.output/server/_ssr/{StreamingChunkSequence-oAsweEag.mjs → StreamingChunkSequence-C4qgcJbg.mjs} +2 -2
  23. package/.output/server/_ssr/{index-BIlK7gMO.mjs → index-B2Pf6W_T.mjs} +2 -2
  24. package/.output/server/_ssr/index.mjs +2 -2
  25. package/.output/server/_ssr/{json-viewer-Dgo4oRbs.mjs → json-viewer-u67BASf8.mjs} +3 -3
  26. package/.output/server/_ssr/{router-DY_2TxnZ.mjs → router-CZhFVMGN.mjs} +267 -111
  27. package/.output/server/_tanstack-start-manifest_v-Dk2HfOoe.mjs +4 -0
  28. package/.output/server/index.mjs +73 -73
  29. package/README.md +32 -9
  30. package/package.json +1 -1
  31. package/src/cli.ts +95 -11
  32. package/src/components/ecosystem/AgentLabDialog.tsx +221 -10
  33. package/src/lib/ecosystemContract.ts +21 -1
  34. package/src/proxy/ecosystemRegistry.ts +52 -0
  35. package/src/proxy/ecosystemTasks.ts +95 -1
  36. package/src/routes/api/ecosystem.packages.ts +2 -1
  37. package/src/routes/api/ecosystem.recipes.$recipeId.run.ts +16 -0
  38. package/.output/public/assets/index-BIgsQvaF.css +0 -1
  39. package/.output/public/assets/index-C57MERBU.js +0 -1
  40. package/.output/server/_tanstack-start-manifest_v-CYOwyBpv.mjs +0 -4
@@ -0,0 +1,4 @@
1
+ const tsrStartManifest = () => ({ "routes": { "__root__": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/__root.tsx", "children": ["/", "/api/alerts", "/api/config", "/api/groups", "/api/health", "/api/logs", "/api/mcp", "/api/models", "/api/providers", "/api/runs", "/api/sessions", "/proxy/$", "/session/$sessionId", "/api/ecosystem/packages", "/api/ecosystem/tasks", "/api/knowledge/candidates", "/api/knowledge/project-context", "/api/knowledge/search", "/api/ecosystem/recipes/$recipeId/run", "/api/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-BfN4culo.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-49RC4dlD.js", "/assets/ProxyViewerContainer-CbNsaoQw.js"] }, "/api/alerts": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/alerts.ts", "children": ["/api/alerts/summary"] }, "/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/import", "/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-BnMB0zab.js", "/assets/ProxyViewerContainer-CbNsaoQw.js"] }, "/api/alerts/summary": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/alerts.summary.ts" }, "/api/config/paths": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/config.paths.ts" }, "/api/ecosystem/packages": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.packages.ts", "children": ["/api/ecosystem/packages/$packageId/help", "/api/ecosystem/packages/$packageId/install", "/api/ecosystem/packages/$packageId/runner-presets", "/api/ecosystem/packages/$packageId/upgrade"] }, "/api/ecosystem/tasks": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.tasks.ts", "children": ["/api/ecosystem/tasks/$taskId"] }, "/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/body", "/api/logs/$id/chunks", "/api/logs/$id/replay"] }, "/api/logs/import": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.import.ts" }, "/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/ecosystem/tasks/$taskId": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.tasks.$taskId.ts" }, "/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/body": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/logs.$id.body.ts" }, "/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/ecosystem/packages/$packageId/help": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.packages.$packageId.help.ts" }, "/api/ecosystem/packages/$packageId/install": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.packages.$packageId.install.ts" }, "/api/ecosystem/packages/$packageId/runner-presets": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.packages.$packageId.runner-presets.ts" }, "/api/ecosystem/packages/$packageId/upgrade": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.packages.$packageId.upgrade.ts" }, "/api/ecosystem/recipes/$recipeId/run": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/api/ecosystem.recipes.$recipeId.run.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-BfN4culo.js" });
2
+ export {
3
+ tsrStartManifest
4
+ };
@@ -38,121 +38,121 @@ const assets = {
38
38
  "/assets/agent-inspector-58K1_MsC.ico": {
39
39
  "type": "image/vnd.microsoft.icon",
40
40
  "etag": '"38fa-ZD8kPABHYjPIkcH82FMY6iZM7fI"',
41
- "mtime": "2026-07-07T12:05:50.812Z",
41
+ "mtime": "2026-07-08T01:38:53.683Z",
42
42
  "size": 14586,
43
43
  "path": "../public/assets/agent-inspector-58K1_MsC.ico"
44
44
  },
45
- "/assets/alibaba-TTwafVwX.svg": {
46
- "type": "image/svg+xml",
47
- "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
48
- "mtime": "2026-07-07T12:05:50.812Z",
49
- "size": 5915,
50
- "path": "../public/assets/alibaba-TTwafVwX.svg"
51
- },
52
- "/assets/index-C57MERBU.js": {
45
+ "/assets/index-BbtAIxbg.js": {
53
46
  "type": "text/javascript; charset=utf-8",
54
- "etag": '"74-qCOkCauMn0Kq1zsDqIpnFZ0QZ/4"',
55
- "mtime": "2026-07-07T12:05:50.813Z",
56
- "size": 116,
57
- "path": "../public/assets/index-C57MERBU.js"
47
+ "etag": '"1cd2c-9sotzEOJt7YobaV9zbPeMBhUgKQ"',
48
+ "mtime": "2026-07-08T01:38:53.685Z",
49
+ "size": 118060,
50
+ "path": "../public/assets/index-BbtAIxbg.js"
58
51
  },
59
- "/assets/CompareDrawer-BxgmeTyv.js": {
52
+ "/assets/CompareDrawer-DDfwHQUi.js": {
60
53
  "type": "text/javascript; charset=utf-8",
61
- "etag": '"4bc3-is5tqPQKWqhKSLXsHumbszv93wA"',
62
- "mtime": "2026-07-07T12:05:50.813Z",
54
+ "etag": '"4bc3-V5X3VhcIpOcGi/B6cXBW6SUb4h4"',
55
+ "mtime": "2026-07-08T01:38:53.685Z",
63
56
  "size": 19395,
64
- "path": "../public/assets/CompareDrawer-BxgmeTyv.js"
57
+ "path": "../public/assets/CompareDrawer-DDfwHQUi.js"
65
58
  },
66
- "/assets/json-viewer-DjRQ00mw.js": {
59
+ "/assets/index-49RC4dlD.js": {
67
60
  "type": "text/javascript; charset=utf-8",
68
- "etag": '"1ae6-2DrfvJk7R1yiImvRe/hUgT5pWtM"',
69
- "mtime": "2026-07-07T12:05:50.813Z",
70
- "size": 6886,
71
- "path": "../public/assets/json-viewer-DjRQ00mw.js"
72
- },
73
- "/assets/index-BIgsQvaF.css": {
74
- "type": "text/css; charset=utf-8",
75
- "etag": '"23c25-AyhoABstT65ludnAAzbIkqX0g+A"',
76
- "mtime": "2026-07-07T12:05:50.813Z",
77
- "size": 146469,
78
- "path": "../public/assets/index-BIgsQvaF.css"
61
+ "etag": '"74-GlRn93aSVOHR0mfj+RCxQ60Mu3o"',
62
+ "mtime": "2026-07-08T01:38:53.685Z",
63
+ "size": 116,
64
+ "path": "../public/assets/index-49RC4dlD.js"
79
65
  },
80
- "/assets/index-CXcH69lm.js": {
66
+ "/assets/json-viewer-C838cVmD.js": {
81
67
  "type": "text/javascript; charset=utf-8",
82
- "etag": '"1cd2c-AkEPKLC2Pdi2HdDYJtsfe//U2Xc"',
83
- "mtime": "2026-07-07T12:05:50.813Z",
84
- "size": 118060,
85
- "path": "../public/assets/index-CXcH69lm.js"
68
+ "etag": '"1ae6-quOA6edv0/Es47habtmdRT7jfNc"',
69
+ "mtime": "2026-07-08T01:38:53.685Z",
70
+ "size": 6886,
71
+ "path": "../public/assets/json-viewer-C838cVmD.js"
86
72
  },
87
73
  "/assets/minimax-BPMzvuL-.jpeg": {
88
74
  "type": "image/jpeg",
89
75
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
90
- "mtime": "2026-07-07T12:05:50.812Z",
76
+ "mtime": "2026-07-08T01:38:53.683Z",
91
77
  "size": 6918,
92
78
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
93
79
  },
94
- "/assets/ReplayDialog-CMHVUtVB.js": {
95
- "type": "text/javascript; charset=utf-8",
96
- "etag": '"3347-httGBIkl8o9TWRveRd5+mBu5ZJE"',
97
- "mtime": "2026-07-07T12:05:50.813Z",
98
- "size": 13127,
99
- "path": "../public/assets/ReplayDialog-CMHVUtVB.js"
80
+ "/assets/alibaba-TTwafVwX.svg": {
81
+ "type": "image/svg+xml",
82
+ "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
83
+ "mtime": "2026-07-08T01:38:53.683Z",
84
+ "size": 5915,
85
+ "path": "../public/assets/alibaba-TTwafVwX.svg"
100
86
  },
101
- "/assets/main-CkKubKth.js": {
87
+ "/assets/ReplayDialog-D-26DMBt.js": {
102
88
  "type": "text/javascript; charset=utf-8",
103
- "etag": '"512fd-byS36ehXW6dq9HoTFkcvTxk1K1M"',
104
- "mtime": "2026-07-07T12:05:50.813Z",
105
- "size": 332541,
106
- "path": "../public/assets/main-CkKubKth.js"
89
+ "etag": '"3347-aZE+Q0LWYe8L0W8182RYkrLiGmQ"',
90
+ "mtime": "2026-07-08T01:38:53.685Z",
91
+ "size": 13127,
92
+ "path": "../public/assets/ReplayDialog-D-26DMBt.js"
107
93
  },
108
- "/assets/RequestAnatomy-CpqHIkD1.js": {
109
- "type": "text/javascript; charset=utf-8",
110
- "etag": '"43f2-StkDnFArsCZwt+qgZegXnv+PKZs"',
111
- "mtime": "2026-07-07T12:05:50.813Z",
112
- "size": 17394,
113
- "path": "../public/assets/RequestAnatomy-CpqHIkD1.js"
94
+ "/assets/index-DXKupW0r.css": {
95
+ "type": "text/css; charset=utf-8",
96
+ "etag": '"23dd5-TDREYsXzXS8z4xFgQFr1UWJvDXE"',
97
+ "mtime": "2026-07-08T01:38:53.685Z",
98
+ "size": 146901,
99
+ "path": "../public/assets/index-DXKupW0r.css"
114
100
  },
115
- "/assets/StreamingChunkSequence-CcNvFNPp.js": {
101
+ "/assets/main-BfN4culo.js": {
116
102
  "type": "text/javascript; charset=utf-8",
117
- "etag": '"e95-7Xm6a18crTzmPL0R4R6mCtx7R10"',
118
- "mtime": "2026-07-07T12:05:50.813Z",
119
- "size": 3733,
120
- "path": "../public/assets/StreamingChunkSequence-CcNvFNPp.js"
103
+ "etag": '"512fd-Lx/1rDXGJqcCtEnfodu55luhvMs"',
104
+ "mtime": "2026-07-08T01:38:53.685Z",
105
+ "size": 332541,
106
+ "path": "../public/assets/main-BfN4culo.js"
121
107
  },
122
- "/assets/_sessionId-D5z6C77f.js": {
108
+ "/assets/_sessionId-BnMB0zab.js": {
123
109
  "type": "text/javascript; charset=utf-8",
124
- "etag": '"36c-vSt7tJ0oCwR+jhLkE51BDj2yxgA"',
125
- "mtime": "2026-07-07T12:05:50.813Z",
110
+ "etag": '"36c-vmwadBttRO2Tr8uyzA9ILlXMGRg"',
111
+ "mtime": "2026-07-08T01:38:53.685Z",
126
112
  "size": 876,
127
- "path": "../public/assets/_sessionId-D5z6C77f.js"
113
+ "path": "../public/assets/_sessionId-BnMB0zab.js"
128
114
  },
129
- "/assets/ResponseView-BvhBiQ5k.js": {
115
+ "/assets/RequestAnatomy-B6zNFqNX.js": {
130
116
  "type": "text/javascript; charset=utf-8",
131
- "etag": '"47fc-q737C36wyDb/lEJV2Wh3irlNMRk"',
132
- "mtime": "2026-07-07T12:05:50.813Z",
133
- "size": 18428,
134
- "path": "../public/assets/ResponseView-BvhBiQ5k.js"
117
+ "etag": '"43f2-FB7RmmcasRWbq5XlMj8Lfh/HgFQ"',
118
+ "mtime": "2026-07-08T01:38:53.685Z",
119
+ "size": 17394,
120
+ "path": "../public/assets/RequestAnatomy-B6zNFqNX.js"
135
121
  },
136
122
  "/assets/zhipuai-BPNAnxo-.svg": {
137
123
  "type": "image/svg+xml",
138
124
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
139
- "mtime": "2026-07-07T12:05:50.813Z",
125
+ "mtime": "2026-07-08T01:38:53.683Z",
140
126
  "size": 11256,
141
127
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
142
128
  },
129
+ "/assets/StreamingChunkSequence-yIiscGuE.js": {
130
+ "type": "text/javascript; charset=utf-8",
131
+ "etag": '"e95-KIXlCdHgHnZGrDZTGIAMwgHzmp0"',
132
+ "mtime": "2026-07-08T01:38:53.685Z",
133
+ "size": 3733,
134
+ "path": "../public/assets/StreamingChunkSequence-yIiscGuE.js"
135
+ },
136
+ "/assets/ResponseView-Ccy95rWI.js": {
137
+ "type": "text/javascript; charset=utf-8",
138
+ "etag": '"47fc-yKb5jKw9a0d9bY9FAp9fSDXbR5U"',
139
+ "mtime": "2026-07-08T01:38:53.685Z",
140
+ "size": 18428,
141
+ "path": "../public/assets/ResponseView-Ccy95rWI.js"
142
+ },
143
143
  "/assets/qwen-CONDcHqt.png": {
144
144
  "type": "image/png",
145
145
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
146
- "mtime": "2026-07-07T12:05:50.813Z",
146
+ "mtime": "2026-07-08T01:38:53.685Z",
147
147
  "size": 357059,
148
148
  "path": "../public/assets/qwen-CONDcHqt.png"
149
149
  },
150
- "/assets/ProxyViewerContainer-CchT6T-4.js": {
150
+ "/assets/ProxyViewerContainer-CbNsaoQw.js": {
151
151
  "type": "text/javascript; charset=utf-8",
152
- "etag": '"b658d-AkoAKD2VyL1sxEAIYFjHKCh9724"',
153
- "mtime": "2026-07-07T12:05:50.813Z",
154
- "size": 746893,
155
- "path": "../public/assets/ProxyViewerContainer-CchT6T-4.js"
152
+ "etag": '"b78b9-I8pfWqThohzWE1l5xMxqDA+96Pw"',
153
+ "mtime": "2026-07-08T01:38:53.685Z",
154
+ "size": 751801,
155
+ "path": "../public/assets/ProxyViewerContainer-CbNsaoQw.js"
156
156
  }
157
157
  };
158
158
  function readAsset(id) {
package/README.md CHANGED
@@ -130,15 +130,14 @@ The web UI runs at http://localhost:9527. The public proxy endpoint is also
130
130
  `http://localhost:9527/proxy`; internally Agent Inspector may run the app on a private helper port,
131
131
  but AI tools should use the public URL printed by the CLI.
132
132
 
133
- For v3 compatibility, the packaged CLI also keeps `http://localhost:25947` open as a legacy alias
134
- when it starts on the default port. Existing AI tool and MCP configs that still point at `25947`
135
- continue to work for now, but new configs should use `9527`.
133
+ The legacy `http://localhost:25947` port is closed by default. If you need a temporary alias for
134
+ older AI tool or MCP configs, start with `agent-inspector --legacy-port`.
136
135
 
137
136
  ## v3.0 Port Migration
138
137
 
139
- Agent Inspector v3.0 changes the default public port from `25947` to `9527`. The packaged CLI keeps
140
- `25947` as a legacy alias when you run the default `agent-inspector` command, so existing AI coding
141
- tool and MCP configs do not need to be edited immediately.
138
+ Agent Inspector v3.0 changes the default public port from `25947` to `9527`. The packaged CLI now
139
+ opens only `9527` by default. Existing AI coding tool and MCP configs that still point at `25947`
140
+ should be moved to `9527`, or you can temporarily start with `agent-inspector --legacy-port`.
142
141
 
143
142
  Use these endpoints for new configs:
144
143
 
@@ -147,7 +146,7 @@ Use these endpoints for new configs:
147
146
  - OpenAI-compatible `/v1` proxy: `http://localhost:9527/proxy/v1`
148
147
  - MCP: `http://localhost:9527/api/mcp`
149
148
 
150
- If you intentionally want only the new port, start with `agent-inspector --no-legacy-port`.
149
+ If you intentionally need the old compatibility port, start with `agent-inspector --legacy-port`.
151
150
 
152
151
  For Codex-style OpenAI Responses clients, configure the proxy as an OpenAI-compatible `/v1` base:
153
152
 
@@ -267,8 +266,8 @@ configure `http://localhost:9527/api/mcp` directly. If it only supports stdio, c
267
266
  `agent-inspector-mcp stdio`; that command is only a bridge to `/api/mcp`, not a second Inspector
268
267
  server.
269
268
 
270
- Legacy MCP configs that still use `http://localhost:25947/api/mcp` are accepted by the default v3
271
- CLI alias during the compatibility window.
269
+ Legacy MCP configs that still use `http://localhost:25947/api/mcp` require starting the CLI with
270
+ `agent-inspector --legacy-port`; new configs should use `http://localhost:9527/api/mcp`.
272
271
 
273
272
  Coding agents can use the MCP surface in three ways:
274
273
 
@@ -358,6 +357,30 @@ Built-in prompt templates help turn captured evidence into user-facing output:
358
357
  - `inspector_generate_group_report`: produce a provider/model evaluation report for a group.
359
358
  - `inspector_extract_repro_steps`: extract concise reproduction steps from a session.
360
359
 
360
+ ## TonyClaw Lab Ecosystem
361
+
362
+ TonyClaw Lab turns Inspector into a local control panel for the TonyClaw npm ecosystem. The UI shows
363
+ installed and latest package status for `@tonyclaw/agent-inspector`,
364
+ `@tonyclaw/agent-inspector-mcp`, and `@tonyclaw/eval-harness`; it can launch install, upgrade,
365
+ help, preset discovery, and safe smoke-test recipes without leaving Inspector.
366
+
367
+ The Lab also exposes copy-ready recipes that connect Inspector evidence, MCP checks, and evaluation
368
+ runners:
369
+
370
+ ```bash
371
+ npx @tonyclaw/eval-harness check-inspector-mcp
372
+ npx @tonyclaw/eval-harness inspector-smoke --title "TonyClaw Lab smoke" --latest-log-limit 5
373
+ npx @tonyclaw/eval-harness runner-presets --format json
374
+ npx @tonyclaw/eval-harness run-once --smoke --project-source <project> --work-source <work> --count 1 --parallel 1
375
+ ```
376
+
377
+ Use these recipes as stable starting points for CI smoke tests, local provider checks, and
378
+ multi-run evaluation batches. Inspector remains the evidence surface; eval-harness drives repeatable
379
+ workloads; the MCP package bridges coding agents that prefer stdio.
380
+
381
+ Recipes without placeholders can be run directly from TonyClaw Lab. Template recipes remain
382
+ copy-ready so users can fill project and work directories explicitly before running them.
383
+
361
384
  ## Jenkins And GitCode
362
385
 
363
386
  Team CI, GitCode WebHook setup, Cloudflare Tunnel notes, local push fallback, and the verified PR workflow live in [Jenkins + GitCode WebHook](docs/JENKINS_GITCODE_WEBHOOK_TUNNEL.md). Keep real Jenkins notify tokens, GitCode access tokens, and tunnel URLs out of the repository.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/agent-inspector",
3
- "version": "3.0.12",
3
+ "version": "3.0.14",
4
4
  "type": "module",
5
5
  "description": "Agent observability and knowledge capture layer for AI coding tools.",
6
6
  "license": "MIT",
package/src/cli.ts CHANGED
@@ -24,10 +24,10 @@ import { findPidsByPort, killPid, openUrlCommand } from "./proxy/platformCommand
24
24
  const __filename = fileURLToPath(import.meta.url);
25
25
  const __dirname = dirname(__filename);
26
26
 
27
- // v3 defaults the public entrypoint to 9527 while keeping 25947 as a
28
- // compatibility alias for older AI-tool and MCP configs. The TanStack Start
29
- // runtime stays on a private upstream port and both public ports reverse-proxy
30
- // to that same runtime, so logs, sessions, and MCP state remain unified.
27
+ // v3 defaults the public entrypoint to 9527. The legacy 25947 alias can be
28
+ // enabled explicitly for older AI-tool and MCP configs. The TanStack Start
29
+ // runtime stays on a private upstream port and public ports reverse-proxy to
30
+ // that same runtime, so logs, sessions, and MCP state remain unified.
31
31
  const DEFAULT_PORT = 9527;
32
32
  const LEGACY_ALIAS_PORT = 25947;
33
33
  const DEFAULT_UPSTREAM_PORT = 9529;
@@ -231,12 +231,42 @@ function printAccessHints(port: number, host?: string): void {
231
231
  }
232
232
  }
233
233
 
234
+ type BackgroundSupervisorOptions = {
235
+ port: number;
236
+ host: string | undefined;
237
+ configDir: string | undefined;
238
+ providersJson: string | undefined;
239
+ captureMode: CaptureMode;
240
+ enableIdentityProxy: boolean;
241
+ legacyAliasEnabled: boolean;
242
+ };
243
+
244
+ function buildBackgroundSupervisorArgs(options: BackgroundSupervisorOptions): string[] {
245
+ const args = ["--no-open", "--port", String(options.port), "--mode", options.captureMode];
246
+ if (options.host !== undefined) {
247
+ args.push("--host", options.host);
248
+ }
249
+ if (options.configDir !== undefined) {
250
+ args.push("--config-dir", options.configDir);
251
+ }
252
+ if (options.providersJson !== undefined) {
253
+ args.push("--providers", options.providersJson);
254
+ }
255
+ if (!options.enableIdentityProxy) {
256
+ args.push("--no-identity-proxy");
257
+ }
258
+ if (options.legacyAliasEnabled) {
259
+ args.push("--legacy-port");
260
+ }
261
+ return args;
262
+ }
263
+
234
264
  function pickUpstreamPort(publicPort: number, legacyAliasPort: number | null): number {
235
- const candidates = [
236
- DEFAULT_UPSTREAM_PORT,
237
- publicPort + 2 <= 65535 ? publicPort + 2 : publicPort - 2,
238
- LEGACY_ALIAS_PORT + 2,
239
- ];
265
+ const nearbyPort = publicPort + 2 <= 65535 ? publicPort + 2 : publicPort - 2;
266
+ const candidates =
267
+ publicPort === DEFAULT_PORT
268
+ ? [DEFAULT_UPSTREAM_PORT, nearbyPort, LEGACY_ALIAS_PORT + 2]
269
+ : [nearbyPort, DEFAULT_UPSTREAM_PORT, LEGACY_ALIAS_PORT + 2];
240
270
  for (const candidate of candidates) {
241
271
  if (
242
272
  Number.isInteger(candidate) &&
@@ -294,10 +324,10 @@ async function runStart(args: string[]): Promise<void> {
294
324
  let forceRestart = false;
295
325
  let configDir: string | undefined;
296
326
  let providersJson: string | undefined;
297
- let captureMode = DEFAULT_CAPTURE_MODE;
327
+ let captureMode: CaptureMode = DEFAULT_CAPTURE_MODE;
298
328
  let captureModeWasSpecified = false;
299
329
  let enableIdentityProxy = true;
300
- let legacyAliasEnabled = true;
330
+ let legacyAliasEnabled = false;
301
331
 
302
332
  if (envMode !== undefined && envMode !== "") {
303
333
  const parsedMode = parseCaptureMode(envMode);
@@ -413,6 +443,9 @@ async function runStart(args: string[]): Promise<void> {
413
443
  case "--no-legacy-port":
414
444
  legacyAliasEnabled = false;
415
445
  break;
446
+ case "--legacy-port":
447
+ legacyAliasEnabled = true;
448
+ break;
416
449
  default:
417
450
  break;
418
451
  }
@@ -482,6 +515,57 @@ async function runStart(args: string[]): Promise<void> {
482
515
  }
483
516
  }
484
517
 
518
+ if (background && enableIdentityProxy) {
519
+ const cliEntry = process.argv[1];
520
+ if (cliEntry === undefined || cliEntry.length === 0) {
521
+ console.error("Cannot resolve agent-inspector CLI entry for background supervisor.");
522
+ process.exitCode = 1;
523
+ return;
524
+ }
525
+
526
+ const supervisorArgs = buildBackgroundSupervisorArgs({
527
+ port,
528
+ host,
529
+ configDir,
530
+ providersJson,
531
+ captureMode,
532
+ enableIdentityProxy,
533
+ legacyAliasEnabled,
534
+ });
535
+ const supervisorProcess = spawn(process.execPath, [cliEntry, ...supervisorArgs], {
536
+ stdio: "ignore",
537
+ detached: true,
538
+ env: process.env,
539
+ windowsHide: true,
540
+ });
541
+ supervisorProcess.once("error", (err) => {
542
+ console.error(`Failed to start Agent Inspector background supervisor: ${err.message}`);
543
+ });
544
+ supervisorProcess.unref();
545
+
546
+ if (await waitForInspectorHealthy(port, 10000, host)) {
547
+ console.log(`agent-inspector background server is ready at ${url}`);
548
+ printAccessHints(port, host);
549
+ if (legacyAliasPort !== null) {
550
+ console.log(` Legacy proxy: http://localhost:${legacyAliasPort}/proxy`);
551
+ console.log(` Legacy MCP: http://localhost:${legacyAliasPort}/api/mcp`);
552
+ }
553
+ console.log(``);
554
+ console.log(`Route AI coding tools through the identity proxy for accurate PID attribution:`);
555
+ console.log(` Claude Code: ANTHROPIC_BASE_URL=http://localhost:${port}/proxy claude`);
556
+ console.log(` OpenCode: LLM_BASE_URL=http://localhost:${port}/proxy opencode`);
557
+ console.log(` MiMo Code: OPENAI_BASE_URL=http://localhost:${port}/proxy mimo`);
558
+ if (open && openWasSpecified) {
559
+ openBrowser(url);
560
+ }
561
+ return;
562
+ }
563
+
564
+ console.error(`agent-inspector background server did not become ready at ${url}.`);
565
+ process.exitCode = 1;
566
+ return;
567
+ }
568
+
485
569
  console.log(`Server running at ${url}`);
486
570
  console.log(` Capture mode: ${captureMode}`);
487
571
  console.log(` Proxy: ${url}/proxy`);