@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.
- package/README.md +35 -169
- package/dist/connection-manager.d.ts +9 -1
- package/dist/connection-manager.d.ts.map +1 -1
- package/dist/connection-manager.js +85 -1
- package/dist/connection-manager.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/message-protocol.d.ts +3 -1
- package/dist/message-protocol.d.ts.map +1 -1
- package/dist/message-protocol.js +25 -1
- package/dist/message-protocol.js.map +1 -1
- package/dist/profile.d.ts +9 -0
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +31 -2
- package/dist/profile.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +111 -5
- package/dist/server.js.map +1 -1
- package/dist/shared/constants.d.ts +12 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +13 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +19 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +7 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/signaling-client.d.ts +18 -3
- package/dist/signaling-client.d.ts.map +1 -1
- package/dist/signaling-client.js +83 -7
- package/dist/signaling-client.js.map +1 -1
- package/dist/tools/ask.d.ts.map +1 -1
- package/dist/tools/ask.js +2 -1
- package/dist/tools/ask.js.map +1 -1
- package/dist/tools/connect.d.ts +19 -2
- package/dist/tools/connect.d.ts.map +1 -1
- package/dist/tools/connect.js +187 -43
- package/dist/tools/connect.js.map +1 -1
- package/dist/tools/discover.d.ts +12 -0
- package/dist/tools/discover.d.ts.map +1 -0
- package/dist/tools/discover.js +67 -0
- package/dist/tools/discover.js.map +1 -0
- package/dist/tools/id.d.ts +12 -0
- package/dist/tools/id.d.ts.map +1 -0
- package/dist/tools/id.js +24 -0
- package/dist/tools/id.js.map +1 -0
- package/dist/tools/invite.d.ts +32 -0
- package/dist/tools/invite.d.ts.map +1 -0
- package/dist/tools/invite.js +144 -0
- package/dist/tools/invite.js.map +1 -0
- package/dist/tools/reconnect.d.ts.map +1 -1
- package/dist/tools/reconnect.js +6 -2
- package/dist/tools/reconnect.js.map +1 -1
- package/dist/tools/share.d.ts +37 -0
- package/dist/tools/share.d.ts.map +1 -0
- package/dist/tools/share.js +153 -0
- package/dist/tools/share.js.map +1 -0
- package/dist/tools/tell.d.ts.map +1 -1
- package/dist/tools/tell.js +2 -1
- package/dist/tools/tell.js.map +1 -1
- 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)
|
|
6
|
+
[](https://www.npmjs.com/package/@nokai/mcp-server)
|
|
6
7
|
|
|
7
|
-
NokAI is an MCP server that
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
## Quick Start
|
|
10
|
+
## Install
|
|
12
11
|
|
|
13
12
|
```bash
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18
|
+
Add NokAI to your MCP config:
|
|
119
19
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
34
|
+
That's it. Your AI tool will pick up 17 new tools on next launch.
|
|
130
35
|
|
|
131
|
-
##
|
|
36
|
+
## What You Can Do
|
|
132
37
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
##
|
|
46
|
+
## Works With
|
|
142
47
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
npm install
|
|
48
|
+
- Claude Code (CLI & VS Code)
|
|
49
|
+
- Cursor
|
|
50
|
+
- Windsurf (Codeium)
|
|
51
|
+
- Any MCP-compatible tool
|
|
148
52
|
|
|
149
|
-
|
|
150
|
-
npm run build
|
|
53
|
+
## Full Docs
|
|
151
54
|
|
|
152
|
-
|
|
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
|
|
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
|
-
|
|
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;
|
|
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;AAWvC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAuBpE,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;IAC1H,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,mBAAmB,CAA+C;gBAE9D,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM;IAYrE,OAAO,CAAC,UAAU;YAIJ,kBAAkB;IAQhC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IA0BjF,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;IA6B3E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW;IA4BrG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW;IAmC5E,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;IAyB3H,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,WAAW;IA0BlE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW;IA0BxE,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAyBlE,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"}
|
|
@@ -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
|
-
|
|
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,
|
|
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"}
|
package/dist/message-protocol.js
CHANGED
|
@@ -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":";;
|
|
1
|
+
{"version":3,"file":"message-protocol.js","sourceRoot":"","sources":["../src/message-protocol.ts"],"names":[],"mappings":";;AA2BA,gDASC;AAED,sDAeC;AAED,kDAQC;AAED,kDASC;AAED,8DAiBC;AAED,wDAaC;AAED,8DAaC;AAED,4CAEC;AAED,oCAUC;AA3ID,6CAAyC;AACzC,gDAgB2B;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,sBAAsB,CACpC,IAAY,EACZ,KAAmB;IAEnB,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,UAAU,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjF,KAAK;QACL,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,SAAgB,yBAAyB,CACvC,IAAY,EACZ,OAAuB;IAEvB,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,wBAAwB;QACjC,OAAO;QACP,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,IAAI,IAAA,yBAAc,EAAC,MAAM,CAAC,EAAE,CAAC;YACzK,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
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;
|
package/dist/profile.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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
|
|
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);
|