@essentialai/cc-bridge-mcp-server 0.2.0 → 0.2.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.
- package/dist/services/cc-cli.d.ts.map +1 -1
- package/dist/services/cc-cli.js +59 -33
- package/dist/services/cc-cli.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-cli.d.ts","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"cc-cli.d.ts","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,aAAa,CAAC,CAmGxB"}
|
package/dist/services/cc-cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
2
|
import { getConfig } from "../config.js";
|
|
3
3
|
export function execClaude(sessionId, message, cwd) {
|
|
4
4
|
return new Promise((resolve) => {
|
|
@@ -8,41 +8,67 @@ export function execClaude(sessionId, message, cwd) {
|
|
|
8
8
|
message.length > config.CC_BRIDGE_CHAR_LIMIT
|
|
9
9
|
? message.slice(0, config.CC_BRIDGE_CHAR_LIMIT) + "\n...[truncated]"
|
|
10
10
|
: message;
|
|
11
|
-
const args = [
|
|
12
|
-
|
|
11
|
+
const args = [
|
|
12
|
+
"--resume", sessionId,
|
|
13
|
+
"--dangerously-skip-permissions",
|
|
14
|
+
"--no-session-persistence",
|
|
15
|
+
"-p", truncated,
|
|
16
|
+
];
|
|
17
|
+
// Strip Claude Code env vars so the subprocess doesn't think it's
|
|
18
|
+
// running inside a parent Claude session (which causes it to hang).
|
|
19
|
+
const cleanEnv = Object.fromEntries(Object.entries(process.env).filter(([key]) => !key.startsWith("CLAUDE") && key !== "MCP_TRANSPORT"));
|
|
20
|
+
const child = spawn(config.CC_BRIDGE_CLAUDE_PATH, args, {
|
|
13
21
|
cwd,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
22
|
+
env: cleanEnv,
|
|
23
|
+
// stdin ignored: prevents child from blocking on stdin read.
|
|
24
|
+
// stdout/stderr piped: we capture the output.
|
|
25
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
26
|
+
});
|
|
27
|
+
let stdout = "";
|
|
28
|
+
let stderr = "";
|
|
29
|
+
let killed = false;
|
|
30
|
+
// Enforce timeout manually since spawn doesn't have a timeout option
|
|
31
|
+
const timer = setTimeout(() => {
|
|
32
|
+
killed = true;
|
|
33
|
+
child.kill("SIGTERM");
|
|
34
|
+
}, config.CC_BRIDGE_TIMEOUT_MS);
|
|
35
|
+
child.stdout.on("data", (chunk) => {
|
|
36
|
+
stdout += chunk.toString();
|
|
37
|
+
});
|
|
38
|
+
child.stderr.on("data", (chunk) => {
|
|
39
|
+
stderr += chunk.toString();
|
|
40
|
+
});
|
|
41
|
+
child.on("error", (err) => {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
if (err.code === "ENOENT") {
|
|
44
|
+
resolve({
|
|
45
|
+
stdout: "",
|
|
46
|
+
stderr: `CLI_NOT_FOUND: '${config.CC_BRIDGE_CLAUDE_PATH}' not found. Install Claude Code or set CC_BRIDGE_CLAUDE_PATH.`,
|
|
47
|
+
exitCode: 127,
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
resolve({
|
|
52
|
+
stdout: stdout || "",
|
|
53
|
+
stderr: `CLI_EXEC_FAILED: spawn error: ${err.message}`,
|
|
54
|
+
exitCode: 1,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
child.on("close", (code) => {
|
|
58
|
+
clearTimeout(timer);
|
|
59
|
+
if (killed) {
|
|
60
|
+
resolve({
|
|
61
|
+
stdout: stdout || "",
|
|
62
|
+
stderr: `CLI_TIMEOUT: CLI subprocess timed out after ${config.CC_BRIDGE_TIMEOUT_MS}ms. Increase CC_BRIDGE_TIMEOUT_MS if needed.`,
|
|
63
|
+
exitCode: null,
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (code !== 0) {
|
|
42
68
|
resolve({
|
|
43
69
|
stdout: stdout || "",
|
|
44
|
-
stderr: `CLI_EXEC_FAILED: claude exited with code ${
|
|
45
|
-
exitCode,
|
|
70
|
+
stderr: `CLI_EXEC_FAILED: claude exited with code ${code}. stderr: ${stderr}`,
|
|
71
|
+
exitCode: code,
|
|
46
72
|
});
|
|
47
73
|
return;
|
|
48
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-cli.js","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cc-cli.js","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.eaisdevelopment/cc-bridge-mcp-server",
|
|
4
4
|
"title": "Claude Code Bridge from Essential AI Solutions (essentialai.uk)",
|
|
5
5
|
"description": "MCP bridge for inter-session communication between Claude Code instances",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.1",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/eaisdevelopment/cc-bridge-mcp-server",
|
|
9
9
|
"source": "github"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@essentialai/cc-bridge-mcp-server",
|
|
15
|
-
"version": "0.2.
|
|
15
|
+
"version": "0.2.1",
|
|
16
16
|
"runtimeHint": "npx",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|