@cello-protocol/connect 0.0.60 → 0.0.62

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.
@@ -68,7 +68,9 @@ process.stderr.write = (chunk, encodingOrCb, cb) => {
68
68
  // operator (or test) running the daemon under a non-default home would have cello-mcp
69
69
  // look in ~/.cello and fail to find the socket.
70
70
  const socketPath = join(celloDir, "daemon.sock");
71
- const proxy = new IpcProxy(socketPath);
71
+ // RECONNECT-001: clientType is handed to the proxy so it can replay `ipc.connect` after a daemon
72
+ // restart. Without it the reconnected socket has no registered client and no current agent.
73
+ const proxy = new IpcProxy(socketPath, { clientType: "mcp" });
72
74
  try {
73
75
  await proxy.connect();
74
76
  }
@@ -139,6 +141,55 @@ server.tool("cello_list_agents", "List all agents with state from this connectio
139
141
  const result = await proxy.call("cello_list_agents");
140
142
  return jsonText(result);
141
143
  });
144
+ // ─── Contact whitelist tools (CC-9) ─────────────────────────────────────────
145
+ // The per-agent whitelist is load-bearing after CC-1: a known contact is fast-tracked and exempt
146
+ // from unknown-sender screening + the ABUSE-1 acceptance caps. These forward to the daemon handlers
147
+ // (cello_contact_list/add/remove) so an agent driving via MCP can see and manage its own whitelist —
148
+ // previously CLI-only (`cello contact …`). Per-agent: defaults to the current agent, or pass { agent }.
149
+ server.tool("cello_contact_list", "List an agent's contact whitelist — the peers it treats as known/trusted (fast-tracked, exempt from unknown-sender screening and anti-spam caps). Defaults to the current agent; pass { agent } to target another.", {
150
+ agent: z.string().optional().describe("Agent name whose whitelist to list (defaults to the current agent)"),
151
+ }, async ({ agent }) => {
152
+ const result = await proxy.call("cello_contact_list", agent ? { agent } : {});
153
+ return jsonText(result);
154
+ });
155
+ server.tool("cello_contact_add", "Add a peer (by hex public key) to an agent's contact whitelist — a known/trusted contact is fast-tracked and exempt from unknown-sender screening and anti-spam caps. Optionally set your own pet name (moniker) for them. Defaults to the current agent.", {
156
+ pubkey: z.string().describe("Hex-encoded public key of the peer to add"),
157
+ moniker: z.string().optional().describe("Optional pet name for this contact (1-64 chars: letters, digits, '-' or '_') — always wins over the name they offer"),
158
+ agent: z.string().optional().describe("Agent name whose whitelist to add to (defaults to the current agent)"),
159
+ }, async ({ pubkey, moniker, agent }) => {
160
+ const params = { pubkey };
161
+ if (moniker !== undefined)
162
+ params.moniker = moniker;
163
+ if (agent)
164
+ params.agent = agent;
165
+ const result = await proxy.call("cello_contact_add", params);
166
+ return jsonText(result);
167
+ });
168
+ // MONIKER-3: rename/clear a contact's pet name. Forward-only (D7).
169
+ server.tool("cello_contact_set_moniker", "Set (or clear, by passing null) YOUR pet name for an existing contact — the top-priority display name shown for them (always wins over the name they offer). Defaults to the current agent.", {
170
+ pubkey: z.string().describe("Hex-encoded public key of the contact to rename"),
171
+ moniker: z.string().nullable().describe("The pet name to set (1-64 chars: letters, digits, '-' or '_'), or null to clear it"),
172
+ agent: z.string().optional().describe("Agent name whose contact to rename (defaults to the current agent)"),
173
+ }, async ({ pubkey, moniker, agent }) => {
174
+ const result = await proxy.call("cello_contact_set_moniker", agent ? { pubkey, moniker, agent } : { pubkey, moniker });
175
+ return jsonText(result);
176
+ });
177
+ server.tool("cello_contact_remove", "Remove a peer (by hex public key) from an agent's contact whitelist — they revert to unknown (screened, and subject to the anti-spam acceptance caps). Defaults to the current agent.", {
178
+ pubkey: z.string().describe("Hex-encoded public key of the peer to remove"),
179
+ agent: z.string().optional().describe("Agent name whose whitelist to remove from (defaults to the current agent)"),
180
+ }, async ({ pubkey, agent }) => {
181
+ const result = await proxy.call("cello_contact_remove", agent ? { pubkey, agent } : { pubkey });
182
+ return jsonText(result);
183
+ });
184
+ // MONIKER-1: outbound-name override. Forward-only (D7 — validation and persistence live in the
185
+ // daemon's cello_set_moniker; the shim adds no logic).
186
+ server.tool("cello_set_moniker", "Set (or clear, by passing null) an agent's outbound display name — what a counterparty's doorbell shows. Defaults to the agent name; local-only, never sent to the directory. 1-64 chars: letters, digits, '-' or '_'. Defaults to the current agent.", {
187
+ moniker: z.string().nullable().describe("The outbound name to set, or null to clear the override (reverts to the agent name)"),
188
+ agent: z.string().optional().describe("Agent name whose outbound name to set (defaults to the current agent)"),
189
+ }, async ({ moniker, agent }) => {
190
+ const result = await proxy.call("cello_set_moniker", agent ? { moniker, agent } : { moniker });
191
+ return jsonText(result);
192
+ });
142
193
  // ─── Session tools (proxied through daemon) ─────────────────────────────────
