@tonyclaw/agent-inspector 3.0.9 → 3.0.10
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-CJKL4LMm.js → CompareDrawer-BxLP7jmX.js} +1 -1
- package/.output/public/assets/ProxyViewerContainer-D_2ez29e.js +106 -0
- package/.output/public/assets/{ReplayDialog-BYanl-a_.js → ReplayDialog-Btm-wONI.js} +1 -1
- package/.output/public/assets/{RequestAnatomy-DvPz1jqE.js → RequestAnatomy-C9eZJN9E.js} +1 -1
- package/.output/public/assets/{ResponseView-sZnxp9GN.js → ResponseView-9R2MW1kp.js} +2 -2
- package/.output/public/assets/{StreamingChunkSequence-G-tiYiBd.js → StreamingChunkSequence-zxqGpFfv.js} +1 -1
- package/.output/public/assets/{_sessionId-_hDcsmXq.js → _sessionId-C0tPTQlC.js} +1 -1
- package/.output/public/assets/index-BIgsQvaF.css +1 -0
- package/.output/public/assets/index-DgVWrzsQ.js +1 -0
- package/.output/public/assets/{index-SuOSQb2_.js → index-WiDkyjq8.js} +1 -1
- package/.output/public/assets/{json-viewer-yQdhgjaw.js → json-viewer-BAmkfRDE.js} +1 -1
- package/.output/public/assets/{main-CgjcDxjR.js → main-2feHoEI6.js} +2 -2
- package/.output/server/_libs/lucide-react.mjs +2 -2
- package/.output/server/{_sessionId-BGISf2En.mjs → _sessionId-BkoyescL.mjs} +2 -2
- package/.output/server/_ssr/{CompareDrawer-s-UF9gW3.mjs → CompareDrawer-irfFdkJ8.mjs} +3 -3
- package/.output/server/_ssr/{ProxyViewerContainer-C0Sbz9ED.mjs → ProxyViewerContainer-CcJr9STz.mjs} +88 -105
- package/.output/server/_ssr/{ReplayDialog-DvS8gvJr.mjs → ReplayDialog-CJnmXQGT.mjs} +3 -3
- package/.output/server/_ssr/{RequestAnatomy-BwhWglJL.mjs → RequestAnatomy-CupP0Wdb.mjs} +2 -2
- package/.output/server/_ssr/{ResponseView-wBVreqQf.mjs → ResponseView-Bp-0t5cd.mjs} +2 -2
- package/.output/server/_ssr/{StreamingChunkSequence-Dr6eg-MJ.mjs → StreamingChunkSequence-BXSn4kMH.mjs} +2 -2
- package/.output/server/_ssr/{index-B98Wia1X.mjs → index-KVltJBV8.mjs} +2 -2
- package/.output/server/_ssr/index.mjs +2 -2
- package/.output/server/_ssr/{json-viewer-D7L8y0FH.mjs → json-viewer-EYQ5eG2Q.mjs} +2 -2
- package/.output/server/_ssr/{router-g9mo0nWT.mjs → router-_cAQddXC.mjs} +21 -12
- package/.output/server/{_tanstack-start-manifest_v-CbGc-o50.mjs → _tanstack-start-manifest_v-BfiF5iov.mjs} +1 -1
- package/.output/server/index.mjs +65 -65
- package/package.json +1 -1
- package/src/components/ProxyViewerContainer.tsx +10 -2
- package/src/components/providers/ProviderCard.tsx +83 -91
- package/src/components/providers/ProvidersPanel.tsx +7 -7
- package/src/components/providers/SettingsDialog.tsx +17 -22
- package/src/routes/api/logs.ts +14 -5
- package/.output/public/assets/ProxyViewerContainer-DBUy29O-.js +0 -106
- package/.output/public/assets/index-DAPAWsAd.js +0 -1
- package/.output/public/assets/index-DspnLqUW.css +0 -1
|
@@ -1,4 +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/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-
|
|
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/knowledge/sessions/$sessionId/candidates"], "preloads": ["/assets/main-2feHoEI6.js"], "assets": [] }, "/": { "filePath": "C:/Users/claw/workspace/agent-inspector/src/routes/index.tsx", "assets": [], "preloads": ["/assets/index-DgVWrzsQ.js", "/assets/ProxyViewerContainer-D_2ez29e.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-C0tPTQlC.js", "/assets/ProxyViewerContainer-D_2ez29e.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/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-2feHoEI6.js" });
|
|
2
2
|
export {
|
|
3
3
|
tsrStartManifest
|
|
4
4
|
};
|
package/.output/server/index.mjs
CHANGED
|
@@ -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-07T07:
|
|
41
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
42
42
|
"size": 14586,
|
|
43
43
|
"path": "../public/assets/agent-inspector-58K1_MsC.ico"
|
|
44
44
|
},
|
|
45
45
|
"/assets/alibaba-TTwafVwX.svg": {
|
|
46
46
|
"type": "image/svg+xml",
|
|
47
47
|
"etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
|
|
48
|
-
"mtime": "2026-07-07T07:
|
|
48
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
49
49
|
"size": 5915,
|
|
50
50
|
"path": "../public/assets/alibaba-TTwafVwX.svg"
|
|
51
51
|
},
|
|
52
|
-
"/assets/
|
|
52
|
+
"/assets/CompareDrawer-BxLP7jmX.js": {
|
|
53
53
|
"type": "text/javascript; charset=utf-8",
|
|
54
|
-
"etag": '"
|
|
55
|
-
"mtime": "2026-07-07T07:
|
|
54
|
+
"etag": '"4bc3-pQHdPyhcFoJS5VEN66ArtTIlZcs"',
|
|
55
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
56
|
+
"size": 19395,
|
|
57
|
+
"path": "../public/assets/CompareDrawer-BxLP7jmX.js"
|
|
58
|
+
},
|
|
59
|
+
"/assets/index-BIgsQvaF.css": {
|
|
60
|
+
"type": "text/css; charset=utf-8",
|
|
61
|
+
"etag": '"23c25-AyhoABstT65ludnAAzbIkqX0g+A"',
|
|
62
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
63
|
+
"size": 146469,
|
|
64
|
+
"path": "../public/assets/index-BIgsQvaF.css"
|
|
65
|
+
},
|
|
66
|
+
"/assets/index-DgVWrzsQ.js": {
|
|
67
|
+
"type": "text/javascript; charset=utf-8",
|
|
68
|
+
"etag": '"74-Ptr2n1hNkglfFx4nXQ7xwYjxLlU"',
|
|
69
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
56
70
|
"size": 116,
|
|
57
|
-
"path": "../public/assets/index-
|
|
71
|
+
"path": "../public/assets/index-DgVWrzsQ.js"
|
|
58
72
|
},
|
|
59
|
-
"/assets/json-viewer-
|
|
73
|
+
"/assets/json-viewer-BAmkfRDE.js": {
|
|
60
74
|
"type": "text/javascript; charset=utf-8",
|
|
61
|
-
"etag": '"1ae6
|
|
62
|
-
"mtime": "2026-07-07T07:
|
|
75
|
+
"etag": '"1ae6-xWR2Y4I0qrKVEAMp6RDeLeJYGzk"',
|
|
76
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
63
77
|
"size": 6886,
|
|
64
|
-
"path": "../public/assets/json-viewer-
|
|
78
|
+
"path": "../public/assets/json-viewer-BAmkfRDE.js"
|
|
65
79
|
},
|
|
66
80
|
"/assets/minimax-BPMzvuL-.jpeg": {
|
|
67
81
|
"type": "image/jpeg",
|
|
68
82
|
"etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
|
|
69
|
-
"mtime": "2026-07-07T07:
|
|
83
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
70
84
|
"size": 6918,
|
|
71
85
|
"path": "../public/assets/minimax-BPMzvuL-.jpeg"
|
|
72
86
|
},
|
|
73
|
-
"/assets/index-
|
|
87
|
+
"/assets/index-WiDkyjq8.js": {
|
|
74
88
|
"type": "text/javascript; charset=utf-8",
|
|
75
|
-
"etag": '"1cd2c-
|
|
76
|
-
"mtime": "2026-07-07T07:
|
|
89
|
+
"etag": '"1cd2c-J6txwFjMDpeFT1J6hhzRrZ9xyaA"',
|
|
90
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
77
91
|
"size": 118060,
|
|
78
|
-
"path": "../public/assets/index-
|
|
92
|
+
"path": "../public/assets/index-WiDkyjq8.js"
|
|
79
93
|
},
|
|
80
|
-
"/assets/
|
|
94
|
+
"/assets/main-2feHoEI6.js": {
|
|
81
95
|
"type": "text/javascript; charset=utf-8",
|
|
82
|
-
"etag": '"
|
|
83
|
-
"mtime": "2026-07-07T07:
|
|
84
|
-
"size":
|
|
85
|
-
"path": "../public/assets/
|
|
96
|
+
"etag": '"512fd-VVmFJtTQujgPm48jQL0EbnYnk3Y"',
|
|
97
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
98
|
+
"size": 332541,
|
|
99
|
+
"path": "../public/assets/main-2feHoEI6.js"
|
|
86
100
|
},
|
|
87
|
-
"/assets/
|
|
101
|
+
"/assets/RequestAnatomy-C9eZJN9E.js": {
|
|
88
102
|
"type": "text/javascript; charset=utf-8",
|
|
89
|
-
"etag": '"
|
|
90
|
-
"mtime": "2026-07-07T07:
|
|
91
|
-
"size":
|
|
92
|
-
"path": "../public/assets/
|
|
93
|
-
},
|
|
94
|
-
"/assets/index-DspnLqUW.css": {
|
|
95
|
-
"type": "text/css; charset=utf-8",
|
|
96
|
-
"etag": '"23991-XuDW77lmswcy3Fj+3lAejKbHi7M"',
|
|
97
|
-
"mtime": "2026-07-07T07:16:49.140Z",
|
|
98
|
-
"size": 145809,
|
|
99
|
-
"path": "../public/assets/index-DspnLqUW.css"
|
|
103
|
+
"etag": '"43f2-U41d/MIHOCUxD2kBUVyFrSp3X2g"',
|
|
104
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
105
|
+
"size": 17394,
|
|
106
|
+
"path": "../public/assets/RequestAnatomy-C9eZJN9E.js"
|
|
100
107
|
},
|
|
101
|
-
"/assets/
|
|
108
|
+
"/assets/ReplayDialog-Btm-wONI.js": {
|
|
102
109
|
"type": "text/javascript; charset=utf-8",
|
|
103
|
-
"etag": '"
|
|
104
|
-
"mtime": "2026-07-07T07:
|
|
105
|
-
"size":
|
|
106
|
-
"path": "../public/assets/
|
|
110
|
+
"etag": '"3347-z8MZmK/weGipqo7s2Q7+fPscSFs"',
|
|
111
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
112
|
+
"size": 13127,
|
|
113
|
+
"path": "../public/assets/ReplayDialog-Btm-wONI.js"
|
|
107
114
|
},
|
|
108
|
-
"/assets/
|
|
115
|
+
"/assets/ResponseView-9R2MW1kp.js": {
|
|
109
116
|
"type": "text/javascript; charset=utf-8",
|
|
110
|
-
"etag": '"
|
|
111
|
-
"mtime": "2026-07-07T07:
|
|
112
|
-
"size":
|
|
113
|
-
"path": "../public/assets/
|
|
117
|
+
"etag": '"47fc-zv4sjZTOZUHS8fs7xPvI8TcizZY"',
|
|
118
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
119
|
+
"size": 18428,
|
|
120
|
+
"path": "../public/assets/ResponseView-9R2MW1kp.js"
|
|
114
121
|
},
|
|
115
|
-
"/assets/
|
|
122
|
+
"/assets/StreamingChunkSequence-zxqGpFfv.js": {
|
|
116
123
|
"type": "text/javascript; charset=utf-8",
|
|
117
|
-
"etag": '"
|
|
118
|
-
"mtime": "2026-07-07T07:
|
|
119
|
-
"size":
|
|
120
|
-
"path": "../public/assets/
|
|
124
|
+
"etag": '"e95-nFwGBn96pOPzj9CzxqeWZKnF7KE"',
|
|
125
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
126
|
+
"size": 3733,
|
|
127
|
+
"path": "../public/assets/StreamingChunkSequence-zxqGpFfv.js"
|
|
121
128
|
},
|
|
122
129
|
"/assets/zhipuai-BPNAnxo-.svg": {
|
|
123
130
|
"type": "image/svg+xml",
|
|
124
131
|
"etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
|
|
125
|
-
"mtime": "2026-07-07T07:
|
|
132
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
126
133
|
"size": 11256,
|
|
127
134
|
"path": "../public/assets/zhipuai-BPNAnxo-.svg"
|
|
128
135
|
},
|
|
129
|
-
"/assets/
|
|
130
|
-
"type": "text/javascript; charset=utf-8",
|
|
131
|
-
"etag": '"e95-tlk/fXLPRlYoIMbaCU9ocnm8KuQ"',
|
|
132
|
-
"mtime": "2026-07-07T07:16:49.140Z",
|
|
133
|
-
"size": 3733,
|
|
134
|
-
"path": "../public/assets/StreamingChunkSequence-G-tiYiBd.js"
|
|
135
|
-
},
|
|
136
|
-
"/assets/_sessionId-_hDcsmXq.js": {
|
|
136
|
+
"/assets/_sessionId-C0tPTQlC.js": {
|
|
137
137
|
"type": "text/javascript; charset=utf-8",
|
|
138
|
-
"etag": '"36c-
|
|
139
|
-
"mtime": "2026-07-07T07:
|
|
138
|
+
"etag": '"36c-mV3aXHj2mdIDnNvZ5pVcAuGaHLI"',
|
|
139
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
140
140
|
"size": 876,
|
|
141
|
-
"path": "../public/assets/_sessionId-
|
|
141
|
+
"path": "../public/assets/_sessionId-C0tPTQlC.js"
|
|
142
142
|
},
|
|
143
143
|
"/assets/qwen-CONDcHqt.png": {
|
|
144
144
|
"type": "image/png",
|
|
145
145
|
"etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
|
|
146
|
-
"mtime": "2026-07-07T07:
|
|
146
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
147
147
|
"size": 357059,
|
|
148
148
|
"path": "../public/assets/qwen-CONDcHqt.png"
|
|
149
149
|
},
|
|
150
|
-
"/assets/ProxyViewerContainer-
|
|
150
|
+
"/assets/ProxyViewerContainer-D_2ez29e.js": {
|
|
151
151
|
"type": "text/javascript; charset=utf-8",
|
|
152
|
-
"etag": '"
|
|
153
|
-
"mtime": "2026-07-07T07:
|
|
154
|
-
"size":
|
|
155
|
-
"path": "../public/assets/ProxyViewerContainer-
|
|
152
|
+
"etag": '"b6c94-hpe5c1o9ykcltAH5FoipHk35tFA"',
|
|
153
|
+
"mtime": "2026-07-07T07:37:45.927Z",
|
|
154
|
+
"size": 748692,
|
|
155
|
+
"path": "../public/assets/ProxyViewerContainer-D_2ez29e.js"
|
|
156
156
|
}
|
|
157
157
|
};
|
|
158
158
|
function readAsset(id) {
|
package/package.json
CHANGED
|
@@ -688,12 +688,20 @@ export function ProxyViewerContainer({
|
|
|
688
688
|
const handleDeleteCurrentView = useCallback(
|
|
689
689
|
async (ids: number[]): Promise<void> => {
|
|
690
690
|
if (ids.length === 0) return;
|
|
691
|
-
const
|
|
691
|
+
const persistedIds = ids.filter((id) => Number.isInteger(id) && id >= 0);
|
|
692
|
+
if (persistedIds.length === 0) {
|
|
693
|
+
showToast({
|
|
694
|
+
message: "No persisted log records were found for this view.",
|
|
695
|
+
tone: "error",
|
|
696
|
+
});
|
|
697
|
+
return;
|
|
698
|
+
}
|
|
699
|
+
const idSet = new Set(persistedIds);
|
|
692
700
|
const removed = allLogs.filter((log) => idSet.has(log.id));
|
|
693
701
|
const result = await fetchJson("/api/logs", DeleteLogsResponseSchema, {
|
|
694
702
|
method: "DELETE",
|
|
695
703
|
headers: { "content-type": "application/json" },
|
|
696
|
-
body: JSON.stringify({ ids }),
|
|
704
|
+
body: JSON.stringify({ ids: persistedIds }),
|
|
697
705
|
});
|
|
698
706
|
|
|
699
707
|
setAllLogs((prev) => {
|
|
@@ -31,13 +31,6 @@ import {
|
|
|
31
31
|
providerHasContextMetadata,
|
|
32
32
|
} from "../../lib/providerModelMetadata";
|
|
33
33
|
import { formatContextWindowTokens } from "../../lib/utils";
|
|
34
|
-
import {
|
|
35
|
-
PATH_V1_CHAT_COMPLETIONS,
|
|
36
|
-
PATH_V1_MESSAGES,
|
|
37
|
-
PATH_V1_RESPONSES,
|
|
38
|
-
previewUpstreamUrl,
|
|
39
|
-
type UpstreamUrlDiagnostic,
|
|
40
|
-
} from "../../lib/upstreamUrl";
|
|
41
34
|
import type {
|
|
42
35
|
ProviderFormatTestResults,
|
|
43
36
|
ProviderTestErrorType as ErrorType,
|
|
@@ -225,51 +218,16 @@ function ProviderFormatTestStatus({
|
|
|
225
218
|
);
|
|
226
219
|
}
|
|
227
220
|
|
|
228
|
-
function
|
|
229
|
-
diagnostic,
|
|
230
|
-
}: {
|
|
231
|
-
diagnostic: UpstreamUrlDiagnostic;
|
|
232
|
-
}): JSX.Element {
|
|
233
|
-
return (
|
|
234
|
-
<div className={diagnostic.severity === "warning" ? "text-amber-200" : "text-muted-foreground"}>
|
|
235
|
-
{diagnostic.message}
|
|
236
|
-
</div>
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function ProviderEndpointSummary({
|
|
221
|
+
function ProviderFormatStatusBlock({
|
|
241
222
|
label,
|
|
242
|
-
baseUrl,
|
|
243
|
-
endpoint,
|
|
244
|
-
providerName,
|
|
245
223
|
children,
|
|
246
224
|
}: {
|
|
247
225
|
label: string;
|
|
248
|
-
baseUrl: string;
|
|
249
|
-
endpoint: string;
|
|
250
|
-
providerName: string;
|
|
251
226
|
children?: ReactNode;
|
|
252
227
|
}): JSX.Element {
|
|
253
|
-
const preview = previewUpstreamUrl(baseUrl, endpoint, { providerName });
|
|
254
|
-
|
|
255
228
|
return (
|
|
256
|
-
<div className="
|
|
257
|
-
<div className="
|
|
258
|
-
<span className="font-medium text-muted-foreground">{label}</span>
|
|
259
|
-
<code className="min-w-0 break-all font-mono text-foreground/80">{baseUrl}</code>
|
|
260
|
-
<span className="text-[10px] uppercase text-muted-foreground/80">Final</span>
|
|
261
|
-
<code className="min-w-0 break-all font-mono text-foreground">{preview.finalUrl}</code>
|
|
262
|
-
</div>
|
|
263
|
-
{preview.diagnostics.length > 0 && (
|
|
264
|
-
<div className="space-y-1 text-xs">
|
|
265
|
-
{preview.diagnostics.map((diagnostic) => (
|
|
266
|
-
<EndpointDiagnosticLine
|
|
267
|
-
key={`${diagnostic.severity}:${diagnostic.message}`}
|
|
268
|
-
diagnostic={diagnostic}
|
|
269
|
-
/>
|
|
270
|
-
))}
|
|
271
|
-
</div>
|
|
272
|
-
)}
|
|
229
|
+
<div className="min-w-0 space-y-2 rounded-md border border-border/60 bg-muted/15 p-2">
|
|
230
|
+
<div className="text-xs font-medium text-foreground/80">{label}</div>
|
|
273
231
|
{children}
|
|
274
232
|
</div>
|
|
275
233
|
);
|
|
@@ -293,9 +251,38 @@ function providerTestTargets(provider: ProviderConfig): string[] {
|
|
|
293
251
|
return targets;
|
|
294
252
|
}
|
|
295
253
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
254
|
+
type CapabilityChipTone = "active" | "quiet" | "response";
|
|
255
|
+
|
|
256
|
+
function CapabilityChip({
|
|
257
|
+
label,
|
|
258
|
+
enabled,
|
|
259
|
+
tone,
|
|
260
|
+
}: {
|
|
261
|
+
label: string;
|
|
262
|
+
enabled: boolean;
|
|
263
|
+
tone?: CapabilityChipTone;
|
|
264
|
+
}): JSX.Element {
|
|
265
|
+
const resolvedTone: CapabilityChipTone = tone ?? (enabled ? "active" : "quiet");
|
|
266
|
+
const className =
|
|
267
|
+
resolvedTone === "response" && enabled
|
|
268
|
+
? "border-sky-300/30 bg-sky-300/[0.09] text-sky-100"
|
|
269
|
+
: enabled
|
|
270
|
+
? "border-border/70 bg-muted/25 text-foreground/80"
|
|
271
|
+
: "border-border/50 bg-transparent text-muted-foreground/70";
|
|
272
|
+
return (
|
|
273
|
+
<span className={`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 ${className}`}>
|
|
274
|
+
{enabled ? <CheckCircle className="size-3" /> : <Minus className="size-3" />}
|
|
275
|
+
{label}
|
|
276
|
+
</span>
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
function ProviderCapabilitySummary({ provider }: { provider: ProviderConfig }): JSX.Element {
|
|
281
|
+
const hasAnthropic = providerHasEndpoint(provider.anthropicBaseUrl);
|
|
282
|
+
const hasChat = providerHasEndpoint(provider.openaiBaseUrl);
|
|
283
|
+
const hasResponses = providerHasEndpoint(provider.openaiResponsesBaseUrl);
|
|
284
|
+
|
|
285
|
+
if (!hasAnthropic && !hasChat && !hasResponses) {
|
|
299
286
|
return (
|
|
300
287
|
<div className="text-xs text-muted-foreground">
|
|
301
288
|
Test requires at least one configured endpoint.
|
|
@@ -305,16 +292,15 @@ function ProviderTestCoverage({ provider }: { provider: ProviderConfig }): JSX.E
|
|
|
305
292
|
|
|
306
293
|
return (
|
|
307
294
|
<div className="flex min-w-0 flex-wrap items-center gap-1.5 text-xs text-muted-foreground">
|
|
308
|
-
<span>
|
|
309
|
-
{
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
<span>non-stream + stream</span>
|
|
295
|
+
<span>Capabilities</span>
|
|
296
|
+
{hasAnthropic && <CapabilityChip label="Anthropic" enabled={true} />}
|
|
297
|
+
{hasChat && <CapabilityChip label="OpenAI Chat" enabled={true} />}
|
|
298
|
+
<CapabilityChip
|
|
299
|
+
label={hasResponses ? "OpenAI Responses" : "No OpenAI Responses"}
|
|
300
|
+
enabled={hasResponses}
|
|
301
|
+
tone="response"
|
|
302
|
+
/>
|
|
303
|
+
<span>tested non-stream + stream</span>
|
|
318
304
|
</div>
|
|
319
305
|
);
|
|
320
306
|
}
|
|
@@ -762,7 +748,7 @@ export function ProviderCard({
|
|
|
762
748
|
</div>
|
|
763
749
|
|
|
764
750
|
<div className="flex flex-col gap-2 text-xs text-muted-foreground sm:flex-row sm:items-center sm:justify-between">
|
|
765
|
-
<
|
|
751
|
+
<ProviderCapabilitySummary provider={provider} />
|
|
766
752
|
<div className="flex flex-wrap items-center gap-2">
|
|
767
753
|
<span>Key configured</span>
|
|
768
754
|
<span>{provider.authHeader === "x-api-key" ? "x-api-key" : "Bearer"}</span>
|
|
@@ -838,43 +824,49 @@ export function ProviderCard({
|
|
|
838
824
|
</div>
|
|
839
825
|
)}
|
|
840
826
|
|
|
841
|
-
{providerHasEndpoint(provider.anthropicBaseUrl)
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
827
|
+
{(providerHasEndpoint(provider.anthropicBaseUrl) ||
|
|
828
|
+
providerHasEndpoint(provider.openaiBaseUrl) ||
|
|
829
|
+
providerHasEndpoint(provider.openaiResponsesBaseUrl)) && (
|
|
830
|
+
<div className="grid gap-2 lg:grid-cols-3">
|
|
831
|
+
{providerHasEndpoint(provider.anthropicBaseUrl) && (
|
|
832
|
+
<ProviderFormatStatusBlock label="Anthropic">
|
|
833
|
+
{testResults !== undefined && (
|
|
834
|
+
<ProviderFormatTestStatus results={testResults.anthropic} />
|
|
835
|
+
)}
|
|
836
|
+
{testResults === undefined && (
|
|
837
|
+
<div className="text-xs text-muted-foreground">Not tested yet</div>
|
|
838
|
+
)}
|
|
839
|
+
</ProviderFormatStatusBlock>
|
|
850
840
|
)}
|
|
851
|
-
</ProviderEndpointSummary>
|
|
852
|
-
)}
|
|
853
841
|
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
842
|
+
{providerHasEndpoint(provider.openaiBaseUrl) && (
|
|
843
|
+
<ProviderFormatStatusBlock label="OpenAI Chat">
|
|
844
|
+
{testResults !== undefined && (
|
|
845
|
+
<ProviderFormatTestStatus results={testResults.openaiChat} />
|
|
846
|
+
)}
|
|
847
|
+
{testResults === undefined && (
|
|
848
|
+
<div className="text-xs text-muted-foreground">Not tested yet</div>
|
|
849
|
+
)}
|
|
850
|
+
</ProviderFormatStatusBlock>
|
|
863
851
|
)}
|
|
864
|
-
</ProviderEndpointSummary>
|
|
865
|
-
)}
|
|
866
852
|
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
853
|
+
{providerHasEndpoint(provider.openaiResponsesBaseUrl) && (
|
|
854
|
+
<ProviderFormatStatusBlock label="OpenAI Responses">
|
|
855
|
+
{testResults !== undefined && (
|
|
856
|
+
<ProviderFormatTestStatus results={testResults.openaiResponses} />
|
|
857
|
+
)}
|
|
858
|
+
{testResults === undefined && (
|
|
859
|
+
<div className="text-xs text-muted-foreground">Not tested yet</div>
|
|
860
|
+
)}
|
|
861
|
+
</ProviderFormatStatusBlock>
|
|
876
862
|
)}
|
|
877
|
-
|
|
863
|
+
|
|
864
|
+
{!providerHasEndpoint(provider.openaiResponsesBaseUrl) && (
|
|
865
|
+
<div className="min-w-0 rounded-md border border-border/50 bg-transparent p-2 text-xs text-muted-foreground/75">
|
|
866
|
+
OpenAI Responses not configured
|
|
867
|
+
</div>
|
|
868
|
+
)}
|
|
869
|
+
</div>
|
|
878
870
|
)}
|
|
879
871
|
|
|
880
872
|
{testResults?.models !== undefined && Object.keys(testResults.models).length > 0 && (
|
|
@@ -535,7 +535,7 @@ export function ProvidersPanel({
|
|
|
535
535
|
if (showForm || editingProvider) {
|
|
536
536
|
return (
|
|
537
537
|
<div className="space-y-4">
|
|
538
|
-
<div className="
|
|
538
|
+
<div className="sticky top-0 z-10 flex items-center justify-between gap-3 rounded-[8px] bg-background/95 px-1 py-1 backdrop-blur">
|
|
539
539
|
<h3 className="text-lg font-medium">
|
|
540
540
|
{editingProvider ? "Edit Provider" : "Add New Provider"}
|
|
541
541
|
</h3>
|
|
@@ -554,7 +554,7 @@ export function ProvidersPanel({
|
|
|
554
554
|
|
|
555
555
|
return (
|
|
556
556
|
<div className="space-y-4">
|
|
557
|
-
<div className="
|
|
557
|
+
<div className="sticky top-0 z-10 flex items-center justify-between gap-3 rounded-[8px] bg-background/95 px-1 py-1 backdrop-blur">
|
|
558
558
|
<h3 className="text-lg font-medium">Providers</h3>
|
|
559
559
|
<div className="flex items-center gap-2">
|
|
560
560
|
<TooltipProvider>
|
|
@@ -622,7 +622,7 @@ export function ProvidersPanel({
|
|
|
622
622
|
</div>
|
|
623
623
|
|
|
624
624
|
{configPath !== null && (
|
|
625
|
-
<div className="
|
|
625
|
+
<div className="flex items-center gap-2 rounded-[8px] bg-muted/15 px-3 py-2 text-xs text-muted-foreground">
|
|
626
626
|
<span className="shrink-0">Config:</span>
|
|
627
627
|
<span className="font-mono truncate" title={configPath}>
|
|
628
628
|
{configPath}
|
|
@@ -674,7 +674,7 @@ export function ProvidersPanel({
|
|
|
674
674
|
</div>
|
|
675
675
|
) : (
|
|
676
676
|
<div className="space-y-3">
|
|
677
|
-
<div className="
|
|
677
|
+
<div className="inline-flex w-fit gap-1 rounded-[8px] bg-muted/20 p-1">
|
|
678
678
|
{(["all", "personal", "company"] as const).map((tab) => (
|
|
679
679
|
<TooltipProvider key={tab}>
|
|
680
680
|
<Tooltip>
|
|
@@ -682,10 +682,10 @@ export function ProvidersPanel({
|
|
|
682
682
|
<button
|
|
683
683
|
type="button"
|
|
684
684
|
onClick={() => setSourceFilter(tab)}
|
|
685
|
-
className={`px-3 py-
|
|
685
|
+
className={`rounded-md px-3 py-1.5 text-sm font-medium transition-colors ${
|
|
686
686
|
sourceFilter === tab
|
|
687
|
-
? "
|
|
688
|
-
: "
|
|
687
|
+
? "bg-background text-foreground shadow-sm"
|
|
688
|
+
: "text-muted-foreground hover:text-foreground"
|
|
689
689
|
}`}
|
|
690
690
|
>
|
|
691
691
|
{tab === "all" ? "All" : tab === "personal" ? "Personal" : "Company"}
|