@nokai/cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +35 -169
  2. package/dist/connection-manager.d.ts +9 -1
  3. package/dist/connection-manager.d.ts.map +1 -1
  4. package/dist/connection-manager.js +85 -1
  5. package/dist/connection-manager.js.map +1 -1
  6. package/dist/index.js +0 -0
  7. package/dist/message-protocol.d.ts +3 -1
  8. package/dist/message-protocol.d.ts.map +1 -1
  9. package/dist/message-protocol.js +25 -1
  10. package/dist/message-protocol.js.map +1 -1
  11. package/dist/profile.d.ts +9 -0
  12. package/dist/profile.d.ts.map +1 -1
  13. package/dist/profile.js +31 -2
  14. package/dist/profile.js.map +1 -1
  15. package/dist/server.d.ts.map +1 -1
  16. package/dist/server.js +111 -5
  17. package/dist/server.js.map +1 -1
  18. package/dist/shared/constants.d.ts +12 -0
  19. package/dist/shared/constants.d.ts.map +1 -1
  20. package/dist/shared/constants.js +13 -1
  21. package/dist/shared/constants.js.map +1 -1
  22. package/dist/shared/types.d.ts +19 -1
  23. package/dist/shared/types.d.ts.map +1 -1
  24. package/dist/shared/types.js +7 -0
  25. package/dist/shared/types.js.map +1 -1
  26. package/dist/signaling-client.d.ts +18 -3
  27. package/dist/signaling-client.d.ts.map +1 -1
  28. package/dist/signaling-client.js +83 -7
  29. package/dist/signaling-client.js.map +1 -1
  30. package/dist/tools/ask.d.ts.map +1 -1
  31. package/dist/tools/ask.js +2 -1
  32. package/dist/tools/ask.js.map +1 -1
  33. package/dist/tools/connect.d.ts +19 -2
  34. package/dist/tools/connect.d.ts.map +1 -1
  35. package/dist/tools/connect.js +187 -43
  36. package/dist/tools/connect.js.map +1 -1
  37. package/dist/tools/discover.d.ts +12 -0
  38. package/dist/tools/discover.d.ts.map +1 -0
  39. package/dist/tools/discover.js +67 -0
  40. package/dist/tools/discover.js.map +1 -0
  41. package/dist/tools/id.d.ts +12 -0
  42. package/dist/tools/id.d.ts.map +1 -0
  43. package/dist/tools/id.js +24 -0
  44. package/dist/tools/id.js.map +1 -0
  45. package/dist/tools/invite.d.ts +32 -0
  46. package/dist/tools/invite.d.ts.map +1 -0
  47. package/dist/tools/invite.js +144 -0
  48. package/dist/tools/invite.js.map +1 -0
  49. package/dist/tools/reconnect.d.ts.map +1 -1
  50. package/dist/tools/reconnect.js +6 -2
  51. package/dist/tools/reconnect.js.map +1 -1
  52. package/dist/tools/share.d.ts +37 -0
  53. package/dist/tools/share.d.ts.map +1 -0
  54. package/dist/tools/share.js +153 -0
  55. package/dist/tools/share.js.map +1 -0
  56. package/dist/tools/tell.d.ts.map +1 -1
  57. package/dist/tools/tell.js +2 -1
  58. package/dist/tools/tell.js.map +1 -1
  59. package/package.json +2 -1
package/README.md CHANGED
@@ -3,191 +3,57 @@
3
3
  > Every AI coding assistant is an island. NokAI makes them a team.
