@chatpanel/bridge 0.10.17 → 0.10.19
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/package.json +1 -1
- package/src/engines/claude.js +3 -0
- package/src/server.js +12 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chatpanel/bridge",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local bridge that exposes the AI coding agents installed on your machine — Claude Code (CLI), Codex (CLI), and Antigravity CLI (formerly Gemini CLI, which remains available for business/enterprise) — to the ChatPanel Chrome extension over a localhost SSE endpoint. Bring your own agent.",
|
|
6
6
|
"keywords": [
|
package/src/engines/claude.js
CHANGED
|
@@ -301,6 +301,9 @@ function toolSummary(block) {
|
|
|
301
301
|
if (i.file_path) return path.basename(i.file_path);
|
|
302
302
|
if (i.pattern) return i.pattern;
|
|
303
303
|
if (i.url) return i.url;
|
|
304
|
+
if (i.description) return String(i.description).slice(0, 80); // Task (subagent) — what it's for
|
|
305
|
+
if (i.query) return String(i.query).slice(0, 80); // WebSearch / search tools
|
|
306
|
+
if (i.prompt) return String(i.prompt).slice(0, 80); // subagent prompt fallback
|
|
304
307
|
return '';
|
|
305
308
|
}
|
|
306
309
|
|
package/src/server.js
CHANGED
|
@@ -37,7 +37,7 @@ import { assertPublicHttpUrl } from './ssrf.js';
|
|
|
37
37
|
// Hardcoded (not read from package.json) so it survives Bun's single-file
|
|
38
38
|
// --compile, where package.json isn't on a readable FS. CI fails the publish if
|
|
39
39
|
// this drifts from package.json, so the two can't silently diverge.
|
|
40
|
-
const VERSION = '0.10.
|
|
40
|
+
const VERSION = '0.10.19';
|
|
41
41
|
const HOST = process.env.CHATPANEL_BRIDGE_HOST || '127.0.0.1';
|
|
42
42
|
const PORT = Number(process.env.CHATPANEL_BRIDGE_PORT) || 4319;
|
|
43
43
|
|
|
@@ -716,6 +716,17 @@ function runMcpStdioProxy(url) {
|
|
|
716
716
|
function startServer() {
|
|
717
717
|
enrichPath(); // so codex/agy (Antigravity) are found even under a minimal service PATH
|
|
718
718
|
ensureToken(); // per-install bearer token for privileged routes (defense-in-depth)
|
|
719
|
+
// Fail LOUD on a port clash. The bridge binds a FIXED 4319 so the extension always
|
|
720
|
+
// finds it; if it's taken, say how to recover instead of dying on a raw stack trace.
|
|
721
|
+
server.on('error', (e) => {
|
|
722
|
+
if (e && e.code === 'EADDRINUSE') {
|
|
723
|
+
log('error', `Port ${PORT} is already in use — another app (or a second bridge) has it.`);
|
|
724
|
+
log('error', `Fix: free the port, or run with CHATPANEL_BRIDGE_PORT=<port> and set the same Bridge URL in the extension's settings.`);
|
|
725
|
+
process.exit(1);
|
|
726
|
+
}
|
|
727
|
+
log('error', `bridge server error: ${e?.message || e}`);
|
|
728
|
+
process.exit(1);
|
|
729
|
+
});
|
|
719
730
|
server.listen(PORT, HOST, async () => {
|
|
720
731
|
log('info', `listening on http://${HOST}:${PORT}`);
|
|
721
732
|
for (const [, { engine, label, hidden }] of Object.entries(ENGINES)) {
|