@agentvault/secure-channel 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env node
2
+ import { SecureChannel } from "./channel.js";
3
+ import { resolve } from "node:path";
4
+ import { createInterface } from "node:readline";
5
+ // --- Parse args ---
6
+ const args = process.argv.slice(2);
7
+ const flags = {};
8
+ for (const arg of args) {
9
+ const match = arg.match(/^--(\w[\w-]*)=(.+)$/);
10
+ if (match) {
11
+ flags[match[1]] = match[2];
12
+ }
13
+ }
14
+ const token = flags["token"] || process.env.AGENTVAULT_INVITE_TOKEN;
15
+ const name = flags["name"] || process.env.AGENTVAULT_AGENT_NAME || "CLI Agent";
16
+ const dataDir = flags["data-dir"] || process.env.AGENTVAULT_DATA_DIR || "./agentvault-data";
17
+ const apiUrl = flags["api-url"] || process.env.AGENTVAULT_API_URL || "https://api.agentvault.chat";
18
+ if (!token) {
19
+ console.error(`
20
+ AgentVault Secure Channel CLI
21
+
22
+ Usage:
23
+ npx @agentvault/secure-channel --token=YOUR_INVITE_TOKEN
24
+
25
+ Options:
26
+ --token=TOKEN Invite token from the AgentVault dashboard (required on first run)
27
+ --name=NAME Agent display name (default: "CLI Agent")
28
+ --data-dir=PATH Directory for persistent state (default: ./agentvault-data)
29
+ --api-url=URL API endpoint (default: https://api.agentvault.chat)
30
+
31
+ Environment variables:
32
+ AGENTVAULT_INVITE_TOKEN Same as --token
33
+ AGENTVAULT_AGENT_NAME Same as --name
34
+ AGENTVAULT_DATA_DIR Same as --data-dir
35
+ AGENTVAULT_API_URL Same as --api-url
36
+
37
+ Example:
38
+ npx @agentvault/secure-channel --token=av_tok_abc123 --name="My Agent"
39
+ `);
40
+ process.exit(1);
41
+ }
42
+ // --- State display ---
43
+ const stateMessages = {
44
+ idle: "Initializing...",
45
+ enrolling: "Enrolling with server...",
46
+ polling: "Waiting for owner approval (check your dashboard)...",
47
+ activating: "Approved! Setting up encryption...",
48
+ connecting: "Connecting secure channel...",
49
+ ready: "Secure channel is live! Type a message and press Enter to send.",
50
+ disconnected: "Disconnected — reconnecting...",
51
+ error: "Error occurred.",
52
+ };
53
+ // --- Start channel ---
54
+ const channel = new SecureChannel({
55
+ inviteToken: token,
56
+ dataDir: resolve(dataDir),
57
+ apiUrl,
58
+ agentName: name,
59
+ onMessage: (plaintext, metadata) => {
60
+ const time = new Date(metadata.timestamp).toLocaleTimeString();
61
+ console.log(`\n [${time}] Owner: ${plaintext}`);
62
+ process.stdout.write("\n> ");
63
+ },
64
+ onStateChange: (state) => {
65
+ console.log(`\n ${stateMessages[state]}`);
66
+ if (state === "polling" && channel.fingerprint) {
67
+ console.log(` Fingerprint: ${channel.fingerprint}`);
68
+ console.log(" Verify this matches the fingerprint shown in your dashboard.");
69
+ }
70
+ if (state === "ready") {
71
+ console.log(" Messages are end-to-end encrypted. The server cannot read them.\n");
72
+ process.stdout.write("> ");
73
+ }
74
+ },
75
+ });
76
+ channel.on("error", (err) => {
77
+ console.error(`\n Error: ${err.message}`);
78
+ });
79
+ console.log(`
80
+ ╔══════════════════════════════════════════════╗
81
+ ║ AgentVault Secure Channel ║
82
+ ║ ║
83
+ ║ Agent: ${name.padEnd(37)}║
84
+ ║ API: ${apiUrl.padEnd(37)}║
85
+ ╚══════════════════════════════════════════════╝
86
+ `);
87
+ await channel.start();
88
+ // --- Interactive input ---
89
+ const rl = createInterface({
90
+ input: process.stdin,
91
+ output: process.stdout,
92
+ prompt: "> ",
93
+ });
94
+ rl.on("line", async (line) => {
95
+ const msg = line.trim();
96
+ if (!msg) {
97
+ rl.prompt();
98
+ return;
99
+ }
100
+ if (msg === "/quit" || msg === "/exit") {
101
+ console.log("\n Shutting down...");
102
+ await channel.stop();
103
+ rl.close();
104
+ process.exit(0);
105
+ }
106
+ if (msg === "/status") {
107
+ console.log(` State: ${channel.state}`);
108
+ console.log(` Device: ${channel.deviceId ?? "not enrolled"}`);
109
+ console.log(` Fingerprint: ${channel.fingerprint ?? "n/a"}`);
110
+ console.log(` Conversation: ${channel.conversationId ?? "n/a"}`);
111
+ rl.prompt();
112
+ return;
113
+ }
114
+ if (msg === "/help") {
115
+ console.log(" Commands:");
116
+ console.log(" /status — Show connection status");
117
+ console.log(" /quit — Disconnect and exit");
118
+ console.log(" /help — Show this help");
119
+ console.log(" Anything else is sent as a message to the owner.");
120
+ rl.prompt();
121
+ return;
122
+ }
123
+ if (channel.state !== "ready") {
124
+ console.log(" Channel is not ready yet. Wait for the owner to approve.");
125
+ rl.prompt();
126
+ return;
127
+ }
128
+ try {
129
+ await channel.send(msg);
130
+ const time = new Date().toLocaleTimeString();
131
+ console.log(` [${time}] You: ${msg}`);
132
+ }
133
+ catch (err) {
134
+ console.error(` Failed to send: ${err.message}`);
135
+ }
136
+ rl.prompt();
137
+ });
138
+ // Graceful shutdown
139
+ process.on("SIGINT", async () => {
140
+ console.log("\n Shutting down...");
141
+ await channel.stop();
142
+ rl.close();
143
+ process.exit(0);
144
+ });
145
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentvault/secure-channel",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,7 +10,13 @@
10
10
  "test": "vitest run",
11
11
  "test:watch": "vitest"
12
12
  },
13
- "files": ["dist"],
13
+ "bin": {
14
+ "agentvault": "dist/cli.js",
15
+ "secure-channel": "dist/cli.js"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
14
20
  "publishConfig": {
15
21
  "access": "public"
16
22
  },