4
4
 
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![npm](https://img.shields.io/npm/v/@nokai/mcp-server)](https://www.npmjs.com/package/@nokai/mcp-server)
6
7
 
7
- NokAI is an MCP server that enables **peer-to-peer communication between AI coding assistants**. Connect your Claude Code with your teammate's Cursor, exchange questions about each other's codebases, and even send action requests — all through encrypted WebRTC data channels.
8
+ NokAI is an MCP server that lets AI coding assistants talk to each other. Connect your Claude Code with your teammate's Cursor, ask questions about their codebase, share files, and send action requests — without leaving your editor.
8
9
 
9
- **No code or conversation data ever touches the server.** The signaling server only brokers the initial handshake.
10
-
11
- ## Quick Start
10
+ ## Install
12
11
 
13
12
  ```bash
14
- # Install globally
15
- npm install -g nokai
16
-
17
- # Add to Claude Code MCP settings
18
- # See docs/setup/ for your specific tool
19
- ```
20
-
21
- ### Connect with a Teammate
22
-
23
- ```
24
- You: "Connect me with my teammate"
25
- NokAI: 🔗 Connection code: 847293 (expires in 5 minutes)
26
-
27
- --- Your teammate ---
28
-
29
- Teammate: "Join NokAI with code 847293"
30
- NokAI: ✓ Connected with Michael!
31
- ```
32
-
33
- ### Ask Questions Across Codebases
34
-
35
- ```
36
- You: "Ask Sara what the message type for /cmd_vel is
37
- and build me the Flutter model for it"
38
-
39
- NokAI: → Asking Sara...
40
- ← Sara: geometry_msgs/msg/Twist at 10Hz
41
- Fields: linear.x (float64), angular.z (float64)
42
-
43
- Building your Flutter model class...
44
- ✓ Created lib/models/twist_model.dart
45
- ```
46
-
47
- ## Supported Platforms
48
-
49
- | Platform | Status | Setup Guide |
50
- |---|---|---|
51
- | Claude Code (CLI & VS Code) | ✅ Full support | [docs/setup/claude-code.md](docs/setup/claude-code.md) |
52
- | Cursor | ✅ Full support | [docs/setup/cursor.md](docs/setup/cursor.md) |
53
- | Windsurf (Codeium) | ✅ Full support | [docs/setup/windsurf.md](docs/setup/windsurf.md) |
54
- | Any MCP tool | ✅ Full support | [docs/setup/generic-mcp.md](docs/setup/generic-mcp.md) |
55
-
56
- ## Tools (13)
57
-
58
- ### Connection
59
-
60
- | Tool | Description |
61
- |---|---|
62
- | `nokai_connect` | Generate a 6-digit OTP connection code |
63
- | `nokai_join` | Join using an OTP code |
64
- | `nokai_reconnect` | Reconnect to a saved peer (no new OTP) |
65
- | `nokai_disconnect` | Disconnect from a peer |
66
- | `nokai_connections` | List all active and saved connections |
67
-
68
- ### Communication
69
-
70
- | Tool | Description |
71
- |---|---|
72
- | `nokai_ask` | Ask a question to a peer's AI agent |
73
- | `nokai_respond` | Reply to an incoming question |
74
- | `nokai_tell` | Send an action request (requires read-write permission) |
75
-
76
- ### Management
77
-
78
- | Tool | Description |
79
- |---|---|
80
- | `nokai_permissions` | View/change permission levels (read-only, read-write, ask-only) |
81
- | `nokai_approve` | Toggle manual approval mode for incoming queries |
82
- | `nokai_history` | Browse past message exchanges |
83
- | `nokai_audit` | View audit log of all events |
84
- | `nokai_profile` | Manage agent profile and capability cards |
85
-
86
- ## Architecture
87
-
13
+ npm install -g @nokai/cli
88
14
  ```
89
- Your Machine Teammate's Machine
90
- ┌────────────────┐ ┌────────────────┐
91
- │ AI Assistant │ │ AI Assistant │
92
- │ (Claude/Cursor) │ │ (Claude/Cursor) │
93
- │ ↕ MCP │ │ ↕ MCP │
94
- │ NokAI Server │◄══════════════════►│ NokAI Server │
95
- │ (local) │ Encrypted P2P │ (local) │
96
- └────────────────┘ (WebRTC) └────────────────┘
97
- │ │
98
- └──────── Signaling Server ───────────┘
99
- (handshake only)
100
- ```
101
-
102
- - **P2P by default** — messages flow directly between machines
103
- - **TURN fallback** — relay for firewalled networks (env vars)
104
- - **Offline queue** — messages queued locally, delivered on reconnect
105
- - **End-to-end encrypted** — WebRTC DTLS + Ed25519 signatures
106
-
107
- ## Security
108
15
 
109
- | Feature | Implementation |
110
- |---|---|
111
- | Agent identity | Ed25519 keypair per agent |
112
- | Connection auth | 6-digit OTP, 5-min expiry, single-use |
113
- | Transport | WebRTC DTLS encryption |
114
- | Server access | Signaling server never sees message content |
115
- | Local storage | Private keys at `~/.nokai/profile.json` (chmod 600) |
116
- | Reconnection | Peer confirmation required, public key verification |
16
+ ## Setup
117
17
 
118
- ## Self-Hosting the Signaling Server
18
+ Add NokAI to your MCP config:
119
19
 
120
- The signaling server runs on Cloudflare Workers (free tier):
121
-
122
- ```bash
123
- cd packages/signaling-server
124
- npx wrangler d1 create nokai-signaling # Create D1 database
125
- # Update wrangler.toml with the database ID
126
- npx wrangler deploy # Deploy to Cloudflare
20
+ ```json
21
+ {
22
+ "mcpServers": {
23
+ "nokai": {
24
+ "command": "nokai",
25
+ "args": ["--mcp"],
26
+ "env": {
27
+ "NOKAI_AGENT_NAME": "YourName"
28
+ }
29
+ }
30
+ }
31
+ }
127
32
  ```
128
33
 
129
- Set your deployed URL as `NOKAI_SIGNALING_URL` in your MCP config.
34
+ That's it. Your AI tool will pick up 17 new tools on next launch.
130
35
 
131
- ## Environment Variables
36
+ ## What You Can Do
132
37
 
133
- | Variable | Required | Default | Description |
134
- |---|---|---|---|
135
- | `NOKAI_AGENT_NAME` | No | "Agent" | Your agent's display name |
136
- | `NOKAI_SIGNALING_URL` | No || Signaling server WebSocket URL |
137
- | `NOKAI_TURN_SERVER` | No | | TURN relay server URL |
138
- | `NOKAI_TURN_USERNAME` | No | | TURN server username |
139
- | `NOKAI_TURN_PASSWORD` | No | | TURN server password |
38
+ - **Ask across codebases** query a teammate's agent about their code and get answers back in your context
39
+ - **Send action requests** — ask a peer's agent to make changes, run commands, or look something up
40
+ - **Share files** send files and project context directly to another agent
41
+ - **Connect your own projects**link your mobile and web sessions, frontend and backend, without a teammate involved
42
+ - **Discover peers** see which saved connections are online and reconnect instantly
43
+ - **Manage permissions** control what peers can ask or do, per connection
44
+ - **Audit everything** full log of all events and exchanges
140
45
 
141
- ## Development
46
+ ## Works With
142
47
 
143
- ```bash
144
- # Clone and install
145
- git clone https://github.com/heiisenberrg/nokAI.git
146
- cd nokAI
147
- npm install
48
+ - Claude Code (CLI & VS Code)
49
+ - Cursor
50
+ - Windsurf (Codeium)
51
+ - Any MCP-compatible tool
148
52
 
149
- # Build all packages
150
- npm run build
53
+ ## Full Docs
151
54
 
152
- # Run tests (125 tests)
153
- npm test
154
-
155
- # Dev mode (MCP server)
156
- cd packages/mcp-server && npm run dev
157
- ```
158
-
159
- ## Project Structure
160
-
161
- ```
162
- nokai/
163
- ├── packages/
164
- │ ├── shared/ # Shared types, constants, type guards
165
- │ ├── mcp-server/ # MCP server + P2P engine (13 tools)
166
- │ │ ├── src/tools/ # Tool handlers
167
- │ │ └── tests/ # 100+ tests
168
- │ └── signaling-server/ # Cloudflare Workers signaling server
169
- └── docs/setup/ # Platform-specific setup guides
170
- ```
171
-
172
- ## Roadmap
173
-
174
- - [x] v0.1.0 — Core: connect, ask, respond via P2P
175
- - [x] v0.2.0 — Reconnection, history, TURN, offline queue, approval mode
176
- - [x] v0.3.0 — Actions (tell), permission levels
177
- - [x] v0.4.0 — Audit logs, agent profiles
178
- - [x] v1.0.0 — Multi-platform, npm packaging
179
- - [ ] v1.1.0 — Web dashboard for connection management
180
- - [ ] v1.2.0 — Agent capability discovery within organizations
181
- - [ ] v2.0.0 — Cross-organization connections
55
+ https://nokai.pages.dev
182
56
 
183
57
  ## License
184
58
 
185
- MIT — see [LICENSE](LICENSE)
186
-
187
- ## Contributing
188
-
189
- Contributions welcome! Please open an issue first to discuss.
190
-
191
- ---
192
-
193
- Built with frustration at copy-pasting between Slack and Claude.
59
+ MIT
@@ -1,13 +1,19 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import type { AgentProfile, PeerMessage, ConnectionRecord } from "./shared/index.js";
3
3
  import { type NokaiDB } from "./db.js";
4
+ import type { SharedFile, ProjectContext } from "./shared/index.js";
4
5
  export declare class ConnectionManager extends EventEmitter {
5
6
  private db;
6
7
  private profile;
7
8
  private activePeers;
8
9
  private incomingHandler;
9
10
  private heldQueries;
10
- constructor(db: NokaiDB, profile: AgentProfile);
11
+ private signalingUrl;
12
+ private pendingBytes;
13
+ private transferReportTimer;
14
+ constructor(db: NokaiDB, profile: AgentProfile, signalingUrl?: string);
15
+ private trackBytes;
16
+ private flushTransferStats;
11
17
  registerPeer(connectionId: string, peerName: string, peerPublicKey: string): void;
12
18
  setPeerSend(connectionId: string, sendFn: (msg: string) => void): void;
13
19
  private findPeerByName;
@@ -15,6 +21,8 @@ export declare class ConnectionManager extends EventEmitter {
15
21
  sendResponse(peerName: string, replyTo: string, content: string, sourceFiles?: string[]): PeerMessage;
16
22
  sendAction(peerName: string, content: string, context?: string): PeerMessage;
17
23
  sendActionResult(peerName: string, replyTo: string, content: string, success: boolean, sourceFiles?: string[]): PeerMessage;
24
+ sendShareFiles(peerName: string, files: SharedFile[]): PeerMessage;
25
+ sendShareContext(peerName: string, context: ProjectContext): PeerMessage;
18
26
  handleIncomingMessage(connectionId: string, rawData: string): void;
19
27
  onIncomingMessage(handler: (msg: PeerMessage, peerName: string) => void): void;
20
28
  getActiveConnections(): Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../src/connection-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAkBvC,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,eAAe,CAA+D;IACtF,OAAO,CAAC,WAAW,CAAuG;gBAE9G,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY;IAM9C,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAqBjF,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAOtE,OAAO,CAAC,cAAc;IAOtB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IA4B3E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW;IA2BrG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAkC5E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW;IAwB3H,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAwBlE,iBAAiB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9E,oBAAoB,IAAI,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAOzE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAazC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAO7D,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAyB/E,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAKnE,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAelD,mBAAmB,IAAI,gBAAgB,EAAE;IAIzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAK9D,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAM5F,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7G,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAS7D,aAAa,IAAI,IAAI;CAGtB"}
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../src/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -3,16 +3,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConnectionManager = void 0;
4
4
  const node_events_1 = require("node:events");
5
5
  const message_protocol_js_1 = require("./message-protocol.js");
6
+ async function reportStats(signalingUrl, endpoint, body) {
7
+ try {
8
+ const httpUrl = signalingUrl.replace("wss://", "https://").replace("ws://", "http://");
9
+ await fetch(`${httpUrl}/stats/${endpoint}`, {
10
+ method: "POST",
11
+ headers: { "Content-Type": "application/json" },
12
+ body: JSON.stringify(body),
13
+ });
14
+ }
15
+ catch {
16
+ // Stats reporting is best-effort, don't break on failure
17
+ }
18
+ }
6
19
  class ConnectionManager extends node_events_1.EventEmitter {
7
20
  db;
8
21
  profile;
9
22
  activePeers = new Map(); // connectionId -> peer
10
23
  incomingHandler = null;
11
24
  heldQueries = new Map();
12
- constructor(db, profile) {
25
+ signalingUrl;
26
+ pendingBytes = 0;
27
+ transferReportTimer = null;
28
+ constructor(db, profile, signalingUrl) {
13
29
  super();
14
30
  this.db = db;
15
31
  this.profile = profile;
32
+ this.signalingUrl = signalingUrl || "";
33
+ // Periodically flush transfer stats (every 60 seconds)
34
+ if (this.signalingUrl) {
35
+ this.transferReportTimer = setInterval(() => this.flushTransferStats(), 60000);
36
+ }
37
+ }
38
+ trackBytes(size) {
39
+ this.pendingBytes += size;
40
+ }
41
+ async flushTransferStats() {
42
+ if (this.pendingBytes > 0 && this.signalingUrl) {
43
+ const bytes = this.pendingBytes;
44
+ this.pendingBytes = 0;
45
+ await reportStats(this.signalingUrl, "transfer", { bytes });
46
+ }
16
47
  }
17
48
  registerPeer(connectionId, peerName, peerPublicKey) {
18
49
  this.activePeers.set(connectionId, {
@@ -32,6 +63,10 @@ class ConnectionManager extends node_events_1.EventEmitter {
32
63
  status: "active",
33
64
  });
34
65
  this.db.logEvent("connection_established", peerName, connectionId, null);
66
+ // Report session to stats
67
+ if (this.signalingUrl) {
68
+ reportStats(this.signalingUrl, "session", {});
69
+ }
35
70
  }
36
71
  setPeerSend(connectionId, sendFn) {
37
72
  const peer = this.activePeers.get(connectionId);
@@ -57,6 +92,7 @@ class ConnectionManager extends node_events_1.EventEmitter {
57
92
  const msg = (0, message_protocol_js_1.createQueryMessage)(this.profile.name, content, context);
58
93
  const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
59
94
  peer.send(serialized);
95
+ this.trackBytes(serialized.length);
60
96
  this.db.logEvent("query_sent", peerName, peer.connectionId, content.slice(0, 100));
61
97
  this.db.saveMessage({
62
98
  id: msg.id,
@@ -81,6 +117,7 @@ class ConnectionManager extends node_events_1.EventEmitter {
81
117
  const msg = (0, message_protocol_js_1.createResponseMessage)(this.profile.name, replyTo, content, sourceFiles);
82
118
  const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
83
119
  peer.send(serialized);
120
+ this.trackBytes(serialized.length);
84
121
  this.db.saveMessage({
85
122
  id: msg.id,
86
123
  connectionId: peer.connectionId,
@@ -109,6 +146,7 @@ class ConnectionManager extends node_events_1.EventEmitter {
109
146
  const msg = (0, message_protocol_js_1.createActionMessage)(this.profile.name, content, context);
110
147
  const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
111
148
  peer.send(serialized);
149
+ this.trackBytes(serialized.length);
112
150
  this.db.logEvent("action_sent", peerName, peer.connectionId, content.slice(0, 100));
113
151
  this.db.saveMessage({
114
152
  id: msg.id,
@@ -130,6 +168,7 @@ class ConnectionManager extends node_events_1.EventEmitter {
130
168
  const msg = (0, message_protocol_js_1.createActionResultMessage)(this.profile.name, replyTo, content, success, sourceFiles);
131
169
  const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
132
170
  peer.send(serialized);
171
+ this.trackBytes(serialized.length);
133
172
  this.db.saveMessage({
134
173
  id: msg.id,
135
174
  connectionId: peer.connectionId,
@@ -142,7 +181,52 @@ class ConnectionManager extends node_events_1.EventEmitter {
142
181
  });
143
182
  return msg;
144
183
  }
184
+ sendShareFiles(peerName, files) {
185
+ const peer = this.findPeerByName(peerName);
186
+ if (!peer || !peer.send) {
187
+ throw new Error(`No active connection with peer: ${peerName}`);
188
+ }
189
+ const msg = (0, message_protocol_js_1.createShareFileMessage)(this.profile.name, files);
190
+ const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
191
+ peer.send(serialized);
192
+ this.trackBytes(serialized.length);
193
+ this.db.logEvent("share_files_sent", peerName, peer.connectionId, `${files.length} file(s)`);
194
+ this.db.saveMessage({
195
+ id: msg.id,
196
+ connectionId: peer.connectionId,
197
+ direction: "sent",
198
+ type: msg.type,
199
+ content: msg.content,
200
+ sourceFiles: JSON.stringify(files.map((f) => f.path)),
201
+ replyTo: null,
202
+ timestamp: msg.timestamp,
203
+ });
204
+ return msg;
205
+ }
206
+ sendShareContext(peerName, context) {
207
+ const peer = this.findPeerByName(peerName);
208
+ if (!peer || !peer.send) {
209
+ throw new Error(`No active connection with peer: ${peerName}`);
210
+ }
211
+ const msg = (0, message_protocol_js_1.createShareContextMessage)(this.profile.name, context);
212
+ const serialized = (0, message_protocol_js_1.serializeMessage)(msg);
213
+ peer.send(serialized);
214
+ this.trackBytes(serialized.length);
215
+ this.db.logEvent("share_context_sent", peerName, peer.connectionId, "project context");
216
+ this.db.saveMessage({
217
+ id: msg.id,
218
+ connectionId: peer.connectionId,
219
+ direction: "sent",
220
+ type: msg.type,
221
+ content: msg.content,
222
+ sourceFiles: null,
223
+ replyTo: null,
224
+ timestamp: msg.timestamp,
225
+ });
226
+ return msg;
227
+ }
145
228
  handleIncomingMessage(connectionId, rawData) {
229
+ this.trackBytes(rawData.length);
146
230
  const msg = (0, message_protocol_js_1.parseMessage)(rawData);
147
231
  if (!msg)
148
232
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../src/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../src/connection-manager.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
File without changes
@@ -1,9 +1,11 @@
1
- import { type QueryMessage, type ResponseMessage, type StatusMessage, type ActionMessage, type ActionResultMessage, type PeerMessage } from "./shared/index.js";
1
+ import { type QueryMessage, type ResponseMessage, type StatusMessage, type ActionMessage, type ActionResultMessage, type ShareMessage, type SharedFile, type ProjectContext, type PeerMessage } from "./shared/index.js";
2
2
  export declare function createQueryMessage(from: string, content: string, context?: string): QueryMessage;
3
3
  export declare function createResponseMessage(from: string, replyTo: string, content: string, sourceFiles?: string[]): ResponseMessage;
4
4
  export declare function createStatusMessage(from: string, content: string): StatusMessage;
5
5
  export declare function createActionMessage(from: string, content: string, context?: string): ActionMessage;
6
6
  export declare function createActionResultMessage(from: string, replyTo: string, content: string, success: boolean, sourceFiles?: string[]): ActionResultMessage;
7
+ export declare function createShareFileMessage(from: string, files: SharedFile[]): ShareMessage;
8
+ export declare function createShareContextMessage(from: string, context: ProjectContext): ShareMessage;
7
9
  export declare function serializeMessage(msg: PeerMessage): string;
8
10
  export declare function parseMessage(data: string): PeerMessage | null;
9
11
  //# sourceMappingURL=message-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-protocol.d.ts","sourceRoot":"","sources":["../src/message-protocol.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAMjB,MAAM,mBAAmB,CAAC;AAU3B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAShG;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,eAAe,CAUjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAQhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CASlG;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,mBAAmB,CAWrB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU7D"}
1
+ {"version":3,"file":"message-protocol.d.ts","sourceRoot":"","sources":["../src/message-protocol.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAOjB,MAAM,mBAAmB,CAAC;AAU3B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAShG;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,eAAe,CAUjB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAQhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CASlG;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,mBAAmB,CAWrB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,EAAE,GAClB,YAAY,CAUd;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACtB,YAAY,CAUd;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU7D"}
@@ -5,6 +5,8 @@ exports.createResponseMessage = createResponseMessage;
5
5
  exports.createStatusMessage = createStatusMessage;
6
6
  exports.createActionMessage = createActionMessage;
7
7
  exports.createActionResultMessage = createActionResultMessage;
8
+ exports.createShareFileMessage = createShareFileMessage;
9
+ exports.createShareContextMessage = createShareContextMessage;
8
10
  exports.serializeMessage = serializeMessage;
9
11
  exports.parseMessage = parseMessage;
10
12
  const node_crypto_1 = require("node:crypto");
@@ -67,13 +69,35 @@ function createActionResultMessage(from, replyTo, content, success, sourceFiles)
67
69
  timestamp: nowISO(),
68
70
  };
69
71
  }
72
+ function createShareFileMessage(from, files) {
73
+ return {
74
+ id: generateMessageId(),
75
+ from,
76
+ type: "share",
77
+ shareType: "file",
78
+ content: `Shared ${files.length} file(s): ${files.map((f) => f.path).join(", ")}`,
79
+ files,
80
+ timestamp: nowISO(),
81
+ };
82
+ }
83
+ function createShareContextMessage(from, context) {
84
+ return {
85
+ id: generateMessageId(),
86
+ from,
87
+ type: "share",
88
+ shareType: "context",
89
+ content: "Shared project context",
90
+ context,
91
+ timestamp: nowISO(),
92
+ };
93
+ }
70
94
  function serializeMessage(msg) {
71
95
  return JSON.stringify(msg);
72
96
  }
73
97
  function parseMessage(data) {
74
98
  try {
75
99
  const parsed = JSON.parse(data);
76
- if ((0, index_js_1.isQueryMessage)(parsed) || (0, index_js_1.isResponseMessage)(parsed) || (0, index_js_1.isStatusMessage)(parsed) || (0, index_js_1.isActionMessage)(parsed) || (0, index_js_1.isActionResultMessage)(parsed)) {
100
+ if ((0, index_js_1.isQueryMessage)(parsed) || (0, index_js_1.isResponseMessage)(parsed) || (0, index_js_1.isStatusMessage)(parsed) || (0, index_js_1.isActionMessage)(parsed) || (0, index_js_1.isActionResultMessage)(parsed) || (0, index_js_1.isShareMessage)(parsed)) {
77
101
  return parsed;
78
102
  }
79
103
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"message-protocol.js","sourceRoot":"","sources":["../src/message-protocol.ts"],"names":[],"mappings":";;AAuBA,gDASC;AAED,sDAeC;AAED,kDAQC;AAED,kDASC;AAED,8DAiBC;AAED,4CAEC;AAED,oCAUC;AAzGD,6CAAyC;AACzC,gDAY2B;AAE3B,SAAS,iBAAiB;IACxB,OAAO,OAAO,IAAA,wBAAU,GAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,MAAM;IACb,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAgB;IAChF,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,OAAO;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CACnC,IAAY,EACZ,OAAe,EACf,OAAe,EACf,WAAsB;IAEtB,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,OAAO;QACP,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,OAAe;IAC/D,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAgB;IACjF,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;QACzC,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,yBAAyB,CACvC,IAAY,EACZ,OAAe,EACf,OAAe,EACf,OAAgB,EAChB,WAAsB;IAEtB,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,eAAe;QACrB,OAAO;QACP,OAAO;QACP,OAAO;QACP,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;QACjD,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAgB;IAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC,IAAI,IAAA,4BAAiB,EAAC,MAAM,CAAC,IAAI,IAAA,0BAAe,EAAC,MAAM,CAAC,IAAI,IAAA,0BAAe,EAAC,MAAM,CAAC,IAAI,IAAA,gCAAqB,EAAC,MAAM,CAAC,EAAE,CAAC;YAC/I,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"message-protocol.js","sourceRoot":"","sources":["../src/message-protocol.ts"],"names":[],"mappings":"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"}
package/dist/profile.d.ts CHANGED
@@ -3,6 +3,15 @@ export interface AgentCapability {
3
3
  name: string;
4
4
  description: string;
5
5
  }
6
+ /**
7
+ * Generate a human-readable NokAI ID from a deviceId.
8
+ * Format: NKI-XXXX-XXXX (8 alphanumeric chars derived from UUID)
9
+ */
10
+ export declare function generateNokaiId(deviceId: string): string;
11
+ /**
12
+ * Extract the deviceId prefix from a NokAI ID for matching.
13
+ */
14
+ export declare function parseNokaiId(nokaiId: string): string | null;
6
15
  export declare function getProfileDir(): string;
7
16
  export declare function loadProfile(dir?: string): AgentProfile | null;
8
17
  export declare function createProfile(name: string, dir?: string): AgentProfile;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAU7D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAoBtE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7F;AAED,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAQvE"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI3D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAkB7D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAsBtE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAY7F;AAED,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAQvE"}
package/dist/profile.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateNokaiId = generateNokaiId;
4
+ exports.parseNokaiId = parseNokaiId;
3
5
  exports.getProfileDir = getProfileDir;
4
6
  exports.loadProfile = loadProfile;
5
7
  exports.createProfile = createProfile;
@@ -10,6 +12,25 @@ const node_path_1 = require("node:path");
10
12
  const node_crypto_1 = require("node:crypto");
11
13
  const crypto_js_1 = require("./crypto.js");
12
14
  const PROFILE_FILENAME = "profile.json";
15
+ /**
16
+ * Generate a human-readable NokAI ID from a deviceId.
17
+ * Format: NKI-XXXX-XXXX (8 alphanumeric chars derived from UUID)
18
+ */
19
+ function generateNokaiId(deviceId) {
20
+ const clean = deviceId.replace(/-/g, "").toUpperCase();
21
+ const part1 = clean.slice(0, 4);
22
+ const part2 = clean.slice(4, 8);
23
+ return `NKI-${part1}-${part2}`;
24
+ }
25
+ /**
26
+ * Extract the deviceId prefix from a NokAI ID for matching.
27
+ */
28
+ function parseNokaiId(nokaiId) {
29
+ const match = nokaiId.match(/^NKI-([A-Z0-9]{4})-([A-Z0-9]{4})$/i);
30
+ if (!match)
31
+ return null;
32
+ return (match[1] + match[2]).toLowerCase();
33
+ }
13
34
  function getProfileDir() {
14
35
  const home = process.env.HOME || process.env.USERPROFILE || "~";
15
36
  return (0, node_path_1.join)(home, ".nokai");
@@ -21,7 +42,13 @@ function loadProfile(dir) {
21
42
  return null;
22
43
  }
23
44
  const data = (0, node_fs_1.readFileSync)(profilePath, "utf-8");
24
- return JSON.parse(data);
45
+ const profile = JSON.parse(data);
46
+ // Migrate older profiles that don't have nokaiId
47
+ if (!profile.nokaiId) {
48
+ profile.nokaiId = generateNokaiId(profile.deviceId);
49
+ (0, node_fs_1.writeFileSync)(profilePath, JSON.stringify(profile, null, 2), "utf-8");
50
+ }
51
+ return profile;
25
52
  }
26
53
  function createProfile(name, dir) {
27
54
  const profileDir = dir ?? getProfileDir();
@@ -30,11 +57,13 @@ function createProfile(name, dir) {
30
57
  (0, node_fs_1.mkdirSync)(profileDir, { recursive: true });
31
58
  }
32
59
  const keypair = (0, crypto_js_1.generateKeypair)();
60
+ const deviceId = (0, node_crypto_1.randomUUID)();
33
61
  const profile = {
34
62
  name,
35
63
  publicKey: keypair.publicKey,
36
64
  privateKey: keypair.privateKey,
37
- deviceId: (0, node_crypto_1.randomUUID)(),
65
+ deviceId,
66
+ nokaiId: generateNokaiId(deviceId),
38
67
  };
39
68
  (0, node_fs_1.writeFileSync)(profilePath, JSON.stringify(profile, null, 2), "utf-8");
40
69
  (0, node_fs_1.chmodSync)(profilePath, 0o600);