@cello-protocol/cli 0.0.1 → 0.0.3

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.
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * cello — the CELLO CLI binary.
4
+ *
5
+ * Commands:
6
+ * cello login — Start the daemon (or connect to existing), exit 0
7
+ * cello logout — Send shutdown command to daemon
8
+ * cello status — Query daemon and print structured JSON response
9
+ * cello register — Register a loaded agent with the directory (ML-DSA + FROST DKG)
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=cello.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cello.d.ts","sourceRoot":"","sources":["../../src/bin/cello.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * cello — the CELLO CLI binary.
4
+ *
5
+ * Commands:
6
+ * cello login — Start the daemon (or connect to existing), exit 0
7
+ * cello logout — Send shutdown command to daemon
8
+ * cello status — Query daemon and print structured JSON response
9
+ * cello register — Register a loaded agent with the directory (ML-DSA + FROST DKG)
10
+ */
11
+ import { homedir } from "node:os";
12
+ import { join, dirname } from "node:path";
13
+ import { createRequire } from "node:module";
14
+ import { login, logout, status, register } from "../commands.js";
15
+ const logger = {
16
+ debug(event, context) {
17
+ const line = JSON.stringify({ level: "debug", event, ...context, ts: new Date().toISOString() });
18
+ process.stderr.write(line + "\n");
19
+ },
20
+ info(event, context) {
21
+ const line = JSON.stringify({ level: "info", event, ...context, ts: new Date().toISOString() });
22
+ process.stderr.write(line + "\n");
23
+ },
24
+ warn(event, context) {
25
+ const line = JSON.stringify({ level: "warn", event, ...context, ts: new Date().toISOString() });
26
+ process.stderr.write(line + "\n");
27
+ },
28
+ error(event, context) {
29
+ const line = JSON.stringify({ level: "error", event, ...context, ts: new Date().toISOString() });
30
+ process.stderr.write(line + "\n");
31
+ },
32
+ };
33
+ const celloDir = process.env.CELLO_DIR || join(homedir(), ".cello");
34
+ const command = process.argv[2];
35
+ // Resolve daemon binary via package resolution (works after npm publish)
36
+ const require = createRequire(import.meta.url);
37
+ const daemonPkgPath = require.resolve("@cello-protocol/daemon/package.json");
38
+ const daemonBin = join(dirname(daemonPkgPath), "dist/bin/cello-daemon.js");
39
+ async function main() {
40
+ let result;
41
+ switch (command) {
42
+ case "login":
43
+ result = await login(celloDir, daemonBin, logger);
44
+ break;
45
+ case "logout":
46
+ result = await logout(celloDir);
47
+ break;
48
+ case "status":
49
+ result = await status(celloDir);
50
+ break;
51
+ case "register": {
52
+ // cello register <agent> [preAuthToken] (token falls back to CELLO_PREAUTH_TOKEN
53
+ // so it need not appear in shell history). Optional phone stub follows.
54
+ const agent = process.argv[3] ?? "";
55
+ const tokenArg = process.argv[4];
56
+ const preAuthToken = tokenArg ?? process.env.CELLO_PREAUTH_TOKEN ?? "";
57
+ const phoneStub = process.argv[5] ?? "";
58
+ // L3: a token passed as an argv positional is visible in the process list
59
+ // (ps / /proc). Warn and steer to the env var, which is the safe path.
60
+ if (tokenArg) {
61
+ process.stderr.write("Warning: passing the pre-auth token as a command-line argument exposes it in the process list. Prefer the CELLO_PREAUTH_TOKEN environment variable.\n");
62
+ }
63
+ result = await register(celloDir, agent, preAuthToken, phoneStub);
64
+ break;
65
+ }
66
+ default:
67
+ process.stdout.write("Usage: cello <login|logout|status|register>\n");
68
+ process.exit(command ? 1 : 0);
69
+ return;
70
+ }
71
+ process.stdout.write(result.output + "\n");
72
+ process.exit(result.exitCode);
73
+ }
74
+ main().catch((err) => {
75
+ const message = err instanceof Error ? err.message : String(err);
76
+ process.stderr.write(`Fatal: ${message}\n`);
77
+ process.exit(1);
78
+ });
79
+ //# sourceMappingURL=cello.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cello.js","sourceRoot":"","sources":["../../src/bin/cello.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * CLI command implementations for the `cello` binary.
3
+ *
4
+ * Pseudocode:
5
+ * 1. login(celloDir, daemonBin):
6
+ * - Call connectOrStart(celloDir) to either connect to existing or spawn new daemon
7
+ * - Print status (already running / started)
8
+ * - Close IPC connection and exit 0
9
+ *
10
+ * 2. logout(celloDir):
11
+ * - Read lock file to find socket path
12
+ * - Connect to daemon
13
+ * - Send 'shutdown' method
14
+ * - Wait for acknowledgement
15
+ * - Exit 0
16
+ *
17
+ * 3. status(celloDir):
18
+ * - Read lock file to find socket path
19
+ * - Connect to daemon
20
+ * - Send 'status' method
21
+ * - Print response as structured JSON
22
+ * - Exit 0
23
+ */
24
+ import { type Logger } from "@cello-protocol/daemon";
25
+ export interface CommandResult {
26
+ exitCode: number;
27
+ output: string;
28
+ }
29
+ export declare function login(celloDir: string, daemonBin: string, logger: Logger): Promise<CommandResult>;
30
+ export declare function logout(celloDir: string): Promise<CommandResult>;
31
+ /**
32
+ * register(celloDir, agent, preAuthToken, phoneStub):
33
+ * - Read lock file to find socket path (daemon must be running)
34
+ * - Connect to daemon, send 'cello_register' with { agent, preAuthToken, phoneStub }
35
+ * - The daemon runs ML-DSA keygen → FROST DKG → register_success and persists
36
+ * the agent's key material + registration state + agent→user link.
37
+ * - Print structured JSON; exit 0 on success, 1 on failure.
38
+ */
39
+ export declare function register(celloDir: string, agent: string, preAuthToken: string, phoneStub?: string): Promise<CommandResult>;
40
+ export declare function status(celloDir: string): Promise<CommandResult>;
41
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBrE;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,SAAS,SAAK,GACb,OAAO,CAAC,aAAa,CAAC,CA2CxB;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBrE"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * CLI command implementations for the `cello` binary.
3
+ *
4
+ * Pseudocode:
5
+ * 1. login(celloDir, daemonBin):
6
+ * - Call connectOrStart(celloDir) to either connect to existing or spawn new daemon
7
+ * - Print status (already running / started)
8
+ * - Close IPC connection and exit 0
9
+ *
10
+ * 2. logout(celloDir):
11
+ * - Read lock file to find socket path
12
+ * - Connect to daemon
13
+ * - Send 'shutdown' method
14
+ * - Wait for acknowledgement
15
+ * - Exit 0
16
+ *
17
+ * 3. status(celloDir):
18
+ * - Read lock file to find socket path
19
+ * - Connect to daemon
20
+ * - Send 'status' method
21
+ * - Print response as structured JSON
22
+ * - Exit 0
23
+ */
24
+ import { join } from "node:path";
25
+ import { connectOrStart, connectToDaemon, readLock, } from "@cello-protocol/daemon";
26
+ export async function login(celloDir, daemonBin, logger) {
27
+ try {
28
+ const result = await connectOrStart(celloDir, logger, daemonBin);
29
+ result.client.close();
30
+ if (result.alreadyRunning) {
31
+ return { exitCode: 0, output: "Daemon already running." };
32
+ }
33
+ return { exitCode: 0, output: "Daemon started." };
34
+ }
35
+ catch (err) {
36
+ const message = err instanceof Error ? err.message : String(err);
37
+ return { exitCode: 1, output: `Failed to start daemon: ${message}` };
38
+ }
39
+ }
40
+ export async function logout(celloDir) {
41
+ const lockFilePath = join(celloDir, "daemon.lock");
42
+ const lock = await readLock(lockFilePath);
43
+ if (!lock) {
44
+ return { exitCode: 0, output: "No daemon running." };
45
+ }
46
+ try {
47
+ const client = await connectToDaemon(lock.socketPath);
48
+ await client.send("shutdown");
49
+ client.close();
50
+ return { exitCode: 0, output: "Daemon stopped." };
51
+ }
52
+ catch (err) {
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ return { exitCode: 1, output: `Failed to stop daemon: ${message}` };
55
+ }
56
+ }
57
+ /**
58
+ * register(celloDir, agent, preAuthToken, phoneStub):
59
+ * - Read lock file to find socket path (daemon must be running)
60
+ * - Connect to daemon, send 'cello_register' with { agent, preAuthToken, phoneStub }
61
+ * - The daemon runs ML-DSA keygen → FROST DKG → register_success and persists
62
+ * the agent's key material + registration state + agent→user link.
63
+ * - Print structured JSON; exit 0 on success, 1 on failure.
64
+ */
65
+ export async function register(celloDir, agent, preAuthToken, phoneStub = "") {
66
+ if (!agent || !preAuthToken) {
67
+ return {
68
+ exitCode: 1,
69
+ output: "Usage: cello register <agent> <preAuthToken> (or set CELLO_PREAUTH_TOKEN). The pre-authorization ticket comes from the CELLO Operations Agent.",
70
+ };
71
+ }
72
+ const lockFilePath = join(celloDir, "daemon.lock");
73
+ const lock = await readLock(lockFilePath);
74
+ if (!lock) {
75
+ return { exitCode: 1, output: "No daemon running. Run 'cello login' first, then retry registration." };
76
+ }
77
+ try {
78
+ const client = await connectToDaemon(lock.socketPath);
79
+ const result = (await client.send("cello_register", { agent, preAuthToken, phoneStub }));
80
+ client.close();
81
+ if (!result.ok) {
82
+ return {
83
+ exitCode: 1,
84
+ output: JSON.stringify({ ok: false, reason: result.reason, guidance: result.guidance }, null, 2),
85
+ };
86
+ }
87
+ return {
88
+ exitCode: 0,
89
+ output: JSON.stringify({ ok: true, agent_id: result.agent_id, primary_pubkey: result.primary_pubkey }, null, 2),
90
+ };
91
+ }
92
+ catch (err) {
93
+ const message = err instanceof Error ? err.message : String(err);
94
+ return { exitCode: 1, output: `Failed to register: ${message}` };
95
+ }
96
+ }
97
+ export async function status(celloDir) {
98
+ const lockFilePath = join(celloDir, "daemon.lock");
99
+ const lock = await readLock(lockFilePath);
100
+ if (!lock) {
101
+ return {
102
+ exitCode: 1,
103
+ output: JSON.stringify({ daemon: "stopped" }, null, 2),
104
+ };
105
+ }
106
+ try {
107
+ const client = await connectToDaemon(lock.socketPath);
108
+ const result = (await client.send("status"));
109
+ client.close();
110
+ return { exitCode: 0, output: JSON.stringify(result, null, 2) };
111
+ }
112
+ catch (err) {
113
+ const message = err instanceof Error ? err.message : String(err);
114
+ return {
115
+ exitCode: 1,
116
+ output: JSON.stringify({ daemon: "unreachable", error: message }, null, 2),
117
+ };
118
+ }
119
+ }
120
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { login, logout, status, register, type CommandResult } from "./commands.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { login, logout, status, register } from "./commands.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cello-protocol/cli",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -25,7 +25,7 @@
25
25
  "package.json"
26
26
  ],
27
27
  "dependencies": {
28
- "@cello-protocol/daemon": "0.0.3"
28
+ "@cello-protocol/daemon": "0.0.5"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^25.6.2"