@tonyclaw/llm-inspector 1.19.0 → 1.19.2

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 +338 -102
  2. package/.output/nitro.json +1 -1
  3. package/.output/public/assets/{CompareDrawer-DwayZPPO.js → CompareDrawer-BzTsEelr.js} +1 -1
  4. package/.output/public/assets/{ProxyViewerContainer-iv3LVMEW.js → ProxyViewerContainer-BHm-n-_W.js} +9 -9
  5. package/.output/public/assets/{ReplayDialog-CaV1elYO.js → ReplayDialog-Dxxo80xO.js} +1 -1
  6. package/.output/public/assets/{RequestAnatomy-CSfnjK7j.js → RequestAnatomy-D-swiaii.js} +1 -1
  7. package/.output/public/assets/{ResponseView-YkOL__xm.js → ResponseView-DvdH2bGk.js} +1 -1
  8. package/.output/public/assets/{StreamingChunkSequence-D_p6L-oB.js → StreamingChunkSequence-D_RzgyKq.js} +1 -1
  9. package/.output/public/assets/_sessionId-DdODJCYY.js +1 -0
  10. package/.output/public/assets/{index-DeJyypsp.css → index-Bqi9RAGS.css} +1 -1
  11. package/.output/public/assets/index-EvnsNPOK.js +1 -0
  12. package/.output/public/assets/{json-viewer-BB-9bqnP.js → json-viewer-DIHZbEId.js} +1 -1
  13. package/.output/public/assets/{main-COVN451W.js → main-Br2EjrqZ.js} +2 -2
  14. package/.output/server/{_sessionId-BJT5qIib.mjs → _sessionId-CPkCxTP8.mjs} +4 -3
  15. package/.output/server/_ssr/{CompareDrawer-DNGYdUXs.mjs → CompareDrawer-DKHgXC5-.mjs} +4 -4
  16. package/.output/server/_ssr/{ProxyViewerContainer-B-zDOLYE.mjs → ProxyViewerContainer-B41D-2Eo.mjs} +57 -9
  17. package/.output/server/_ssr/{ReplayDialog-DWeqMA4y.mjs → ReplayDialog-D2piRWb0.mjs} +5 -5
  18. package/.output/server/_ssr/{RequestAnatomy-TOsrMu9-.mjs → RequestAnatomy-Ce7QdQNP.mjs} +4 -3
  19. package/.output/server/_ssr/{ResponseView-BuqdPrzm.mjs → ResponseView-D50UPv-r.mjs} +5 -5
  20. package/.output/server/_ssr/{StreamingChunkSequence-DuzNZkqL.mjs → StreamingChunkSequence-CDlNFS3Z.mjs} +4 -4
  21. package/.output/server/_ssr/{index-1nCQUt3y.mjs → index-DhAQxjnZ.mjs} +4 -3
  22. package/.output/server/_ssr/index.mjs +2 -2
  23. package/.output/server/_ssr/{json-viewer-BL8xhHbi.mjs → json-viewer-BZRjG_f7.mjs} +4 -4
  24. package/.output/server/_ssr/{router-aCaUgVTW.mjs → router-yP98-Gq-.mjs} +126 -105
  25. package/.output/server/{_tanstack-start-manifest_v-cBRxvCjb.mjs → _tanstack-start-manifest_v-d4a4xlOi.mjs} +1 -1
  26. package/.output/server/index.mjs +64 -64
  27. package/README.md +22 -0
  28. package/package.json +3 -1
  29. package/src/cli/detect-tools.ts +1 -0
  30. package/src/cli/templates/skill-onboard.ts +204 -71
  31. package/src/cli.ts +164 -39
  32. package/src/components/ProxyViewerContainer.tsx +52 -0
  33. package/src/components/proxy-viewer/LogEntryHeader.tsx +1 -0
  34. package/src/proxy/logFinalizer.ts +7 -3
  35. package/src/proxy/sessionProcess.ts +14 -7
  36. package/src/proxy/sessionSupervisor.ts +3 -2
  37. package/src/proxy/socketTracker.ts +19 -7
  38. package/styles/globals.css +14 -7
  39. package/.output/public/assets/_sessionId-BgCVUC6R.js +0 -1
  40. package/.output/public/assets/index-CWA4S0FO.js +0 -1
@@ -35,110 +35,110 @@ const headers = ((m) => function headersRouteRule(event) {
35
35
  }
36
36
  });
