@tonyclaw/agent-inspector 2.0.29 → 2.0.31
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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/{CompareDrawer-DcqxlgSQ.js → CompareDrawer-tIUf2EJm.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-BxRaXhKR.js +115 -0
- package/.output/public/assets/{ReplayDialog-CBcnPgx1.js → ReplayDialog-D6v1xcuC.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-DSgSqCYt.js → RequestAnatomy-D6PniTlx.js} +1 -1
- package/.output/public/assets/{ResponseView-CjqzBSoF.js → ResponseView-Sx8PjuvU.js} +1 -1
- package/.output/public/assets/{StreamingChunkSequence-DdBBKolI.js → StreamingChunkSequence-D-Rbfnxh.js} +1 -1
- package/.output/public/assets/_sessionId-BhNTuZ31.js +1 -0
- package/.output/public/assets/index-Byk60-jA.css +1 -0
- package/.output/public/assets/index-Kxptlkpg.js +1 -0
- package/.output/public/assets/{main-B6OLZCp9.js → main-B1kdhY98.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +159 -134
- package/.output/server/{_sessionId-CCfKJJ19.mjs → _sessionId-BceHFKf4.mjs} +3 -3
- package/.output/server/_ssr/{CompareDrawer-uaPI5R6e.mjs → CompareDrawer-uSxK5Ei5.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-BV2nIxXy.mjs → ProxyViewerContainer-_npQ_f2i.mjs} +566 -17
- package/.output/server/_ssr/{ReplayDialog-eE2Hy2Nl.mjs → ReplayDialog-BHAzSLCT.mjs} +4 -4
- package/.output/server/_ssr/{RequestAnatomy-B7vwWo57.mjs → RequestAnatomy-DjlZLXBd.mjs} +3 -3
- package/.output/server/_ssr/{ResponseView-Bm6Qp8mo.mjs → ResponseView-BuDEJ3fl.mjs} +3 -3
- package/.output/server/_ssr/{StreamingChunkSequence-CbAJKJQx.mjs → StreamingChunkSequence-DFcu0bD8.mjs} +3 -3
- package/.output/server/_ssr/{index-u14_Aj60.mjs → index-Bw6Fw33c.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{router-qgeGUp1k.mjs → router-D90tMCb3.mjs} +1236 -143
- package/.output/server/_tanstack-start-manifest_v-BVM4AUlx.mjs +4 -0
- package/.output/server/index.mjs +60 -60
- package/README.md +24 -1
- package/package.json +1 -1
- package/src/components/ProxyViewer.tsx +9 -2
- package/src/components/groups/GroupsDialog.tsx +732 -0
- package/src/lib/groupContract.ts +148 -0
- package/src/lib/runContract.ts +2 -0
- package/src/lib/useGroupEvidence.ts +33 -0
- package/src/lib/useGroups.ts +28 -0
- package/src/mcp/server.ts +282 -1
- package/src/mcp/toolHandlers.ts +123 -0
- package/src/proxy/groupEvidenceExporter.ts +354 -0
- package/src/proxy/groupStore.ts +259 -0
- package/src/routes/api/groups.$groupId.evidence.ts +74 -0
- package/src/routes/api/groups.$groupId.sessions.ts +50 -0
- package/src/routes/api/groups.$groupId.ts +50 -0
- package/src/routes/api/groups.ts +39 -0
- package/.output/public/assets/ProxyViewerContainer-D650kQlv.js +0 -115
- package/.output/public/assets/_sessionId-wctOoGh_.js +0 -1
- package/.output/public/assets/index-BhQGSdhG.js +0 -1
- package/.output/public/assets/index-CwlHPmgL.css +0 -1
- package/.output/server/_tanstack-start-manifest_v-BrfUXnre.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/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-B1kdhY98.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-Kxptlkpg.js", "/assets/ProxyViewerContainer-BxRaXhKR.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-BhNTuZ31.js", "/assets/ProxyViewerContainer-BxRaXhKR.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-B1kdhY98.js" });
|
|
2
|
+
export {
|
|
3
|
+
tsrStartManifest
|
|
4
|
+
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -35,103 +35,103 @@ const headers = ((m) => function headersRouteRule(event) {
|
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
const assets = {
|
|
38
|
+
"/assets/index-Kxptlkpg.js": {
|
|
39
|
+
"type": "text/javascript; charset=utf-8",
|
|
40
|
+
"etag": '"74-zVU85yxwksDEAlmGvjnynbRJlsg"',
|
|
41
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
42
|
+
"size": 116,
|
|
43
|
+
"path": "../public/assets/index-Kxptlkpg.js"
|
|
44
|
+
},
|
|
45
|
+
"/assets/index-Byk60-jA.css": {
|
|
46
|
+
"type": "text/css; charset=utf-8",
|
|
47
|
+
"etag": '"1ab1a-tPrFGLVNN1Xk1g4iKBR5XFS0VgE"',
|
|
48
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
49
|
+
"size": 109338,
|
|
50
|
+
"path": "../public/assets/index-Byk60-jA.css"
|
|
51
|
+
},
|
|
38
52
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
39
53
|
"type": "image/svg+xml",
|
|
40
54
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
41
|
-
"mtime": "2026-
|
|
55
|
+
"mtime": "2026-07-01T02:23:48.448Z",
|
|
42
56
|
"size": 5915,
|
|
43
57
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
44
58
|
},
|
|
45
|
-
"/assets/
|
|
59
|
+
"/assets/CompareDrawer-tIUf2EJm.js": {
|
|
46
60
|
"type": "text/javascript; charset=utf-8",
|
|
47
|
-
"etag": '"
|
|
48
|
-
"mtime": "2026-
|
|
49
|
-
"size":
|
|
50
|
-
"path": "../public/assets/
|
|
61
|
+
"etag": '"49fe-O2b82jiqVijsJaEWXyXHfD26ujs"',
|
|
62
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
63
|
+
"size": 18942,
|
|
64
|
+
"path": "../public/assets/CompareDrawer-tIUf2EJm.js"
|
|
51
65
|
},
|
|
52
|
-
"/assets/
|
|
66
|
+
"/assets/ReplayDialog-D6v1xcuC.js": {
|
|
53
67
|
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"
|
|
55
|
-
"mtime": "2026-
|
|
56
|
-
"size":
|
|
57
|
-
"path": "../public/assets/
|
|
68
|
+
"etag": '"318c-clYQ+hDlXIV8AGEUD0khiYhAzmM"',
|
|
69
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
70
|
+
"size": 12684,
|
|
71
|
+
"path": "../public/assets/ReplayDialog-D6v1xcuC.js"
|
|
72
|
+
},
|
|
73
|
+
"/assets/main-B1kdhY98.js": {
|
|
74
|
+
"type": "text/javascript; charset=utf-8",
|
|
75
|
+
"etag": '"51726-il8QGn3n9HZk3cnlzLAvqWtvO8Y"',
|
|
76
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
77
|
+
"size": 333606,
|
|
78
|
+
"path": "../public/assets/main-B1kdhY98.js"
|
|
58
79
|
},
|
|
59
80
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
60
81
|
"type": "image/jpeg",
|
|
61
82
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
62
|
-
"mtime": "2026-
|
|
83
|
+
"mtime": "2026-07-01T02:23:48.448Z",
|
|
63
84
|
"size": 6918,
|
|
64
85
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
65
86
|
},
|
|
66
|
-
"/assets/
|
|
67
|
-
"type": "text/css; charset=utf-8",
|
|
68
|
-
"etag": '"1a3f0-E2f0kOdSBi1RhjoK38+CSij/apg"',
|
|
69
|
-
"mtime": "2026-06-30T09:01:48.556Z",
|
|
70
|
-
"size": 107504,
|
|
71
|
-
"path": "../public/assets/index-CwlHPmgL.css"
|
|
72
|
-
},
|
|
73
|
-
"/assets/ReplayDialog-CBcnPgx1.js": {
|
|
87
|
+
"/assets/RequestAnatomy-D6PniTlx.js": {
|
|
74
88
|
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"
|
|
76
|
-
"mtime": "2026-
|
|
77
|
-
"size": 12684,
|
|
78
|
-
"path": "../public/assets/ReplayDialog-CBcnPgx1.js"
|
|
79
|
-
},
|
|
80
|
-
"/assets/RequestAnatomy-DSgSqCYt.js": {
|
|
81
|
-
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"4485-rBai6wnmYHf662t3omQFALcwHSw"',
|
|
83
|
-
"mtime": "2026-06-30T09:01:48.557Z",
|
|
89
|
+
"etag": '"4485-cUU3kN9eHR4o5pbZQbcY4OqCB50"',
|
|
90
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
84
91
|
"size": 17541,
|
|
85
|
-
"path": "../public/assets/RequestAnatomy-
|
|
92
|
+
"path": "../public/assets/RequestAnatomy-D6PniTlx.js"
|
|
86
93
|
},
|
|
87
|
-
"/assets/
|
|
94
|
+
"/assets/StreamingChunkSequence-D-Rbfnxh.js": {
|
|
88
95
|
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"
|
|
90
|
-
"mtime": "2026-
|
|
91
|
-
"size": 12496,
|
|
92
|
-
"path": "../public/assets/ResponseView-CjqzBSoF.js"
|
|
93
|
-
},
|
|
94
|
-
"/assets/StreamingChunkSequence-DdBBKolI.js": {
|
|
95
|
-
"type": "text/javascript; charset=utf-8",
|
|
96
|
-
"etag": '"d57-9H1QMwesXGWHkYNTPJ/9zDoslX0"',
|
|
97
|
-
"mtime": "2026-06-30T09:01:48.557Z",
|
|
96
|
+
"etag": '"d57-a29gzePmbYwiutnSghD7IFULcvE"',
|
|
97
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
98
98
|
"size": 3415,
|
|
99
|
-
"path": "../public/assets/StreamingChunkSequence-
|
|
100
|
-
},
|
|
101
|
-
"/assets/_sessionId-wctOoGh_.js": {
|
|
102
|
-
"type": "text/javascript; charset=utf-8",
|
|
103
|
-
"etag": '"d2-fiIvvYyX9jF4fd1W7HpowwQ2Zj4"',
|
|
104
|
-
"mtime": "2026-06-30T09:01:48.556Z",
|
|
105
|
-
"size": 210,
|
|
106
|
-
"path": "../public/assets/_sessionId-wctOoGh_.js"
|
|
99
|
+
"path": "../public/assets/StreamingChunkSequence-D-Rbfnxh.js"
|
|
107
100
|
},
|
|
108
|
-
"/assets/
|
|
101
|
+
"/assets/ResponseView-Sx8PjuvU.js": {
|
|
109
102
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"
|
|
111
|
-
"mtime": "2026-
|
|
112
|
-
"size":
|
|
113
|
-
"path": "../public/assets/
|
|
103
|
+
"etag": '"30d0-eVm2iIA3EKpWcIYtelIeobfqtiY"',
|
|
104
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
105
|
+
"size": 12496,
|
|
106
|
+
"path": "../public/assets/ResponseView-Sx8PjuvU.js"
|
|
114
107
|
},
|
|
115
108
|
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
116
109
|
"type": "image/svg+xml",
|
|
117
110
|
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
118
|
-
"mtime": "2026-
|
|
111
|
+
"mtime": "2026-07-01T02:23:48.448Z",
|
|
119
112
|
"size": 11256,
|
|
120
113
|
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
121
114
|
},
|
|
115
|
+
"/assets/_sessionId-BhNTuZ31.js": {
|
|
116
|
+
"type": "text/javascript; charset=utf-8",
|
|
117
|
+
"etag": '"d2-N3jVPi19Muv+Rgqnids/dlwNuhs"',
|
|
118
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
119
|
+
"size": 210,
|
|
120
|
+
"path": "../public/assets/_sessionId-BhNTuZ31.js"
|
|
121
|
+
},
|
|
122
122
|
"/assets/qwen-CONDcHqt.png": {
|
|
123
123
|
"type": "image/png",
|
|
124
124
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
125
|
-
"mtime": "2026-
|
|
125
|
+
"mtime": "2026-07-01T02:23:48.448Z",
|
|
126
126
|
"size": 357059,
|
|
127
127
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
128
128
|
},
|
|
129
|
-
"/assets/ProxyViewerContainer-
|
|
129
|
+
"/assets/ProxyViewerContainer-BxRaXhKR.js": {
|
|
130
130
|
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"
|
|
132
|
-
"mtime": "2026-
|
|
133
|
-
"size":
|
|
134
|
-
"path": "../public/assets/ProxyViewerContainer-
|
|
131
|
+
"etag": '"b489b-R0CduB+BYfBdDePPpvc2Nkavq3A"',
|
|
132
|
+
"mtime": "2026-07-01T02:23:48.450Z",
|
|
133
|
+
"size": 739483,
|
|
134
|
+
"path": "../public/assets/ProxyViewerContainer-BxRaXhKR.js"
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
function readAsset(id) {
|
package/README.md
CHANGED
|
@@ -154,7 +154,7 @@ http://localhost:25947/api/mcp
|
|
|
154
154
|
Coding agents can use the MCP surface in three ways:
|
|
155
155
|
|
|
156
156
|
- Tools: perform actions such as listing logs, reading bounded log details, testing providers,
|
|
157
|
-
creating evaluation runs, and exporting evidence packs.
|
|
157
|
+
creating evaluation runs/groups, attaching sessions, and exporting evidence packs.
|
|
158
158
|
- Resources: read stable evidence URIs without invoking a tool call.
|
|
159
159
|
- Prompts: start common analysis/reporting tasks from reusable templates.
|
|
160
160
|
|
|
@@ -176,6 +176,24 @@ The evaluation-oriented run flow is:
|
|
|
176
176
|
<dataDir>/evidence/<runId>/evidence.html
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
+
For benchmark or CI systems that spawn multiple coding-agent processes, use a group as the
|
|
180
|
+
outer evaluation artifact:
|
|
181
|
+
|
|
182
|
+
1. Call `inspector_create_group` once for the evaluation batch.
|
|
183
|
+
2. Start each OpenCode/Codex process through the proxy with its own model/provider.
|
|
184
|
+
3. As each process discovers or reports its session id, call `inspector_add_group_session` with
|
|
185
|
+
`groupId`, `sessionId`, and optional `runId`, `provider`, `model`, `agent`, `label`, and
|
|
186
|
+
metadata.
|
|
187
|
+
4. Call `inspector_update_group` to mark the whole batch `running`, `failed`, `completed`, or
|
|
188
|
+
`cancelled`.
|
|
189
|
+
5. Call `inspector_export_group_evidence` to write an aggregate provider/model matrix under:
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
<dataDir>/evidence/groups/<groupId>/evidence.json
|
|
193
|
+
<dataDir>/evidence/groups/<groupId>/evidence.md
|
|
194
|
+
<dataDir>/evidence/groups/<groupId>/evidence.html
|
|
195
|
+
```
|
|
196
|
+
|
|
179
197
|
Useful MCP resource URIs:
|
|
180
198
|
|
|
181
199
|
| Resource | Purpose |
|
|
@@ -187,12 +205,17 @@ Useful MCP resource URIs:
|
|
|
187
205
|
| `inspector://failures/recent` | Read recent failed/cancelled runs and non-success evidence classifications. |
|
|
188
206
|
| `inspector://runs/{runId}` | Read one declared run and its evidence paths. |
|
|
189
207
|
| `inspector://evidence/{runId}` | Read the exported Markdown evidence pack for a run. |
|
|
208
|
+
| `inspector://groups` | List declared evaluation groups. |
|
|
209
|
+
| `inspector://groups/{groupId}` | Read one group, including attached session/run members and evidence paths. |
|
|
210
|
+
| `inspector://groups/{groupId}/sessions` | Read only the attached group member list. |
|
|
211
|
+
| `inspector://groups/{groupId}/evidence` | Read the exported Markdown evidence pack for a group. |
|
|
190
212
|
|
|
191
213
|
Built-in prompt templates help turn captured evidence into user-facing output:
|
|
192
214
|
|
|
193
215
|
- `inspector_analyze_session_failure`: explain why a session failed and cite log evidence.
|
|
194
216
|
- `inspector_triage_recent_failures`: prioritize recent failed runs and suggest next actions.
|
|
195
217
|
- `inspector_generate_jenkins_report`: produce a Jenkins-ready Markdown report for a run.
|
|
218
|
+
- `inspector_generate_group_report`: produce a provider/model evaluation report for a group.
|
|
196
219
|
- `inspector_extract_repro_steps`: extract concise reproduction steps from a session.
|
|
197
220
|
|
|
198
221
|
## Jenkins And GitCode
|
package/package.json
CHANGED
|
@@ -15,6 +15,7 @@ import { crabVariants } from "./ui/crab-variants";
|
|
|
15
15
|
import { McpLogo } from "./ui/mcp-logo";
|
|
16
16
|
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "./ui/select";
|
|
17
17
|
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip";
|
|
18
|
+
import { GroupsDialog } from "./groups/GroupsDialog";
|
|
18
19
|
import { SettingsDialog } from "./providers/SettingsDialog";
|
|
19
20
|
import { computeCacheTrends } from "./proxy-viewer/cacheTrend";
|
|
20
21
|
import { LazyCompareDrawer } from "./proxy-viewer/lazy";
|
|
@@ -38,6 +39,10 @@ function truncateSessionId(id: string): string {
|
|
|
38
39
|
return `${id.slice(0, 12)}...${id.slice(-12)}`;
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
export function shouldShowRawExport(captureMode: CaptureMode): boolean {
|
|
43
|
+
return captureMode === "full";
|
|
44
|
+
}
|
|
45
|
+
|
|
41
46
|
function computeTokenSummary(logs: CapturedLog[]): { totalIn: number; totalOut: number } {
|
|
42
47
|
let totalIn = 0;
|
|
43
48
|
let totalOut = 0;
|
|
@@ -709,6 +714,7 @@ export function ProxyViewer({
|
|
|
709
714
|
);
|
|
710
715
|
const cacheTrends = useMemo(() => computeCacheTrends(groups), [groups]);
|
|
711
716
|
const comparisonPredecessors = useMemo(() => buildValidPredecessors(groups), [groups]);
|
|
717
|
+
const showRawExport = shouldShowRawExport(captureMode);
|
|
712
718
|
const handleCompareWithPrevious = useCallback(
|
|
713
719
|
(log: CapturedLog) => {
|
|
714
720
|
const predecessor = comparisonPredecessors.get(log.id);
|
|
@@ -788,7 +794,8 @@ export function ProxyViewer({
|
|
|
788
794
|
</span>
|
|
789
795
|
<McpReadyBadge />
|
|
790
796
|
</h1>
|
|
791
|
-
<div className="justify-self-end">
|
|
797
|
+
<div className="justify-self-end flex items-center gap-1">
|
|
798
|
+
<GroupsDialog />
|
|
792
799
|
<SettingsDialog />
|
|
793
800
|
</div>
|
|
794
801
|
</div>
|
|
@@ -874,7 +881,7 @@ export function ProxyViewer({
|
|
|
874
881
|
: ""}
|
|
875
882
|
</span>
|
|
876
883
|
)}
|
|
877
|
-
{logs.length > 0 && (
|
|
884
|
+
{logs.length > 0 && showRawExport && (
|
|
878
885
|
<button
|
|
879
886
|
type="button"
|
|
880
887
|
onClick={() => {
|