@zcloak/ai-agent 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/README.md +5 -0
- package/dist/bind.d.ts +22 -0
- package/dist/bind.js +145 -0
- package/dist/bind.js.map +1 -0
- package/dist/cli.d.ts +31 -0
- package/dist/cli.js +126 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto.d.ts +113 -0
- package/dist/crypto.js +252 -0
- package/dist/crypto.js.map +1 -0
- package/dist/daemon.d.ts +94 -0
- package/dist/daemon.js +271 -0
- package/dist/daemon.js.map +1 -0
- package/dist/delete.d.ts +22 -0
- package/dist/delete.js +231 -0
- package/dist/delete.js.map +1 -0
- package/dist/doc.d.ts +23 -0
- package/dist/doc.js +180 -0
- package/dist/doc.js.map +1 -0
- package/dist/error.d.ts +45 -0
- package/dist/error.js +79 -0
- package/dist/error.js.map +1 -0
- package/dist/feed.d.ts +20 -0
- package/dist/feed.js +83 -0
- package/dist/feed.js.map +1 -0
- package/dist/identity.d.ts +50 -0
- package/dist/identity.js +99 -0
- package/dist/identity.js.map +1 -0
- package/dist/identity_cmd.d.ts +23 -0
- package/dist/identity_cmd.js +136 -0
- package/dist/identity_cmd.js.map +1 -0
- package/dist/idl.d.ts +99 -0
- package/dist/idl.js +213 -0
- package/dist/idl.js.map +1 -0
- package/dist/key-store.d.ts +88 -0
- package/dist/key-store.js +171 -0
- package/dist/key-store.js.map +1 -0
- package/dist/pow.d.ts +24 -0
- package/dist/pow.js +86 -0
- package/dist/pow.js.map +1 -0
- package/dist/register.d.ts +24 -0
- package/dist/register.js +191 -0
- package/dist/register.js.map +1 -0
- package/dist/rpc.d.ts +107 -0
- package/dist/rpc.js +60 -0
- package/dist/rpc.js.map +1 -0
- package/dist/serve.d.ts +55 -0
- package/dist/serve.js +455 -0
- package/dist/serve.js.map +1 -0
- package/dist/session.d.ts +104 -0
- package/dist/session.js +189 -0
- package/dist/session.js.map +1 -0
- package/dist/sign.d.ts +33 -0
- package/dist/sign.js +355 -0
- package/dist/sign.js.map +1 -0
- package/dist/types/common.d.ts +63 -0
- package/dist/types/common.js +8 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/config.d.ts +28 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/registry.d.ts +72 -0
- package/dist/types/registry.js +13 -0
- package/dist/types/registry.js.map +1 -0
- package/dist/types/sign-event.d.ts +134 -0
- package/dist/types/sign-event.js +13 -0
- package/dist/types/sign-event.js.map +1 -0
- package/dist/utils.d.ts +113 -0
- package/dist/utils.js +382 -0
- package/dist/utils.js.map +1 -0
- package/dist/verify.d.ts +23 -0
- package/dist/verify.js +207 -0
- package/dist/verify.js.map +1 -0
- package/dist/vetkey.d.ts +27 -0
- package/dist/vetkey.js +507 -0
- package/dist/vetkey.js.map +1 -0
- package/package.json +55 -0
package/dist/vetkey.js
ADDED
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* VetKey CLI Module — VetKey IBE encryption/decryption and daemon management
|
|
4
|
+
*
|
|
5
|
+
* Provides two encryption modes:
|
|
6
|
+
* 1. IBE mode: Per-operation Identity-Based Encryption for Kind5 PrivatePost
|
|
7
|
+
* 2. Daemon mode: Long-running AES-256-GCM daemon for fast file encryption
|
|
8
|
+
*
|
|
9
|
+
* Sub-commands:
|
|
10
|
+
* encrypt-sign Encrypt + sign Kind5 PrivatePost in one step
|
|
11
|
+
* decrypt Decrypt Kind5 PrivatePost by event ID
|
|
12
|
+
* encrypt-only Encrypt locally without canister sign
|
|
13
|
+
* pubkey Get IBE public key from canister
|
|
14
|
+
* serve Start daemon (UDS or stdio mode)
|
|
15
|
+
* stop Stop a running daemon
|
|
16
|
+
* status Query daemon status
|
|
17
|
+
*
|
|
18
|
+
* Usage: zcloak-ai vetkey <sub-command> [options]
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.run = run;
|
|
55
|
+
const fs_1 = require("fs");
|
|
56
|
+
const net_1 = require("net");
|
|
57
|
+
const readline_1 = require("readline");
|
|
58
|
+
const cryptoOps = __importStar(require("./crypto"));
|
|
59
|
+
const key_store_1 = require("./key-store");
|
|
60
|
+
const serve_1 = require("./serve");
|
|
61
|
+
const daemon_1 = require("./daemon");
|
|
62
|
+
const error_1 = require("./error");
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// Module Entry Point
|
|
65
|
+
// ============================================================================
|
|
66
|
+
/**
|
|
67
|
+
* Run the vetkey sub-command.
|
|
68
|
+
* Follows the same pattern as other CLI modules (sign.ts, verify.ts, etc.).
|
|
69
|
+
*
|
|
70
|
+
* @param session - CLI session with parsed args and canister access
|
|
71
|
+
*/
|
|
72
|
+
async function run(session) {
|
|
73
|
+
const command = session.args._args[0];
|
|
74
|
+
switch (command) {
|
|
75
|
+
case 'encrypt-sign':
|
|
76
|
+
await cmdEncryptSign(session);
|
|
77
|
+
break;
|
|
78
|
+
case 'decrypt':
|
|
79
|
+
await cmdDecrypt(session);
|
|
80
|
+
break;
|
|
81
|
+
case 'encrypt-only':
|
|
82
|
+
await cmdEncryptOnly(session);
|
|
83
|
+
break;
|
|
84
|
+
case 'pubkey':
|
|
85
|
+
await cmdGetPubkey(session);
|
|
86
|
+
break;
|
|
87
|
+
case 'serve':
|
|
88
|
+
await cmdServe(session);
|
|
89
|
+
break;
|
|
90
|
+
case 'stop':
|
|
91
|
+
await cmdStop(session);
|
|
92
|
+
break;
|
|
93
|
+
case 'status':
|
|
94
|
+
await cmdStatus(session);
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
showHelp();
|
|
98
|
+
process.exit(command ? 1 : 0);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function showHelp() {
|
|
102
|
+
console.log('zCloak.ai VetKey Tool');
|
|
103
|
+
console.log('');
|
|
104
|
+
console.log('Usage: zcloak-ai vetkey <command> [options]');
|
|
105
|
+
console.log('');
|
|
106
|
+
console.log('IBE Commands (Kind5 PrivatePost):');
|
|
107
|
+
console.log(' encrypt-sign Encrypt content and sign as Kind5 PrivatePost');
|
|
108
|
+
console.log(' decrypt Decrypt Kind5 by event ID');
|
|
109
|
+
console.log(' encrypt-only Encrypt locally without canister sign');
|
|
110
|
+
console.log(' pubkey Get IBE public key from canister');
|
|
111
|
+
console.log('');
|
|
112
|
+
console.log('Daemon Commands (AES-256-GCM):');
|
|
113
|
+
console.log(' serve Start encryption daemon');
|
|
114
|
+
console.log(' stop Stop a running daemon');
|
|
115
|
+
console.log(' status Query daemon status');
|
|
116
|
+
console.log('');
|
|
117
|
+
console.log('Options:');
|
|
118
|
+
console.log(' --text=<content> Plaintext to encrypt');
|
|
119
|
+
console.log(' --file=<path> File to encrypt');
|
|
120
|
+
console.log(' --event-id=<id> Event ID for decryption');
|
|
121
|
+
console.log(' --output=<path> Output file path');
|
|
122
|
+
console.log(' --key-name=<name> Daemon key name (default: "default")');
|
|
123
|
+
console.log(' --stdio Use stdin/stdout mode for daemon');
|
|
124
|
+
console.log(' --public-key=<hex> IBE public key for offline encryption');
|
|
125
|
+
console.log(' --ibe-identity=<id> IBE identity for offline encryption');
|
|
126
|
+
console.log(' --tags=<json> Tags as JSON array');
|
|
127
|
+
console.log(' --json Output in JSON format');
|
|
128
|
+
}
|
|
129
|
+
// ============================================================================
|
|
130
|
+
// Command Implementations
|
|
131
|
+
// ============================================================================
|
|
132
|
+
/**
|
|
133
|
+
* encrypt-sign: Encrypt plaintext with IBE and sign as Kind5 in one step.
|
|
134
|
+
*
|
|
135
|
+
* Flow:
|
|
136
|
+
* 1. Get IBE public key from canister
|
|
137
|
+
* 2. Generate IBE identity string
|
|
138
|
+
* 3. IBE-encrypt the plaintext
|
|
139
|
+
* 4. Call canister sign(Kind5PrivatePost{...})
|
|
140
|
+
* 5. Output SignEvent result
|
|
141
|
+
*/
|
|
142
|
+
async function cmdEncryptSign(session) {
|
|
143
|
+
const args = session.args;
|
|
144
|
+
const text = args['text'];
|
|
145
|
+
const file = args['file'];
|
|
146
|
+
const tagsJson = args['tags'];
|
|
147
|
+
const jsonOutput = !!args['json'];
|
|
148
|
+
const plaintext = readInput(text, file);
|
|
149
|
+
// Parse optional tags
|
|
150
|
+
let tags;
|
|
151
|
+
if (tagsJson) {
|
|
152
|
+
try {
|
|
153
|
+
tags = JSON.parse(tagsJson);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
throw new Error("Invalid tags JSON (expected array of string arrays)");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const actor = await session.getSignActor();
|
|
160
|
+
const principal = session.getPrincipal();
|
|
161
|
+
// Step 1: Get IBE public key
|
|
162
|
+
let dpkBytes;
|
|
163
|
+
try {
|
|
164
|
+
const result = await actor.get_ibe_public_key();
|
|
165
|
+
dpkBytes = new Uint8Array(result);
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
throw (0, error_1.canisterCallError)(`get_ibe_public_key failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
169
|
+
}
|
|
170
|
+
// Step 2: Generate IBE identity
|
|
171
|
+
const ibeIdentity = cryptoOps.makeIbeIdentity(principal, plaintext);
|
|
172
|
+
// Step 3: IBE-encrypt
|
|
173
|
+
const ciphertext = cryptoOps.ibeEncrypt(dpkBytes, ibeIdentity, plaintext);
|
|
174
|
+
// Step 4: Sign and store on canister (direct sign, no PoW for Kind5)
|
|
175
|
+
let signEvent;
|
|
176
|
+
try {
|
|
177
|
+
signEvent = await actor.sign({
|
|
178
|
+
Kind5PrivatePost: {
|
|
179
|
+
encrypted_content: Array.from(ciphertext),
|
|
180
|
+
ibe_identity: ibeIdentity,
|
|
181
|
+
tags: tags ? [tags] : [],
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
throw (0, error_1.canisterCallError)(`sign Kind5PrivatePost failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
187
|
+
}
|
|
188
|
+
// Step 5: Output
|
|
189
|
+
if (jsonOutput) {
|
|
190
|
+
console.log(JSON.stringify({
|
|
191
|
+
event_id: signEvent.id,
|
|
192
|
+
ibe_identity: ibeIdentity,
|
|
193
|
+
kind: signEvent.kind,
|
|
194
|
+
content_hash: signEvent.content_hash,
|
|
195
|
+
created_at: signEvent.created_at.toString(),
|
|
196
|
+
principal,
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
console.log("Kind5 PrivatePost signed successfully!");
|
|
201
|
+
console.log(` Event ID: ${signEvent.id}`);
|
|
202
|
+
console.log(` IBE Identity: ${ibeIdentity}`);
|
|
203
|
+
console.log(` Content Hash: ${signEvent.content_hash}`);
|
|
204
|
+
console.log(` Principal: ${principal}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* decrypt: Decrypt a Kind5 PrivatePost by event ID.
|
|
209
|
+
*/
|
|
210
|
+
async function cmdDecrypt(session) {
|
|
211
|
+
const args = session.args;
|
|
212
|
+
const eventId = args['event-id'];
|
|
213
|
+
const output = args['output'];
|
|
214
|
+
const jsonOutput = !!args['json'];
|
|
215
|
+
if (!eventId) {
|
|
216
|
+
throw new Error('--event-id is required for decryption');
|
|
217
|
+
}
|
|
218
|
+
const actor = await session.getSignActor();
|
|
219
|
+
// Generate ephemeral transport key pair
|
|
220
|
+
const [transportSecret, transportPublic] = cryptoOps.generateTransportKeypair();
|
|
221
|
+
// Get IBE public key
|
|
222
|
+
let dpkBytes;
|
|
223
|
+
try {
|
|
224
|
+
const result = await actor.get_ibe_public_key();
|
|
225
|
+
dpkBytes = new Uint8Array(result);
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
throw (0, error_1.canisterCallError)(`get_ibe_public_key failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
229
|
+
}
|
|
230
|
+
// Request decryption package from canister
|
|
231
|
+
let pkg;
|
|
232
|
+
try {
|
|
233
|
+
const result = await actor.get_kind5_decryption_key(eventId, Array.from(transportPublic));
|
|
234
|
+
pkg = {
|
|
235
|
+
encrypted_key: new Uint8Array(result.encrypted_key),
|
|
236
|
+
ciphertext: new Uint8Array(result.ciphertext),
|
|
237
|
+
ibe_identity: result.ibe_identity,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
throw (0, error_1.canisterCallError)(`get_kind5_decryption_key failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
242
|
+
}
|
|
243
|
+
// Full decrypt
|
|
244
|
+
const plaintext = cryptoOps.ibeDecrypt(pkg.encrypted_key, dpkBytes, pkg.ibe_identity, pkg.ciphertext, transportSecret);
|
|
245
|
+
// Output
|
|
246
|
+
if (output) {
|
|
247
|
+
(0, fs_1.writeFileSync)(output, plaintext);
|
|
248
|
+
if (jsonOutput) {
|
|
249
|
+
console.log(JSON.stringify({
|
|
250
|
+
event_id: eventId,
|
|
251
|
+
ibe_identity: pkg.ibe_identity,
|
|
252
|
+
output_file: output,
|
|
253
|
+
size_bytes: plaintext.length,
|
|
254
|
+
}));
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
console.log(`Decrypted content written to: ${output}`);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
const textContent = new TextDecoder().decode(plaintext);
|
|
262
|
+
if (jsonOutput) {
|
|
263
|
+
console.log(JSON.stringify({
|
|
264
|
+
event_id: eventId,
|
|
265
|
+
ibe_identity: pkg.ibe_identity,
|
|
266
|
+
plaintext: textContent,
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
console.log("Decrypted Kind5 PrivatePost:");
|
|
271
|
+
console.log(` Event ID: ${eventId}`);
|
|
272
|
+
console.log(` IBE Identity: ${pkg.ibe_identity}`);
|
|
273
|
+
console.log(` Content:`);
|
|
274
|
+
console.log(textContent);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* encrypt-only: Encrypt content locally without canister interaction.
|
|
280
|
+
*/
|
|
281
|
+
async function cmdEncryptOnly(session) {
|
|
282
|
+
const args = session.args;
|
|
283
|
+
const text = args['text'];
|
|
284
|
+
const file = args['file'];
|
|
285
|
+
const ibeIdentityOverride = args['ibe-identity'];
|
|
286
|
+
const publicKeyHex = args['public-key'];
|
|
287
|
+
const jsonOutput = !!args['json'];
|
|
288
|
+
const plaintext = readInput(text, file);
|
|
289
|
+
let dpkBytes;
|
|
290
|
+
let principalText;
|
|
291
|
+
if (publicKeyHex) {
|
|
292
|
+
// Fully offline mode — use provided public key
|
|
293
|
+
dpkBytes = Buffer.from(publicKeyHex, "hex");
|
|
294
|
+
principalText = ibeIdentityOverride ? "offline" : session.getPrincipal();
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
// Semi-online mode — fetch public key from canister
|
|
298
|
+
const actor = await session.getSignActor();
|
|
299
|
+
principalText = session.getPrincipal();
|
|
300
|
+
try {
|
|
301
|
+
const result = await actor.get_ibe_public_key();
|
|
302
|
+
dpkBytes = new Uint8Array(result);
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
throw (0, error_1.canisterCallError)(`get_ibe_public_key failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const ibeIdentity = ibeIdentityOverride ?? cryptoOps.makeIbeIdentity(principalText, plaintext);
|
|
309
|
+
const ciphertext = cryptoOps.ibeEncrypt(dpkBytes, ibeIdentity, plaintext);
|
|
310
|
+
if (jsonOutput) {
|
|
311
|
+
console.log(JSON.stringify({
|
|
312
|
+
ibe_identity: ibeIdentity,
|
|
313
|
+
ciphertext_hex: Buffer.from(ciphertext).toString("hex"),
|
|
314
|
+
ciphertext_size: ciphertext.length,
|
|
315
|
+
plaintext_size: plaintext.length,
|
|
316
|
+
offline: !!publicKeyHex,
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
const mode = publicKeyHex ? "fully offline" : "semi-online";
|
|
321
|
+
console.log(`IBE encryption completed (${mode}, not signed on canister)`);
|
|
322
|
+
console.log(` IBE Identity: ${ibeIdentity}`);
|
|
323
|
+
console.log(` Ciphertext size: ${ciphertext.length} bytes`);
|
|
324
|
+
console.log(` Ciphertext (hex): ${Buffer.from(ciphertext).toString("hex")}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* pubkey: Fetch and display the IBE derived public key.
|
|
329
|
+
*/
|
|
330
|
+
async function cmdGetPubkey(session) {
|
|
331
|
+
const jsonOutput = !!session.args['json'];
|
|
332
|
+
const actor = await session.getSignActor();
|
|
333
|
+
let dpkBytes;
|
|
334
|
+
try {
|
|
335
|
+
const result = await actor.get_ibe_public_key();
|
|
336
|
+
dpkBytes = new Uint8Array(result);
|
|
337
|
+
}
|
|
338
|
+
catch (e) {
|
|
339
|
+
throw (0, error_1.canisterCallError)(`get_ibe_public_key failed: ${e instanceof Error ? e.message : String(e)}`, e);
|
|
340
|
+
}
|
|
341
|
+
if (jsonOutput) {
|
|
342
|
+
console.log(JSON.stringify({
|
|
343
|
+
public_key: Buffer.from(dpkBytes).toString("hex"),
|
|
344
|
+
size_bytes: dpkBytes.length,
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
console.log("IBE Derived Public Key:");
|
|
349
|
+
console.log(` Hex: ${Buffer.from(dpkBytes).toString("hex")}`);
|
|
350
|
+
console.log(` Size: ${dpkBytes.length} bytes (compressed G2 point)`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* serve: Start daemon in UDS or stdio mode.
|
|
355
|
+
*
|
|
356
|
+
* Creates its own long-lived actor for the daemon lifecycle,
|
|
357
|
+
* using the Session's identity for authentication.
|
|
358
|
+
*/
|
|
359
|
+
async function cmdServe(session) {
|
|
360
|
+
const args = session.args;
|
|
361
|
+
const keyName = args['key-name'] || 'default';
|
|
362
|
+
const stdio = !!args['stdio'];
|
|
363
|
+
// Validate key_name
|
|
364
|
+
if (keyName.includes(":"))
|
|
365
|
+
throw new Error("key_name must not contain ':' (reserved as separator)");
|
|
366
|
+
const actor = await session.getSignActor();
|
|
367
|
+
const principal = session.getPrincipal();
|
|
368
|
+
// Construct derivation ID
|
|
369
|
+
const derivationId = `${principal}:${keyName}`;
|
|
370
|
+
if (derivationId.length > 256) {
|
|
371
|
+
throw new Error(`derivation_id exceeds 256 bytes (${derivationId.length}); use a shorter key_name`);
|
|
372
|
+
}
|
|
373
|
+
// Derive AES-256 key from VetKey via the sign actor
|
|
374
|
+
console.error(`Deriving AES-256 key from VetKey (derivation_id: ${derivationId})...`);
|
|
375
|
+
const keyStore = await key_store_1.KeyStore.deriveFromActor(actor, derivationId);
|
|
376
|
+
console.error("Key derived successfully. Starting JSON-RPC daemon...");
|
|
377
|
+
if (stdio) {
|
|
378
|
+
await (0, serve_1.runDaemonStdio)(keyStore, principal, derivationId);
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
await (0, serve_1.runDaemonUds)(keyStore, principal, derivationId);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* stop: Send shutdown to a running daemon.
|
|
386
|
+
*/
|
|
387
|
+
async function cmdStop(session) {
|
|
388
|
+
const args = session.args;
|
|
389
|
+
const keyName = args['key-name'] || 'default';
|
|
390
|
+
const jsonOutput = !!args['json'];
|
|
391
|
+
const principal = session.getPrincipal();
|
|
392
|
+
const derivationId = `${principal}:${keyName}`;
|
|
393
|
+
const sockPath = (0, daemon_1.findRunningDaemon)(derivationId);
|
|
394
|
+
// Connect to socket and send shutdown
|
|
395
|
+
const response = await sendRpcToSocket(sockPath, {
|
|
396
|
+
id: 1,
|
|
397
|
+
method: "shutdown",
|
|
398
|
+
});
|
|
399
|
+
if (jsonOutput) {
|
|
400
|
+
console.log(JSON.stringify(response));
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
console.log("Daemon stopped successfully.");
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* status: Query a running daemon.
|
|
408
|
+
*/
|
|
409
|
+
async function cmdStatus(session) {
|
|
410
|
+
const args = session.args;
|
|
411
|
+
const keyName = args['key-name'] || 'default';
|
|
412
|
+
const jsonOutput = !!args['json'];
|
|
413
|
+
const principal = session.getPrincipal();
|
|
414
|
+
const derivationId = `${principal}:${keyName}`;
|
|
415
|
+
const sockPath = (0, daemon_1.findRunningDaemon)(derivationId);
|
|
416
|
+
// Connect to socket and send status
|
|
417
|
+
const response = await sendRpcToSocket(sockPath, {
|
|
418
|
+
id: 1,
|
|
419
|
+
method: "status",
|
|
420
|
+
});
|
|
421
|
+
if (jsonOutput) {
|
|
422
|
+
console.log(JSON.stringify(response));
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
const result = response.result;
|
|
426
|
+
if (result) {
|
|
427
|
+
console.log("Daemon Status:");
|
|
428
|
+
console.log(` Status: ${result.status}`);
|
|
429
|
+
console.log(` Derivation ID: ${result.derivation_id}`);
|
|
430
|
+
console.log(` Principal: ${result.principal}`);
|
|
431
|
+
console.log(` Started At: ${result.started_at}`);
|
|
432
|
+
console.log(` Mode: ${result.mode}`);
|
|
433
|
+
if (result.socket_path) {
|
|
434
|
+
console.log(` Socket: ${result.socket_path}`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
else if (response.error) {
|
|
438
|
+
console.error(`Error: ${response.error}`);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
// ============================================================================
|
|
443
|
+
// Helper Functions
|
|
444
|
+
// ============================================================================
|
|
445
|
+
/**
|
|
446
|
+
* Read input content from --text or --file as Uint8Array.
|
|
447
|
+
* Supports both text and binary files.
|
|
448
|
+
*/
|
|
449
|
+
function readInput(text, file) {
|
|
450
|
+
if (text && file)
|
|
451
|
+
throw new Error("Cannot specify both --text and --file");
|
|
452
|
+
if (text)
|
|
453
|
+
return new TextEncoder().encode(text);
|
|
454
|
+
if (file)
|
|
455
|
+
return (0, fs_1.readFileSync)(file);
|
|
456
|
+
throw new Error("Either --text or --file must be provided");
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Send a single JSON-RPC request to a Unix socket and return the response.
|
|
460
|
+
* Connects, sends the request, reads one response line, then disconnects.
|
|
461
|
+
*/
|
|
462
|
+
function sendRpcToSocket(socketPath, request) {
|
|
463
|
+
return new Promise((resolve, reject) => {
|
|
464
|
+
const conn = (0, net_1.createConnection)(socketPath);
|
|
465
|
+
let responded = false;
|
|
466
|
+
conn.on("connect", () => {
|
|
467
|
+
conn.write(JSON.stringify(request) + "\n");
|
|
468
|
+
});
|
|
469
|
+
const rl = (0, readline_1.createInterface)({ input: conn });
|
|
470
|
+
rl.on("line", (line) => {
|
|
471
|
+
if (!responded) {
|
|
472
|
+
responded = true;
|
|
473
|
+
clearTimeout(timer);
|
|
474
|
+
try {
|
|
475
|
+
resolve(JSON.parse(line));
|
|
476
|
+
}
|
|
477
|
+
catch {
|
|
478
|
+
reject(new Error(`Invalid response: ${line}`));
|
|
479
|
+
}
|
|
480
|
+
conn.end();
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
conn.on("error", (err) => {
|
|
484
|
+
if (!responded) {
|
|
485
|
+
responded = true;
|
|
486
|
+
clearTimeout(timer);
|
|
487
|
+
reject(new Error(`Failed to connect to daemon: ${err.message}`));
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
conn.on("close", () => {
|
|
491
|
+
if (!responded) {
|
|
492
|
+
responded = true;
|
|
493
|
+
clearTimeout(timer);
|
|
494
|
+
reject(new Error("Connection closed without response"));
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
// Timeout after 10 seconds — clear on success/error to avoid blocking process exit
|
|
498
|
+
const timer = setTimeout(() => {
|
|
499
|
+
if (!responded) {
|
|
500
|
+
responded = true;
|
|
501
|
+
conn.destroy();
|
|
502
|
+
reject(new Error("Timeout waiting for daemon response"));
|
|
503
|
+
}
|
|
504
|
+
}, 10000);
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
//# sourceMappingURL=vetkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vetkey.js","sourceRoot":"","sources":["../src/vetkey.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zcloak/ai-agent",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "zCloak.ai Agent CLI — sign, verify, register and interact with canisters",
|
|
5
|
+
"bin": {
|
|
6
|
+
"zcloak-ai": "./dist/cli.js"
|
|
7
|
+
},
|
|
8
|
+
"main": "./dist/utils.js",
|
|
9
|
+
"types": "./dist/utils.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/**/*.js",
|
|
12
|
+
"dist/**/*.d.ts",
|
|
13
|
+
"dist/**/*.js.map"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"generate-types": "tsx scripts/generate-types.ts",
|
|
17
|
+
"check-types": "tsx scripts/generate-types.ts --check",
|
|
18
|
+
"prebuild": "npm run generate-types",
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"build:watch": "tsc --watch",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"typecheck": "tsc --noEmit",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"prepare": "npm run clean && npm run build",
|
|
26
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"zcloak",
|
|
33
|
+
"icp",
|
|
34
|
+
"internet-computer",
|
|
35
|
+
"dfinity",
|
|
36
|
+
"agent",
|
|
37
|
+
"sign",
|
|
38
|
+
"canister"
|
|
39
|
+
],
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@dfinity/agent": "^3.4.3",
|
|
42
|
+
"@dfinity/candid": "^3.4.3",
|
|
43
|
+
"@dfinity/identity": "^3.4.3",
|
|
44
|
+
"@dfinity/identity-secp256k1": "^3.4.3",
|
|
45
|
+
"@dfinity/principal": "^3.4.3",
|
|
46
|
+
"@dfinity/vetkeys": "^0.4.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^25.3.3",
|
|
50
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
51
|
+
"tsx": "^4.21.0",
|
|
52
|
+
"typescript": "^5.9.3",
|
|
53
|
+
"vitest": "^4.0.18"
|
|
54
|
+
}
|
|
55
|
+
}
|