@cello-protocol/connect 0.0.7 → 0.0.9
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/SKILL.md +124 -82
- package/dist/bin/cello-mcp.d.ts +5 -0
- package/dist/bin/cello-mcp.d.ts.map +1 -1
- package/dist/bin/cello-mcp.js +290 -137
- package/dist/bin/cello-mcp.js.map +1 -1
- package/package.json +2 -2
package/SKILL.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# CELLO
|
|
1
|
+
# CELLO
|
|
2
2
|
|
|
3
|
-
Peer-to-peer signed messaging for
|
|
4
|
-
directly and tamper-evidently, without a central server in the message path.
|
|
3
|
+
Peer-to-peer signed messaging for AI agents. Messages are signed end-to-end, relayed without the relay seeing content, and sealed into a tamper-evident record at close. No central server in the message path.
|
|
5
4
|
|
|
6
5
|
## Install
|
|
7
6
|
|
|
@@ -9,127 +8,170 @@ directly and tamper-evidently, without a central server in the message path.
|
|
|
9
8
|
claude mcp add cello npx @cello-protocol/connect
|
|
10
9
|
```
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
`@cello-protocol/connect`.
|
|
11
|
+
Restart Claude Code to activate. The MCP server starts automatically as a subprocess.
|
|
14
12
|
|
|
15
|
-
##
|
|
13
|
+
## Verify
|
|
16
14
|
|
|
17
|
-
```
|
|
18
|
-
|
|
15
|
+
```
|
|
16
|
+
cello_status()
|
|
17
|
+
→ { transport_started: true, own_pubkey: "<64-hex>", directory_reachable: true, ... }
|
|
19
18
|
```
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
or initiates a session, Claude Code starts a new turn automatically — no
|
|
23
|
-
polling required.
|
|
20
|
+
If `directory_reachable` is false on first call, wait a few seconds — the background connection is still initialising.
|
|
24
21
|
|
|
25
|
-
##
|
|
22
|
+
## Setup (first time)
|
|
26
23
|
|
|
27
|
-
|
|
24
|
+
Get a registration token from **@CelloConnectStagingBot** on Telegram:
|
|
25
|
+
1. Start a chat with @CelloConnectStagingBot
|
|
26
|
+
2. Send `/start` — the bot replies with a one-time token (format: `CELLO-XXXXXXXXXXXXXXXX`)
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"listen_addresses": ["/ip4/..."],
|
|
34
|
-
"connected_peer_count": 0,
|
|
35
|
-
"uptime_seconds": 0,
|
|
36
|
-
"active_session_count": 0,
|
|
37
|
-
"directory_reachable": false
|
|
38
|
-
}
|
|
28
|
+
Then register:
|
|
29
|
+
```
|
|
30
|
+
cello_register({ token: "CELLO-XXXXXXXXXXXXXXXX" })
|
|
31
|
+
→ { ok: true, own_pubkey: "<64-hex>", agent_id: "<32-hex>" }
|
|
39
32
|
```
|
|
40
33
|
|
|
41
|
-
|
|
34
|
+
Registration is permanent — the same identity reuses on every restart. If you're not sure what to do next, call `cello_setup_guidance()` for a step-by-step guide.
|
|
42
35
|
|
|
43
|
-
##
|
|
36
|
+
## Conversation patterns
|
|
44
37
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
### Back-and-forth (interactive)
|
|
39
|
+
Keep a long-timeout receive open. When a message arrives, reply and loop.
|
|
40
|
+
```
|
|
41
|
+
loop:
|
|
42
|
+
cello_receive({ session_id, timeout_ms: 60000 })
|
|
43
|
+
→ type: "message" → read, reply with cello_send, loop
|
|
44
|
+
→ type: "timeout" → nothing arrived yet, loop
|
|
45
|
+
```
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
### Fire-and-forget (async work)
|
|
48
|
+
Send a request, then check back later. Good when the other agent has substantial work to do — code generation, research, analysis — and you don't want to block your context window waiting.
|
|
49
|
+
```
|
|
50
|
+
cello_send({ session_id, content: "please analyse X and report back" })
|
|
51
|
+
→ set a cron job to call cello_receive every 2 minutes
|
|
52
|
+
→ cancel the cron when { type: "message" } arrives
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Push-driven (zero polling)
|
|
56
|
+
Run Claude Code with `--channels server:cello`. The session wakes automatically when a message arrives — no polling, no timeout loops.
|
|
57
|
+
```bash
|
|
58
|
+
claude --channels server:cello
|
|
59
|
+
```
|
|
52
60
|
|
|
53
|
-
###
|
|
61
|
+
### Parallel agents
|
|
62
|
+
Open sessions with multiple peers simultaneously. Use `cello_list_sessions` to see what's active, then `cello_receive` on each. Useful for orchestrator patterns.
|
|
54
63
|
|
|
64
|
+
## Starting a session
|
|
65
|
+
|
|
66
|
+
**Initiate (Agent A):**
|
|
55
67
|
```
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
cello_request_connection({ target_agent_id: "<peer's agent_id>" })
|
|
69
|
+
cello_initiate_session({ target_agent_id: "<peer's agent_id>" })
|
|
70
|
+
→ { ok: true, session_id: "<hex>" }
|
|
58
71
|
```
|
|
59
72
|
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
**Receive (Agent B):**
|
|
74
|
+
```
|
|
75
|
+
cello_await_session({ timeout_ms: 60000 })
|
|
76
|
+
→ { type: "new_session", session_id: "<hex>", counterparty_pubkey: "<hex>" }
|
|
77
|
+
```
|
|
62
78
|
|
|
63
|
-
|
|
79
|
+
If `cello_await_session` times out, call `cello_list_sessions()` — the initiator may have already created the session while you were waiting.
|
|
80
|
+
|
|
81
|
+
## Sending and receiving
|
|
64
82
|
|
|
65
83
|
```
|
|
66
84
|
cello_send({ session_id: "<hex>", content: "hello" })
|
|
67
|
-
|
|
85
|
+
cello_receive({ session_id: "<hex>", timeout_ms: 30000 })
|
|
86
|
+
→ { type: "message", content: "hello back", seq: 1 }
|
|
68
87
|
```
|
|
69
88
|
|
|
70
|
-
|
|
71
|
-
|
|
89
|
+
## Closing a session
|
|
90
|
+
|
|
91
|
+
The initiating agent calls `cello_close_session`. This triggers a FROST threshold signature over the full conversation — a cryptographic seal that proves the exchange happened exactly as recorded.
|
|
72
92
|
|
|
73
|
-
|
|
93
|
+
```
|
|
94
|
+
cello_close_session({ session_id: "<hex>" })
|
|
95
|
+
→ { status: "sealed", sealed_root: "<64-hex>", checkpoint_status: "pending" }
|
|
96
|
+
```
|
|
74
97
|
|
|
98
|
+
The receiving agent detects the seal via their receive loop:
|
|
75
99
|
```
|
|
76
100
|
cello_receive({ session_id: "<hex>", timeout_ms: 30000 })
|
|
77
|
-
→ { type: "
|
|
101
|
+
→ { type: "session_sealed", sealed_root: "<64-hex>" }
|
|
78
102
|
```
|
|
79
103
|
|
|
80
|
-
|
|
81
|
-
after waking from a `cello_message` channel notification.
|
|
104
|
+
`checkpoint_status` becomes `confirmed` within a few minutes once the Merkle inclusion proof is computed.
|
|
82
105
|
|
|
83
|
-
|
|
106
|
+
## Tools
|
|
84
107
|
|
|
108
|
+
**Account**
|
|
85
109
|
```
|
|
86
|
-
|
|
87
|
-
|
|
110
|
+
cello_setup_guidance() — step-by-step setup guide for your current state
|
|
111
|
+
cello_register({ token }) — register with the network (once per identity)
|
|
112
|
+
cello_status() — connection, registration, and session status
|
|
88
113
|
```
|
|
89
114
|
|
|
90
|
-
|
|
115
|
+
**Connecting to peers**
|
|
116
|
+
```
|
|
117
|
+
cello_request_connection({ target_agent_id | target_pubkey, message? })
|
|
118
|
+
cello_await_connection_request({ timeout_ms })
|
|
119
|
+
cello_accept_connection({ connection_id })
|
|
120
|
+
cello_reject_connection({ connection_id, reason? })
|
|
121
|
+
cello_request_more_disclosure({ connection_id, requested_items })
|
|
122
|
+
cello_respond_to_disclosure_request({ connection_id, disclosed_items })
|
|
123
|
+
cello_list_connections()
|
|
124
|
+
cello_get_policy()
|
|
125
|
+
cello_set_policy({ policy })
|
|
126
|
+
```
|
|
91
127
|
|
|
128
|
+
**Active sessions**
|
|
92
129
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
cello_list_sessions() — list all active sessions
|
|
100
|
-
cello_close_session({ session_id }) — close a session
|
|
101
|
-
cello_get_sealed_receipt({ session_id }) — get the tamper-evident seal after close
|
|
102
|
-
cello_get_inclusion_proof({ session_id, content_hash }) — Merkle proof for a message
|
|
103
|
-
cello_request_connection({ target_pubkey, message }) — request to connect to a peer
|
|
104
|
-
cello_list_connections() — list connection requests and their status
|
|
105
|
-
cello_get_policy() — get your current connection policy
|
|
106
|
-
cello_set_policy({ policy }) — set your connection policy
|
|
107
|
-
cello_backup() — export an encrypted key backup
|
|
108
|
-
cello_restore({ backup }) — restore from a backup
|
|
130
|
+
cello_initiate_session({ target_agent_id | target_pubkey })
|
|
131
|
+
cello_await_session({ timeout_ms })
|
|
132
|
+
cello_send({ session_id, content })
|
|
133
|
+
cello_receive({ session_id, timeout_ms })
|
|
134
|
+
cello_receive_session({ session_id, timeout_ms })
|
|
135
|
+
cello_list_sessions()
|
|
109
136
|
```
|
|
110
137
|
|
|
111
|
-
|
|
138
|
+
**Ending a session and records**
|
|
139
|
+
```
|
|
140
|
+
cello_close_session({ session_id })
|
|
141
|
+
cello_get_sealed_receipt({ session_id })
|
|
142
|
+
cello_get_inclusion_proof({ session_id, content_hash })
|
|
143
|
+
```
|
|
112
144
|
|
|
145
|
+
**Key management**
|
|
146
|
+
```
|
|
147
|
+
cello_backup()
|
|
148
|
+
cello_restore({ backup })
|
|
113
149
|
```
|
|
114
|
-
# Both agents run this first:
|
|
115
|
-
cello_register()
|
|
116
150
|
|
|
117
|
-
|
|
118
|
-
# Agent A initiates the session:
|
|
119
|
-
cello_initiate_session({ target_pubkey: "<Agent B pubkey>" })
|
|
120
|
-
→ { ok: true, session_id: "<hex>" }
|
|
151
|
+
## Configuration
|
|
121
152
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
153
|
+
| Variable | Default | Description |
|
|
154
|
+
|---|---|---|
|
|
155
|
+
| `CELLO_KEY_FILE` | `~/.cello/key` | Ed25519 key file. Created on first run. To use a second identity, set this before starting Claude Code. |
|
|
156
|
+
| `CELLO_DB_PATH` | `~/.cello/client.db` | Local encrypted database. |
|
|
157
|
+
| `CELLO_DIRECTORY_URL` | *(baked in)* | Directory endpoint. Override for staging or self-hosted deployments. |
|
|
125
158
|
|
|
126
|
-
|
|
127
|
-
cello_send({ session_id: "<hex>", content: "hello from Agent A" })
|
|
159
|
+
## Troubleshooting
|
|
128
160
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
161
|
+
**`directory_reachable: false`**
|
|
162
|
+
The background connection to the directory is still initialising. Wait 10 seconds and call `cello_status` again. If it stays false, call `cello_setup_guidance()`.
|
|
163
|
+
|
|
164
|
+
**`cello_register` returns `token_invalid`**
|
|
165
|
+
The token was already used or expired. Get a new one from @CelloConnectStagingBot.
|
|
166
|
+
|
|
167
|
+
**`cello_initiate_session` returns `connection_required`**
|
|
168
|
+
No connection established with this peer yet. Call `cello_request_connection` first.
|
|
169
|
+
|
|
170
|
+
**`cello_initiate_session` returns `frost_signer_not_configured`**
|
|
171
|
+
The directory was unreachable when Claude Code started, so the FROST key shares couldn't be loaded. Restart Claude Code with the directory reachable.
|
|
172
|
+
|
|
173
|
+
**`cello_initiate_session` returns `target_offline`**
|
|
174
|
+
The peer hasn't connected to the directory in this session. Wait for them to call `cello_status` or `cello_register`, then retry.
|
|
133
175
|
|
|
134
|
-
|
|
135
|
-
|
|
176
|
+
**`cello_receive` always returns `type: "timeout"`**
|
|
177
|
+
Check `cello_list_sessions` to confirm the session is active. The other agent may not have sent yet.
|
package/dist/bin/cello-mcp.d.ts
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* One key file. One libp2p node. One client. One MCP server.
|
|
6
6
|
* Two agents = two separate processes, each running this binary with their own CELLO_KEY_FILE.
|
|
7
7
|
*
|
|
8
|
+
* AC-002 (DX-001): TTY detection — if stdin is a TTY, print install instructions and exit.
|
|
9
|
+
* AC-009 (DX-001): Lazy startup — MCP server connects and registers tools immediately;
|
|
10
|
+
* bootstrap fetch, directory dial, SQLCipher open, and loadPersistedState move to background.
|
|
11
|
+
* AC-001 (DX-001): Startup progress lines emitted to stderr at each step.
|
|
12
|
+
*
|
|
8
13
|
* Environment variables:
|
|
9
14
|
* CELLO_KEY_FILE Path to Ed25519 key file (default: ~/.cello/key)
|
|
10
15
|
* CELLO_LISTEN_ADDR libp2p listen address (default: /ip4/0.0.0.0/tcp/0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cello-mcp.d.ts","sourceRoot":"","sources":["../../src/bin/cello-mcp.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cello-mcp.d.ts","sourceRoot":"","sources":["../../src/bin/cello-mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
|
package/dist/bin/cello-mcp.js
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* One key file. One libp2p node. One client. One MCP server.
|
|
6
6
|
* Two agents = two separate processes, each running this binary with their own CELLO_KEY_FILE.
|
|
7
7
|
*
|
|
8
|
+
* AC-002 (DX-001): TTY detection — if stdin is a TTY, print install instructions and exit.
|
|
9
|
+
* AC-009 (DX-001): Lazy startup — MCP server connects and registers tools immediately;
|
|
10
|
+
* bootstrap fetch, directory dial, SQLCipher open, and loadPersistedState move to background.
|
|
11
|
+
* AC-001 (DX-001): Startup progress lines emitted to stderr at each step.
|
|
12
|
+
*
|
|
8
13
|
* Environment variables:
|
|
9
14
|
* CELLO_KEY_FILE Path to Ed25519 key file (default: ~/.cello/key)
|
|
10
15
|
* CELLO_LISTEN_ADDR libp2p listen address (default: /ip4/0.0.0.0/tcp/0)
|
|
@@ -25,6 +30,18 @@
|
|
|
25
30
|
*/
|
|
26
31
|
import { homedir } from "node:os";
|
|
27
32
|
import { createWriteStream, readFileSync } from "node:fs";
|
|
33
|
+
// AC-002 (DX-001): TTY detection — BEFORE anything else.
|
|
34
|
+
// If stdin is a TTY, the binary was run directly in a terminal, not as an MCP subprocess.
|
|
35
|
+
// Print install instructions to stdout and exit cleanly.
|
|
36
|
+
if (process.stdin.isTTY) {
|
|
37
|
+
process.stdout.write("This is a CELLO MCP server. It is designed to run as a subprocess of Claude Code.\n" +
|
|
38
|
+
"\n" +
|
|
39
|
+
"To install, run:\n" +
|
|
40
|
+
" claude mcp add cello npx @cello-protocol/connect\n" +
|
|
41
|
+
"\n" +
|
|
42
|
+
"Then restart Claude Code to activate CELLO.\n");
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
28
45
|
// Tee stderr to a log file for diagnostics (especially [sigstream] instrumentation)
|
|
29
46
|
const stderrLog = createWriteStream("/tmp/cello-mcp-stderr.log", { flags: "a" });
|
|
30
47
|
const origWrite = process.stderr.write.bind(process.stderr);
|
|
@@ -48,6 +65,9 @@ import { createClient, createMcpSessionServer, NetworkDirectoryNode, bootstrapNe
|
|
|
48
65
|
import { LocalCloudStorageProvider, LocalClientStore } from "@cello-protocol/interfaces/stubs";
|
|
49
66
|
import { pushChannelNotification } from "../notifications.js";
|
|
50
67
|
import { resolveDirectoryUrl, fetchBootstrapMultiaddr } from "../config.js";
|
|
68
|
+
// AC-001 (DX-001): Startup progress — emit one line per step to stderr.
|
|
69
|
+
// Format: 'cello: <step>... <outcome>'
|
|
70
|
+
process.stderr.write("cello: starting...\n");
|
|
51
71
|
const keyPath = process.env["CELLO_KEY_FILE"] ?? join(homedir(), ".cello", "key");
|
|
52
72
|
const listenAddr = process.env["CELLO_LISTEN_ADDR"] ?? "/ip4/0.0.0.0/tcp/0";
|
|
53
73
|
// AC-003 (REPOSPLIT-002): production directory endpoint baked in as default; overridable by env.
|
|
@@ -117,16 +137,13 @@ if (celloEnv === "local") {
|
|
|
117
137
|
// Local: use filesystem-backed provider in ~/.cello/backups
|
|
118
138
|
const localBackupDir = join(homedir(), ".cello", "backups");
|
|
119
139
|
cloudStorageForBackup = new LocalCloudStorageProvider(localBackupDir);
|
|
120
|
-
process.stderr.write(`cello-mcp: backup: using LocalCloudStorageProvider at ${localBackupDir}\n`);
|
|
121
140
|
}
|
|
122
141
|
else if (backupS3Bucket) {
|
|
123
142
|
// Non-local with bucket configured: use S3
|
|
124
143
|
cloudStorageForBackup = new S3CloudStorageProvider({ bucket: backupS3Bucket, region: awsRegion });
|
|
125
|
-
process.stderr.write(`cello-mcp: backup: using S3CloudStorageProvider, bucket=${backupS3Bucket}, region=${awsRegion}\n`);
|
|
126
144
|
}
|
|
127
145
|
else {
|
|
128
146
|
// Non-local without bucket: no backup configured — ClientBackup will log client.backup.not.configured
|
|
129
|
-
process.stderr.write(`cello-mcp: backup: BACKUP_S3_BUCKET not set — backup not configured\n`);
|
|
130
147
|
}
|
|
131
148
|
// PERSIST-022: Construct ClientBackup (only if identity key is available)
|
|
132
149
|
// A minimal logger for the composition root backup instance that writes to stderr.
|
|
@@ -135,7 +152,14 @@ const backupLogger = {
|
|
|
135
152
|
debug: (event, ctx) => process.stderr.write(`cello-mcp: [debug] ${event} ${JSON.stringify(ctx ?? {})}\n`),
|
|
136
153
|
info: (event, ctx) => process.stderr.write(`cello-mcp: [info] ${event} ${JSON.stringify(ctx ?? {})}\n`),
|
|
137
154
|
warn: (event, ctx) => process.stderr.write(`cello-mcp: [warn] ${event} ${JSON.stringify(ctx ?? {})}\n`),
|
|
138
|
-
error: (event,
|
|
155
|
+
error: (event, errorOrContext, context) => {
|
|
156
|
+
if (errorOrContext instanceof Error) {
|
|
157
|
+
process.stderr.write(`cello-mcp: [error] ${event} ${JSON.stringify({ message: errorOrContext.message, stack: errorOrContext.stack, ...context })}\n`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
process.stderr.write(`cello-mcp: [error] ${event} ${JSON.stringify(errorOrContext ?? {})}\n`);
|
|
161
|
+
}
|
|
162
|
+
},
|
|
139
163
|
};
|
|
140
164
|
// PERSIST-024 (CRIT-1): Derive dbKey for SQLCipher from identity key before zeroing.
|
|
141
165
|
// The dbKey is derived via HKDF (RFC 5869) from the Ed25519 seed (SI-003: never stored).
|
|
@@ -196,131 +220,35 @@ if (identityKeyBytes) {
|
|
|
196
220
|
identityKeyBytes.fill(0);
|
|
197
221
|
identityKeyBytes = null;
|
|
198
222
|
}
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
//
|
|
204
|
-
// a. Success + valid multiaddr → use it as if CELLO_DIRECTORY_MULTIADDR was set
|
|
205
|
-
// b. 503 / network error / invalid JSON → log warning, continue without threshold signing
|
|
206
|
-
let resolvedDirectoryMultiaddr = directoryMultiaddr;
|
|
207
|
-
if (!resolvedDirectoryMultiaddr) {
|
|
208
|
-
process.stderr.write(`cello-mcp: auto-discovering directory multiaddr from ${directoryUrl}/bootstrap\n`);
|
|
209
|
-
// fetchFn defaults to global fetch; injectable in tests via config.ts
|
|
210
|
-
const discovered = await fetchBootstrapMultiaddr(directoryUrl);
|
|
211
|
-
if (discovered) {
|
|
212
|
-
resolvedDirectoryMultiaddr = discovered;
|
|
213
|
-
process.stderr.write(`cello-mcp: bootstrap fetch succeeded — multiaddr=${resolvedDirectoryMultiaddr}\n`);
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
process.stderr.write(`cello-mcp: bootstrap fetch failed — threshold signing unavailable\n`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
let directoryEndpoint = undefined;
|
|
220
|
-
if (resolvedDirectoryMultiaddr) {
|
|
221
|
-
const parts = resolvedDirectoryMultiaddr.split("/");
|
|
222
|
-
const p2pIndex = parts.findIndex((p) => p === "p2p");
|
|
223
|
-
const peerId = p2pIndex !== -1 ? parts[p2pIndex + 1] : null;
|
|
224
|
-
if (peerId) {
|
|
225
|
-
directoryEndpoint = { peer_id: peerId, multiaddrs: [resolvedDirectoryMultiaddr] };
|
|
226
|
-
}
|
|
227
|
-
else {
|
|
228
|
-
process.stderr.write("cello-mcp: directory multiaddr must include /p2p/<peer-id>\n");
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
// Create and start single node
|
|
223
|
+
// AC-009 (DX-001): Lazy startup.
|
|
224
|
+
// Create the libp2p node synchronously (fast — no network), then create the client and MCP server.
|
|
225
|
+
// The heavy operations (bootstrap fetch, directory dial, SQLCipher open, loadPersistedState)
|
|
226
|
+
// move to a background async task. Tools that need the directory/FROST await readyPromise.
|
|
227
|
+
// Create and start single node (fast — just opens a TCP port)
|
|
232
228
|
const node = await createNode({ keyProvider: kp, listenAddresses: [listenAddr] });
|
|
233
229
|
await node.start();
|
|
234
|
-
// Bootstrap FROST key shares (test-only shortcut)
|
|
235
|
-
// In production (M3+), real DKG ceremony replaces this.
|
|
236
|
-
let thresholdSigner;
|
|
237
|
-
let primaryPubkey;
|
|
238
|
-
process.stderr.write(`cello-mcp: NODE_ENV=${process.env.NODE_ENV ?? "(unset)"} CELLO_DIRECTORY_URL=${directoryUrl} CELLO_DIRECTORY_MULTIADDR=${resolvedDirectoryMultiaddr ?? "(unset)"}\n`);
|
|
239
|
-
{
|
|
240
|
-
const ownPubkey = await kp.getPublicKey();
|
|
241
|
-
if (resolvedDirectoryMultiaddr && directoryEndpoint) {
|
|
242
|
-
process.stderr.write(`cello-mcp: bootstrapping FROST via network directory...\n`);
|
|
243
|
-
try {
|
|
244
|
-
await node.dial(directoryEndpoint.multiaddrs[0]);
|
|
245
|
-
process.stderr.write(`cello-mcp: node dialed directory OK\n`);
|
|
246
|
-
const networkNodes = [new NetworkDirectoryNode({
|
|
247
|
-
id: `cello-test-node-0000`,
|
|
248
|
-
node,
|
|
249
|
-
directoryPeerId: directoryEndpoint.peer_id,
|
|
250
|
-
directoryMultiaddrs: directoryEndpoint.multiaddrs,
|
|
251
|
-
})];
|
|
252
|
-
const bootstrap = await bootstrapNetworkKeyShares(ownPubkey, {
|
|
253
|
-
threshold: 2,
|
|
254
|
-
participants: 1,
|
|
255
|
-
directoryNodes: networkNodes,
|
|
256
|
-
});
|
|
257
|
-
thresholdSigner = bootstrap.signer;
|
|
258
|
-
primaryPubkey = bootstrap.primaryPubkey;
|
|
259
|
-
process.stderr.write(`cello-mcp: FROST bootstrap OK, primaryPubkey=${Buffer.from(primaryPubkey).toString("hex").slice(0, 16)}...\n`);
|
|
260
|
-
}
|
|
261
|
-
catch (err) {
|
|
262
|
-
const msg = err instanceof Error ? `${err.name}: ${err.message}\n${err.stack}` : JSON.stringify(err);
|
|
263
|
-
process.stderr.write(`cello-mcp: FROST bootstrap FAILED: ${msg}\n`);
|
|
264
|
-
process.stderr.write(`cello-mcp: continuing without threshold signer (already-registered agents use persistent signaling stream)\n`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
process.stderr.write(`cello-mcp: no directory multiaddr configured — threshold signing unavailable\n`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// PERSIST-024 (CRIT-1): Construct and open the SQLCipher store, then wire ClientStatePersistence.
|
|
272
|
-
// dbKey is derived from identityKeyBytes before it is zeroed (see above).
|
|
273
|
-
let clientPersistence;
|
|
274
|
-
let sqlCipherStore;
|
|
275
|
-
if (dbKey) {
|
|
276
|
-
try {
|
|
277
|
-
sqlCipherStore = new SQLCipherClientStore(dbKey, {
|
|
278
|
-
dbPath,
|
|
279
|
-
agentId,
|
|
280
|
-
env: celloEnv,
|
|
281
|
-
logger: backupLogger,
|
|
282
|
-
});
|
|
283
|
-
await sqlCipherStore.open();
|
|
284
|
-
clientPersistence = new ClientStatePersistence({
|
|
285
|
-
store: sqlCipherStore,
|
|
286
|
-
agentPubkey: agentId,
|
|
287
|
-
keyFilePath: keyPath,
|
|
288
|
-
logger: backupLogger,
|
|
289
|
-
});
|
|
290
|
-
// PERSIST-024 (MED-2): expose to backup setMetadata/getMetadata callbacks (late binding)
|
|
291
|
-
clientPersistenceRef = clientPersistence;
|
|
292
|
-
// Note: upsertAgent() is NOT called here. loadPersistedState() calls it after all
|
|
293
|
-
// state loading completes — that is the authoritative call site that updates last_seen_at
|
|
294
|
-
// only on a fully successful startup.
|
|
295
|
-
process.stderr.write(`cello-mcp: persistence: SQLCipher store opened at ${dbPath}\n`);
|
|
296
|
-
}
|
|
297
|
-
catch (err) {
|
|
298
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
299
|
-
process.stderr.write(`cello-mcp: persistence: failed to open SQLCipher store — ${msg}\n`);
|
|
300
|
-
// Non-fatal: client continues without persistence
|
|
301
|
-
clientPersistence = undefined;
|
|
302
|
-
sqlCipherStore = undefined;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
process.stderr.write(`cello-mcp: persistence: identity key not available — SQLCipher store disabled\n`);
|
|
307
|
-
}
|
|
308
230
|
// Late-bound server reference — set after createMcpServer returns.
|
|
309
231
|
// The closure captures the box; notifications fired before server is assigned are dropped.
|
|
310
232
|
let mcpServer;
|
|
311
|
-
//
|
|
233
|
+
// AC-009: readySignal — resolved when background init completes (or fails).
|
|
234
|
+
// Tools that require the directory await this with a 10s timeout.
|
|
235
|
+
let readyResolve = () => { };
|
|
236
|
+
let readyReject = () => { };
|
|
237
|
+
const readyPromise = new Promise((resolve, reject) => {
|
|
238
|
+
readyResolve = resolve;
|
|
239
|
+
readyReject = reject;
|
|
240
|
+
});
|
|
241
|
+
// Create client with no thresholdSigner initially — background task populates it.
|
|
242
|
+
// directoryEndpoint is also populated in the background task.
|
|
312
243
|
const client = createClient(node, kp, {
|
|
313
|
-
thresholdSigner,
|
|
314
|
-
directoryEndpoint,
|
|
315
|
-
persistence:
|
|
244
|
+
thresholdSigner: undefined,
|
|
245
|
+
directoryEndpoint: undefined,
|
|
246
|
+
persistence: undefined, // wired in background task after SQLCipher opens
|
|
316
247
|
onMessageQueued: (senderHex) => {
|
|
317
248
|
if (mcpServer)
|
|
318
249
|
void pushChannelNotification(mcpServer, senderHex);
|
|
319
250
|
},
|
|
320
251
|
});
|
|
321
|
-
if (primaryPubkey) {
|
|
322
|
-
client.setPrimaryPubkey(primaryPubkey);
|
|
323
|
-
}
|
|
324
252
|
// Create server with single identity.
|
|
325
253
|
// PERSIST-017: checkpointStatusProvider is not available in the cello-mcp binary
|
|
326
254
|
// (the client binary has no access to the directory's MmrStore). The provider is
|
|
@@ -328,27 +256,252 @@ if (primaryPubkey) {
|
|
|
328
256
|
// Passing undefined is a safe fallback — the tools return M1 stub responses.
|
|
329
257
|
// PERSIST-022: clientBackupInstance passed so cello_backup/cello_restore are registered
|
|
330
258
|
// inside createMcpSessionServer (single canonical registration path).
|
|
331
|
-
const server = createMcpSessionServer(node, client, kp, {
|
|
332
|
-
|
|
333
|
-
//
|
|
334
|
-
|
|
335
|
-
await
|
|
336
|
-
|
|
337
|
-
//
|
|
338
|
-
// The queue is wired into the client so #reconnectRelayStream can check it on relay reconnect.
|
|
339
|
-
const loadedPendingHashes = client.getLoadedPendingHashes();
|
|
340
|
-
const hashQueue = new AgentHashQueue({
|
|
341
|
-
store: new LocalClientStore(),
|
|
342
|
-
agentId,
|
|
259
|
+
const server = createMcpSessionServer(node, client, kp, {
|
|
260
|
+
clientBackup: clientBackupInstance,
|
|
261
|
+
// AC-007 (DX-001): pass directoryUrl so agent_id lookup works in tool handlers
|
|
262
|
+
directoryUrl,
|
|
263
|
+
// AC-009 (DX-001): pass readyPromise so tools can await background init (up to 10s)
|
|
264
|
+
readyPromise,
|
|
265
|
+
// Wire logger so observability events (e.g. client.directory.agent_lookup.failed) are emitted
|
|
343
266
|
logger: backupLogger,
|
|
344
267
|
});
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
// Wire queue into client so relay reconnect can access pending hashes (AC-008)
|
|
350
|
-
client.setHashQueue(hashQueue);
|
|
351
|
-
// Connect stdio transport and register handler
|
|
268
|
+
mcpServer = server;
|
|
269
|
+
// AC-009 (DX-001): Connect stdio transport NOW — before any network operations.
|
|
270
|
+
// This ensures tools/list responds within 2s of process start.
|
|
352
271
|
await server.connect(new StdioServerTransport());
|
|
353
272
|
await client.registerHandler();
|
|
273
|
+
// AC-009 (DX-001): Background init task — runs concurrently with MCP tool calls.
|
|
274
|
+
// All network and disk I/O happens here, not on the critical path of server startup.
|
|
275
|
+
void (async () => {
|
|
276
|
+
try {
|
|
277
|
+
// Step 1: Open SQLCipher database
|
|
278
|
+
process.stderr.write("cello: opening database...");
|
|
279
|
+
let clientPersistence;
|
|
280
|
+
let sqlCipherStore;
|
|
281
|
+
const t0Db = Date.now();
|
|
282
|
+
if (dbKey) {
|
|
283
|
+
try {
|
|
284
|
+
sqlCipherStore = new SQLCipherClientStore(dbKey, {
|
|
285
|
+
dbPath,
|
|
286
|
+
agentId,
|
|
287
|
+
env: celloEnv,
|
|
288
|
+
logger: backupLogger,
|
|
289
|
+
});
|
|
290
|
+
await sqlCipherStore.open();
|
|
291
|
+
clientPersistence = new ClientStatePersistence({
|
|
292
|
+
store: sqlCipherStore,
|
|
293
|
+
agentPubkey: agentId,
|
|
294
|
+
keyFilePath: keyPath,
|
|
295
|
+
logger: backupLogger,
|
|
296
|
+
});
|
|
297
|
+
// PERSIST-024 (MED-2): expose to backup setMetadata/getMetadata callbacks (late binding)
|
|
298
|
+
clientPersistenceRef = clientPersistence;
|
|
299
|
+
// Wire persistence into client
|
|
300
|
+
client.setPersistence?.(clientPersistence);
|
|
301
|
+
const durationMs = Date.now() - t0Db;
|
|
302
|
+
// AC-001: report schema version and table count when available
|
|
303
|
+
const schemaInfo = sqlCipherStore.getSchemaInfo?.();
|
|
304
|
+
if (schemaInfo) {
|
|
305
|
+
process.stderr.write(` ok (V${schemaInfo.version}, ${schemaInfo.tableCount} tables)\n`);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
process.stderr.write(` ok (${durationMs}ms)\n`);
|
|
309
|
+
}
|
|
310
|
+
backupLogger.info("client.startup.progress", { step: "opening_database", outcome: "ok", durationMs });
|
|
311
|
+
}
|
|
312
|
+
catch (err) {
|
|
313
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
314
|
+
process.stderr.write(` failed: ${msg}\n`);
|
|
315
|
+
backupLogger.warn("client.startup.progress", { step: "opening_database", outcome: "failed", reason: msg, durationMs: Date.now() - t0Db });
|
|
316
|
+
// Detect native module load failures
|
|
317
|
+
const isNativeModuleError = msg.includes("Cannot find module") ||
|
|
318
|
+
msg.includes("was compiled against a different Node.js version") ||
|
|
319
|
+
msg.includes("NODE_MODULE_VERSION") ||
|
|
320
|
+
msg.includes("invalid ELF header") ||
|
|
321
|
+
msg.includes("dlopen") ||
|
|
322
|
+
msg.includes("libcrypto") ||
|
|
323
|
+
msg.includes("libssl");
|
|
324
|
+
if (isNativeModuleError) {
|
|
325
|
+
const platform = process.platform;
|
|
326
|
+
if (platform === "win32") {
|
|
327
|
+
process.stderr.write(`cello-mcp: Windows is not yet supported in the CELLO beta.\n`);
|
|
328
|
+
process.stderr.write(`cello-mcp: Windows support is on the roadmap. Follow https://github.com/Mygentic-AI/cello-client for updates.\n`);
|
|
329
|
+
}
|
|
330
|
+
else if (platform === "linux") {
|
|
331
|
+
process.stderr.write(`cello-mcp: Missing OpenSSL build dependencies on Linux.\n`);
|
|
332
|
+
process.stderr.write(`cello-mcp: Run: sudo apt-get install build-essential libssl-dev\n`);
|
|
333
|
+
process.stderr.write(`cello-mcp: Then re-run: npx @cello-protocol/connect\n`);
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
process.stderr.write(`cello-mcp: Xcode Command Line Tools are required on macOS.\n`);
|
|
337
|
+
process.stderr.write(`cello-mcp: Run: xcode-select --install\n`);
|
|
338
|
+
process.stderr.write(`cello-mcp: Then re-run: npx @cello-protocol/connect\n`);
|
|
339
|
+
}
|
|
340
|
+
process.stderr.write(`cello-mcp: Continuing without persistence — data will not survive restarts.\n`);
|
|
341
|
+
}
|
|
342
|
+
// Non-fatal: client continues without persistence
|
|
343
|
+
clientPersistence = undefined;
|
|
344
|
+
sqlCipherStore = undefined;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
process.stderr.write(` failed: identity key not available\n`);
|
|
349
|
+
backupLogger.warn("client.startup.progress", { step: "opening_database", outcome: "failed", reason: "identity key not available", durationMs: Date.now() - t0Db });
|
|
350
|
+
}
|
|
351
|
+
// Step 2: Fetch directory address
|
|
352
|
+
let resolvedDirectoryMultiaddr = directoryMultiaddr;
|
|
353
|
+
let directoryEndpoint = undefined;
|
|
354
|
+
if (!resolvedDirectoryMultiaddr) {
|
|
355
|
+
process.stderr.write(`cello: fetching directory address...`);
|
|
356
|
+
const t0Bootstrap = Date.now();
|
|
357
|
+
try {
|
|
358
|
+
const discovered = await fetchBootstrapMultiaddr(directoryUrl);
|
|
359
|
+
if (discovered) {
|
|
360
|
+
resolvedDirectoryMultiaddr = discovered;
|
|
361
|
+
const parts = resolvedDirectoryMultiaddr.split("/");
|
|
362
|
+
const p2pIndex = parts.findIndex((p) => p === "p2p");
|
|
363
|
+
const peerId = p2pIndex !== -1 ? parts[p2pIndex + 1] : null;
|
|
364
|
+
const shortPeerId = peerId ? peerId.slice(0, 20) + "..." : "(unknown)";
|
|
365
|
+
process.stderr.write(` ok (${shortPeerId})\n`);
|
|
366
|
+
backupLogger.info("client.startup.progress", { step: "fetching_directory_address", outcome: "ok", durationMs: Date.now() - t0Bootstrap });
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
const reason = "bootstrap endpoint unreachable";
|
|
370
|
+
backupLogger.warn("client.bootstrap.fetch.failed", { directoryUrl, reason: "endpoint_returned_null", durationMs: Date.now() - t0Bootstrap });
|
|
371
|
+
process.stderr.write(` failed: ${reason}\n`);
|
|
372
|
+
backupLogger.warn("client.startup.progress", { step: "fetching_directory_address", outcome: "failed", reason, durationMs: Date.now() - t0Bootstrap });
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
catch (err) {
|
|
376
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
377
|
+
backupLogger.warn("client.bootstrap.fetch.failed", { directoryUrl, reason: msg, durationMs: Date.now() - t0Bootstrap });
|
|
378
|
+
process.stderr.write(` failed: ${msg}\n`);
|
|
379
|
+
backupLogger.warn("client.startup.progress", { step: "fetching_directory_address", outcome: "failed", reason: msg, durationMs: Date.now() - t0Bootstrap });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// CELLO_DIRECTORY_MULTIADDR is set — use it directly
|
|
384
|
+
process.stderr.write(`cello: fetching directory address... ok (from CELLO_DIRECTORY_MULTIADDR)\n`);
|
|
385
|
+
backupLogger.info("client.startup.progress", { step: "fetching_directory_address", outcome: "ok", durationMs: 0 });
|
|
386
|
+
}
|
|
387
|
+
if (resolvedDirectoryMultiaddr) {
|
|
388
|
+
const parts = resolvedDirectoryMultiaddr.split("/");
|
|
389
|
+
const p2pIndex = parts.findIndex((p) => p === "p2p");
|
|
390
|
+
const peerId = p2pIndex !== -1 ? parts[p2pIndex + 1] : null;
|
|
391
|
+
if (peerId) {
|
|
392
|
+
directoryEndpoint = { peer_id: peerId, multiaddrs: [resolvedDirectoryMultiaddr] };
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// Multiaddr is present but lacks /p2p/<peer-id> — setDirectoryEndpoint will not be called.
|
|
396
|
+
backupLogger.warn("client.startup.multiaddr_parse.failed", { reason: "multiaddr_missing_peer_id", multiaddr: resolvedDirectoryMultiaddr });
|
|
397
|
+
process.stderr.write("cello-mcp: directory multiaddr must include /p2p/<peer-id>\n");
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
// AC-003 (DX-001): Set directoryEndpoint on the client BEFORE loadPersistedState() so that
|
|
401
|
+
// loadPersistedState() can populate directoryNodeStubs in the reconstructed FrostThresholdSigner.
|
|
402
|
+
// Only called when directoryEndpoint is parsed successfully (requires /p2p/<peer-id> in the
|
|
403
|
+
// multiaddr). If multiaddr lacks peer ID, loadPersistedState() will reconstruct the
|
|
404
|
+
// FrostThresholdSigner with directoryNodeStubs: undefined — ceremonies will fail until the
|
|
405
|
+
// agent reconnects with a valid multiaddr.
|
|
406
|
+
if (directoryEndpoint) {
|
|
407
|
+
client.setDirectoryEndpoint?.(directoryEndpoint);
|
|
408
|
+
}
|
|
409
|
+
// Step 3: Load agent state (moved BEFORE directory connection/bootstrap)
|
|
410
|
+
// Registered agents will have their FrostThresholdSigner reconstructed from DB here.
|
|
411
|
+
// directoryEndpoint is already set, so directoryNodeStubs will be populated.
|
|
412
|
+
process.stderr.write("cello: loading agent state...");
|
|
413
|
+
const t0LoadState = Date.now();
|
|
414
|
+
try {
|
|
415
|
+
await client.loadPersistedState();
|
|
416
|
+
process.stderr.write(" ok\n");
|
|
417
|
+
backupLogger.info("client.startup.progress", { step: "loading_agent_state", outcome: "ok", durationMs: Date.now() - t0LoadState });
|
|
418
|
+
}
|
|
419
|
+
catch (err) {
|
|
420
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
421
|
+
process.stderr.write(` failed: ${msg}\n`);
|
|
422
|
+
backupLogger.warn("client.startup.progress", { step: "loading_agent_state", outcome: "failed", reason: msg, durationMs: Date.now() - t0LoadState });
|
|
423
|
+
throw err;
|
|
424
|
+
}
|
|
425
|
+
// PERSIST-024 AC-008: Build AgentHashQueue
|
|
426
|
+
const loadedPendingHashes = client.getLoadedPendingHashes();
|
|
427
|
+
const hashQueue = new AgentHashQueue({
|
|
428
|
+
store: new LocalClientStore(),
|
|
429
|
+
agentId,
|
|
430
|
+
logger: backupLogger,
|
|
431
|
+
});
|
|
432
|
+
if (loadedPendingHashes.length > 0) {
|
|
433
|
+
await hashQueue.loadPending(loadedPendingHashes);
|
|
434
|
+
process.stderr.write(`cello-mcp: ${loadedPendingHashes.length} pending hash(es) loaded into AgentHashQueue\n`);
|
|
435
|
+
}
|
|
436
|
+
client.setHashQueue(hashQueue);
|
|
437
|
+
// Check if the agent is already registered (FROST share was loaded from DB).
|
|
438
|
+
// If so, skip bootstrap — the signer is already reconstructed from the DB.
|
|
439
|
+
const regStateAfterLoad = typeof client.getRegistrationState === "function"
|
|
440
|
+
? client.getRegistrationState()
|
|
441
|
+
: null;
|
|
442
|
+
// Step 4: Connect to directory and bootstrap ONLY if not already registered
|
|
443
|
+
let thresholdSigner;
|
|
444
|
+
let primaryPubkey;
|
|
445
|
+
const t0Connect = Date.now();
|
|
446
|
+
if (resolvedDirectoryMultiaddr && directoryEndpoint) {
|
|
447
|
+
process.stderr.write(`cello: connecting to directory...`);
|
|
448
|
+
try {
|
|
449
|
+
await node.dial(directoryEndpoint.multiaddrs[0]);
|
|
450
|
+
if (!regStateAfterLoad) {
|
|
451
|
+
// Not yet registered — run bootstrap to initialize FROST key shares.
|
|
452
|
+
// Registered agents already have their signer from loadPersistedState().
|
|
453
|
+
const ownPubkey = await kp.getPublicKey();
|
|
454
|
+
const networkNodes = [new NetworkDirectoryNode({
|
|
455
|
+
id: `cello-test-node-0000`,
|
|
456
|
+
node,
|
|
457
|
+
directoryPeerId: directoryEndpoint.peer_id,
|
|
458
|
+
directoryMultiaddrs: directoryEndpoint.multiaddrs,
|
|
459
|
+
})];
|
|
460
|
+
const bootstrap = await bootstrapNetworkKeyShares(ownPubkey, {
|
|
461
|
+
threshold: 2,
|
|
462
|
+
participants: 1,
|
|
463
|
+
directoryNodes: networkNodes,
|
|
464
|
+
});
|
|
465
|
+
thresholdSigner = bootstrap.signer;
|
|
466
|
+
primaryPubkey = bootstrap.primaryPubkey;
|
|
467
|
+
}
|
|
468
|
+
process.stderr.write(` ok\n`);
|
|
469
|
+
backupLogger.info("client.startup.progress", { step: "connecting_to_directory", outcome: "ok", durationMs: Date.now() - t0Connect });
|
|
470
|
+
}
|
|
471
|
+
catch (err) {
|
|
472
|
+
const msg = err instanceof Error ? `${err.name}: ${err.message}` : JSON.stringify(err);
|
|
473
|
+
process.stderr.write(` failed: ${msg}\n`);
|
|
474
|
+
process.stderr.write(`cello-mcp: continuing without threshold signer\n`);
|
|
475
|
+
backupLogger.warn("client.startup.progress", { step: "connecting_to_directory", outcome: "failed", reason: msg, durationMs: Date.now() - t0Connect });
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
process.stderr.write(`cello: connecting to directory... failed: no multiaddr configured\n`);
|
|
480
|
+
backupLogger.warn("client.startup.progress", { step: "connecting_to_directory", outcome: "failed", reason: "no multiaddr configured", durationMs: Date.now() - t0Connect });
|
|
481
|
+
}
|
|
482
|
+
// Wire threshold signer into client only when bootstrap ran (unregistered agents).
|
|
483
|
+
// Registered agents already have their signer from loadPersistedState().
|
|
484
|
+
if (thresholdSigner) {
|
|
485
|
+
client.setThresholdSigner?.(thresholdSigner);
|
|
486
|
+
}
|
|
487
|
+
if (primaryPubkey) {
|
|
488
|
+
client.setPrimaryPubkey(primaryPubkey);
|
|
489
|
+
}
|
|
490
|
+
// Step 5: Emit final ready message (use regStateAfterLoad from loadPersistedState)
|
|
491
|
+
if (regStateAfterLoad) {
|
|
492
|
+
process.stderr.write(`cello: ready (registered as ${regStateAfterLoad.agent_id})\n`);
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
process.stderr.write(`cello: ready (not registered — call cello_setup_guidance for setup)\n`);
|
|
496
|
+
}
|
|
497
|
+
// durationMs: 0 — "ready" is a completion marker, not a timed operation.
|
|
498
|
+
backupLogger.info("client.startup.progress", { step: "ready", outcome: "ok", durationMs: 0 });
|
|
499
|
+
readyResolve();
|
|
500
|
+
}
|
|
501
|
+
catch (err) {
|
|
502
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
503
|
+
process.stderr.write(`cello-mcp: background init failed: ${msg}\n`);
|
|
504
|
+
readyReject(err);
|
|
505
|
+
}
|
|
506
|
+
})();
|
|
354
507
|
//# sourceMappingURL=cello-mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cello-mcp.js","sourceRoot":"","sources":["../../src/bin/cello-mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,oFAAoF;AACpF,MAAM,SAAS,GAAG,iBAAiB,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AACjF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAgC,CAAC;AAC3F,uDAAuD;AACvD,8FAA8F;AAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CACrB,KAA0B,EAC1B,YAA8D,EAC9D,EAAiC,EACxB,EAAE;IACX,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC,KAAe,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC,KAAe,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC,KAAe,CAAC,CAAC;AACpC,CAAC,CAAC;AACF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChP,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAE/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAClF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,oBAAoB,CAAC;AAC5E,iGAAiG;AACjG,uFAAuF;AACvF,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtD,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC;AACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACtF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACvD,4FAA4F;AAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC;AAE9F,WAAW;AACX,IAAI,EAAmB,CAAC;AACxB,IAAI,CAAC;IACH,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAAC,OAAO,GAAY,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG;QACrE,CAAC,CAAE,GAA2B,CAAC,OAAO;QACtC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,yFAAyF;AACzF,yDAAyD;AACzD,iEAAiE;AACjE,uBAAuB;AACvB,uCAAuC;AACvC,oCAAoC;AACpC,qEAAqE;AACrE,mFAAmF;AACnF,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,mCAAmC;AAC7D,MAAM,WAAW,GAAG,CAAC,CAAC,CAAI,4BAA4B;AACtD,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,IAAI,gBAAgB,GAAsB,IAAI,CAAC;AAC/C,IAAI,CAAC;IACH,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,2BAA2B;IAC3B,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACxC,gEAAgE;QAChE,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,wBAAwB;QACxB,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;QACzE,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,gBAAgB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,UAAU,CAAC,MAAM,oBAAoB,aAAa,uBAAuB,CAAC,CAAC;IAC9I,CAAC;AACH,CAAC;AAAC,MAAM,CAAC;IACP,qFAAqF;IACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;AAC3G,CAAC;AAED,kDAAkD;AAClD,MAAM,kBAAkB,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;AACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEhE,mFAAmF;AACnF,IAAI,qBAAqB,GAAgC,IAAI,CAAC;AAC9D,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;IACzB,4DAA4D;IAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5D,qBAAqB,GAAG,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,cAAc,IAAI,CAAC,CAAC;AACpG,CAAC;KAAM,IAAI,cAAc,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,qBAAqB,GAAG,IAAI,sBAAsB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAClG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,cAAc,YAAY,SAAS,IAAI,CAAC,CAAC;AAC3H,CAAC;KAAM,CAAC;IACN,sGAAsG;IACtG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAChG,CAAC;AAED,0EAA0E;AAC1E,mFAAmF;AACnF,kFAAkF;AAClF,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,CAAC,KAAa,EAAE,GAA6B,EAAE,EAAE,CACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;IACpF,IAAI,EAAE,CAAC,KAAa,EAAE,GAA6B,EAAE,EAAE,CACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;IACnF,IAAI,EAAE,CAAC,KAAa,EAAE,GAA6B,EAAE,EAAE,CACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;IACnF,KAAK,EAAE,CAAC,KAAa,EAAE,GAA6B,EAAE,EAAE,CACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;CACrF,CAAC;AAEF,qFAAqF;AACrF,yFAAyF;AACzF,IAAI,KAAK,GAAsB,IAAI,CAAC;AACpC,IAAI,gBAAgB,EAAE,CAAC;IACrB,KAAK,GAAG,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,0FAA0F;AAC1F,uFAAuF;AACvF,oEAAoE;AACpE,IAAI,oBAAwD,CAAC;AAE7D,IAAI,oBAA8C,CAAC;AACnD,IAAI,gBAAgB,EAAE,CAAC;IACrB,oBAAoB,GAAG,IAAI,YAAY,CAAC;QACtC,OAAO;QACP,WAAW,EAAE,gBAAgB;QAC7B,MAAM;QACN,YAAY,EAAE,qBAAqB;QACnC,MAAM,EAAE,YAAY;QACpB,eAAe,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QACnF,+FAA+F;QAC/F,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,KAAiB,EAAE,EAAE;YACrD,IAAI,CAAC,oBAAoB;gBAAE,OAAO;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAI1D,CAAC;gBACF,MAAM,oBAAoB,CAAC,qBAAqB,CAAC;oBAC/C,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBACnD,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;QACD,kFAAkF;QAClF,WAAW,EAAE,KAAK,EAAE,IAAY,EAAmC,EAAE;YACnE,IAAI,CAAC,oBAAoB;gBAAE,OAAO,SAAS,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;gBAC5D,IAAI,CAAC,GAAG;oBAAE,OAAO,SAAS,CAAC;gBAC3B,MAAM,IAAI,GAAG;oBACX,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;oBAC/C,cAAc,EAAE,GAAG,CAAC,eAAe;oBACnC,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC;gBACF,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,qGAAqG;IACrG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,oEAAoE;AACpE,6FAA6F;AAC7F,cAAc;AACd,kFAAkF;AAClF,4DAA4D;AAC5D,qFAAqF;AACrF,+FAA+F;AAE/F,IAAI,0BAA0B,GAAuB,kBAAkB,CAAC;AAExE,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,YAAY,cAAc,CAAC,CAAC;IACzG,sEAAsE;IACtE,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC/D,IAAI,UAAU,EAAE,CAAC;QACf,0BAA0B,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,0BAA0B,IAAI,CAAC,CAAC;IAC3G,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,IAAI,iBAAiB,GAA0D,SAAS,CAAC;AACzF,IAAI,0BAA0B,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,MAAM,EAAE,CAAC;QACX,iBAAiB,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC;IACpF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAClF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAEnB,kDAAkD;AAClD,wDAAwD;AACxD,IAAI,eAAiD,CAAC;AACtD,IAAI,aAAqC,CAAC;AAE1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,wBAAwB,YAAY,8BAA8B,0BAA0B,IAAI,SAAS,IAAI,CAAC,CAAC;AAE5L,CAAC;IACC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;IAE1C,IAAI,0BAA0B,IAAI,iBAAiB,EAAE,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAClF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAE9D,MAAM,YAAY,GAAG,CAAC,IAAI,oBAAoB,CAAC;oBAC7C,EAAE,EAAE,sBAAsB;oBAC1B,IAAI;oBACJ,eAAe,EAAE,iBAAiB,CAAC,OAAO;oBAC1C,mBAAmB,EAAE,iBAAiB,CAAC,UAAU;iBAClD,CAAC,CAAC,CAAC;YAEJ,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,SAAS,EAAE;gBAC3D,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,CAAC;gBACf,cAAc,EAAE,YAAY;aAC7B,CAAC,CAAC;YACH,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;YACnC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACvI,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8GAA8G,CAAC,CAAC;QACvI,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACzG,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,0EAA0E;AAC1E,IAAI,iBAAqD,CAAC;AAC1D,IAAI,cAAgD,CAAC;AACrD,IAAI,KAAK,EAAE,CAAC;IACV,IAAI,CAAC;QACH,cAAc,GAAG,IAAI,oBAAoB,CAAC,KAAK,EAAE;YAC/C,MAAM;YACN,OAAO;YACP,GAAG,EAAE,QAAQ;YACb,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,iBAAiB,GAAG,IAAI,sBAAsB,CAAC;YAC7C,KAAK,EAAE,cAAc;YACrB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO;YACpB,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,yFAAyF;QACzF,oBAAoB,GAAG,iBAAiB,CAAC;QACzC,kFAAkF;QAClF,0FAA0F;QAC1F,sCAAsC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,MAAM,IAAI,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,GAAG,IAAI,CAAC,CAAC;QAC1F,kDAAkD;QAClD,iBAAiB,GAAG,SAAS,CAAC;QAC9B,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC;AACH,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;AAC1G,CAAC;AAED,mEAAmE;AACnE,2FAA2F;AAC3F,IAAI,SAAgC,CAAC;AAErC,uBAAuB;AACvB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE;IACpC,eAAe;IACf,iBAAiB;IACjB,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;QAC7B,IAAI,SAAS;YAAE,KAAK,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACF,CAAC,CAAC;AAEH,IAAI,aAAa,EAAE,CAAC;IAClB,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC;AAED,sCAAsC;AACtC,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,6EAA6E;AAC7E,wFAAwF;AACxF,sEAAsE;AACtE,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAChG,SAAS,GAAG,MAAM,CAAC;AAEnB,kFAAkF;AAClF,uFAAuF;AACvF,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;AAElC,gGAAgG;AAChG,4FAA4F;AAC5F,+FAA+F;AAC/F,MAAM,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAC5D,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC;IACnC,KAAK,EAAE,IAAI,gBAAgB,EAAE;IAC7B,OAAO;IACP,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AACH,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACnC,MAAM,SAAS,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,mBAAmB,CAAC,MAAM,6FAA6F,CAAC,CAAC;AAC9J,CAAC;AACD,+EAA+E;AAC9E,MAA+D,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAEzF,+CAA+C;AAC/C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACjD,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cello-mcp.js","sourceRoot":"","sources":["../../src/bin/cello-mcp.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.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -30,8 +30,8 @@
|
|
|
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.5",
|
|
34
33
|
"@cello-protocol/transport": "0.0.3",
|
|
34
|
+
"@cello-protocol/client": "0.0.5",
|
|
35
35
|
"@cello-protocol/crypto": "0.0.4"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|