@essentialai/cogent-bridge 1.1.0 → 1.3.0
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/README.md +7 -7
- package/dist/backend/http-backend.d.ts +2 -3
- package/dist/backend/http-backend.d.ts.map +1 -1
- package/dist/backend/http-backend.js +5 -4
- package/dist/backend/http-backend.js.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/services/auto-relay.d.ts +48 -0
- package/dist/services/auto-relay.d.ts.map +1 -0
- package/dist/services/auto-relay.js +164 -0
- package/dist/services/auto-relay.js.map +1 -0
- package/dist/services/heartbeat.d.ts +35 -0
- package/dist/services/heartbeat.d.ts.map +1 -0
- package/dist/services/heartbeat.js +101 -0
- package/dist/services/heartbeat.js.map +1 -0
- package/dist/startup.d.ts +1 -0
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +17 -2
- package/dist/startup.js.map +1 -1
- package/dist/tools/create-session.js +1 -1
- package/dist/tools/create-session.js.map +1 -1
- package/dist/tools/deregister-peer.d.ts.map +1 -1
- package/dist/tools/deregister-peer.js +3 -0
- package/dist/tools/deregister-peer.js.map +1 -1
- package/dist/tools/register-peer.d.ts.map +1 -1
- package/dist/tools/register-peer.js +7 -1
- package/dist/tools/register-peer.js.map +1 -1
- package/dist/tools/send-message.d.ts.map +1 -1
- package/dist/tools/send-message.js +14 -3
- package/dist/tools/send-message.js.map +1 -1
- package/dist/wizard/templates.js +2 -2
- package/dist/wizard/templates.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,10 +8,10 @@ Cogent Bridge from Essential AI Solutions (essentialai.uk) — MCP server for in
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
claude plugin marketplace add eaisdevelopment/mcp-agent-bridge
|
|
11
|
-
claude plugin install cogent
|
|
11
|
+
claude plugin install cogent@mcp-agent-bridge
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
Restart Claude Code. Use `/cogent
|
|
14
|
+
Restart Claude Code. Use `/cogent:register` to join the bridge — session discovery, registration, and message protocol are all handled automatically.
|
|
15
15
|
|
|
16
16
|
### Alternative: Manual Setup
|
|
17
17
|
|
|
@@ -20,7 +20,7 @@ Add `.mcp.json` to **both** project repositories:
|
|
|
20
20
|
```json
|
|
21
21
|
{
|
|
22
22
|
"mcpServers": {
|
|
23
|
-
"cogent
|
|
23
|
+
"cogent": {
|
|
24
24
|
"command": "npx",
|
|
25
25
|
"args": ["-y", "@essentialai/cogent-bridge"],
|
|
26
26
|
"env": {}
|
|
@@ -32,7 +32,7 @@ Add `.mcp.json` to **both** project repositories:
|
|
|
32
32
|
Or use the CLI:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
claude mcp add --transport stdio cogent
|
|
35
|
+
claude mcp add --transport stdio cogent -- npx -y @essentialai/cogent-bridge
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Restart Claude Code in both repos. The bridge tools are now available.
|
|
@@ -144,7 +144,7 @@ To override defaults, set environment variables in your `.mcp.json`:
|
|
|
144
144
|
```json
|
|
145
145
|
{
|
|
146
146
|
"mcpServers": {
|
|
147
|
-
"cogent
|
|
147
|
+
"cogent": {
|
|
148
148
|
"command": "npx",
|
|
149
149
|
"args": ["-y", "@essentialai/cogent-bridge"],
|
|
150
150
|
"env": {
|
|
@@ -216,7 +216,7 @@ Find your npx path with `which npx` (e.g., `/Users/you/.nvm/versions/node/v22.11
|
|
|
216
216
|
```json
|
|
217
217
|
{
|
|
218
218
|
"mcpServers": {
|
|
219
|
-
"cogent
|
|
219
|
+
"cogent": {
|
|
220
220
|
"command": "/Users/you/.nvm/versions/node/v22.11.0/bin/npx",
|
|
221
221
|
"args": ["-y", "@essentialai/cogent-bridge"]
|
|
222
222
|
}
|
|
@@ -227,7 +227,7 @@ Find your npx path with `which npx` (e.g., `/Users/you/.nvm/versions/node/v22.11
|
|
|
227
227
|
**Option 2: Use `claude mcp add` (handles PATH automatically)**
|
|
228
228
|
|
|
229
229
|
```bash
|
|
230
|
-
claude mcp add --transport stdio cogent
|
|
230
|
+
claude mcp add --transport stdio cogent -- npx -y @essentialai/cogent-bridge
|
|
231
231
|
```
|
|
232
232
|
|
|
233
233
|
**Option 3: Ensure NVM loads in non-interactive shells**
|
|
@@ -47,10 +47,9 @@ export declare class HttpBackend implements StorageBackend {
|
|
|
47
47
|
listPeers(): Promise<PeerInfo[]>;
|
|
48
48
|
/**
|
|
49
49
|
* Update last-seen timestamp for a peer.
|
|
50
|
-
*
|
|
51
|
-
* authenticated requests, so this is a no-op.
|
|
50
|
+
* Calls the lightweight heartbeat endpoint on the cloud relay server.
|
|
52
51
|
*/
|
|
53
|
-
updateLastSeen(
|
|
52
|
+
updateLastSeen(peerId: string): Promise<void>;
|
|
54
53
|
/**
|
|
55
54
|
* Record a message in the cloud session.
|
|
56
55
|
* POST /api/sessions/:sessionId/messages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-backend.d.ts","sourceRoot":"","sources":["../../src/backend/http-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-backend.d.ts","sourceRoot":"","sources":["../../src/backend/http-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAe1D;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAY,YAAW,cAAc;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM;IAGpC;;;;;;OAMG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAKpB;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatD;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAK5D;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAMtC;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;;;;OAOG;IACG,aAAa,CACjB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,WAAW,CAAC,GAC9C,OAAO,CAAC,aAAa,CAAC;IAmBzB;;;;;OAKG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAe3E;;;;OAIG;IACG,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC;IAInB;;;;;;;OAOG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC;IAQzB;;;;;;OAMG;IACG,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAoChD"}
|
|
@@ -7,6 +7,7 @@ const PATHS = {
|
|
|
7
7
|
peers: "/api/sessions/:sessionId/peers",
|
|
8
8
|
peer: "/api/sessions/:sessionId/peers/:peerId",
|
|
9
9
|
messages: "/api/sessions/:sessionId/messages",
|
|
10
|
+
heartbeat: "/api/sessions/:sessionId/heartbeat",
|
|
10
11
|
health: "/api/health",
|
|
11
12
|
};
|
|
12
13
|
/**
|
|
@@ -79,11 +80,11 @@ export class HttpBackend {
|
|
|
79
80
|
}
|
|
80
81
|
/**
|
|
81
82
|
* Update last-seen timestamp for a peer.
|
|
82
|
-
*
|
|
83
|
-
* authenticated requests, so this is a no-op.
|
|
83
|
+
* Calls the lightweight heartbeat endpoint on the cloud relay server.
|
|
84
84
|
*/
|
|
85
|
-
async updateLastSeen(
|
|
86
|
-
|
|
85
|
+
async updateLastSeen(peerId) {
|
|
86
|
+
const path = PATHS.heartbeat.replace(":sessionId", this.sessionId);
|
|
87
|
+
await this.http.post(path, { peerId });
|
|
87
88
|
}
|
|
88
89
|
/**
|
|
89
90
|
* Record a message in the cloud session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-backend.js","sourceRoot":"","sources":["../../src/backend/http-backend.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;GAGG;AACH,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,gCAAgC;IACvC,IAAI,EAAE,wCAAwC;IAC9C,QAAQ,EAAE,mCAAmC;IAC7C,MAAM,EAAE,aAAa;CACb,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,WAAW;IAEH;IACA;IAFnB,YACmB,IAAgB,EAChB,SAAiB;QADjB,SAAI,GAAJ,IAAI,CAAY;QAChB,cAAS,GAAT,SAAS,CAAQ;IACjC,CAAC;IAEJ;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,UAAkB,EAClB,GAAW,EACX,KAAa;QAEb,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;aACpB,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;aACrC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,+EAA+E;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,IAAI,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"http-backend.js","sourceRoot":"","sources":["../../src/backend/http-backend.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/config.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
10
10
|
COGENT_LOG_LEVEL: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
11
11
|
COGENT_CLAUDE_PATH: z.ZodDefault<z.ZodString>;
|
|
12
12
|
COGENT_STALE_TIMEOUT_MS: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
COGENT_HEARTBEAT_INTERVAL_MS: z.ZodDefault<z.ZodNumber>;
|
|
13
14
|
}, "strip", z.ZodTypeAny, {
|
|
14
15
|
COGENT_STATE_PATH: string;
|
|
15
16
|
COGENT_POLL_INTERVAL_MS: number;
|
|
@@ -18,6 +19,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
18
19
|
COGENT_LOG_LEVEL: "info" | "debug" | "warn" | "error";
|
|
19
20
|
COGENT_CLAUDE_PATH: string;
|
|
20
21
|
COGENT_STALE_TIMEOUT_MS: number;
|
|
22
|
+
COGENT_HEARTBEAT_INTERVAL_MS: number;
|
|
21
23
|
COGENT_ENDPOINT?: string | undefined;
|
|
22
24
|
COGENT_SESSION_ID?: string | undefined;
|
|
23
25
|
COGENT_SECRET?: string | undefined;
|
|
@@ -32,6 +34,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
32
34
|
COGENT_LOG_LEVEL?: "info" | "debug" | "warn" | "error" | undefined;
|
|
33
35
|
COGENT_CLAUDE_PATH?: string | undefined;
|
|
34
36
|
COGENT_STALE_TIMEOUT_MS?: number | undefined;
|
|
37
|
+
COGENT_HEARTBEAT_INTERVAL_MS?: number | undefined;
|
|
35
38
|
}>;
|
|
36
39
|
export type Config = z.infer<typeof configSchema>;
|
|
37
40
|
export declare function loadConfig(env?: Record<string, string | undefined>): Config;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAIlD,wBAAgB,UAAU,CACxB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,CAUR;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/dist/config.js
CHANGED
|
@@ -15,6 +15,7 @@ export const configSchema = z.object({
|
|
|
15
15
|
.default("info"),
|
|
16
16
|
COGENT_CLAUDE_PATH: z.string().default("claude"),
|
|
17
17
|
COGENT_STALE_TIMEOUT_MS: z.coerce.number().int().min(0).default(1_800_000),
|
|
18
|
+
COGENT_HEARTBEAT_INTERVAL_MS: z.coerce.number().int().min(0).default(60_000),
|
|
18
19
|
});
|
|
19
20
|
let _config = null;
|
|
20
21
|
export function loadConfig(env = process.env) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxE,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACrE,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SACxC,OAAO,CAAC,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChD,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxE,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACrE,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,gBAAgB,EAAE,CAAC;SAChB,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SACxC,OAAO,CAAC,MAAM,CAAC;IAClB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAChD,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1E,4BAA4B,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CAC7E,CAAC,CAAC;AAIH,IAAI,OAAO,GAAkB,IAAI,CAAC;AAElC,MAAM,UAAU,UAAU,CACxB,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { SERVER_NAME, SERVER_VERSION } from "./constants.js";
|
|
4
|
-
import { runStartup, cloudWsClient, cloudInbox } from "./startup.js";
|
|
4
|
+
import { runStartup, cloudWsClient, cloudInbox, autoRelay } from "./startup.js";
|
|
5
5
|
import { logger } from "./logger.js";
|
|
6
6
|
import { registerRegisterPeerTool } from "./tools/register-peer.js";
|
|
7
7
|
import { registerSendMessageTool } from "./tools/send-message.js";
|
|
@@ -11,6 +11,7 @@ import { registerDeregisterPeerTool } from "./tools/deregister-peer.js";
|
|
|
11
11
|
import { registerHealthCheckTool } from "./tools/health-check.js";
|
|
12
12
|
import { registerCreateSessionTool } from "./tools/create-session.js";
|
|
13
13
|
import { registerJoinSessionTool } from "./tools/join-session.js";
|
|
14
|
+
import { heartbeat } from "./services/heartbeat.js";
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Global error handlers -- registered FIRST before anything else
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
@@ -33,6 +34,8 @@ process.on("unhandledRejection", (reason) => {
|
|
|
33
34
|
// ---------------------------------------------------------------------------
|
|
34
35
|
process.on("SIGTERM", () => {
|
|
35
36
|
logger.info("SIGTERM received, shutting down");
|
|
37
|
+
autoRelay.stop();
|
|
38
|
+
heartbeat.stop();
|
|
36
39
|
if (cloudWsClient) {
|
|
37
40
|
cloudWsClient.disconnect();
|
|
38
41
|
}
|
|
@@ -41,6 +44,8 @@ process.on("SIGTERM", () => {
|
|
|
41
44
|
});
|
|
42
45
|
process.on("SIGINT", () => {
|
|
43
46
|
logger.info("SIGINT received, shutting down");
|
|
47
|
+
autoRelay.stop();
|
|
48
|
+
heartbeat.stop();
|
|
44
49
|
if (cloudWsClient) {
|
|
45
50
|
cloudWsClient.disconnect();
|
|
46
51
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MessageRecord } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Auto-relay service that processes incoming cloud messages by calling local
|
|
4
|
+
* execClaude() and sending the response back via the cloud backend.
|
|
5
|
+
*
|
|
6
|
+
* When a WebSocket message arrives for the local peer, this service:
|
|
7
|
+
* 1. Validates it's an incoming message (not our own, not already a response)
|
|
8
|
+
* 2. Injects it into the local Claude Code session via execClaude()
|
|
9
|
+
* 3. Sends the Claude response back to the original sender as a new message
|
|
10
|
+
*
|
|
11
|
+
* This enables automatic back-and-forth dialog between two cloud peers,
|
|
12
|
+
* matching the local-mode behavior where execClaude is called synchronously.
|
|
13
|
+
*/
|
|
14
|
+
export declare class AutoRelayService {
|
|
15
|
+
private localPeerId;
|
|
16
|
+
private localSessionId;
|
|
17
|
+
private localCwd;
|
|
18
|
+
private processing;
|
|
19
|
+
private queue;
|
|
20
|
+
/**
|
|
21
|
+
* Set the local peer info. Called from register-peer tool after
|
|
22
|
+
* successful registration so we know which session to inject into.
|
|
23
|
+
*/
|
|
24
|
+
setLocalPeer(peerId: string, sessionId: string, cwd: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Process an incoming cloud message by invoking local execClaude()
|
|
27
|
+
* and relaying the response back to the sender.
|
|
28
|
+
*
|
|
29
|
+
* Guards:
|
|
30
|
+
* - Not registered yet (localPeerId is null)
|
|
31
|
+
* - Message not addressed to us
|
|
32
|
+
* - Message is from ourselves (prevent echo)
|
|
33
|
+
* - Message is already a response (response field is non-null)
|
|
34
|
+
* - Serialized processing with queue to prevent concurrent execClaude calls
|
|
35
|
+
*/
|
|
36
|
+
handleIncoming(msg: MessageRecord): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Internal: process a single message -- call execClaude and relay response.
|
|
39
|
+
*/
|
|
40
|
+
private _processMessage;
|
|
41
|
+
/**
|
|
42
|
+
* Stop the auto-relay service: clear queue and reset state.
|
|
43
|
+
*/
|
|
44
|
+
stop(): void;
|
|
45
|
+
}
|
|
46
|
+
/** Singleton instance used throughout the application. */
|
|
47
|
+
export declare const autoRelay: AutoRelayService;
|
|
48
|
+
//# sourceMappingURL=auto-relay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-relay.d.ts","sourceRoot":"","sources":["../../src/services/auto-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuB5C;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAuB;IAEpC;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAOlE;;;;;;;;;;OAUG;IACG,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDvD;;OAEG;YACW,eAAe;IA2D7B;;OAEG;IACH,IAAI,IAAI,IAAI;CAQb;AAED,0DAA0D;AAC1D,eAAO,MAAM,SAAS,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { execClaude } from "../services/cc-cli.js";
|
|
2
|
+
import { getBackend } from "../backend/index.js";
|
|
3
|
+
import { logger } from "../logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Format an incoming message for injection into the local Claude Code session.
|
|
6
|
+
* Mirrors the pattern used in send-message.ts's formatBridgeMessage().
|
|
7
|
+
*/
|
|
8
|
+
function formatRelayMessage(fromLabel, fromPeerId, message) {
|
|
9
|
+
return (`[Cogent Bridge message from ${fromLabel} (${fromPeerId})]\n\n` +
|
|
10
|
+
`${message}\n\n` +
|
|
11
|
+
`---\n` +
|
|
12
|
+
`Respond directly to the message above. Your entire response will be relayed back to ${fromLabel}. ` +
|
|
13
|
+
`Do NOT use cogent_send_message or any bridge tools — just answer normally.`);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Auto-relay service that processes incoming cloud messages by calling local
|
|
17
|
+
* execClaude() and sending the response back via the cloud backend.
|
|
18
|
+
*
|
|
19
|
+
* When a WebSocket message arrives for the local peer, this service:
|
|
20
|
+
* 1. Validates it's an incoming message (not our own, not already a response)
|
|
21
|
+
* 2. Injects it into the local Claude Code session via execClaude()
|
|
22
|
+
* 3. Sends the Claude response back to the original sender as a new message
|
|
23
|
+
*
|
|
24
|
+
* This enables automatic back-and-forth dialog between two cloud peers,
|
|
25
|
+
* matching the local-mode behavior where execClaude is called synchronously.
|
|
26
|
+
*/
|
|
27
|
+
export class AutoRelayService {
|
|
28
|
+
localPeerId = null;
|
|
29
|
+
localSessionId = null;
|
|
30
|
+
localCwd = null;
|
|
31
|
+
processing = false;
|
|
32
|
+
queue = [];
|
|
33
|
+
/**
|
|
34
|
+
* Set the local peer info. Called from register-peer tool after
|
|
35
|
+
* successful registration so we know which session to inject into.
|
|
36
|
+
*/
|
|
37
|
+
setLocalPeer(peerId, sessionId, cwd) {
|
|
38
|
+
this.localPeerId = peerId;
|
|
39
|
+
this.localSessionId = sessionId;
|
|
40
|
+
this.localCwd = cwd;
|
|
41
|
+
logger.info(`Auto-relay configured for peer ${peerId} (session: ${sessionId})`);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Process an incoming cloud message by invoking local execClaude()
|
|
45
|
+
* and relaying the response back to the sender.
|
|
46
|
+
*
|
|
47
|
+
* Guards:
|
|
48
|
+
* - Not registered yet (localPeerId is null)
|
|
49
|
+
* - Message not addressed to us
|
|
50
|
+
* - Message is from ourselves (prevent echo)
|
|
51
|
+
* - Message is already a response (response field is non-null)
|
|
52
|
+
* - Serialized processing with queue to prevent concurrent execClaude calls
|
|
53
|
+
*/
|
|
54
|
+
async handleIncoming(msg) {
|
|
55
|
+
// Guard: not registered yet
|
|
56
|
+
if (!this.localPeerId || !this.localSessionId || !this.localCwd) {
|
|
57
|
+
logger.debug("Auto-relay: skipping message (not registered yet)");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Guard: message not for us
|
|
61
|
+
if (msg.toPeerId !== this.localPeerId) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Guard: don't relay our own outgoing messages
|
|
65
|
+
if (msg.fromPeerId === this.localPeerId) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Guard: this is already a response, not a new incoming message needing relay
|
|
69
|
+
if (msg.response !== null) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Serialize processing: queue if already busy
|
|
73
|
+
if (this.processing) {
|
|
74
|
+
logger.debug(`Auto-relay: queuing message from ${msg.fromPeerId} (busy processing)`);
|
|
75
|
+
this.queue.push(msg);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.processing = true;
|
|
79
|
+
try {
|
|
80
|
+
await this._processMessage(msg);
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
this.processing = false;
|
|
84
|
+
// Process queued messages
|
|
85
|
+
while (this.queue.length > 0) {
|
|
86
|
+
const next = this.queue.shift();
|
|
87
|
+
this.processing = true;
|
|
88
|
+
try {
|
|
89
|
+
await this._processMessage(next);
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
this.processing = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Internal: process a single message -- call execClaude and relay response.
|
|
99
|
+
*/
|
|
100
|
+
async _processMessage(msg) {
|
|
101
|
+
const backend = getBackend();
|
|
102
|
+
// Look up sender peer to get their label for better context
|
|
103
|
+
let fromLabel = msg.fromPeerId;
|
|
104
|
+
try {
|
|
105
|
+
const senderPeer = await backend.getPeer(msg.fromPeerId);
|
|
106
|
+
if (senderPeer) {
|
|
107
|
+
fromLabel = senderPeer.label;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Fall back to peerId as label
|
|
112
|
+
}
|
|
113
|
+
const formatted = formatRelayMessage(fromLabel, msg.fromPeerId, msg.message);
|
|
114
|
+
logger.info(`Auto-relay: processing message from ${fromLabel} (${msg.fromPeerId})`);
|
|
115
|
+
const startMs = Date.now();
|
|
116
|
+
try {
|
|
117
|
+
// Call execClaude LOCALLY -- this spawns `claude --resume <sessionId> -p "message"`
|
|
118
|
+
// on the recipient's machine. This is NOT HttpBackend.execClaude() (which is a no-op).
|
|
119
|
+
const result = await execClaude(this.localSessionId, formatted, this.localCwd);
|
|
120
|
+
const durationMs = Date.now() - startMs;
|
|
121
|
+
if (result.exitCode === 0 && result.stdout) {
|
|
122
|
+
// Send the response back to the original sender as a new cloud message.
|
|
123
|
+
// This will trigger the server to push it via WebSocket to the sender,
|
|
124
|
+
// which will trigger their auto-relay in turn.
|
|
125
|
+
try {
|
|
126
|
+
await backend.recordMessage({
|
|
127
|
+
fromPeerId: this.localPeerId,
|
|
128
|
+
toPeerId: msg.fromPeerId,
|
|
129
|
+
message: result.stdout,
|
|
130
|
+
response: null,
|
|
131
|
+
durationMs,
|
|
132
|
+
success: true,
|
|
133
|
+
error: null,
|
|
134
|
+
});
|
|
135
|
+
logger.info(`Auto-relay: response sent back to ${msg.fromPeerId} (${durationMs}ms)`);
|
|
136
|
+
}
|
|
137
|
+
catch (recordErr) {
|
|
138
|
+
logger.error(`Auto-relay: failed to record response message: ${recordErr}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
logger.warn(`Auto-relay: execClaude failed (exit=${result.exitCode}): ${result.stderr}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
const durationMs = Date.now() - startMs;
|
|
147
|
+
logger.error(`Auto-relay: execClaude threw after ${durationMs}ms: ${err}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Stop the auto-relay service: clear queue and reset state.
|
|
152
|
+
*/
|
|
153
|
+
stop() {
|
|
154
|
+
this.queue = [];
|
|
155
|
+
this.localPeerId = null;
|
|
156
|
+
this.localSessionId = null;
|
|
157
|
+
this.localCwd = null;
|
|
158
|
+
this.processing = false;
|
|
159
|
+
logger.debug("Auto-relay stopped");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/** Singleton instance used throughout the application. */
|
|
163
|
+
export const autoRelay = new AutoRelayService();
|
|
164
|
+
//# sourceMappingURL=auto-relay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-relay.js","sourceRoot":"","sources":["../../src/services/auto-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Background heartbeat service that keeps a registered peer alive.
|
|
4
|
+
*
|
|
5
|
+
* When running, it periodically:
|
|
6
|
+
* 1. Sends an MCP debug-level logging notification (keeps stdio pipe active)
|
|
7
|
+
* 2. Calls backend.updateLastSeen() to refresh the peer's lastSeenAt timestamp
|
|
8
|
+
* - Local mode: writes to state file via peer-registry
|
|
9
|
+
* - Cloud mode: POST /api/sessions/:sessionId/heartbeat
|
|
10
|
+
*
|
|
11
|
+
* Auto-stops after MAX_FAILURES consecutive tick failures to avoid log spam.
|
|
12
|
+
*/
|
|
13
|
+
export declare class HeartbeatService {
|
|
14
|
+
private timer;
|
|
15
|
+
private peerId;
|
|
16
|
+
private mcpServer;
|
|
17
|
+
private consecutiveFailures;
|
|
18
|
+
private static readonly MAX_FAILURES;
|
|
19
|
+
/**
|
|
20
|
+
* Start the heartbeat for a registered peer.
|
|
21
|
+
* Idempotent — stops any existing heartbeat before starting a new one.
|
|
22
|
+
*/
|
|
23
|
+
start(peerId: string, mcpServer: McpServer): void;
|
|
24
|
+
/**
|
|
25
|
+
* Stop the heartbeat timer. Safe to call multiple times.
|
|
26
|
+
*/
|
|
27
|
+
stop(): void;
|
|
28
|
+
get isRunning(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Single heartbeat tick.
|
|
31
|
+
*/
|
|
32
|
+
private tick;
|
|
33
|
+
}
|
|
34
|
+
export declare const heartbeat: HeartbeatService;
|
|
35
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAK;IAEzC;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA2BjD;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;YACW,IAAI;CAsCnB;AAED,eAAO,MAAM,SAAS,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { getConfig } from "../config.js";
|
|
2
|
+
import { getBackend } from "../backend/index.js";
|
|
3
|
+
import { logger } from "../logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Background heartbeat service that keeps a registered peer alive.
|
|
6
|
+
*
|
|
7
|
+
* When running, it periodically:
|
|
8
|
+
* 1. Sends an MCP debug-level logging notification (keeps stdio pipe active)
|
|
9
|
+
* 2. Calls backend.updateLastSeen() to refresh the peer's lastSeenAt timestamp
|
|
10
|
+
* - Local mode: writes to state file via peer-registry
|
|
11
|
+
* - Cloud mode: POST /api/sessions/:sessionId/heartbeat
|
|
12
|
+
*
|
|
13
|
+
* Auto-stops after MAX_FAILURES consecutive tick failures to avoid log spam.
|
|
14
|
+
*/
|
|
15
|
+
export class HeartbeatService {
|
|
16
|
+
timer = null;
|
|
17
|
+
peerId = null;
|
|
18
|
+
mcpServer = null;
|
|
19
|
+
consecutiveFailures = 0;
|
|
20
|
+
static MAX_FAILURES = 5;
|
|
21
|
+
/**
|
|
22
|
+
* Start the heartbeat for a registered peer.
|
|
23
|
+
* Idempotent — stops any existing heartbeat before starting a new one.
|
|
24
|
+
*/
|
|
25
|
+
start(peerId, mcpServer) {
|
|
26
|
+
this.stop();
|
|
27
|
+
const config = getConfig();
|
|
28
|
+
const intervalMs = config.COGENT_HEARTBEAT_INTERVAL_MS;
|
|
29
|
+
if (intervalMs <= 0) {
|
|
30
|
+
logger.info("Heartbeat disabled (COGENT_HEARTBEAT_INTERVAL_MS=0)");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.peerId = peerId;
|
|
34
|
+
this.mcpServer = mcpServer;
|
|
35
|
+
this.consecutiveFailures = 0;
|
|
36
|
+
this.timer = setInterval(() => {
|
|
37
|
+
this.tick().catch((err) => {
|
|
38
|
+
logger.warn(`Heartbeat tick error: ${err}`);
|
|
39
|
+
});
|
|
40
|
+
}, intervalMs);
|
|
41
|
+
// Don't prevent Node.js from exiting during shutdown
|
|
42
|
+
this.timer.unref();
|
|
43
|
+
logger.info(`Heartbeat started for peer '${peerId}' every ${intervalMs}ms`);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Stop the heartbeat timer. Safe to call multiple times.
|
|
47
|
+
*/
|
|
48
|
+
stop() {
|
|
49
|
+
if (this.timer) {
|
|
50
|
+
clearInterval(this.timer);
|
|
51
|
+
this.timer = null;
|
|
52
|
+
logger.debug("Heartbeat stopped");
|
|
53
|
+
}
|
|
54
|
+
this.peerId = null;
|
|
55
|
+
this.mcpServer = null;
|
|
56
|
+
this.consecutiveFailures = 0;
|
|
57
|
+
}
|
|
58
|
+
get isRunning() {
|
|
59
|
+
return this.timer !== null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Single heartbeat tick.
|
|
63
|
+
*/
|
|
64
|
+
async tick() {
|
|
65
|
+
if (!this.peerId)
|
|
66
|
+
return;
|
|
67
|
+
try {
|
|
68
|
+
// 1. MCP keepalive: debug-level log notification keeps stdio pipe active
|
|
69
|
+
if (this.mcpServer) {
|
|
70
|
+
try {
|
|
71
|
+
await this.mcpServer.server.sendLoggingMessage({
|
|
72
|
+
level: "debug",
|
|
73
|
+
logger: "cogent-heartbeat",
|
|
74
|
+
data: {
|
|
75
|
+
type: "heartbeat",
|
|
76
|
+
peerId: this.peerId,
|
|
77
|
+
timestamp: new Date().toISOString(),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// sendLoggingMessage may fail if transport is disconnected — non-fatal
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// 2. Backend keepalive: update lastSeenAt timestamp
|
|
86
|
+
const backend = getBackend();
|
|
87
|
+
await backend.updateLastSeen(this.peerId);
|
|
88
|
+
this.consecutiveFailures = 0;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.consecutiveFailures++;
|
|
92
|
+
logger.warn(`Heartbeat failed (${this.consecutiveFailures}/${HeartbeatService.MAX_FAILURES}): ${err}`);
|
|
93
|
+
if (this.consecutiveFailures >= HeartbeatService.MAX_FAILURES) {
|
|
94
|
+
logger.error("Heartbeat stopped after too many consecutive failures");
|
|
95
|
+
this.stop();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export const heartbeat = new HeartbeatService();
|
|
101
|
+
//# sourceMappingURL=heartbeat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/services/heartbeat.ts"],"names":[],"mappings":"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"}
|
package/dist/startup.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CloudWsClient, MessageInbox } from "./cloud/index.js";
|
|
2
2
|
import { HttpClient } from "./cloud/http-client.js";
|
|
3
|
+
export { autoRelay } from "./services/auto-relay.js";
|
|
3
4
|
export declare let cloudWsClient: CloudWsClient | null;
|
|
4
5
|
export declare let cloudInbox: MessageInbox | null;
|
|
5
6
|
export declare let cloudHttpClient: HttpClient | null;
|
package/dist/startup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"startup.d.ts","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAarD,eAAO,IAAI,aAAa,EAAE,aAAa,GAAG,IAAW,CAAC;AACtD,eAAO,IAAI,UAAU,EAAE,YAAY,GAAG,IAAW,CAAC;AAClD,eAAO,IAAI,eAAe,EAAE,UAAU,GAAG,IAAW,CAAC;AAiJrD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAmCf;AAMD,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAmKhD"}
|
package/dist/startup.js
CHANGED
|
@@ -12,6 +12,9 @@ import { BridgeError, BridgeErrorCode } from "./errors.js";
|
|
|
12
12
|
import { loadCredentials } from "./cloud/credential-store.js";
|
|
13
13
|
import { CloudWsClient, MessageInbox } from "./cloud/index.js";
|
|
14
14
|
import { HttpClient } from "./cloud/http-client.js";
|
|
15
|
+
import { autoRelay } from "./services/auto-relay.js";
|
|
16
|
+
// Re-export autoRelay for use in index.ts shutdown
|
|
17
|
+
export { autoRelay } from "./services/auto-relay.js";
|
|
15
18
|
/** UUID v4 regex for distinguishing UUIDs from labels in COGENT_SESSION_ID. */
|
|
16
19
|
const UUID_V4_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
17
20
|
const execFileAsync = promisify(execFile);
|
|
@@ -106,8 +109,20 @@ function createCloudWsClient(endpoint, sessionId, token, http, inbox, pollInterv
|
|
|
106
109
|
peerId: "", // Will be set after first registerPeer call via setPeerId()
|
|
107
110
|
token,
|
|
108
111
|
http,
|
|
109
|
-
onMessage: (msg) => {
|
|
110
|
-
|
|
112
|
+
onMessage: (msg) => {
|
|
113
|
+
inbox.addMessage(msg);
|
|
114
|
+
autoRelay.handleIncoming(msg).catch((err) => {
|
|
115
|
+
logger.error(`Auto-relay failed: ${err}`);
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
onMessages: (msgs) => {
|
|
119
|
+
inbox.addMessages(msgs);
|
|
120
|
+
for (const msg of msgs) {
|
|
121
|
+
autoRelay.handleIncoming(msg).catch((err) => {
|
|
122
|
+
logger.error(`Auto-relay failed: ${err}`);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
},
|
|
111
126
|
onPeerConnected: (peer) => { logger.info(`Peer connected: ${peer.peerId} (${peer.name})`); },
|
|
112
127
|
onPeerDisconnected: (id) => { logger.info(`Peer disconnected: ${id}`); },
|
|
113
128
|
onPeersSnapshot: (peers) => { logger.debug(`Peers snapshot: ${peers.length} peers`); },
|
package/dist/startup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,7 @@ export function registerCreateSessionTool(server) {
|
|
|
92
92
|
`COGENT_SESSION_ID=${data.label ?? data.sessionId}\n` +
|
|
93
93
|
`COGENT_SECRET=${sessionSecret}`,
|
|
94
94
|
mcp_config: {
|
|
95
|
-
"cogent
|
|
95
|
+
"cogent": {
|
|
96
96
|
command: "npx",
|
|
97
97
|
args: ["@essentialai/cogent-bridge"],
|
|
98
98
|
env: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../src/tools/create-session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create-session.js","sourceRoot":"","sources":["../../src/tools/create-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deregister-peer.d.ts","sourceRoot":"","sources":["../../src/tools/deregister-peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"deregister-peer.d.ts","sourceRoot":"","sources":["../../src/tools/deregister-peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqClE"}
|
|
@@ -2,6 +2,7 @@ import { z } from "zod";
|
|
|
2
2
|
import { getBackend } from "../backend/index.js";
|
|
3
3
|
import { successResult, errorResult } from "../errors.js";
|
|
4
4
|
import { logger } from "../logger.js";
|
|
5
|
+
import { heartbeat } from "../services/heartbeat.js";
|
|
5
6
|
export function registerDeregisterPeerTool(server) {
|
|
6
7
|
server.registerTool("cogent_deregister_peer", {
|
|
7
8
|
title: "Deregister Peer",
|
|
@@ -22,6 +23,8 @@ export function registerDeregisterPeerTool(server) {
|
|
|
22
23
|
try {
|
|
23
24
|
const backend = getBackend();
|
|
24
25
|
const removed = await backend.deregisterPeer(peerId);
|
|
26
|
+
if (removed)
|
|
27
|
+
heartbeat.stop();
|
|
25
28
|
return successResult({
|
|
26
29
|
success: removed,
|
|
27
30
|
message: removed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deregister-peer.js","sourceRoot":"","sources":["../../src/tools/deregister-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"deregister-peer.js","sourceRoot":"","sources":["../../src/tools/deregister-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,uDAAuD;YACvD,qDAAqD;QACvD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,uCAAuC,CAAC;SACrD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,OAAO;gBAAE,SAAS,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,aAAa,CAAC;gBACnB,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,OAAO;oBACd,CAAC,CAAC,SAAS,MAAM,gBAAgB;oBACjC,CAAC,CAAC,SAAS,MAAM,sBAAsB;aAC1C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACvD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyMhE"}
|
|
@@ -5,6 +5,8 @@ import { getBackend, isCloudEndpoint } from "../backend/index.js";
|
|
|
5
5
|
import { successResult, errorResult } from "../errors.js";
|
|
6
6
|
import { saveCredentials, loadCredentials, } from "../cloud/credential-store.js";
|
|
7
7
|
import { logger } from "../logger.js";
|
|
8
|
+
import { heartbeat } from "../services/heartbeat.js";
|
|
9
|
+
import { autoRelay } from "../services/auto-relay.js";
|
|
8
10
|
export function registerRegisterPeerTool(server) {
|
|
9
11
|
server.registerTool("cogent_register_peer", {
|
|
10
12
|
title: "Register Peer",
|
|
@@ -97,6 +99,8 @@ export function registerRegisterPeerTool(server) {
|
|
|
97
99
|
const backend = getBackend();
|
|
98
100
|
const existing = await backend.getPeer(peerId);
|
|
99
101
|
const peer = await backend.registerPeer(peerId, sessionId, cwd, label);
|
|
102
|
+
// Set local peer info for auto-relay (cloud mode: incoming messages trigger local execClaude)
|
|
103
|
+
autoRelay.setLocalPeer(peerId, sessionId, cwd);
|
|
100
104
|
// Build the result, enriched with auto-create info if applicable
|
|
101
105
|
const result = {
|
|
102
106
|
success: true,
|
|
@@ -115,7 +119,7 @@ export function registerRegisterPeerTool(server) {
|
|
|
115
119
|
`COGENT_SESSION_ID=${cloudSessionId}\n` +
|
|
116
120
|
`COGENT_SECRET=${autoSecret}`,
|
|
117
121
|
mcp_config: {
|
|
118
|
-
"cogent
|
|
122
|
+
"cogent": {
|
|
119
123
|
command: "npx",
|
|
120
124
|
args: ["@essentialai/cogent-bridge"],
|
|
121
125
|
env: {
|
|
@@ -144,6 +148,8 @@ export function registerRegisterPeerTool(server) {
|
|
|
144
148
|
logger.warn(`Could not trigger WebSocket connection: ${err}`);
|
|
145
149
|
}
|
|
146
150
|
}
|
|
151
|
+
// Start background heartbeat to keep this peer alive
|
|
152
|
+
heartbeat.start(peerId, server);
|
|
147
153
|
return successResult(result);
|
|
148
154
|
}
|
|
149
155
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,gEAAgE;YAChE,+DAA+D;YAC/D,0DAA0D;QAC5D,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,kEAAkE,CAAC;SAChF;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,OAAO,GACX,MAAM,CAAC,eAAe;gBACtB,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAE1C,qDAAqD;YACrD,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,cAAkC,CAAC;YACvC,IAAI,UAA8B,CAAC;YAEnC,IAAI,OAAO,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;gBAExC,kEAAkE;gBAClE,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;gBAC1C,IAAI,UAA8B,CAAC;gBAEnC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,oCAAoC;oBACpC,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;oBAC1C,IACE,SAAS;wBACT,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAC/B,CAAC;wBACD,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC;wBACrC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,oDAAoD;oBACpD,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,GAAG,QAAQ,eAAe,EAC1B;wBACE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;wBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,UAAU;4BAClB,KAAK,EAAE,mBAAmB,KAAK,EAAE;yBAClC,CAAC;qBACH,CACF,CAAC;oBAEF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;wBACb,OAAO,WAAW,CAChB,IAAI,KAAK,CACP,uCAAuC,IAAI,CAAC,MAAM,EAAE,CACrD,CACF,CAAC;oBACJ,CAAC;oBAED,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAIjC,CAAC;oBACF,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;oBACnC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC3B,cAAc,GAAG,IAAI,CAAC;oBAEtB,8BAA8B;oBAC9B,MAAM,eAAe,CAAC;wBACpB,QAAQ;wBACR,SAAS,EAAE,cAAc;wBACzB,KAAK,EAAE,UAAU;wBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBAClC,CAAC,CAAC;oBAEH,4CAA4C;oBAC5C,+DAA+D;oBAC/D,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,CAAC,MAAM,MAAM,CACjC,eAAe,CAChB,CAA4B,CAAC;wBAC9B,IACE,OAAO,aAAa,CAAC,kBAAkB,KAAK,UAAU,EACtD,CAAC;4BACD,MACE,aAAa,CAAC,kBAKf,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;wBAC1C,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,uCAAuC;oBACzC,CAAC;oBAED,MAAM,CAAC,IAAI,CACT,8BAA8B,cAAc,EAAE,CAC/C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CACrC,MAAM,EACN,SAAS,EACT,GAAG,EACH,KAAK,CACN,CAAC;YAEF,8FAA8F;YAC9F,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAE/C,iEAAiE;YACjE,MAAM,MAAM,GAA4B;gBACtC,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;gBAC3C,IAAI;aACL,CAAC;YAEF,IAAI,cAAc,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;gBACnD,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC9B,MAAM,CAAC,WAAW,GAAG;oBACnB,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,UAAU;iBACnB,CAAC;gBACF,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;gBACxC,MAAM,CAAC,cAAc,GAAG;oBACtB,QAAQ,EACN,mBAAmB,EAAE,IAAI;wBACzB,qBAAqB,cAAc,IAAI;wBACvC,iBAAiB,UAAU,EAAE;oBAC/B,UAAU,EAAE;wBACV,QAAQ,EAAE;4BACR,OAAO,EAAE,KAAK;4BACd,IAAI,EAAE,CAAC,4BAA4B,CAAC;4BACpC,GAAG,EAAE;gCACH,eAAe,EAAE,EAAE;gCACnB,iBAAiB,EAAE,cAAc;gCACjC,aAAa,EAAE,UAAU;6BAC1B;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,sEAAsE;YACtE,wEAAwE;YACxE,4EAA4E;YAC5E,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;oBAC9C,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;wBAC1B,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBACxC,4FAA4F;wBAC5F,MAAM,CAAC,IAAI,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,wDAAwD;oBACxD,MAAM,CAAC,IAAI,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAEhC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACrD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmJ/D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { getBackend } from "../backend/index.js";
|
|
2
|
+
import { getBackend, isCloudEndpoint } from "../backend/index.js";
|
|
3
3
|
import { BridgeError, BridgeErrorCode, successResult, errorResult } from "../errors.js";
|
|
4
|
+
import { getConfig } from "../config.js";
|
|
4
5
|
import { logger } from "../logger.js";
|
|
5
6
|
const RETRY_TIMEOUT_MS = 30_000;
|
|
6
7
|
function formatBridgeMessage(fromLabel, fromPeerId, message) {
|
|
@@ -60,6 +61,9 @@ export function registerSendMessageTool(server) {
|
|
|
60
61
|
}
|
|
61
62
|
const durationMs = Date.now() - startMs;
|
|
62
63
|
const success = result.exitCode === 0;
|
|
64
|
+
// Detect cloud mode to adjust response behavior
|
|
65
|
+
const config = getConfig();
|
|
66
|
+
const isCloud = config.COGENT_ENDPOINT && isCloudEndpoint(config.COGENT_ENDPOINT);
|
|
63
67
|
// Update sender lastSeenAt (sender is always active)
|
|
64
68
|
try {
|
|
65
69
|
await backend.updateLastSeen(fromPeerId);
|
|
@@ -76,18 +80,25 @@ export function registerSendMessageTool(server) {
|
|
|
76
80
|
logger.error("Failed to update lastSeenAt for target", { error: e });
|
|
77
81
|
}
|
|
78
82
|
}
|
|
83
|
+
// In cloud mode: response arrives asynchronously via auto-relay,
|
|
84
|
+
// so record the message with response: null and return an informative message.
|
|
85
|
+
// In local mode: response is synchronous from execClaude.
|
|
86
|
+
const responseText = (isCloud && success)
|
|
87
|
+
? `Message delivered to cloud relay. ${to.label} (${toPeerId}) will receive it via WebSocket and auto-respond. ` +
|
|
88
|
+
`Their response will arrive as a new incoming message. Check cogent_get_history or wait for their reply.`
|
|
89
|
+
: (success ? result.stdout : null);
|
|
79
90
|
await backend.recordMessage({
|
|
80
91
|
fromPeerId,
|
|
81
92
|
toPeerId,
|
|
82
93
|
message,
|
|
83
|
-
response: success ? result.stdout : null,
|
|
94
|
+
response: isCloud ? null : (success ? result.stdout : null),
|
|
84
95
|
durationMs,
|
|
85
96
|
success,
|
|
86
97
|
error: success ? null : result.stderr,
|
|
87
98
|
});
|
|
88
99
|
return successResult({
|
|
89
100
|
success,
|
|
90
|
-
response:
|
|
101
|
+
response: responseText,
|
|
91
102
|
error: success ? null : result.stderr,
|
|
92
103
|
durationMs,
|
|
93
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/tools/send-message.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard/templates.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function mcpJsonContent(npxPath) {
|
|
2
2
|
const config = {
|
|
3
3
|
mcpServers: {
|
|
4
|
-
"cogent
|
|
4
|
+
"cogent": {
|
|
5
5
|
command: npxPath,
|
|
6
6
|
args: ["-y", "@essentialai/cogent-bridge"],
|
|
7
7
|
env: {
|
|
@@ -17,7 +17,7 @@ export function mcpJsonMerge(existing, npxPath) {
|
|
|
17
17
|
const parsed = JSON.parse(existing);
|
|
18
18
|
if (!parsed.mcpServers)
|
|
19
19
|
parsed.mcpServers = {};
|
|
20
|
-
parsed.mcpServers["cogent
|
|
20
|
+
parsed.mcpServers["cogent"] = {
|
|
21
21
|
command: npxPath,
|
|
22
22
|
args: ["-y", "@essentialai/cogent-bridge"],
|
|
23
23
|
env: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/wizard/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/wizard/templates.ts"],"names":[],"mappings":"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"}
|