@nokai/cli 1.0.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/LICENSE +21 -0
- package/README.md +193 -0
- package/dist/connection-manager.d.ts +45 -0
- package/dist/connection-manager.d.ts.map +1 -0
- package/dist/connection-manager.js +262 -0
- package/dist/connection-manager.js.map +1 -0
- package/dist/crypto.d.ts +8 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +42 -0
- package/dist/crypto.js.map +1 -0
- package/dist/db.d.ts +47 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +195 -0
- package/dist/db.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/message-protocol.d.ts +9 -0
- package/dist/message-protocol.d.ts.map +1 -0
- package/dist/message-protocol.js +85 -0
- package/dist/message-protocol.js.map +1 -0
- package/dist/peer-connection.d.ts +40 -0
- package/dist/peer-connection.d.ts.map +1 -0
- package/dist/peer-connection.js +159 -0
- package/dist/peer-connection.js.map +1 -0
- package/dist/profile.d.ts +11 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +62 -0
- package/dist/profile.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +185 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/constants.d.ts +20 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +23 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +19 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/types.d.ts +128 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +41 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/signaling-client.d.ts +19 -0
- package/dist/signaling-client.d.ts.map +1 -0
- package/dist/signaling-client.js +83 -0
- package/dist/signaling-client.js.map +1 -0
- package/dist/tools/approve.d.ts +30 -0
- package/dist/tools/approve.d.ts.map +1 -0
- package/dist/tools/approve.js +46 -0
- package/dist/tools/approve.js.map +1 -0
- package/dist/tools/ask.d.ts +29 -0
- package/dist/tools/ask.d.ts.map +1 -0
- package/dist/tools/ask.js +43 -0
- package/dist/tools/ask.js.map +1 -0
- package/dist/tools/audit.d.ts +24 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +39 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/connect.d.ts +15 -0
- package/dist/tools/connect.d.ts.map +1 -0
- package/dist/tools/connect.js +62 -0
- package/dist/tools/connect.js.map +1 -0
- package/dist/tools/connections.d.ts +13 -0
- package/dist/tools/connections.d.ts.map +1 -0
- package/dist/tools/connections.js +34 -0
- package/dist/tools/connections.js.map +1 -0
- package/dist/tools/disconnect.d.ts +19 -0
- package/dist/tools/disconnect.d.ts.map +1 -0
- package/dist/tools/disconnect.js +23 -0
- package/dist/tools/disconnect.js.map +1 -0
- package/dist/tools/history.d.ts +24 -0
- package/dist/tools/history.d.ts.map +1 -0
- package/dist/tools/history.js +47 -0
- package/dist/tools/history.js.map +1 -0
- package/dist/tools/join.d.ts +22 -0
- package/dist/tools/join.d.ts.map +1 -0
- package/dist/tools/join.js +60 -0
- package/dist/tools/join.js.map +1 -0
- package/dist/tools/permissions.d.ts +24 -0
- package/dist/tools/permissions.d.ts.map +1 -0
- package/dist/tools/permissions.js +32 -0
- package/dist/tools/permissions.js.map +1 -0
- package/dist/tools/profile-tool.d.ts +29 -0
- package/dist/tools/profile-tool.d.ts.map +1 -0
- package/dist/tools/profile-tool.js +72 -0
- package/dist/tools/profile-tool.js.map +1 -0
- package/dist/tools/reconnect.d.ts +22 -0
- package/dist/tools/reconnect.d.ts.map +1 -0
- package/dist/tools/reconnect.js +88 -0
- package/dist/tools/reconnect.js.map +1 -0
- package/dist/tools/respond.d.ts +37 -0
- package/dist/tools/respond.d.ts.map +1 -0
- package/dist/tools/respond.js +31 -0
- package/dist/tools/respond.js.map +1 -0
- package/dist/tools/tell.d.ts +29 -0
- package/dist/tools/tell.d.ts.map +1 -0
- package/dist/tools/tell.js +45 -0
- package/dist/tools/tell.js.map +1 -0
- package/package.json +54 -0
package/dist/db.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createDatabase = createDatabase;
|
|
7
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
8
|
+
function createDatabase(dbPath) {
|
|
9
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
10
|
+
db.pragma("journal_mode = WAL");
|
|
11
|
+
db.pragma("foreign_keys = ON");
|
|
12
|
+
db.exec(`
|
|
13
|
+
CREATE TABLE IF NOT EXISTS connections (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
peer_name TEXT NOT NULL,
|
|
16
|
+
peer_public_key TEXT NOT NULL,
|
|
17
|
+
permission TEXT NOT NULL DEFAULT 'read-only',
|
|
18
|
+
created_at TEXT NOT NULL,
|
|
19
|
+
last_connected TEXT,
|
|
20
|
+
status TEXT NOT NULL DEFAULT 'active'
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
24
|
+
id TEXT PRIMARY KEY,
|
|
25
|
+
connection_id TEXT NOT NULL REFERENCES connections(id) ON DELETE CASCADE,
|
|
26
|
+
direction TEXT NOT NULL,
|
|
27
|
+
type TEXT NOT NULL,
|
|
28
|
+
content TEXT NOT NULL,
|
|
29
|
+
source_files TEXT,
|
|
30
|
+
reply_to TEXT,
|
|
31
|
+
timestamp TEXT NOT NULL
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_messages_connection ON messages(connection_id);
|
|
35
|
+
|
|
36
|
+
CREATE TABLE IF NOT EXISTS pending_messages (
|
|
37
|
+
id TEXT PRIMARY KEY,
|
|
38
|
+
connection_id TEXT NOT NULL,
|
|
39
|
+
content TEXT NOT NULL,
|
|
40
|
+
created_at TEXT NOT NULL
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
CREATE INDEX IF NOT EXISTS idx_pending_connection ON pending_messages(connection_id);
|
|
44
|
+
|
|
45
|
+
CREATE TABLE IF NOT EXISTS audit_log (
|
|
46
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
47
|
+
event_type TEXT NOT NULL,
|
|
48
|
+
peer_name TEXT,
|
|
49
|
+
connection_id TEXT,
|
|
50
|
+
details TEXT,
|
|
51
|
+
timestamp TEXT NOT NULL
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_audit_timestamp ON audit_log(timestamp);
|
|
55
|
+
`);
|
|
56
|
+
// Migration: add approval_mode column if it doesn't exist
|
|
57
|
+
try {
|
|
58
|
+
db.exec(`ALTER TABLE connections ADD COLUMN approval_mode TEXT NOT NULL DEFAULT 'auto'`);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Column already exists — ignore
|
|
62
|
+
}
|
|
63
|
+
const insertConnection = db.prepare(`
|
|
64
|
+
INSERT OR REPLACE INTO connections (id, peer_name, peer_public_key, permission, created_at, last_connected, status)
|
|
65
|
+
VALUES (@id, @peerName, @peerPublicKey, @permission, @createdAt, @lastConnected, @status)
|
|
66
|
+
`);
|
|
67
|
+
const selectConnection = db.prepare(`SELECT * FROM connections WHERE id = ?`);
|
|
68
|
+
const selectConnectionByName = db.prepare(`SELECT * FROM connections WHERE peer_name = ? AND status = 'active'`);
|
|
69
|
+
const selectAllConnections = db.prepare(`SELECT * FROM connections ORDER BY created_at DESC`);
|
|
70
|
+
const updateLastConn = db.prepare(`UPDATE connections SET last_connected = ? WHERE id = ?`);
|
|
71
|
+
const deleteConn = db.prepare(`DELETE FROM connections WHERE id = ?`);
|
|
72
|
+
const updateStatus = db.prepare(`UPDATE connections SET status = ? WHERE id = ?`);
|
|
73
|
+
const selectByPubKey = db.prepare(`SELECT * FROM connections WHERE peer_public_key = ? ORDER BY created_at DESC LIMIT 1`);
|
|
74
|
+
const selectDormant = db.prepare(`SELECT * FROM connections WHERE status = 'dormant' ORDER BY last_connected DESC`);
|
|
75
|
+
const insertMessage = db.prepare(`
|
|
76
|
+
INSERT INTO messages (id, connection_id, direction, type, content, source_files, reply_to, timestamp)
|
|
77
|
+
VALUES (@id, @connectionId, @direction, @type, @content, @sourceFiles, @replyTo, @timestamp)
|
|
78
|
+
`);
|
|
79
|
+
const selectMessages = db.prepare(`SELECT * FROM messages WHERE connection_id = ? ORDER BY timestamp ASC LIMIT ?`);
|
|
80
|
+
const insertPending = db.prepare(`INSERT INTO pending_messages (id, connection_id, content, created_at) VALUES (?, ?, ?, ?)`);
|
|
81
|
+
const selectPending = db.prepare(`SELECT * FROM pending_messages WHERE connection_id = ? ORDER BY created_at ASC`);
|
|
82
|
+
const deletePending = db.prepare(`DELETE FROM pending_messages WHERE connection_id = ?`);
|
|
83
|
+
const selectApprovalMode = db.prepare(`SELECT approval_mode FROM connections WHERE id = ?`);
|
|
84
|
+
const updateApprovalMode = db.prepare(`UPDATE connections SET approval_mode = ? WHERE id = ?`);
|
|
85
|
+
const updatePerm = db.prepare(`UPDATE connections SET permission = ? WHERE id = ?`);
|
|
86
|
+
const insertAudit = db.prepare(`INSERT INTO audit_log (event_type, peer_name, connection_id, details, timestamp) VALUES (?, ?, ?, ?, ?)`);
|
|
87
|
+
const selectAudit = db.prepare(`SELECT * FROM audit_log ORDER BY timestamp DESC LIMIT ?`);
|
|
88
|
+
function rowToConnection(row) {
|
|
89
|
+
return {
|
|
90
|
+
id: row.id,
|
|
91
|
+
peerName: row.peer_name,
|
|
92
|
+
peerPublicKey: row.peer_public_key,
|
|
93
|
+
permission: row.permission,
|
|
94
|
+
createdAt: row.created_at,
|
|
95
|
+
lastConnected: row.last_connected || null,
|
|
96
|
+
status: row.status,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function rowToMessage(row) {
|
|
100
|
+
return {
|
|
101
|
+
id: row.id,
|
|
102
|
+
connectionId: row.connection_id,
|
|
103
|
+
direction: row.direction,
|
|
104
|
+
type: row.type,
|
|
105
|
+
content: row.content,
|
|
106
|
+
sourceFiles: row.source_files || null,
|
|
107
|
+
replyTo: row.reply_to || null,
|
|
108
|
+
timestamp: row.timestamp,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
saveConnection(conn) {
|
|
113
|
+
insertConnection.run(conn);
|
|
114
|
+
},
|
|
115
|
+
getConnection(id) {
|
|
116
|
+
const row = selectConnection.get(id);
|
|
117
|
+
return row ? rowToConnection(row) : null;
|
|
118
|
+
},
|
|
119
|
+
getConnectionByPeerName(peerName) {
|
|
120
|
+
const row = selectConnectionByName.get(peerName);
|
|
121
|
+
return row ? rowToConnection(row) : null;
|
|
122
|
+
},
|
|
123
|
+
listConnections() {
|
|
124
|
+
const rows = selectAllConnections.all();
|
|
125
|
+
return rows.map(rowToConnection);
|
|
126
|
+
},
|
|
127
|
+
updateLastConnected(id, timestamp) {
|
|
128
|
+
updateLastConn.run(timestamp, id);
|
|
129
|
+
},
|
|
130
|
+
deleteConnection(id) {
|
|
131
|
+
deleteConn.run(id);
|
|
132
|
+
},
|
|
133
|
+
updateConnectionStatus(id, status) {
|
|
134
|
+
updateStatus.run(status, id);
|
|
135
|
+
},
|
|
136
|
+
getConnectionByPeerPublicKey(publicKey) {
|
|
137
|
+
const row = selectByPubKey.get(publicKey);
|
|
138
|
+
return row ? rowToConnection(row) : null;
|
|
139
|
+
},
|
|
140
|
+
listDormantConnections() {
|
|
141
|
+
const rows = selectDormant.all();
|
|
142
|
+
return rows.map(rowToConnection);
|
|
143
|
+
},
|
|
144
|
+
saveMessage(msg) {
|
|
145
|
+
insertMessage.run(msg);
|
|
146
|
+
},
|
|
147
|
+
getMessages(connectionId, limit = 100) {
|
|
148
|
+
const rows = selectMessages.all(connectionId, limit);
|
|
149
|
+
return rows.map(rowToMessage);
|
|
150
|
+
},
|
|
151
|
+
savePendingMessage(id, connectionId, content) {
|
|
152
|
+
insertPending.run(id, connectionId, content, new Date().toISOString());
|
|
153
|
+
},
|
|
154
|
+
getPendingMessages(connectionId) {
|
|
155
|
+
const rows = selectPending.all(connectionId);
|
|
156
|
+
return rows.map((r) => ({
|
|
157
|
+
id: r.id,
|
|
158
|
+
connectionId: r.connection_id,
|
|
159
|
+
content: r.content,
|
|
160
|
+
createdAt: r.created_at,
|
|
161
|
+
}));
|
|
162
|
+
},
|
|
163
|
+
clearPendingMessages(connectionId) {
|
|
164
|
+
deletePending.run(connectionId);
|
|
165
|
+
},
|
|
166
|
+
getApprovalMode(connectionId) {
|
|
167
|
+
const row = selectApprovalMode.get(connectionId);
|
|
168
|
+
return row?.approval_mode ?? "auto";
|
|
169
|
+
},
|
|
170
|
+
setApprovalMode(connectionId, mode) {
|
|
171
|
+
updateApprovalMode.run(mode, connectionId);
|
|
172
|
+
},
|
|
173
|
+
updatePermission(id, permission) {
|
|
174
|
+
updatePerm.run(permission, id);
|
|
175
|
+
},
|
|
176
|
+
logEvent(eventType, peerName, connectionId, details) {
|
|
177
|
+
insertAudit.run(eventType, peerName, connectionId, details, new Date().toISOString());
|
|
178
|
+
},
|
|
179
|
+
getAuditLog(limit = 50) {
|
|
180
|
+
const rows = selectAudit.all(limit);
|
|
181
|
+
return rows.map((r) => ({
|
|
182
|
+
id: r.id,
|
|
183
|
+
eventType: r.event_type,
|
|
184
|
+
peerName: r.peer_name || null,
|
|
185
|
+
connectionId: r.connection_id || null,
|
|
186
|
+
details: r.details || null,
|
|
187
|
+
timestamp: r.timestamp,
|
|
188
|
+
}));
|
|
189
|
+
},
|
|
190
|
+
close() {
|
|
191
|
+
db.close();
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const server_js_1 = require("./server.js");
|
|
5
|
+
(0, server_js_1.createNokaiServer)().catch((err) => {
|
|
6
|
+
console.error("Fatal error starting NokAI:", err);
|
|
7
|
+
process.exit(1);
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,2CAAgD;AAEhD,IAAA,6BAAiB,GAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type QueryMessage, type ResponseMessage, type StatusMessage, type ActionMessage, type ActionResultMessage, type PeerMessage } from "./shared/index.js";
|
|
2
|
+
export declare function createQueryMessage(from: string, content: string, context?: string): QueryMessage;
|
|
3
|
+
export declare function createResponseMessage(from: string, replyTo: string, content: string, sourceFiles?: string[]): ResponseMessage;
|
|
4
|
+
export declare function createStatusMessage(from: string, content: string): StatusMessage;
|
|
5
|
+
export declare function createActionMessage(from: string, content: string, context?: string): ActionMessage;
|
|
6
|
+
export declare function createActionResultMessage(from: string, replyTo: string, content: string, success: boolean, sourceFiles?: string[]): ActionResultMessage;
|
|
7
|
+
export declare function serializeMessage(msg: PeerMessage): string;
|
|
8
|
+
export declare function parseMessage(data: string): PeerMessage | null;
|
|
9
|
+
//# sourceMappingURL=message-protocol.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createQueryMessage = createQueryMessage;
|
|
4
|
+
exports.createResponseMessage = createResponseMessage;
|
|
5
|
+
exports.createStatusMessage = createStatusMessage;
|
|
6
|
+
exports.createActionMessage = createActionMessage;
|
|
7
|
+
exports.createActionResultMessage = createActionResultMessage;
|
|
8
|
+
exports.serializeMessage = serializeMessage;
|
|
9
|
+
exports.parseMessage = parseMessage;
|
|
10
|
+
const node_crypto_1 = require("node:crypto");
|
|
11
|
+
const index_js_1 = require("./shared/index.js");
|
|
12
|
+
function generateMessageId() {
|
|
13
|
+
return `msg_${(0, node_crypto_1.randomUUID)().replace(/-/g, "").slice(0, 12)}`;
|
|
14
|
+
}
|
|
15
|
+
function nowISO() {
|
|
16
|
+
return new Date().toISOString();
|
|
17
|
+
}
|
|
18
|
+
function createQueryMessage(from, content, context) {
|
|
19
|
+
return {
|
|
20
|
+
id: generateMessageId(),
|
|
21
|
+
from,
|
|
22
|
+
type: "query",
|
|
23
|
+
content,
|
|
24
|
+
...(context !== undefined && { context }),
|
|
25
|
+
timestamp: nowISO(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function createResponseMessage(from, replyTo, content, sourceFiles) {
|
|
29
|
+
return {
|
|
30
|
+
id: generateMessageId(),
|
|
31
|
+
from,
|
|
32
|
+
type: "response",
|
|
33
|
+
replyTo,
|
|
34
|
+
content,
|
|
35
|
+
...(sourceFiles !== undefined && { sourceFiles }),
|
|
36
|
+
timestamp: nowISO(),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function createStatusMessage(from, content) {
|
|
40
|
+
return {
|
|
41
|
+
id: generateMessageId(),
|
|
42
|
+
from,
|
|
43
|
+
type: "status",
|
|
44
|
+
content,
|
|
45
|
+
timestamp: nowISO(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function createActionMessage(from, content, context) {
|
|
49
|
+
return {
|
|
50
|
+
id: generateMessageId(),
|
|
51
|
+
from,
|
|
52
|
+
type: "action",
|
|
53
|
+
content,
|
|
54
|
+
...(context !== undefined && { context }),
|
|
55
|
+
timestamp: nowISO(),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function createActionResultMessage(from, replyTo, content, success, sourceFiles) {
|
|
59
|
+
return {
|
|
60
|
+
id: generateMessageId(),
|
|
61
|
+
from,
|
|
62
|
+
type: "action_result",
|
|
63
|
+
replyTo,
|
|
64
|
+
content,
|
|
65
|
+
success,
|
|
66
|
+
...(sourceFiles !== undefined && { sourceFiles }),
|
|
67
|
+
timestamp: nowISO(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function serializeMessage(msg) {
|
|
71
|
+
return JSON.stringify(msg);
|
|
72
|
+
}
|
|
73
|
+
function parseMessage(data) {
|
|
74
|
+
try {
|
|
75
|
+
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)) {
|
|
77
|
+
return parsed;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=message-protocol.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
interface SessionDescription {
|
|
2
|
+
type: "offer" | "answer";
|
|
3
|
+
sdp: string;
|
|
4
|
+
}
|
|
5
|
+
interface IceCandidate {
|
|
6
|
+
candidate: string;
|
|
7
|
+
mid: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PeerConnectionConfig {
|
|
10
|
+
stunServer?: string;
|
|
11
|
+
turnServer?: string;
|
|
12
|
+
turnUsername?: string;
|
|
13
|
+
turnPassword?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class PeerConnection {
|
|
16
|
+
private pc;
|
|
17
|
+
private dc;
|
|
18
|
+
private incomingDc;
|
|
19
|
+
private messageHandler;
|
|
20
|
+
private iceCandidateHandler;
|
|
21
|
+
private dataChannelOpenResolvers;
|
|
22
|
+
private remoteDescriptionSet;
|
|
23
|
+
private pendingCandidates;
|
|
24
|
+
private localDescriptionResolvers;
|
|
25
|
+
constructor(config?: PeerConnectionConfig);
|
|
26
|
+
private setupDataChannel;
|
|
27
|
+
createOffer(): Promise<SessionDescription>;
|
|
28
|
+
createAnswer(offer: SessionDescription): Promise<SessionDescription>;
|
|
29
|
+
acceptAnswer(answer: SessionDescription): Promise<void>;
|
|
30
|
+
private flushPendingCandidates;
|
|
31
|
+
addIceCandidate(candidate: IceCandidate): void;
|
|
32
|
+
onIceCandidate(handler: (candidate: IceCandidate) => void): void;
|
|
33
|
+
onMessage(handler: (msg: string) => void): void;
|
|
34
|
+
waitForDataChannel(): Promise<void>;
|
|
35
|
+
send(message: string): void;
|
|
36
|
+
getState(): string;
|
|
37
|
+
close(): void;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=peer-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-connection.d.ts","sourceRoot":"","sources":["../src/peer-connection.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAiC;IAC3C,OAAO,CAAC,EAAE,CAA4C;IACtD,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,mBAAmB,CAAoD;IAC/E,OAAO,CAAC,wBAAwB,CAAyB;IACzD,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,yBAAyB,CAAiD;gBAEtE,MAAM,CAAC,EAAE,oBAAoB;IAgCzC,OAAO,CAAC,gBAAgB;IAgBlB,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAc1C,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAYpE,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,OAAO,CAAC,sBAAsB;IAW9B,eAAe,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAY9C,cAAc,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAIhE,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI/C,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ3B,QAAQ,IAAI,MAAM;IAQlB,KAAK,IAAI,IAAI;CAiBd"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PeerConnection = void 0;
|
|
7
|
+
const node_datachannel_1 = __importDefault(require("node-datachannel"));
|
|
8
|
+
class PeerConnection {
|
|
9
|
+
pc;
|
|
10
|
+
dc = null;
|
|
11
|
+
incomingDc = null;
|
|
12
|
+
messageHandler = null;
|
|
13
|
+
iceCandidateHandler = null;
|
|
14
|
+
dataChannelOpenResolvers = [];
|
|
15
|
+
remoteDescriptionSet = false;
|
|
16
|
+
pendingCandidates = [];
|
|
17
|
+
localDescriptionResolvers = [];
|
|
18
|
+
constructor(config) {
|
|
19
|
+
const iceServers = [config?.stunServer || "stun:stun.l.google.com:19302"];
|
|
20
|
+
if (config?.turnServer) {
|
|
21
|
+
iceServers.push(config.turnServer);
|
|
22
|
+
}
|
|
23
|
+
this.pc = new node_datachannel_1.default.PeerConnection("NokAI", {
|
|
24
|
+
iceServers,
|
|
25
|
+
...(config?.turnUsername && { iceTransportPolicy: "all" }),
|
|
26
|
+
});
|
|
27
|
+
this.pc.onLocalDescription((sdp, type) => {
|
|
28
|
+
const desc = { type: type, sdp };
|
|
29
|
+
for (const resolve of this.localDescriptionResolvers) {
|
|
30
|
+
resolve(desc);
|
|
31
|
+
}
|
|
32
|
+
this.localDescriptionResolvers = [];
|
|
33
|
+
});
|
|
34
|
+
this.pc.onLocalCandidate((candidate, mid) => {
|
|
35
|
+
if (this.iceCandidateHandler) {
|
|
36
|
+
this.iceCandidateHandler({ candidate, mid });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
this.pc.onDataChannel((dc) => {
|
|
40
|
+
this.incomingDc = dc;
|
|
41
|
+
this.setupDataChannel(dc);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
setupDataChannel(dc) {
|
|
45
|
+
dc.onMessage((msg) => {
|
|
46
|
+
if (this.messageHandler) {
|
|
47
|
+
const text = typeof msg === "string" ? msg : Buffer.from(msg).toString("utf-8");
|
|
48
|
+
this.messageHandler(text);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
dc.onOpen(() => {
|
|
52
|
+
for (const resolve of this.dataChannelOpenResolvers) {
|
|
53
|
+
resolve();
|
|
54
|
+
}
|
|
55
|
+
this.dataChannelOpenResolvers = [];
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async createOffer() {
|
|
59
|
+
this.dc = this.pc.createDataChannel("nokai");
|
|
60
|
+
this.setupDataChannel(this.dc);
|
|
61
|
+
const descPromise = new Promise((resolve) => {
|
|
62
|
+
this.localDescriptionResolvers.push(resolve);
|
|
63
|
+
});
|
|
64
|
+
// Trigger SDP generation
|
|
65
|
+
this.pc.setLocalDescription();
|
|
66
|
+
return descPromise;
|
|
67
|
+
}
|
|
68
|
+
async createAnswer(offer) {
|
|
69
|
+
const descPromise = new Promise((resolve) => {
|
|
70
|
+
this.localDescriptionResolvers.push(resolve);
|
|
71
|
+
});
|
|
72
|
+
this.pc.setRemoteDescription(offer.sdp, offer.type);
|
|
73
|
+
this.remoteDescriptionSet = true;
|
|
74
|
+
this.flushPendingCandidates();
|
|
75
|
+
return descPromise;
|
|
76
|
+
}
|
|
77
|
+
async acceptAnswer(answer) {
|
|
78
|
+
this.pc.setRemoteDescription(answer.sdp, answer.type);
|
|
79
|
+
this.remoteDescriptionSet = true;
|
|
80
|
+
this.flushPendingCandidates();
|
|
81
|
+
}
|
|
82
|
+
flushPendingCandidates() {
|
|
83
|
+
for (const candidate of this.pendingCandidates) {
|
|
84
|
+
try {
|
|
85
|
+
this.pc.addRemoteCandidate(candidate.candidate, candidate.mid);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// ignore
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.pendingCandidates = [];
|
|
92
|
+
}
|
|
93
|
+
addIceCandidate(candidate) {
|
|
94
|
+
if (!this.remoteDescriptionSet) {
|
|
95
|
+
this.pendingCandidates.push(candidate);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
this.pc.addRemoteCandidate(candidate.candidate, candidate.mid);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// ignore errors adding candidates
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
onIceCandidate(handler) {
|
|
106
|
+
this.iceCandidateHandler = handler;
|
|
107
|
+
}
|
|
108
|
+
onMessage(handler) {
|
|
109
|
+
this.messageHandler = handler;
|
|
110
|
+
}
|
|
111
|
+
waitForDataChannel() {
|
|
112
|
+
const channel = this.dc || this.incomingDc;
|
|
113
|
+
if (channel && channel.isOpen()) {
|
|
114
|
+
return Promise.resolve();
|
|
115
|
+
}
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
|
+
this.dataChannelOpenResolvers.push(resolve);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
send(message) {
|
|
121
|
+
const channel = this.dc || this.incomingDc;
|
|
122
|
+
if (!channel || !channel.isOpen()) {
|
|
123
|
+
throw new Error("Data channel is not open");
|
|
124
|
+
}
|
|
125
|
+
channel.sendMessage(message);
|
|
126
|
+
}
|
|
127
|
+
getState() {
|
|
128
|
+
try {
|
|
129
|
+
return this.pc.state();
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return "new";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
close() {
|
|
136
|
+
try {
|
|
137
|
+
if (this.dc)
|
|
138
|
+
this.dc.close();
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// ignore
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
if (this.incomingDc)
|
|
145
|
+
this.incomingDc.close();
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// ignore
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
this.pc.close();
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// ignore
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.PeerConnection = PeerConnection;
|
|
159
|
+
//# sourceMappingURL=peer-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peer-connection.js","sourceRoot":"","sources":["../src/peer-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentProfile } from "./shared/index.js";
|
|
2
|
+
export interface AgentCapability {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getProfileDir(): string;
|
|
7
|
+
export declare function loadProfile(dir?: string): AgentProfile | null;
|
|
8
|
+
export declare function createProfile(name: string, dir?: string): AgentProfile;
|
|
9
|
+
export declare function updateProfileCapabilities(capabilities: AgentCapability[], dir?: string): void;
|
|
10
|
+
export declare function loadProfileCapabilities(dir?: string): AgentCapability[];
|
|
11
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +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"}
|
package/dist/profile.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProfileDir = getProfileDir;
|
|
4
|
+
exports.loadProfile = loadProfile;
|
|
5
|
+
exports.createProfile = createProfile;
|
|
6
|
+
exports.updateProfileCapabilities = updateProfileCapabilities;
|
|
7
|
+
exports.loadProfileCapabilities = loadProfileCapabilities;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const node_crypto_1 = require("node:crypto");
|
|
11
|
+
const crypto_js_1 = require("./crypto.js");
|
|
12
|
+
const PROFILE_FILENAME = "profile.json";
|
|
13
|
+
function getProfileDir() {
|
|
14
|
+
const home = process.env.HOME || process.env.USERPROFILE || "~";
|
|
15
|
+
return (0, node_path_1.join)(home, ".nokai");
|
|
16
|
+
}
|
|
17
|
+
function loadProfile(dir) {
|
|
18
|
+
const profileDir = dir ?? getProfileDir();
|
|
19
|
+
const profilePath = (0, node_path_1.join)(profileDir, PROFILE_FILENAME);
|
|
20
|
+
if (!(0, node_fs_1.existsSync)(profilePath)) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const data = (0, node_fs_1.readFileSync)(profilePath, "utf-8");
|
|
24
|
+
return JSON.parse(data);
|
|
25
|
+
}
|
|
26
|
+
function createProfile(name, dir) {
|
|
27
|
+
const profileDir = dir ?? getProfileDir();
|
|
28
|
+
const profilePath = (0, node_path_1.join)(profileDir, PROFILE_FILENAME);
|
|
29
|
+
if (!(0, node_fs_1.existsSync)(profileDir)) {
|
|
30
|
+
(0, node_fs_1.mkdirSync)(profileDir, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
const keypair = (0, crypto_js_1.generateKeypair)();
|
|
33
|
+
const profile = {
|
|
34
|
+
name,
|
|
35
|
+
publicKey: keypair.publicKey,
|
|
36
|
+
privateKey: keypair.privateKey,
|
|
37
|
+
deviceId: (0, node_crypto_1.randomUUID)(),
|
|
38
|
+
};
|
|
39
|
+
(0, node_fs_1.writeFileSync)(profilePath, JSON.stringify(profile, null, 2), "utf-8");
|
|
40
|
+
(0, node_fs_1.chmodSync)(profilePath, 0o600);
|
|
41
|
+
return profile;
|
|
42
|
+
}
|
|
43
|
+
function updateProfileCapabilities(capabilities, dir) {
|
|
44
|
+
const profileDir = dir ?? getProfileDir();
|
|
45
|
+
const profilePath = (0, node_path_1.join)(profileDir, "profile.json");
|
|
46
|
+
const profile = loadProfile(profileDir);
|
|
47
|
+
if (!profile) {
|
|
48
|
+
throw new Error("No profile found. Run nokai setup first.");
|
|
49
|
+
}
|
|
50
|
+
const extended = { ...profile, capabilities };
|
|
51
|
+
(0, node_fs_1.writeFileSync)(profilePath, JSON.stringify(extended, null, 2), "utf-8");
|
|
52
|
+
(0, node_fs_1.chmodSync)(profilePath, 0o600);
|
|
53
|
+
}
|
|
54
|
+
function loadProfileCapabilities(dir) {
|
|
55
|
+
const profileDir = dir ?? getProfileDir();
|
|
56
|
+
const profilePath = (0, node_path_1.join)(profileDir, "profile.json");
|
|
57
|
+
if (!(0, node_fs_1.existsSync)(profilePath))
|
|
58
|
+
return [];
|
|
59
|
+
const data = JSON.parse((0, node_fs_1.readFileSync)(profilePath, "utf-8"));
|
|
60
|
+
return data.capabilities || [];
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA0BA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6PvD"}
|