143
194
  server.tool("cello_initiate_session", "Start a new CELLO session with a target agent", {
144
195
  target_pubkey: z.string().describe("Hex-encoded public key of the target agent"),
@@ -184,10 +235,11 @@ server.tool("cello_receive_session", "Receive messages from an active session (a
184
235
  const result = await proxy.call("cello_receive_session", { session_id, timeout_ms });
185
236
  return jsonText(result);
186
237
  });
187
- server.tool("cello_close_session", "Close an active session and trigger the seal ceremony", {
238
+ server.tool("cello_close_session", "Close a session. Normally triggers the bilateral seal ceremony (both parties get a notarized receipt). Pass force:true ONLY to abandon a half-open session that can never be sealed — a handshake the counterparty never joined, whose normal close hangs/rejects on the seal; force marks it terminal locally with no seal so it leaves the open list.", {
188
239
  session_id: z.string().describe("Session ID to close"),
189
- }, async ({ session_id }) => {
190
- const result = await proxy.call("cello_close_session", { session_id });
240
+ force: z.boolean().optional().describe("Force-abandon a provably unsealable half-open session (no bilateral seal). Do NOT use on a healthy session — it forfeits the notarized receipt."),
241
+ }, async ({ session_id, force }) => {
242
+ const result = await proxy.call("cello_close_session", force ? { session_id, force } : { session_id });
191
243
  return jsonText(result);
192
244
  });
193
245
  server.tool("cello_list_sessions", "List all sessions for the current agent", {}, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"cello-mcp.js","sourceRoot":"","sources":["../../src/bin/cello-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cello-mcp.js","sourceRoot":"","sources":["../../src/bin/cello-mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"channel-params.d.ts","sourceRoot":"","sources":["../src/channel-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA0BH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAYnD"}
1
+ {"version":3,"file":"channel-params.d.ts","sourceRoot":"","sources":["../src/channel-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAoEH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAYnD"}
@@ -21,16 +21,58 @@ function short(v) {
21
21
  const s = v == null ? "" : String(v);
22
22
  return s.length > 12 ? `${s.slice(0, 12)}…` : s;
23
23
  }
24
- /** Human-readable, content-free doorbell announcement for the `<channel>` tag body. */
24
+ /** Shim-side fingerprint mirrors the daemon's who-label format for old-daemon frames. */
25
+ function shimFingerprint(pubkey) {
26
+ const s = typeof pubkey === "string" && pubkey.length >= 8 ? pubkey.slice(0, 8) : null;
27
+ return s !== null ? `agent ${s}…` : "agent unknown…";
28
+ }
29
+ /**
30
+ * MONIKER-4 AC3/AC4 — the rendered counterparty label.
31
+ * - whoKnown true → plain (the operator's own pet name — deliberate trust, CC-1).
32
+ * - whoKnown false + fingerprint → plain (derived identity, not a claim). The discriminator is
33
+ * UNFORGEABLE: MONIKER_RE excludes spaces, and every fingerprint contains one.
34
+ * - whoKnown false + name → `"Bob" (unverified)` — rendered as a claim; the marker itself cannot
35
+ * be forged because the charset excludes quotes and parentheses.
36
+ * - No `who` at all (old daemon) → shim-side fingerprint of the counterparty key. Never blank.
37
+ * Names are NEVER truncated (only fingerprints shorten, by construction).
38
+ */
39
+ function renderWho(data) {
40
+ const who = typeof data["who"] === "string" && data["who"].length > 0 ? data["who"] : null;
41
+ if (who === null)
42
+ return shimFingerprint(data["counterpartyPubkey"] ?? data["from"]);
43
+ if (data["whoKnown"] === true)
44
+ return who;
45
+ return who.includes(" ") ? who : `"${who}" (unverified)`;
46
+ }
47
+ /** Human-readable, content-free doorbell announcement for the `<channel>` tag body.
48
+ * MONIKER-4 AC3: the label LEADS; session IDs stay out of the body (they remain as `<channel>`
49
+ * meta attributes, where tools read them). */
25
50
  function doorbellText(type, data) {
26
- const session = short(data["session_id"] ?? data["sessionId"]);
27
51
  switch (type) {
28
52
  case "cello_message":
29
- return `CELLO: a new message is waiting (session ${session}, from ${short(data["from"])}). Call cello_receive to read it.`;
53
+ return `📩 CELLO ${renderWho(data)} sent a message. Run cello_receive to read it.`;
30
54
  case "cello_session_request":
31
- return `CELLO: an incoming session request from ${short(data["from"])} (session ${session}). Call cello_await_session to accept it.`;
32
- case "session_state_changed":
33
- return `CELLO: session ${session} for ${short(data["agentName"] ?? data["agent"] ?? "your agent")} is now "${String(data["state"] ?? "changed")}". Call cello_list_sessions, then cello_receive.`;
55
+ return `📞 CELLO ${renderWho(data)} wants to connect. Run cello_await_session to accept.`;
56
+ case "session_state_changed": {
57
+ const who = renderWho(data);
58
+ // Review F1: agent names share MONIKER_RE (≤64 chars) — AC3's "never truncates a name"
59
+ // applies to YOUR agent name too; only fingerprints shorten.
60
+ const yourAgent = String(data["agentName"] ?? data["agent"] ?? "your agent");
61
+ switch (String(data["state"] ?? "changed")) {
62
+ case "created":
63
+ return `📞 CELLO — ${who} wants to connect with ${yourAgent}. Run cello_await_session to accept.`;
64
+ case "active":
65
+ return `✅ CELLO — you're connected to ${who}.`;
66
+ case "sealed":
67
+ return `🔒 CELLO — session with ${who} sealed. Receipt saved.`;
68
+ case "closed":
69
+ // The frame carries state, not who closed it — attributing the action would be a lie
70
+ // half the time (spec AC3 note).
71
+ return `👋 CELLO — session with ${who} ended.`;
72
+ default:
73
+ return `CELLO — session with ${who} is now "${String(data["state"] ?? "changed")}".`;
74
+ }
75
+ }
34
76
  case "agent_state_changed":
35
77
  return `CELLO: agent ${short(data["agent"])} is now ${String(data["state"] ?? "changed")}.`;
36
78
  case "agent_current_changed":
@@ -1 +1 @@
1
- {"version":3,"file":"channel-params.js","sourceRoot":"","sources":["../src/channel-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,SAAS,KAAK,CAAC,CAAU;IACvB,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,uFAAuF;AACvF,SAAS,YAAY,CAAC,IAAY,EAAE,IAA6B;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,4CAA4C,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC;QAC7H,KAAK,uBAAuB;YAC1B,OAAO,2CAA2C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,OAAO,2CAA2C,CAAC;QACvI,KAAK,uBAAuB;YAC1B,OAAO,kBAAkB,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,kDAAkD,CAAC;QACpM,KAAK,qBAAqB;YACxB,OAAO,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;QAC9F,KAAK,uBAAuB;YAC1B,OAAO,mCAAmC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;QACvF;YACE,OAAO,gBAAgB,IAAI,GAAG,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,MAAM,CAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IACzF,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,4FAA4F;QAC5F,2FAA2F;QAC3F,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,SAAS;QACzC,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,SAAS;QACjD,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"channel-params.js","sourceRoot":"","sources":["../src/channel-params.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,54 @@
1
1
  /**
2
2
  * IPC Proxy — thin client for connecting cello-mcp to the daemon.
3
3
  *
4
- * Pseudocode:
5
- * 1. connect(socketPath):
6
- * a. Create net.Socket via createConnection
7
- * b. On 'connect' event resolve
8
- * c. On 'error' → reject with ENOENT/ECONNREFUSED
9
- * d. Set up JSON-newline framing reader
4
+ * RECONNECT-001: the proxy survives a daemon restart. Previously a restart closed the socket, set
5
+ * a permanent `#dead` flag, and every subsequent tool call returned `ipc_connection_lost` forever —
6
+ * the operator's cello_* tools silently vanished behind an error that named no remedy. It orphaned
7
+ * every connected agent at once (Claude Code and Hermes alike).
10
8
  *
11
- * 2. call(method, params):
12
- * a. If socket is dead → return ipc_connection_lost immediately
13
- * b. Generate numeric request ID (incrementing counter)
14
- * c. Write { id, method, params } + '\n' to socket
15
- * d. Await matching response by id
16
- * e. If JSON parse error on response return ipc_deserialization_error
17
- * f. If response has error → extract and return as { ok: false, ... }
18
- * g. Otherwise return result
9
+ * Two invariants the reconnect must not break:
10
+ *
11
+ * 1. **Replay the session, not just the socket.** The daemon rebuilds per-connection state on
12
+ * restart, so a reconnected socket has no registered clientType and no current agent. Both are
13
+ * replayed (`ipc.connect`, then `cello_use_agent`) BEFORE any queued caller is released —
14
+ * otherwise tools fail `no_current_agent` and the NotificationDispatcher (which routes on
15
+ * currentAgent) silently stops delivering doorbells.
16
+ *
17
+ * 2. **Never replay an in-flight request.** `cello_send` is not idempotent; a silent retry would
18
+ * double-send a message. In-flight calls resolve as `ipc_connection_lost` and the caller retries
19
+ * explicitly. Only the handshake — which IS idempotent — is replayed.
19
20
  *
20
- * 3. On socket close: set dead flag. All subsequent calls return ipc_connection_lost.
21
+ * Pseudocode:
22
+ * 1. connect(): open the socket; reject on ENOENT/ECONNREFUSED so startup still fails fast.
23
+ * 2. call(method, params):
24
+ * a. closed by us → ipc_connection_lost immediately
25
+ * b. disconnected → await reconnection (bounded); on timeout → ipc_connection_lost
26
+ * c. write { id, method, params } + '\n'; await the response by id
27
+ * 3. On unexpected close: fail every pending request, then reconnect with backoff and replay
28
+ * the handshake. On close(): stay dead.
21
29
  */
22
30
  export interface IpcProxyResult {
23
31
  [key: string]: unknown;
24
32
  }
33
+ export interface IpcProxyOptions {
34
+ /** Replayed as `ipc.connect { clientType }` after a reconnect. */
35
+ clientType?: string;
36
+ }
25
37
  export declare class IpcProxy {
26
38
  #private;
27
- constructor(socketPath: string);
39
+ constructor(socketPath: string, opts?: IpcProxyOptions);
28
40
  /**
29
41
  * Register a handler for server-initiated notification frames (frames with a `notification`
30
42
  * key and no `id`). The daemon's NotificationDispatcher pushes these; the Claude Code shim
31
43
  * translates each into an MCP `notifications/claude/channel` event (CELLO-M8C-WAKE-001,
32
- * channel stage 1). Only one handler is supported — the last registration wins.
44
+ * channel stage 1). Only one handler is supported — the last registration wins. The handler
45
+ * survives reconnects.
33
46
  */
34
47
  onNotification(handler: (frame: Record<string, unknown>) => void): void;
35
48
  /**
36
49
  * Connect to the daemon IPC socket.
37
- * Throws if the socket doesn't exist (ENOENT) or daemon isn't listening (ECONNREFUSED).
50
+ * Throws if the socket doesn't exist (ENOENT) or daemon isn't listening (ECONNREFUSED), so
51
+ * startup still fails fast with an actionable message rather than retrying invisibly.
38
52
  */
39
53
  connect(): Promise<void>;
40
54
  /**
@@ -43,6 +57,7 @@ export declare class IpcProxy {
43
57
  */
44
58
  call(method: string, params?: Record<string, unknown>): Promise<unknown>;
45
59
  close(): void;
60
+ /** True only after an explicit close(). A dropped daemon is recoverable, not dead. */
46
61
  get isDead(): boolean;
47
62
  }
48
63
  //# sourceMappingURL=ipc-proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipc-proxy.d.ts","sourceRoot":"","sources":["../src/ipc-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAsBD,qBAAa,QAAQ;;gBASP,UAAU,EAAE,MAAM;IAI9B;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAIvE;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CxB;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC9E,KAAK,IAAI,IAAI;IAQb,IAAI,MAAM,IAAI,OAAO,CAEpB;CAgEF"}
1
+ {"version":3,"file":"ipc-proxy.d.ts","sourceRoot":"","sources":["../src/ipc-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqCD,qBAAa,QAAQ;;gBA0BP,UAAU,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB;IAK1D;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAIvE;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuJxB;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IA8D9E,KAAK,IAAI,IAAI;IAcb,sFAAsF;IACtF,IAAI,MAAM,IAAI,OAAO,CAEpB;CAgEF"}
package/dist/ipc-proxy.js CHANGED
@@ -1,29 +1,43 @@
1
1
  /**
2
2
  * IPC Proxy — thin client for connecting cello-mcp to the daemon.
3
3
  *
4
- * Pseudocode:
5
- * 1. connect(socketPath):
6
- * a. Create net.Socket via createConnection
7
- * b. On 'connect' event resolve
8
- * c. On 'error' → reject with ENOENT/ECONNREFUSED
9
- * d. Set up JSON-newline framing reader
4
+ * RECONNECT-001: the proxy survives a daemon restart. Previously a restart closed the socket, set
5
+ * a permanent `#dead` flag, and every subsequent tool call returned `ipc_connection_lost` forever —
6
+ * the operator's cello_* tools silently vanished behind an error that named no remedy. It orphaned
7
+ * every connected agent at once (Claude Code and Hermes alike).
10
8
  *
11
- * 2. call(method, params):
12
- * a. If socket is dead → return ipc_connection_lost immediately
13
- * b. Generate numeric request ID (incrementing counter)
14
- * c. Write { id, method, params } + '\n' to socket
15
- * d. Await matching response by id
16
- * e. If JSON parse error on response return ipc_deserialization_error
17
- * f. If response has error → extract and return as { ok: false, ... }
18
- * g. Otherwise return result
9
+ * Two invariants the reconnect must not break:
10
+ *
11
+ * 1. **Replay the session, not just the socket.** The daemon rebuilds per-connection state on
12
+ * restart, so a reconnected socket has no registered clientType and no current agent. Both are
13
+ * replayed (`ipc.connect`, then `cello_use_agent`) BEFORE any queued caller is released —
14
+ * otherwise tools fail `no_current_agent` and the NotificationDispatcher (which routes on
15
+ * currentAgent) silently stops delivering doorbells.
19
16
  *
20
- * 3. On socket close: set dead flag. All subsequent calls return ipc_connection_lost.
17
+ * 2. **Never replay an in-flight request.** `cello_send` is not idempotent; a silent retry would
18
+ * double-send a message. In-flight calls resolve as `ipc_connection_lost` and the caller retries
19
+ * explicitly. Only the handshake — which IS idempotent — is replayed.
20
+ *
21
+ * Pseudocode:
22
+ * 1. connect(): open the socket; reject on ENOENT/ECONNREFUSED so startup still fails fast.
23
+ * 2. call(method, params):
24
+ * a. closed by us → ipc_connection_lost immediately
25
+ * b. disconnected → await reconnection (bounded); on timeout → ipc_connection_lost
26
+ * c. write { id, method, params } + '\n'; await the response by id
27
+ * 3. On unexpected close: fail every pending request, then reconnect with backoff and replay
28
+ * the handshake. On close(): stay dead.
21
29
  */
22
30
  import { createConnection } from "node:net";
23
31
  const IPC_CONNECTION_LOST = {
24
32
  ok: false,
25
33
  reason: "ipc_connection_lost",
26
- guidance: "The connection to the CELLO daemon was lost. Restart this MCP server (close and reopen Claude Code) to reconnect. The daemon itself may still be running — run `cello status` in a terminal to check.",
34
+ guidance: "The connection to the CELLO daemon was lost and could not be re-established. The daemon may be down — run `cello status` in a terminal to check, and `cello login` to start it. If the daemon is running, reconnect this MCP server with `/mcp reconnect cello`.",
35
+ };
36
+ /** Returned while a reconnect is in progress or just failed — the caller should simply retry. */
37
+ const IPC_RECONNECTING = {
38
+ ok: false,
39
+ reason: "ipc_connection_lost",
40
+ guidance: "The CELLO daemon connection dropped (the daemon likely restarted) and is being re-established automatically. Retry this call in a moment. If it keeps failing, run `cello status`, then `/mcp reconnect cello`.",
27
41
  };
28
42
  const IPC_DESERIALIZATION_ERROR = {
29
43
  ok: false,
@@ -35,69 +49,195 @@ const IPC_DESERIALIZATION_ERROR = {
35
49
  // reaches the daemon's content_too_large check, instead of tripping a fatal buffer
36
50
  // overflow at the 1 MB content cap boundary.
37
51
  const MAX_BUFFER_SIZE = 4 * 1024 * 1024; // 4MB — matches IPC server limit
52
+ const RECONNECT_BASE_DELAY_MS = 200;
53
+ const RECONNECT_MAX_DELAY_MS = 5_000;
54
+ /** How long a caller waits for an in-progress reconnect before giving up on this call. */
55
+ const RECONNECT_WAIT_MS = 15_000;
56
+ /** A handshake replay that never answers must not wedge the reconnect loop. */
57
+ const HANDSHAKE_TIMEOUT_MS = 5_000;
38
58
  export class IpcProxy {
39
59
  #socketPath;
60
+ #clientType;
40
61
  #socket = null;
41
- #dead = false;
62
+ /** True only after close() — an operator-initiated shutdown never reconnects. */
63
+ #closedByUs = false;
64
+ #connected = false;
42
65
  #nextId = 1;
43
66
  #pending = new Map();
44
67
  #buffer = "";
45
68
  #notificationHandler = null;
46
- constructor(socketPath) {
69
+ #reconnectTimer = null;
70
+ #reconnectAttempt = 0;
71
+ /** Single-flight guard: a reconnect in progress must never spawn a second loop. */
72
+ #reconnecting = false;
73
+ /**
74
+ * A FAILED INITIAL connect must not start a background reconnect loop behind connect()'s
75
+ * rejection — the caller (cello-mcp) exits with an actionable message instead. Only a
76
+ * connection that once worked is worth restoring.
77
+ */
78
+ #everConnected = false;
79
+ #connectWaiters = [];
80
+ /** Last successfully-selected agent, replayed after reconnect so routing survives. */
81
+ #currentAgent = null;
82
+ constructor(socketPath, opts = {}) {
47
83
  this.#socketPath = socketPath;
84
+ this.#clientType = opts.clientType;
48
85
  }
49
86
  /**
50
87
  * Register a handler for server-initiated notification frames (frames with a `notification`
51
88
  * key and no `id`). The daemon's NotificationDispatcher pushes these; the Claude Code shim
52
89
  * translates each into an MCP `notifications/claude/channel` event (CELLO-M8C-WAKE-001,
53
- * channel stage 1). Only one handler is supported — the last registration wins.
90
+ * channel stage 1). Only one handler is supported — the last registration wins. The handler
91
+ * survives reconnects.
54
92
  */
55
93
  onNotification(handler) {
56
94
  this.#notificationHandler = handler;
57
95
  }
58
96
  /**
59
97
  * Connect to the daemon IPC socket.
60
- * Throws if the socket doesn't exist (ENOENT) or daemon isn't listening (ECONNREFUSED).
98
+ * Throws if the socket doesn't exist (ENOENT) or daemon isn't listening (ECONNREFUSED), so
99
+ * startup still fails fast with an actionable message rather than retrying invisibly.
61
100
  */
62
101
  connect() {
63
102
  return new Promise((resolve, reject) => {
64
103
  const socket = createConnection(this.#socketPath);
65
104
  this.#socket = socket;
105
+ let settled = false;
66
106
  socket.on("connect", () => {
107
+ settled = true;
108
+ this.#connected = true;
109
+ this.#everConnected = true;
110
+ this.#reconnectAttempt = 0;
67
111
  resolve();
68
112
  });
69
113
  socket.on("error", (err) => {
70
- this.#dead = true;
71
- reject(err);
72
- // Reject all pending requests
73
- for (const [, p] of this.#pending) {
74
- p.reject(new Error("Connection closed"));
75
- }
76
- this.#pending.clear();
77
- });
78
- socket.on("data", (chunk) => {
79
- this.#buffer += chunk.toString("utf-8");
80
- if (this.#buffer.length > MAX_BUFFER_SIZE) {
81
- this.#dead = true;
82
- socket.destroy();
83
- for (const [, p] of this.#pending) {
84
- p.resolve(IPC_CONNECTION_LOST);
85
- }
86
- this.#pending.clear();
114
+ if (!settled) {
115
+ settled = true;
116
+ this.#connected = false;
117
+ this.#failPending();
118
+ reject(err);
87
119
  return;
88
120
  }
89
- this.#processBuffer();
121
+ // Post-connect errors surface as 'close'; nothing to do here.
90
122
  });
91
- socket.on("close", () => {
92
- this.#dead = true;
93
- // Reject all pending requests
94
- for (const [, p] of this.#pending) {
95
- p.reject(new Error("Connection closed"));
96
- }
97
- this.#pending.clear();
123
+ this.#attach(socket);
124
+ });
125
+ }
126
+ /** Wire the data/close handlers shared by the initial connect and every reconnect. */
127
+ #attach(socket) {
128
+ socket.on("data", (chunk) => {
129
+ this.#buffer += chunk.toString("utf-8");
130
+ if (this.#buffer.length > MAX_BUFFER_SIZE) {
131
+ this.#buffer = "";
132
+ socket.destroy();
133
+ return;
134
+ }
135
+ this.#processBuffer();
136
+ });
137
+ socket.on("close", () => {
138
+ const wasConnected = this.#connected;
139
+ this.#connected = false;
140
+ // Invariant 2: pending requests are FAILED, never replayed. cello_send is not idempotent.
141
+ this.#failPending();
142
+ if (!this.#closedByUs && wasConnected) {
143
+ process.stderr.write("cello-mcp: daemon connection lost — reconnecting…\n");
144
+ }
145
+ // Guard on #everConnected: a failed initial connect rejects to the caller; it must not
146
+ // silently retry in the background behind that rejection.
147
+ if (!this.#closedByUs && this.#everConnected)
148
+ this.#scheduleReconnect();
149
+ });
150
+ }
151
+ #failPending() {
152
+ for (const [, p] of this.#pending)
153
+ p.resolve(IPC_RECONNECTING);
154
+ this.#pending.clear();
155
+ }
156
+ #scheduleReconnect() {
157
+ // Single-flight: a timer already armed, or an attempt in progress, must not stack another.
158
+ if (this.#closedByUs || this.#reconnectTimer || this.#reconnecting)
159
+ return;
160
+ const delay = Math.min(RECONNECT_BASE_DELAY_MS * 2 ** this.#reconnectAttempt, RECONNECT_MAX_DELAY_MS);
161
+ this.#reconnectAttempt++;
162
+ this.#reconnectTimer = setTimeout(() => {
163
+ this.#reconnectTimer = null;
164
+ void this.#attemptReconnect();
165
+ }, delay);
166
+ this.#reconnectTimer.unref?.();
167
+ }
168
+ async #attemptReconnect() {
169
+ if (this.#closedByUs || this.#reconnecting)
170
+ return;
171
+ this.#reconnecting = true;
172
+ try {
173
+ const socket = await this.#openSocket();
174
+ this.#socket = socket;
175
+ this.#buffer = "";
176
+ this.#attach(socket);
177
+ this.#connected = true;
178
+ this.#everConnected = true;
179
+ // Invariant 1: restore the SESSION before releasing any caller. Both replayed frames are
180
+ // idempotent, so replaying them is safe in a way replaying cello_send would not be.
181
+ await this.#replayHandshake();
182
+ this.#reconnectAttempt = 0;
183
+ process.stderr.write("cello-mcp: reconnected to the CELLO daemon\n");
184
+ this.#releaseWaiters();
185
+ }
186
+ catch {
187
+ this.#connected = false;
188
+ this.#reconnecting = false;
189
+ this.#scheduleReconnect();
190
+ return;
191
+ }
192
+ this.#reconnecting = false;
193
+ }
194
+ #openSocket() {
195
+ return new Promise((resolve, reject) => {
196
+ const socket = createConnection(this.#socketPath);
197
+ const onError = (err) => {
198
+ socket.destroy();
199
+ reject(err);
200
+ };
201
+ socket.once("error", onError);
202
+ socket.once("connect", () => {
203
+ socket.removeListener("error", onError);
204
+ resolve(socket);
98
205
  });
99
206
  });
100
207
  }
208
+ async #replayHandshake() {
209
+ // Bounded: a daemon that accepts the socket but never answers must not wedge the reconnect
210
+ // loop forever. Only these two frames get a timeout — see #rawCall.
211
+ if (this.#clientType) {
212
+ await this.#rawCall("ipc.connect", { clientType: this.#clientType }, HANDSHAKE_TIMEOUT_MS);
213
+ }
214
+ if (this.#currentAgent) {
215
+ await this.#rawCall("cello_use_agent", { name: this.#currentAgent }, HANDSHAKE_TIMEOUT_MS);
216
+ }
217
+ }
218
+ #releaseWaiters() {
219
+ const waiters = this.#connectWaiters;
220
+ this.#connectWaiters = [];
221
+ for (const w of waiters)
222
+ w();
223
+ }
224
+ /** Wait (bounded) for a reconnect to complete. Resolves true if connected. */
225
+ #waitForConnection() {
226
+ if (this.#connected)
227
+ return Promise.resolve(true);
228
+ return new Promise((resolve) => {
229
+ const timer = setTimeout(() => {
230
+ this.#connectWaiters = this.#connectWaiters.filter((w) => w !== waiter);
231
+ resolve(false);
232
+ }, RECONNECT_WAIT_MS);
233
+ timer.unref?.();
234
+ const waiter = () => {
235
+ clearTimeout(timer);
236
+ resolve(true);
237
+ };
238
+ this.#connectWaiters.push(waiter);
239
+ });
240
+ }
101
241
  /**
102
242
  * Send an IPC request and await the response.
103
243
  * Returns the result directly if successful, or an error object with reason/guidance.
@@ -106,18 +246,48 @@ export class IpcProxy {
106
246
  if (!method || typeof method !== "string") {
107
247
  return { ok: false, reason: "invalid_method", guidance: "IPC method name must be a non-empty string." };
108
248
  }
109
- if (this.#dead) {
249
+ if (this.#closedByUs)
110
250
  return IPC_CONNECTION_LOST;
251
+ if (!this.#connected) {
252
+ const ok = await this.#waitForConnection();
253
+ if (!ok)
254
+ return IPC_RECONNECTING;
255
+ }
256
+ const result = await this.#rawCall(method, params);
257
+ // Remember the selected agent so a reconnect can restore routing. Both `ok:true` and
258
+ // `agent_already_current` mean the daemon considers this agent current for the connection.
259
+ if (method === "cello_use_agent" && params && typeof params["name"] === "string") {
260
+ const r = result;
261
+ if (r && (r.ok === true || r.reason === "agent_already_current")) {
262
+ this.#currentAgent = params["name"];
263
+ }
111
264
  }
265
+ return result;
266
+ }
267
+ /**
268
+ * Write a frame on the current socket without the connected-gate (used by the handshake replay).
269
+ *
270
+ * `timeoutMs` is OPTIONAL and only the handshake supplies it. Ordinary calls must NEVER be
271
+ * capped client-side: `cello_receive` legitimately blocks server-side for `timeout_ms` (30s by
272
+ * default, and callers may pass more). A blanket timeout here would silently break blocking
273
+ * receive — the doorbell's own pull path.
274
+ */
275
+ #rawCall(method, params, timeoutMs) {
112
276
  const id = String(this.#nextId++);
113
277
  return new Promise((resolve) => {
114
- this.#pending.set(id, {
115
- resolve,
116
- reject: () => {
117
- // On socket close/error, return ipc_connection_lost
118
- resolve(IPC_CONNECTION_LOST);
119
- },
120
- });
278
+ const timer = timeoutMs === undefined
279
+ ? null
280
+ : setTimeout(() => {
281
+ this.#pending.delete(id);
282
+ resolve(IPC_RECONNECTING);
283
+ }, timeoutMs);
284
+ timer?.unref?.();
285
+ const done = (v) => {
286
+ if (timer)
287
+ clearTimeout(timer);
288
+ resolve(v);
289
+ };
290
+ this.#pending.set(id, { resolve: done, reject: () => done(IPC_RECONNECTING) });
121
291
  const frame = JSON.stringify({ id, method, params }) + "\n";
122
292
  try {
123
293
  this.#socket.write(frame);
@@ -125,21 +295,27 @@ export class IpcProxy {
125
295
  catch (err) {
126
296
  const msg = err instanceof Error ? err.message : String(err);
127
297
  process.stderr.write(`cello-mcp: IPC write failed: ${msg}\n`);
128
- this.#dead = true;
129
298
  this.#pending.delete(id);
130
- resolve(IPC_CONNECTION_LOST);
299
+ done(IPC_RECONNECTING);
131
300
  }
132
301
  });
133
302
  }
134
303
  close() {
304
+ this.#closedByUs = true;
305
+ this.#connected = false;
306
+ if (this.#reconnectTimer) {
307
+ clearTimeout(this.#reconnectTimer);
308
+ this.#reconnectTimer = null;
309
+ }
310
+ this.#releaseWaiters();
135
311
  if (this.#socket) {
136
312
  this.#socket.end();
137
313
  this.#socket = null;
138
314
  }
139
- this.#dead = true;
140
315
  }
316
+ /** True only after an explicit close(). A dropped daemon is recoverable, not dead. */
141
317
  get isDead() {
142
- return this.#dead;
318
+ return this.#closedByUs;
143
319
  }
144
320
  #processBuffer() {
145
321
  let newlineIdx;
@@ -1 +1 @@
1
- {"version":3,"file":"ipc-proxy.js","sourceRoot":"","sources":["../src/ipc-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipc-proxy.js","sourceRoot":"","sources":["../src/ipc-proxy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cello-protocol/connect",
3
- "version": "0.0.60",
3
+ "version": "0.0.62",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -30,9 +30,9 @@
30
30
  "@libp2p/peer-id": "^6.0.8",
31
31
  "@modelcontextprotocol/sdk": "^1.29.0",
32
32
  "zod": "^4.4.2",
33
- "@cello-protocol/client": "0.0.46",
34
- "@cello-protocol/transport": "0.0.16",
35
- "@cello-protocol/crypto": "0.0.18"
33
+ "@cello-protocol/client": "0.0.47",
34
+ "@cello-protocol/crypto": "0.0.18",
35
+ "@cello-protocol/transport": "0.0.17"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@claude-flow/testing": "3.0.0-alpha.6",