37
37
  const assets = {
38
+ "/assets/index-EvnsNPOK.js": {
39
+ "type": "text/javascript; charset=utf-8",
40
+ "etag": '"74-Ttr2CWyviy8DiIX5gb9+i1f50ew"',
41
+ "mtime": "2026-06-18T08:23:57.371Z",
42
+ "size": 116,
43
+ "path": "../public/assets/index-EvnsNPOK.js"
44
+ },
38
45
  "/assets/alibaba-TTwafVwX.svg": {
39
46
  "type": "image/svg+xml",
40
47
  "etag": '"171b-6dyV5K8QjiaY35sN9qNprh9zDIs"',
41
- "mtime": "2026-06-17T12:54:11.905Z",
48
+ "mtime": "2026-06-18T08:23:57.367Z",
42
49
  "size": 5915,
43
50
  "path": "../public/assets/alibaba-TTwafVwX.svg"
44
51
  },
45
- "/assets/CompareDrawer-DwayZPPO.js": {
46
- "type": "text/javascript; charset=utf-8",
47
- "etag": '"4a1f-264SgIl+1g3c9tpGHL9lbRJnPKQ"',
48
- "mtime": "2026-06-17T12:54:11.907Z",
49
- "size": 18975,
50
- "path": "../public/assets/CompareDrawer-DwayZPPO.js"
52
+ "/assets/index-Bqi9RAGS.css": {
53
+ "type": "text/css; charset=utf-8",
54
+ "etag": '"177a9-QMoW/GsYu1jERI0JyFHA9CiB/o0"',
55
+ "mtime": "2026-06-18T08:23:57.371Z",
56
+ "size": 96169,
57
+ "path": "../public/assets/index-Bqi9RAGS.css"
51
58
  },
52
- "/assets/index-CWA4S0FO.js": {
59
+ "/assets/CompareDrawer-BzTsEelr.js": {
53
60
  "type": "text/javascript; charset=utf-8",
54
- "etag": '"74-LBsuhSxmzBMeLrsm7LPh3h+Pnag"',
55
- "mtime": "2026-06-17T12:54:11.907Z",
56
- "size": 116,
57
- "path": "../public/assets/index-CWA4S0FO.js"
61
+ "etag": '"4a1f-Qg1+Rt9EXNIgQdrNcwWDBW4GbSo"',
62
+ "mtime": "2026-06-18T08:23:57.371Z",
63
+ "size": 18975,
64
+ "path": "../public/assets/CompareDrawer-BzTsEelr.js"
58
65
  },
59
66
  "/assets/minimax-BPMzvuL-.jpeg": {
60
67
  "type": "image/jpeg",
61
68
  "etag": '"1b06-IwivU89ko5UTMUM1/t7hn4sQK9A"',
62
- "mtime": "2026-06-17T12:54:11.904Z",
69
+ "mtime": "2026-06-18T08:23:57.370Z",
63
70
  "size": 6918,
64
71
  "path": "../public/assets/minimax-BPMzvuL-.jpeg"
65
72
  },
66
- "/assets/index-DeJyypsp.css": {
67
- "type": "text/css; charset=utf-8",
68
- "etag": '"17504-zMXz49VysEK/ru01MvYLc8/SiPI"',
69
- "mtime": "2026-06-17T12:54:11.907Z",
70
- "size": 95492,
71
- "path": "../public/assets/index-DeJyypsp.css"
73
+ "/assets/main-Br2EjrqZ.js": {
74
+ "type": "text/javascript; charset=utf-8",
75
+ "etag": '"50a37-vmFQ+AWLZBZB2He0hGozNaRNVJI"',
76
+ "mtime": "2026-06-18T08:23:57.371Z",
77
+ "size": 330295,
78
+ "path": "../public/assets/main-Br2EjrqZ.js"
72
79
  },
73
- "/assets/json-viewer-BB-9bqnP.js": {
80
+ "/assets/json-viewer-DIHZbEId.js": {
74
81
  "type": "text/javascript; charset=utf-8",
75
- "etag": '"1e651-zdhq9AAv3eOfDUuAbYr+ugOVlCM"',
76
- "mtime": "2026-06-17T12:54:11.907Z",
82
+ "etag": '"1e651-45Abi6ZVH/q1l0aOWq20PEO9Tcg"',
83
+ "mtime": "2026-06-18T08:23:57.371Z",
77
84
  "size": 124497,
78
- "path": "../public/assets/json-viewer-BB-9bqnP.js"
85
+ "path": "../public/assets/json-viewer-DIHZbEId.js"
79
86
  },
80
- "/assets/ReplayDialog-CaV1elYO.js": {
87
+ "/assets/RequestAnatomy-D-swiaii.js": {
81
88
  "type": "text/javascript; charset=utf-8",
82
- "etag": '"11c0-/RAWUYNo5/wpVD3wOoFAlfR1jXo"',
83
- "mtime": "2026-06-17T12:54:11.907Z",
84
- "size": 4544,
85
- "path": "../public/assets/ReplayDialog-CaV1elYO.js"
89
+ "etag": '"142a-gnEHcgfEHRgV0NMxY0iXIZHIAC0"',
90
+ "mtime": "2026-06-18T08:23:57.371Z",
91
+ "size": 5162,
92
+ "path": "../public/assets/RequestAnatomy-D-swiaii.js"
86
93
  },
87
- "/assets/ResponseView-YkOL__xm.js": {
94
+ "/assets/ResponseView-DvdH2bGk.js": {
88
95
  "type": "text/javascript; charset=utf-8",
89
- "etag": '"6e91-iIWbEI2Zbmf8R84P7u0RBPcr9/E"',
90
- "mtime": "2026-06-17T12:54:11.907Z",
96
+ "etag": '"6e91-Q4HU85yuyXxRWZzw+CnDW/vnjAo"',
97
+ "mtime": "2026-06-18T08:23:57.371Z",
91
98
  "size": 28305,
92
- "path": "../public/assets/ResponseView-YkOL__xm.js"
99
+ "path": "../public/assets/ResponseView-DvdH2bGk.js"
100
+ },
101
+ "/assets/ReplayDialog-Dxxo80xO.js": {
102
+ "type": "text/javascript; charset=utf-8",
103
+ "etag": '"11c0-L7iZUpQjkDLpKkR+MgAZO1Q6ns8"',
104
+ "mtime": "2026-06-18T08:23:57.371Z",
105
+ "size": 4544,
106
+ "path": "../public/assets/ReplayDialog-Dxxo80xO.js"
107
+ },
108
+ "/assets/StreamingChunkSequence-D_RzgyKq.js": {
109
+ "type": "text/javascript; charset=utf-8",
110
+ "etag": '"d81-8i4/6r70kba84fXrnFFC/+/S8Sw"',
111
+ "mtime": "2026-06-18T08:23:57.371Z",
112
+ "size": 3457,
113
+ "path": "../public/assets/StreamingChunkSequence-D_RzgyKq.js"
93
114
  },
94
115
  "/assets/zhipuai-BPNAnxo-.svg": {
95
116
  "type": "image/svg+xml",
96
117
  "etag": '"2bf8-hNaLCTi89nOFCsIIfWpP/jrfo0s"',
97
- "mtime": "2026-06-17T12:54:11.905Z",
118
+ "mtime": "2026-06-18T08:23:57.370Z",
98
119
  "size": 11256,
99
120
  "path": "../public/assets/zhipuai-BPNAnxo-.svg"
100
121
  },
101
- "/assets/RequestAnatomy-CSfnjK7j.js": {
102
- "type": "text/javascript; charset=utf-8",
103
- "etag": '"142a-CwwpIZz2Gaf/JogYLj0DK/Poz8o"',
104
- "mtime": "2026-06-17T12:54:11.907Z",
105
- "size": 5162,
106
- "path": "../public/assets/RequestAnatomy-CSfnjK7j.js"
107
- },
108
- "/assets/StreamingChunkSequence-D_p6L-oB.js": {
109
- "type": "text/javascript; charset=utf-8",
110
- "etag": '"d81-IO4bgOssZoDdAbKHYgyONSXgSw8"',
111
- "mtime": "2026-06-17T12:54:11.907Z",
112
- "size": 3457,
113
- "path": "../public/assets/StreamingChunkSequence-D_p6L-oB.js"
114
- },
115
- "/assets/_sessionId-BgCVUC6R.js": {
122
+ "/assets/_sessionId-DdODJCYY.js": {
116
123
  "type": "text/javascript; charset=utf-8",
117
- "etag": '"d2-qKl7gcPhCfGQU9AuDUFKCrL9cx0"',
118
- "mtime": "2026-06-17T12:54:11.907Z",
124
+ "etag": '"d2-f13W0xvGzYOxgV34bdQslyMj4WE"',
125
+ "mtime": "2026-06-18T08:23:57.371Z",
119
126
  "size": 210,
120
- "path": "../public/assets/_sessionId-BgCVUC6R.js"
121
- },
122
- "/assets/main-COVN451W.js": {
123
- "type": "text/javascript; charset=utf-8",
124
- "etag": '"50a37-YPT2eeRreT3u8eoQvC2l/pD2i/4"',
125
- "mtime": "2026-06-17T12:54:11.907Z",
126
- "size": 330295,
127
- "path": "../public/assets/main-COVN451W.js"
127
+ "path": "../public/assets/_sessionId-DdODJCYY.js"
128
128
  },
129
129
  "/assets/qwen-CONDcHqt.png": {
130
130
  "type": "image/png",
131
131
  "etag": '"572c3-cdJAPaHdOvFCGzuaQjagdgOu6XE"',
132
- "mtime": "2026-06-17T12:54:11.907Z",
132
+ "mtime": "2026-06-18T08:23:57.371Z",
133
133
  "size": 357059,
134
134
  "path": "../public/assets/qwen-CONDcHqt.png"
135
135
  },
136
- "/assets/ProxyViewerContainer-iv3LVMEW.js": {
136
+ "/assets/ProxyViewerContainer-BHm-n-_W.js": {
137
137
  "type": "text/javascript; charset=utf-8",
138
- "etag": '"76d0d-QZpfZOIsRRwrq+swugwZ7pHUlc0"',
139
- "mtime": "2026-06-17T12:54:11.907Z",
140
- "size": 486669,
141
- "path": "../public/assets/ProxyViewerContainer-iv3LVMEW.js"
138
+ "etag": '"76fed-fJVWNR0ZLTxGc3xnZxX5o1sFXvc"',
139
+ "mtime": "2026-06-18T08:23:57.371Z",
140
+ "size": 487405,
141
+ "path": "../public/assets/ProxyViewerContainer-BHm-n-_W.js"
142
142
  }
143
143
  };
144
144
  function readAsset(id) {
package/README.md CHANGED
@@ -18,6 +18,7 @@
18
18
  - **Web UI**:`http://localhost:25947`
19
19
  - **Proxy**:`http://localhost:25947/proxy`
20
20
  - **MCP Server**:`http://localhost:25947/api/mcp`
21
+ - **Chrome Companion**:`extensions/chrome`(通过 `chrome://extensions` 以 Load unpacked 方式加载)
21
22
 
22
23
  ## 核心能力
23
24
 
@@ -53,6 +54,8 @@ llm-inspector
53
54
  ```bash
54
55
  llm-inspector --no-open
55
56
  llm-inspector --port 3000
57
+ llm-inspector --background
58
+ llm-inspector --force-restart
56
59
  llm-inspector --config-dir ./local-config
57
60
  llm-inspector --providers '[{"name":"OpenAI","apiKey":"sk-...","models":["gpt-4o-mini"],"openaiBaseUrl":"https://api.openai.com/v1","authHeader":"bearer","createdAt":"2026-01-01T00:00:00.000Z","updatedAt":"2026-01-01T00:00:00.000Z","id":"demo"}]'
58
61
  ```
@@ -73,6 +76,23 @@ bun install
73
76
  bun run dev
74
77
  ```
75
78
 
79
+ ### Chrome Companion 扩展
80
+
81
+ 仓库内提供了一个轻量 Chrome 侧边栏扩展,用来连接本机 llm-inspector、查看运行状态和最近请求,并快速打开 Dashboard 或复制代理命令。
82
+
83
+ ```text
84
+ extensions/chrome
85
+ ```
86
+
87
+ 启动方式:
88
+
89
+ 1. 先运行 `llm-inspector` 或 `bun run dev`。
90
+ 2. 打开 `chrome://extensions`。
91
+ 3. 开启 **Developer mode**。
92
+ 4. 点击 **Load unpacked**。
93
+ 5. 选择 `extensions/chrome` 目录。
94
+ 6. 点击扩展图标打开侧边栏。
95
+
76
96
  ## 配置 Provider
77
97
 
78
98
  打开 Web UI,进入 **Settings** 添加 Provider:
@@ -315,6 +335,8 @@ ANTHROPIC_BASE_URL=http://localhost:25947/proxy claude
315
335
  - [架构说明](docs/Architecture.md)
316
336
  - [开发指南](docs/Development.md)
317
337
  - [MCP Server](docs/MCP-Server.md)
338
+ - [CHANGELOG](CHANGELOG.md) — release notes
339
+ - [CONTRIBUTING](CONTRIBUTING.md) — how to land a change
318
340
 
319
341
  ## License
320
342
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonyclaw/llm-inspector",
3
- "version": "1.19.0",
3
+ "version": "1.19.2",
4
4
  "type": "module",
5
5
  "description": "LLM API proxy inspector — captures and displays requests/responses from AI coding tools in a web UI",
6
6
  "license": "MIT",
@@ -40,6 +40,8 @@
40
40
  "lint": "eslint .",
41
41
  "format": "biome format --write .",
42
42
  "format:check": "biome format .",
43
+ "extension:zip": "node scripts/pack-chrome-extension.mjs",
44
+ "extension:release": "node scripts/release-chrome-extension.mjs",
43
45
  "knip": "knip",
44
46
  "check": "bun format && bun typecheck && bun lint",
45
47
  "prepare": "husky",
@@ -47,6 +47,7 @@ function which(bin: string): string | null {
47
47
  const out = execFileSync("where", [bin], {
48
48
  encoding: "utf8",
49
49
  timeout: 3000,
50
+ windowsHide: true,
50
51
  stdio: ["ignore", "pipe", "ignore"],
51
52
  });
52
53
  const first = out.split(/\r?\n/).find((line) => line.trim().length > 0);