@zcloak/ai-agent 1.0.24 → 1.0.25
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/SKILL.md +79 -48
- package/dist/bind.js +9 -8
- package/dist/bind.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +61 -26
- package/dist/cli.js.map +1 -1
- package/dist/compat.d.ts +32 -0
- package/dist/compat.js +91 -0
- package/dist/compat.js.map +1 -0
- package/dist/daemon.d.ts +4 -5
- package/dist/daemon.js +15 -21
- package/dist/daemon.js.map +1 -1
- package/dist/delete.js +8 -7
- package/dist/delete.js.map +1 -1
- package/dist/doc.js +4 -3
- package/dist/doc.js.map +1 -1
- package/dist/feed.js +2 -1
- package/dist/feed.js.map +1 -1
- package/dist/identity.js +2 -1
- package/dist/identity.js.map +1 -1
- package/dist/identity_cmd.js +2 -1
- package/dist/identity_cmd.js.map +1 -1
- package/dist/log.js +3 -6
- package/dist/log.js.map +1 -1
- package/dist/mailbox-store.d.ts +92 -0
- package/dist/mailbox-store.js +166 -0
- package/dist/mailbox-store.js.map +1 -0
- package/dist/paths.d.ts +39 -0
- package/dist/paths.js +77 -0
- package/dist/paths.js.map +1 -0
- package/dist/pow.js +2 -1
- package/dist/pow.js.map +1 -1
- package/dist/pre-check.d.ts +4 -4
- package/dist/pre-check.js +25 -9
- package/dist/pre-check.js.map +1 -1
- package/dist/register.js +200 -35
- package/dist/register.js.map +1 -1
- package/dist/rpc.d.ts +4 -6
- package/dist/rpc.js +3 -3
- package/dist/rpc.js.map +1 -1
- package/dist/serve.d.ts +4 -30
- package/dist/serve.js +22 -90
- package/dist/serve.js.map +1 -1
- package/dist/session.js +4 -3
- package/dist/session.js.map +1 -1
- package/dist/sign.js +9 -8
- package/dist/sign.js.map +1 -1
- package/dist/social.js +6 -5
- package/dist/social.js.map +1 -1
- package/dist/types/registry.d.ts +1 -1
- package/dist/types/registry.js +1 -1
- package/dist/types/sign-event.d.ts +1 -1
- package/dist/types/sign-event.js +1 -1
- package/dist/utils.js +1 -1
- package/dist/utils.js.map +1 -1
- package/dist/verify.js +3 -2
- package/dist/verify.js.map +1 -1
- package/dist/vetkey.d.ts +18 -15
- package/dist/vetkey.js +104 -78
- package/dist/vetkey.js.map +1 -1
- package/dist/zmail.d.ts +7 -3
- package/dist/zmail.js +316 -20
- package/dist/zmail.js.map +1 -1
- package/package.json +1 -1
package/dist/register.js
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { getProfileUrl } from './utils.js';
|
|
19
19
|
import { generalParseAiIdToRecord, isReadableId } from './aiid.js';
|
|
20
|
+
import * as log from './log.js';
|
|
20
21
|
// ========== Help Information ==========
|
|
21
22
|
function showHelp() {
|
|
22
23
|
console.log('zCloak.ai Agent Registration Management');
|
|
@@ -83,7 +84,7 @@ function cmdGetPrincipal(session) {
|
|
|
83
84
|
/** Query current principal's agent name */
|
|
84
85
|
async function cmdLookup(session) {
|
|
85
86
|
const principal = session.getPrincipal();
|
|
86
|
-
|
|
87
|
+
log.info(`Current principal: ${principal}`);
|
|
87
88
|
const actor = await session.getAnonymousRegistryActor();
|
|
88
89
|
const result = await actor.user_profile_get_by_principal(principal);
|
|
89
90
|
if (!result || result.length === 0) {
|
|
@@ -180,51 +181,209 @@ async function cmdRegister(session, baseName) {
|
|
|
180
181
|
console.log(JSON.stringify(result, null, 2));
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
|
-
/**
|
|
184
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Query agent's owner / connection list via the zCloak REST API.
|
|
186
|
+
*
|
|
187
|
+
* Routing:
|
|
188
|
+
* - Input ends with ".agent" → GET /api/ai-name/connections?name=<input>
|
|
189
|
+
* - Otherwise (principal ID) → GET /api/ai-name/connections?pid=<input>
|
|
190
|
+
*
|
|
191
|
+
* Response shape:
|
|
192
|
+
* { code: 200, data: { source, query, is_human, connectionPids: string[] } }
|
|
193
|
+
*/
|
|
194
|
+
async function cmdGetOwner(_session, principalOrName) {
|
|
185
195
|
if (!principalOrName) {
|
|
186
196
|
console.error('Error: principal or agent name is required');
|
|
187
197
|
console.error('Usage: zcloak-ai register get-owner <principal_or_agent_name>');
|
|
188
198
|
process.exit(1);
|
|
189
199
|
}
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
200
|
+
const BASE = 'https://service.zcloak.ai/api/ai-name/connections';
|
|
201
|
+
const isAgentName = principalOrName.endsWith('.agent');
|
|
202
|
+
const url = isAgentName
|
|
203
|
+
? `${BASE}?name=${encodeURIComponent(principalOrName)}`
|
|
204
|
+
: `${BASE}?pid=${encodeURIComponent(principalOrName)}`;
|
|
205
|
+
log.info(`Querying connections: ${url}`);
|
|
206
|
+
const res = await fetch(url);
|
|
207
|
+
if (!res.ok) {
|
|
208
|
+
console.error(`HTTP error: ${res.status} ${res.statusText}`);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
}
|
|
211
|
+
const json = (await res.json());
|
|
212
|
+
if (json.code !== 200 || !json.data) {
|
|
213
|
+
console.error(`API error: ${json.msg}`);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
const { source, query, is_human, connectionPids } = json.data;
|
|
217
|
+
// get-owner is only meaningful for agents (is_human must be false)
|
|
218
|
+
if (is_human) {
|
|
219
|
+
console.error(`Error: "${principalOrName}" is a human owner, not an agent.`);
|
|
220
|
+
console.error('To query the agents bound to this human account, use:');
|
|
221
|
+
console.error(` zcloak-ai register get-agent-list ${principalOrName}`);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
224
|
+
console.log(`source : ${source}`);
|
|
225
|
+
console.log(`query : ${query}`);
|
|
226
|
+
console.log(`is_human : ${is_human}`);
|
|
227
|
+
console.log(`connections : ${connectionPids.length}`);
|
|
228
|
+
if (connectionPids.length > 0) {
|
|
229
|
+
connectionPids.forEach((pid, i) => console.log(` [${i}] ${pid}`));
|
|
197
230
|
}
|
|
198
231
|
else {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
232
|
+
console.log(' (none)');
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Query the list of agents bound to a human account via the zCloak REST API.
|
|
237
|
+
*
|
|
238
|
+
* Routing:
|
|
239
|
+
* - Input ends with ".ai" → GET /api/ai-name/connections?name=<input>
|
|
240
|
+
* - Otherwise (principal ID) → GET /api/ai-name/connections?pid=<input>
|
|
241
|
+
*
|
|
242
|
+
* Validates that the returned profile is a human account (is_human === true).
|
|
243
|
+
* connectionPids contains the list of agent Principal IDs bound to this human.
|
|
244
|
+
*/
|
|
245
|
+
async function cmdGetAgentList(_session, principalOrName) {
|
|
246
|
+
if (!principalOrName) {
|
|
247
|
+
console.error('Error: principal or owner AI name is required');
|
|
248
|
+
console.error('Usage: zcloak-ai register get-agent-list <ai_id_or_ai_name>');
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
const BASE = 'https://service.zcloak.ai/api/ai-name/connections';
|
|
252
|
+
const isAiName = principalOrName.endsWith('.ai');
|
|
253
|
+
const url = isAiName
|
|
254
|
+
? `${BASE}?name=${encodeURIComponent(principalOrName)}`
|
|
255
|
+
: `${BASE}?pid=${encodeURIComponent(principalOrName)}`;
|
|
256
|
+
log.info(`Querying agent list: ${url}`);
|
|
257
|
+
const res = await fetch(url);
|
|
258
|
+
if (!res.ok) {
|
|
259
|
+
console.error(`HTTP error: ${res.status} ${res.statusText}`);
|
|
260
|
+
process.exit(1);
|
|
261
|
+
}
|
|
262
|
+
const json = (await res.json());
|
|
263
|
+
if (json.code !== 200 || !json.data) {
|
|
264
|
+
console.error(`API error: ${json.msg}`);
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
const { source, query, is_human, connectionPids } = json.data;
|
|
268
|
+
// get-agent-list is only meaningful for human accounts (is_human must be true)
|
|
269
|
+
if (!is_human) {
|
|
270
|
+
console.error(`Error: "${principalOrName}" is an agent, not a human owner.`);
|
|
271
|
+
console.error('To query the owner(s) of this agent, use:');
|
|
272
|
+
console.error(` zcloak-ai register get-owner ${principalOrName}`);
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
275
|
+
console.log(`source : ${source}`);
|
|
276
|
+
console.log(`query : ${query}`);
|
|
277
|
+
console.log(`is_human : ${is_human}`);
|
|
278
|
+
console.log(`agents : ${connectionPids.length}`);
|
|
279
|
+
if (connectionPids.length > 0) {
|
|
280
|
+
connectionPids.forEach((pid, i) => console.log(` [${i}] ${pid}`));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
console.log(' (none)');
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Format an ID record from the REST API response into a readable AI ID string.
|
|
288
|
+
* API format: { id: string; index: string[]; domain: Record<string,null>[] }
|
|
289
|
+
* e.g. { id:"wanghui", index:[], domain:[{"AI":null}] } → "wanghui.ai"
|
|
290
|
+
* { id:"wanghui", index:["4705"], domain:[{"AI":null}] } → "wanghui#4705.ai"
|
|
291
|
+
*/
|
|
292
|
+
function formatApiIdRecord(r) {
|
|
293
|
+
let text = r.id;
|
|
294
|
+
if (r.index && r.index.length > 0)
|
|
295
|
+
text += `#${r.index[0]}`;
|
|
296
|
+
if (r.domain && r.domain.length > 0) {
|
|
297
|
+
const d = r.domain[0];
|
|
298
|
+
if ('AI' in d)
|
|
299
|
+
text += '.ai';
|
|
300
|
+
else if ('ORG' in d)
|
|
301
|
+
text += '.org';
|
|
302
|
+
else if ('AGENT' in d)
|
|
303
|
+
text += '.agent';
|
|
304
|
+
}
|
|
305
|
+
return text;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Query full profile of any account (human or agent) via the zCloak REST API.
|
|
309
|
+
*
|
|
310
|
+
* Routing:
|
|
311
|
+
* - Input ends with ".ai" or ".agent" → GET /api/ai-name/user_profile?name=<input>
|
|
312
|
+
* - Otherwise (Principal ID) → GET /api/ai-name/user_profile?pid=<input>
|
|
313
|
+
*/
|
|
314
|
+
async function cmdGetProfile(_session, input) {
|
|
315
|
+
if (!input) {
|
|
316
|
+
console.error('Error: AI ID or AI name is required');
|
|
317
|
+
console.error('Usage: zcloak-ai register get-profile <ai_id_or_ai_name>');
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
const BASE = 'https://service.zcloak.ai/api/ai-name/user_profile';
|
|
321
|
+
const isName = input.endsWith('.ai') || input.endsWith('.agent');
|
|
322
|
+
const url = isName
|
|
323
|
+
? `${BASE}?name=${encodeURIComponent(input)}`
|
|
324
|
+
: `${BASE}?pid=${encodeURIComponent(input)}`;
|
|
325
|
+
log.info(`Querying profile: ${url}`);
|
|
326
|
+
const res = await fetch(url);
|
|
327
|
+
if (!res.ok) {
|
|
328
|
+
console.error(`HTTP error: ${res.status} ${res.statusText}`);
|
|
329
|
+
process.exit(1);
|
|
330
|
+
}
|
|
331
|
+
// todo: maybe change when the server api changes
|
|
332
|
+
const json = (await res.json());
|
|
333
|
+
if (json.code !== 200 || !json.data) {
|
|
334
|
+
console.error(`API error: ${json.msg}`);
|
|
335
|
+
process.exit(1);
|
|
336
|
+
}
|
|
337
|
+
const { profile } = json.data;
|
|
338
|
+
if (!profile) {
|
|
339
|
+
console.log('(null)');
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
// ── Basic fields ──────────────────────────────────────────────────────────
|
|
343
|
+
console.log(`display_name : ${profile.display_name}`);
|
|
344
|
+
console.log(`principal_id : ${profile.principal_id.length > 0 ? profile.principal_id[0] : '(none)'}`);
|
|
345
|
+
// ── AI profile ────────────────────────────────────────────────────────────
|
|
346
|
+
if (profile.ai_profile && profile.ai_profile.length > 0) {
|
|
347
|
+
const ap = profile.ai_profile[0];
|
|
348
|
+
// Preferred AI name
|
|
349
|
+
const aiName = ap.ai_name && ap.ai_name.length > 0
|
|
350
|
+
? formatApiIdRecord(ap.ai_name[0])
|
|
351
|
+
: null;
|
|
352
|
+
const defaultName = ap.default_name && ap.default_name.length > 0
|
|
353
|
+
? formatApiIdRecord(ap.default_name[0])
|
|
354
|
+
: null;
|
|
355
|
+
console.log(`ai_name : ${aiName ?? '(none)'}`);
|
|
356
|
+
console.log(`default_name : ${defaultName ?? '(none)'}`);
|
|
357
|
+
console.log(`is_free : ${ap.is_free}`);
|
|
358
|
+
console.log(`bio : ${ap.bio && ap.bio.length > 0 ? ap.bio[0] : '(none)'}`);
|
|
359
|
+
if (ap.valid_time && ap.valid_time.length > 0) {
|
|
360
|
+
const ts = parseInt(ap.valid_time[0], 10);
|
|
361
|
+
console.log(`valid_until : ${new Date(ts).toISOString()}`);
|
|
209
362
|
}
|
|
210
|
-
if (
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (pos.
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
363
|
+
if (ap.position && ap.position.length > 0) {
|
|
364
|
+
const pos = ap.position[0];
|
|
365
|
+
console.log(`is_human : ${pos.is_human}`);
|
|
366
|
+
console.log(`connections : ${pos.connection_list.length}`);
|
|
367
|
+
if (pos.connection_list.length > 0) {
|
|
368
|
+
if (!pos.is_human) {
|
|
369
|
+
// Agent account — connections are its owner(s)
|
|
370
|
+
console.log(` → To view owner(s) of this agent, run:`);
|
|
371
|
+
console.log(` zcloak-ai register get-owner ${input}`);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
// Human account — connections are its bound agents
|
|
375
|
+
console.log(` → To view agents bound to this account, run:`);
|
|
376
|
+
console.log(` zcloak-ai register get-agent-list ${input}`);
|
|
220
377
|
}
|
|
221
378
|
}
|
|
222
379
|
}
|
|
223
|
-
console.log(`(opt record {\n${lines.join('\n')}\n})`);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
console.log('(null)');
|
|
227
380
|
}
|
|
381
|
+
// ── Passkeys ──────────────────────────────────────────────────────────────
|
|
382
|
+
console.log(`passkeys : ${profile.passkey_name.length}`);
|
|
383
|
+
profile.passkey_name.forEach((k, i) => console.log(` [${i}] ${k}`));
|
|
384
|
+
// ── Timestamps ────────────────────────────────────────────────────────────
|
|
385
|
+
console.log(`created : ${new Date(parseInt(profile.create_time, 10)).toISOString()}`);
|
|
386
|
+
console.log(`modified : ${new Date(parseInt(profile.modify_time, 10)).toISOString()}`);
|
|
228
387
|
}
|
|
229
388
|
// ========== Exported run() — called by cli.ts ==========
|
|
230
389
|
/**
|
|
@@ -253,6 +412,12 @@ export async function run(session) {
|
|
|
253
412
|
case 'get-owner':
|
|
254
413
|
await cmdGetOwner(session, session.args._args[1]);
|
|
255
414
|
break;
|
|
415
|
+
case 'get-agent-list':
|
|
416
|
+
await cmdGetAgentList(session, session.args._args[1]);
|
|
417
|
+
break;
|
|
418
|
+
case 'get-profile':
|
|
419
|
+
await cmdGetProfile(session, session.args._args[1]);
|
|
420
|
+
break;
|
|
256
421
|
default:
|
|
257
422
|
showHelp();
|
|
258
423
|
if (command) {
|
|
@@ -262,7 +427,7 @@ export async function run(session) {
|
|
|
262
427
|
}
|
|
263
428
|
}
|
|
264
429
|
catch (err) {
|
|
265
|
-
|
|
430
|
+
log.error(`Operation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
266
431
|
process.exit(1);
|
|
267
432
|
}
|
|
268
433
|
}
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* JSON-RPC Protocol Types — newline-delimited JSON over
|
|
2
|
+
* JSON-RPC Protocol Types — newline-delimited JSON over Unix Domain Socket
|
|
3
3
|
*
|
|
4
4
|
* Protocol specification:
|
|
5
5
|
* - One JSON object per line (newline-delimited)
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* decrypt — Decrypt file or inline data using the held AES-256 key
|
|
12
12
|
* ibe-decrypt — Decrypt IBE ciphertext using cached VetKey (Mail daemon mode)
|
|
13
13
|
* status — Query daemon status (derivation_id, principal, uptime)
|
|
14
|
-
* quit — Close current connection
|
|
15
|
-
* shutdown — Stop the entire daemon gracefully
|
|
14
|
+
* quit — Close current client connection
|
|
15
|
+
* shutdown — Stop the entire daemon gracefully
|
|
16
16
|
*/
|
|
17
17
|
/** JSON-RPC request wrapper (simplified JSON-RPC 2.0 without "jsonrpc" field) */
|
|
18
18
|
export interface RpcRequest {
|
|
@@ -109,9 +109,7 @@ export interface StatusResult {
|
|
|
109
109
|
principal: string;
|
|
110
110
|
/** Daemon start timestamp (ISO 8601) */
|
|
111
111
|
started_at: string;
|
|
112
|
-
/**
|
|
113
|
-
mode?: string;
|
|
114
|
-
/** Unix socket path (UDS mode only) */
|
|
112
|
+
/** Unix socket path */
|
|
115
113
|
socket_path?: string;
|
|
116
114
|
}
|
|
117
115
|
/** Create a JSON-RPC success response */
|
package/dist/rpc.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* JSON-RPC Protocol Types — newline-delimited JSON over
|
|
2
|
+
* JSON-RPC Protocol Types — newline-delimited JSON over Unix Domain Socket
|
|
3
3
|
*
|
|
4
4
|
* Protocol specification:
|
|
5
5
|
* - One JSON object per line (newline-delimited)
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* decrypt — Decrypt file or inline data using the held AES-256 key
|
|
12
12
|
* ibe-decrypt — Decrypt IBE ciphertext using cached VetKey (Mail daemon mode)
|
|
13
13
|
* status — Query daemon status (derivation_id, principal, uptime)
|
|
14
|
-
* quit — Close current connection
|
|
15
|
-
* shutdown — Stop the entire daemon gracefully
|
|
14
|
+
* quit — Close current client connection
|
|
15
|
+
* shutdown — Stop the entire daemon gracefully
|
|
16
16
|
*/
|
|
17
17
|
// ============================================================================
|
|
18
18
|
// Helper functions
|
package/dist/rpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqHH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,EAA0B,EAAE,MAAe;IACzE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,EAA0B,EAAE,KAAa;IACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,aAAa,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,0CAA0C,CAAC,CAAC;QACtF,CAAC;QACD,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;SACrB,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,eAAe,CAAC,KAA+B;IAC7D,OAAO,OAAO,IAAI,KAAK,IAAI,OAAQ,KAAqB,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
|
package/dist/serve.d.ts
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Daemon Serve — JSON-RPC over Unix Domain Socket
|
|
2
|
+
* Daemon Serve — JSON-RPC over Unix Domain Socket
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* The daemon creates a socket file and listens for connections. Each client
|
|
8
|
-
* connection is handled independently. "quit" closes the connection;
|
|
9
|
-
* "shutdown" stops the entire daemon.
|
|
10
|
-
*
|
|
11
|
-
* 2. Stdio mode (--stdio): Legacy stdin/stdout mode, single client.
|
|
12
|
-
* Backwards-compatible with the Rust implementation. Reads JSON-RPC from
|
|
13
|
-
* stdin and writes responses to stdout. "quit" stops the daemon.
|
|
14
|
-
*
|
|
15
|
-
* Both modes share the same request handling logic (handleRequest).
|
|
4
|
+
* The daemon creates a socket file and listens for connections. Each client
|
|
5
|
+
* connection is handled independently. "quit" closes the connection;
|
|
6
|
+
* "shutdown" stops the entire daemon.
|
|
16
7
|
*
|
|
17
8
|
* Trust model:
|
|
18
9
|
* - The daemon trusts its callers (local AI agent processes or socket clients).
|
|
19
10
|
* - File paths in encrypt/decrypt requests are not sandboxed — the daemon
|
|
20
11
|
* operates with the same filesystem permissions as the calling process.
|
|
21
12
|
*/
|
|
22
|
-
import type { Readable, Writable } from 'stream';
|
|
23
13
|
import { KeyStore } from './key-store.js';
|
|
24
14
|
/**
|
|
25
15
|
* Run the JSON-RPC daemon over a Unix Domain Socket.
|
|
@@ -36,20 +26,4 @@ import { KeyStore } from './key-store.js';
|
|
|
36
26
|
* @param derivationId - Derivation ID used for the key
|
|
37
27
|
*/
|
|
38
28
|
export declare function runDaemonUds(keyStore: KeyStore, principal: string, derivationId: string): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Run the JSON-RPC daemon over stdin/stdout (legacy mode).
|
|
41
|
-
*
|
|
42
|
-
* Reads one JSON-RPC request per line from stdin, processes it,
|
|
43
|
-
* and writes the response to stdout. Exits on "quit" or stdin EOF.
|
|
44
|
-
*
|
|
45
|
-
* This mode is backwards-compatible with the Rust vetkey-tool implementation.
|
|
46
|
-
* No PID file or socket file is created.
|
|
47
|
-
*
|
|
48
|
-
* @param keyStore - AES-256 key holder (consumed; destroyed on exit)
|
|
49
|
-
* @param principal - Authenticated principal text
|
|
50
|
-
* @param derivationId - Derivation ID used for the key
|
|
51
|
-
* @param input - Optional input stream (defaults to process.stdin, override for testing)
|
|
52
|
-
* @param output - Optional output stream (defaults to process.stdout, override for testing)
|
|
53
|
-
*/
|
|
54
|
-
export declare function runDaemonStdio(keyStore: KeyStore, principal: string, derivationId: string, input?: Readable, output?: Writable): Promise<void>;
|
|
55
29
|
//# sourceMappingURL=serve.d.ts.map
|
package/dist/serve.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Daemon Serve — JSON-RPC over Unix Domain Socket
|
|
2
|
+
* Daemon Serve — JSON-RPC over Unix Domain Socket
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* The daemon creates a socket file and listens for connections. Each client
|
|
8
|
-
* connection is handled independently. "quit" closes the connection;
|
|
9
|
-
* "shutdown" stops the entire daemon.
|
|
10
|
-
*
|
|
11
|
-
* 2. Stdio mode (--stdio): Legacy stdin/stdout mode, single client.
|
|
12
|
-
* Backwards-compatible with the Rust implementation. Reads JSON-RPC from
|
|
13
|
-
* stdin and writes responses to stdout. "quit" stops the daemon.
|
|
14
|
-
*
|
|
15
|
-
* Both modes share the same request handling logic (handleRequest).
|
|
4
|
+
* The daemon creates a socket file and listens for connections. Each client
|
|
5
|
+
* connection is handled independently. "quit" closes the connection;
|
|
6
|
+
* "shutdown" stops the entire daemon.
|
|
16
7
|
*
|
|
17
8
|
* Trust model:
|
|
18
9
|
* - The daemon trusts its callers (local AI agent processes or socket clients).
|
|
@@ -26,6 +17,7 @@ import { join } from 'path';
|
|
|
26
17
|
import { tmpdir } from 'os';
|
|
27
18
|
import { DaemonRuntime } from './daemon.js';
|
|
28
19
|
import { successResponse, errorResponse, parseRpcRequest, isErrorResponse, } from './rpc.js';
|
|
20
|
+
import * as log from './log.js';
|
|
29
21
|
/** Maximum data size for encrypt/decrypt operations (1 GB) */
|
|
30
22
|
const MAX_DATA_SIZE = 1024 * 1024 * 1024;
|
|
31
23
|
/** Maximum IBE ciphertext size for ibe-decrypt (64 KB payload + IBE overhead) */
|
|
@@ -36,7 +28,7 @@ const MAX_IBE_DATA_SIZE = 64 * 1024 + 256;
|
|
|
36
28
|
* Dispatches to the appropriate handler based on the method name.
|
|
37
29
|
* Returns a response and an action indicating what to do next.
|
|
38
30
|
*/
|
|
39
|
-
function handleRequest(req, keyStore, principal, startedAt,
|
|
31
|
+
function handleRequest(req, keyStore, principal, startedAt, sockPath) {
|
|
40
32
|
const { id, method } = req;
|
|
41
33
|
switch (method) {
|
|
42
34
|
case "encrypt": {
|
|
@@ -66,19 +58,18 @@ function handleRequest(req, keyStore, principal, startedAt, mode, sockPath) {
|
|
|
66
58
|
derivation_id: keyStore.derivationId,
|
|
67
59
|
principal,
|
|
68
60
|
started_at: startedAt,
|
|
69
|
-
mode,
|
|
70
61
|
socket_path: sockPath,
|
|
71
62
|
};
|
|
72
63
|
return { response: successResponse(id, status), action: "continue" };
|
|
73
64
|
}
|
|
74
65
|
case "quit":
|
|
75
|
-
//
|
|
66
|
+
// Close this client connection only
|
|
76
67
|
return {
|
|
77
|
-
response: successResponse(id, { message:
|
|
78
|
-
action:
|
|
68
|
+
response: successResponse(id, { message: "Connection closed" }),
|
|
69
|
+
action: "quit",
|
|
79
70
|
};
|
|
80
71
|
case "shutdown":
|
|
81
|
-
// Stop the entire daemon
|
|
72
|
+
// Stop the entire daemon
|
|
82
73
|
return {
|
|
83
74
|
response: successResponse(id, { message: "Shutting down, key zeroized" }),
|
|
84
75
|
action: "shutdown",
|
|
@@ -320,7 +311,7 @@ function readFileChecked(filePath) {
|
|
|
320
311
|
}
|
|
321
312
|
}
|
|
322
313
|
// ============================================================================
|
|
323
|
-
// UDS
|
|
314
|
+
// UDS Daemon
|
|
324
315
|
// ============================================================================
|
|
325
316
|
/**
|
|
326
317
|
* Run the JSON-RPC daemon over a Unix Domain Socket.
|
|
@@ -363,7 +354,7 @@ export function runDaemonUds(keyStore, principal, derivationId) {
|
|
|
363
354
|
return;
|
|
364
355
|
}
|
|
365
356
|
// Handle the request
|
|
366
|
-
const { response, action } = handleRequest(parsed, keyStore, principal, startedAt,
|
|
357
|
+
const { response, action } = handleRequest(parsed, keyStore, principal, startedAt, sockPath);
|
|
367
358
|
writeLine(conn, JSON.stringify(response));
|
|
368
359
|
if (action === "quit") {
|
|
369
360
|
// Close this connection only
|
|
@@ -385,31 +376,31 @@ export function runDaemonUds(keyStore, principal, derivationId) {
|
|
|
385
376
|
// Step 3: Listen on socket
|
|
386
377
|
server.listen(sockPath, () => {
|
|
387
378
|
// Emit ready info to stderr
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
379
|
+
log.info(`Daemon ready. Socket: ${sockPath}`);
|
|
380
|
+
log.info(`Derivation ID: ${derivationId}`);
|
|
381
|
+
log.info(`Principal: ${principal}`);
|
|
391
382
|
});
|
|
392
383
|
server.on("error", (err) => {
|
|
393
384
|
runtime.destroy();
|
|
394
385
|
reject(err);
|
|
395
386
|
});
|
|
396
387
|
// Step 4: Signal handling — store references for cleanup in finishShutdown()
|
|
397
|
-
const onSigterm = () => {
|
|
398
|
-
const onSigint = () => {
|
|
388
|
+
const onSigterm = () => { log.warn("Received SIGTERM, initiating graceful shutdown..."); initiateShutdown(); };
|
|
389
|
+
const onSigint = () => { log.warn("Received SIGINT, initiating graceful shutdown..."); initiateShutdown(); };
|
|
399
390
|
// SIGHUP: terminal hangup — gracefully shut down instead of crashing
|
|
400
|
-
const onSighup = () => {
|
|
391
|
+
const onSighup = () => { log.warn("Received SIGHUP, initiating graceful shutdown..."); initiateShutdown(); };
|
|
401
392
|
process.on("SIGTERM", onSigterm);
|
|
402
393
|
process.on("SIGINT", onSigint);
|
|
403
394
|
process.on("SIGHUP", onSighup);
|
|
404
395
|
// Catch uncaught exceptions / unhandled rejections to ensure key zeroization
|
|
405
396
|
// and PID file cleanup even on unexpected errors.
|
|
406
397
|
const onUncaughtException = (err) => {
|
|
407
|
-
|
|
408
|
-
|
|
398
|
+
log.error(`Uncaught exception in daemon: ${err.message}`);
|
|
399
|
+
log.error(err.stack);
|
|
409
400
|
initiateShutdown();
|
|
410
401
|
};
|
|
411
402
|
const onUnhandledRejection = (reason) => {
|
|
412
|
-
|
|
403
|
+
log.error(`Unhandled rejection in daemon: ${reason}`);
|
|
413
404
|
initiateShutdown();
|
|
414
405
|
};
|
|
415
406
|
process.on("uncaughtException", onUncaughtException);
|
|
@@ -456,71 +447,12 @@ export function runDaemonUds(keyStore, principal, derivationId) {
|
|
|
456
447
|
// Cleanup: destroy key, remove files
|
|
457
448
|
keyStore.destroy();
|
|
458
449
|
runtime.destroy();
|
|
459
|
-
|
|
450
|
+
log.info("Daemon stopped. Key has been zeroized.");
|
|
460
451
|
resolve();
|
|
461
452
|
}
|
|
462
453
|
});
|
|
463
454
|
}
|
|
464
455
|
// ============================================================================
|
|
465
|
-
// Stdio Mode (Legacy, --stdio)
|
|
466
|
-
// ============================================================================
|
|
467
|
-
/**
|
|
468
|
-
* Run the JSON-RPC daemon over stdin/stdout (legacy mode).
|
|
469
|
-
*
|
|
470
|
-
* Reads one JSON-RPC request per line from stdin, processes it,
|
|
471
|
-
* and writes the response to stdout. Exits on "quit" or stdin EOF.
|
|
472
|
-
*
|
|
473
|
-
* This mode is backwards-compatible with the Rust vetkey-tool implementation.
|
|
474
|
-
* No PID file or socket file is created.
|
|
475
|
-
*
|
|
476
|
-
* @param keyStore - AES-256 key holder (consumed; destroyed on exit)
|
|
477
|
-
* @param principal - Authenticated principal text
|
|
478
|
-
* @param derivationId - Derivation ID used for the key
|
|
479
|
-
* @param input - Optional input stream (defaults to process.stdin, override for testing)
|
|
480
|
-
* @param output - Optional output stream (defaults to process.stdout, override for testing)
|
|
481
|
-
*/
|
|
482
|
-
export function runDaemonStdio(keyStore, principal, derivationId, input, output) {
|
|
483
|
-
return new Promise((resolve) => {
|
|
484
|
-
const stdin = input ?? process.stdin;
|
|
485
|
-
const stdout = output ?? process.stdout;
|
|
486
|
-
const startedAt = new Date().toISOString();
|
|
487
|
-
// Emit ready signal to stdout (same format as Rust version)
|
|
488
|
-
const readyMsg = JSON.stringify({
|
|
489
|
-
ready: true,
|
|
490
|
-
derivation_id: derivationId,
|
|
491
|
-
principal,
|
|
492
|
-
started_at: startedAt,
|
|
493
|
-
});
|
|
494
|
-
stdout.write(readyMsg + "\n");
|
|
495
|
-
// Read input line by line
|
|
496
|
-
const rl = createInterface({ input: stdin });
|
|
497
|
-
rl.on("line", (line) => {
|
|
498
|
-
if (!line.trim())
|
|
499
|
-
return; // Skip blank lines
|
|
500
|
-
// Parse the request
|
|
501
|
-
const parsed = parseRpcRequest(line);
|
|
502
|
-
if (isErrorResponse(parsed)) {
|
|
503
|
-
stdout.write(JSON.stringify(parsed) + "\n");
|
|
504
|
-
return;
|
|
505
|
-
}
|
|
506
|
-
// Handle the request
|
|
507
|
-
const { response, action } = handleRequest(parsed, keyStore, principal, startedAt, "stdio");
|
|
508
|
-
stdout.write(JSON.stringify(response) + "\n");
|
|
509
|
-
if (action === "shutdown" || action === "quit") {
|
|
510
|
-
// In stdio mode, both quit and shutdown stop the daemon
|
|
511
|
-
rl.close();
|
|
512
|
-
keyStore.destroy();
|
|
513
|
-
resolve();
|
|
514
|
-
}
|
|
515
|
-
});
|
|
516
|
-
// stdin EOF — daemon exits
|
|
517
|
-
rl.on("close", () => {
|
|
518
|
-
keyStore.destroy();
|
|
519
|
-
resolve();
|
|
520
|
-
});
|
|
521
|
-
});
|
|
522
|
-
}
|
|
523
|
-
// ============================================================================
|
|
524
456
|
// Helpers
|
|
525
457
|
// ============================================================================
|
|
526
458
|
/** Write a line to a socket, handling write errors gracefully */
|