agent-passport-system 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +194 -0
  3. package/dist/src/cli/index.d.ts +3 -0
  4. package/dist/src/cli/index.d.ts.map +1 -0
  5. package/dist/src/cli/index.js +569 -0
  6. package/dist/src/cli/index.js.map +1 -0
  7. package/dist/src/contract.d.ts +97 -0
  8. package/dist/src/contract.d.ts.map +1 -0
  9. package/dist/src/contract.js +161 -0
  10. package/dist/src/contract.js.map +1 -0
  11. package/dist/src/core/attribution.d.ts +71 -0
  12. package/dist/src/core/attribution.d.ts.map +1 -0
  13. package/dist/src/core/attribution.js +277 -0
  14. package/dist/src/core/attribution.js.map +1 -0
  15. package/dist/src/core/canonical.d.ts +2 -0
  16. package/dist/src/core/canonical.d.ts.map +1 -0
  17. package/dist/src/core/canonical.js +23 -0
  18. package/dist/src/core/canonical.js.map +1 -0
  19. package/dist/src/core/delegation.d.ts +41 -0
  20. package/dist/src/core/delegation.d.ts.map +1 -0
  21. package/dist/src/core/delegation.js +173 -0
  22. package/dist/src/core/delegation.js.map +1 -0
  23. package/dist/src/core/index.d.ts +3 -0
  24. package/dist/src/core/index.d.ts.map +1 -0
  25. package/dist/src/core/index.js +3 -0
  26. package/dist/src/core/index.js.map +1 -0
  27. package/dist/src/core/passport.d.ts +9 -0
  28. package/dist/src/core/passport.d.ts.map +1 -0
  29. package/dist/src/core/passport.js +76 -0
  30. package/dist/src/core/passport.js.map +1 -0
  31. package/dist/src/core/values.d.ts +49 -0
  32. package/dist/src/core/values.d.ts.map +1 -0
  33. package/dist/src/core/values.js +320 -0
  34. package/dist/src/core/values.js.map +1 -0
  35. package/dist/src/crypto/index.d.ts +2 -0
  36. package/dist/src/crypto/index.d.ts.map +1 -0
  37. package/dist/src/crypto/index.js +2 -0
  38. package/dist/src/crypto/index.js.map +1 -0
  39. package/dist/src/crypto/keys.d.ts +6 -0
  40. package/dist/src/crypto/keys.d.ts.map +1 -0
  41. package/dist/src/crypto/keys.js +63 -0
  42. package/dist/src/crypto/keys.js.map +1 -0
  43. package/dist/src/index.d.ts +13 -0
  44. package/dist/src/index.d.ts.map +1 -0
  45. package/dist/src/index.js +27 -0
  46. package/dist/src/index.js.map +1 -0
  47. package/dist/src/types/index.d.ts +2 -0
  48. package/dist/src/types/index.d.ts.map +1 -0
  49. package/dist/src/types/index.js +2 -0
  50. package/dist/src/types/index.js.map +1 -0
  51. package/dist/src/types/passport.d.ts +260 -0
  52. package/dist/src/types/passport.d.ts.map +1 -0
  53. package/dist/src/types/passport.js +3 -0
  54. package/dist/src/types/passport.js.map +1 -0
  55. package/dist/src/verification/index.d.ts +3 -0
  56. package/dist/src/verification/index.d.ts.map +1 -0
  57. package/dist/src/verification/index.js +3 -0
  58. package/dist/src/verification/index.js.map +1 -0
  59. package/dist/src/verification/reputation.d.ts +4 -0
  60. package/dist/src/verification/reputation.d.ts.map +1 -0
  61. package/dist/src/verification/reputation.js +43 -0
  62. package/dist/src/verification/reputation.js.map +1 -0
  63. package/dist/src/verification/verify.d.ts +5 -0
  64. package/dist/src/verification/verify.d.ts.map +1 -0
  65. package/dist/src/verification/verify.js +69 -0
  66. package/dist/src/verification/verify.js.map +1 -0
  67. package/package.json +59 -0
  68. package/values/floor.yaml +204 -0
@@ -0,0 +1,569 @@
1
+ #!/usr/bin/env node
2
+ // ══════════════════════════════════════════════════════════════
3
+ // Agent Social Contract — CLI
4
+ // ══════════════════════════════════════════════════════════════
5
+ //
6
+ // passport join — Create an agent in the social contract
7
+ // passport verify — Verify an agent's passport + attestation
8
+ // passport delegate — Grant authority to another agent
9
+ // passport work — Record a unit of work
10
+ // passport prove — Generate contribution proofs
11
+ // passport audit — Check compliance against the Floor
12
+ // passport inspect — View passport/receipt/proof details
13
+ // passport status — Show current agent status
14
+ //
15
+ // Data is stored in .passport/ directory:
16
+ // .passport/agent.json — passport + keys + attestation
17
+ // .passport/delegations/ — active delegations
18
+ // .passport/receipts/ — signed action receipts
19
+ // .passport/proofs/ — generated proofs
20
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync } from 'node:fs';
21
+ import { join } from 'node:path';
22
+ import { joinSocialContract, verifySocialContract, delegate, recordWork, proveContributions, auditCompliance, generateKeyPair, loadFloor, verifyMerkleProof, verifyPassport, verifyAttestation } from '../index.js';
23
+ // ── Paths ──
24
+ const DIR = '.passport';
25
+ const AGENT_FILE = join(DIR, 'agent.json');
26
+ const DEL_DIR = join(DIR, 'delegations');
27
+ const RECEIPT_DIR = join(DIR, 'receipts');
28
+ const PROOF_DIR = join(DIR, 'proofs');
29
+ // ── Storage helpers ──
30
+ function ensureDirs() {
31
+ for (const d of [DIR, DEL_DIR, RECEIPT_DIR, PROOF_DIR]) {
32
+ if (!existsSync(d))
33
+ mkdirSync(d, { recursive: true });
34
+ }
35
+ }
36
+ function saveJSON(path, data) {
37
+ writeFileSync(path, JSON.stringify(data, null, 2));
38
+ }
39
+ function loadJSON(path) {
40
+ return JSON.parse(readFileSync(path, 'utf8'));
41
+ }
42
+ function agentExists() {
43
+ return existsSync(AGENT_FILE);
44
+ }
45
+ function loadAgent() {
46
+ if (!agentExists()) {
47
+ console.error('❌ No agent found. Run: passport join');
48
+ process.exit(1);
49
+ }
50
+ return loadJSON(AGENT_FILE);
51
+ }
52
+ function loadDelegations() {
53
+ if (!existsSync(DEL_DIR))
54
+ return [];
55
+ return readdirSync(DEL_DIR)
56
+ .filter(f => f.endsWith('.json'))
57
+ .map(f => loadJSON(join(DEL_DIR, f)));
58
+ }
59
+ function loadReceipts() {
60
+ if (!existsSync(RECEIPT_DIR))
61
+ return [];
62
+ return readdirSync(RECEIPT_DIR)
63
+ .filter(f => f.endsWith('.json'))
64
+ .map(f => loadJSON(join(RECEIPT_DIR, f)));
65
+ }
66
+ // ── CLI Router ──
67
+ const args = process.argv.slice(2);
68
+ const command = args[0];
69
+ switch (command) {
70
+ case 'join':
71
+ cmdJoin();
72
+ break;
73
+ case 'verify':
74
+ cmdVerify();
75
+ break;
76
+ case 'delegate':
77
+ cmdDelegate();
78
+ break;
79
+ case 'work':
80
+ cmdWork();
81
+ break;
82
+ case 'prove':
83
+ cmdProve();
84
+ break;
85
+ case 'audit':
86
+ cmdAudit();
87
+ break;
88
+ case 'inspect':
89
+ cmdInspect();
90
+ break;
91
+ case 'status':
92
+ cmdStatus();
93
+ break;
94
+ default:
95
+ cmdHelp();
96
+ break;
97
+ }
98
+ // ══════════════════════════════════════
99
+ // JOIN — Create agent in the social contract
100
+ // ══════════════════════════════════════
101
+ function cmdJoin() {
102
+ if (agentExists()) {
103
+ console.error('❌ Agent already exists. Delete .passport/ to start over.');
104
+ process.exit(1);
105
+ }
106
+ const name = getFlag('--name') || 'agent';
107
+ const mission = getFlag('--mission') || 'General purpose autonomous agent';
108
+ const owner = getFlag('--owner') || 'anonymous';
109
+ const caps = getFlag('--capabilities')?.split(',') || ['code_execution', 'web_search'];
110
+ const platform = getFlag('--platform') || 'node';
111
+ const models = getFlag('--models')?.split(',') || ['unknown'];
112
+ const floorPath = getFlag('--floor');
113
+ const beneficiaryId = getFlag('--beneficiary');
114
+ const extensions = getFlag('--extensions')?.split(',') || [];
115
+ let floor;
116
+ if (floorPath) {
117
+ if (!existsSync(floorPath)) {
118
+ console.error(`❌ Floor file not found: ${floorPath}`);
119
+ process.exit(1);
120
+ }
121
+ floor = readFileSync(floorPath, 'utf8');
122
+ }
123
+ const agent = joinSocialContract({
124
+ name,
125
+ mission,
126
+ owner,
127
+ capabilities: caps,
128
+ platform,
129
+ models,
130
+ floor,
131
+ floorExtensions: extensions,
132
+ beneficiary: beneficiaryId ? { id: beneficiaryId, relationship: 'creator' } : undefined
133
+ });
134
+ ensureDirs();
135
+ saveJSON(AGENT_FILE, {
136
+ passport: agent.passport,
137
+ keyPair: agent.keyPair,
138
+ attestation: agent.attestation,
139
+ agentId: agent.agentId,
140
+ publicKey: agent.publicKey
141
+ });
142
+ console.log('🤝 Joined the Agent Social Contract');
143
+ console.log('');
144
+ console.log(` Agent: ${agent.agentId}`);
145
+ console.log(` Owner: ${owner}`);
146
+ console.log(` Mission: ${mission}`);
147
+ console.log(` Caps: ${caps.join(', ')}`);
148
+ console.log(` Key: ${agent.publicKey.slice(0, 16)}...`);
149
+ if (agent.attestation) {
150
+ console.log(` Floor: v${agent.attestation.floorVersion} ✓ attested`);
151
+ }
152
+ if (beneficiaryId) {
153
+ console.log(` Beneficiary: ${beneficiaryId}`);
154
+ }
155
+ console.log('');
156
+ console.log(` Stored in ${DIR}/`);
157
+ console.log(` ⚠️ Keep ${AGENT_FILE} safe — contains private key`);
158
+ }
159
+ // ══════════════════════════════════════
160
+ // VERIFY — Check another agent's passport
161
+ // ══════════════════════════════════════
162
+ function cmdVerify() {
163
+ const file = args[1];
164
+ if (!file) {
165
+ console.error('Usage: passport verify <passport.json>');
166
+ console.error(' passport verify <agent.json>');
167
+ process.exit(1);
168
+ }
169
+ if (!existsSync(file)) {
170
+ console.error(`❌ File not found: ${file}`);
171
+ process.exit(1);
172
+ }
173
+ const data = loadJSON(file);
174
+ // Support both full agent files and passport-only files
175
+ const passport = data.passport || data;
176
+ const attestation = data.attestation || null;
177
+ const trust = verifySocialContract(passport, attestation);
178
+ console.log('');
179
+ if (trust.overall) {
180
+ console.log('✅ TRUSTED');
181
+ }
182
+ else {
183
+ console.log('❌ NOT TRUSTED');
184
+ }
185
+ console.log('');
186
+ console.log(` Identity: ${trust.identity.valid ? '✓ valid' : '✗ INVALID'}`);
187
+ if (trust.identity.errors.length) {
188
+ for (const e of trust.identity.errors)
189
+ console.log(` ✗ ${e}`);
190
+ }
191
+ if (trust.values) {
192
+ console.log(` Values: ${trust.values.valid ? '✓ attested' : '✗ INVALID'}`);
193
+ if (trust.values.errors.length) {
194
+ for (const e of trust.values.errors)
195
+ console.log(` ✗ ${e}`);
196
+ }
197
+ }
198
+ else {
199
+ console.log(` Values: — not attested`);
200
+ }
201
+ if (passport.passport) {
202
+ const p = passport.passport;
203
+ console.log('');
204
+ console.log(` Agent: ${p.agentName} (${p.agentId})`);
205
+ console.log(` Owner: ${p.ownerAlias}`);
206
+ console.log(` Mission: ${p.mission}`);
207
+ console.log(` Caps: ${p.capabilities.join(', ')}`);
208
+ console.log(` Expires: ${p.expiresAt}`);
209
+ }
210
+ console.log('');
211
+ }
212
+ // ══════════════════════════════════════
213
+ // DELEGATE — Grant authority
214
+ // ══════════════════════════════════════
215
+ function cmdDelegate() {
216
+ const agent = loadAgent();
217
+ const toKey = getFlag('--to');
218
+ const scope = getFlag('--scope')?.split(',');
219
+ const limit = Number(getFlag('--limit') || '0') || undefined;
220
+ const hours = Number(getFlag('--hours') || '24');
221
+ const depth = Number(getFlag('--depth') || '1');
222
+ if (!toKey || !scope) {
223
+ console.error('Usage: passport delegate --to <publicKey> --scope <scope1,scope2> [--limit 500] [--hours 24] [--depth 1]');
224
+ process.exit(1);
225
+ }
226
+ const del = delegate({
227
+ from: agent,
228
+ toPublicKey: toKey,
229
+ scope,
230
+ spendLimit: limit,
231
+ maxDepth: depth,
232
+ expiresInHours: hours
233
+ });
234
+ ensureDirs();
235
+ saveJSON(join(DEL_DIR, `${del.delegationId}.json`), del);
236
+ console.log('📋 Delegation created');
237
+ console.log('');
238
+ console.log(` ID: ${del.delegationId}`);
239
+ console.log(` From: ${agent.publicKey.slice(0, 16)}...`);
240
+ console.log(` To: ${toKey.slice(0, 16)}...`);
241
+ console.log(` Scope: ${scope.join(', ')}`);
242
+ if (limit)
243
+ console.log(` Limit: $${limit}`);
244
+ console.log(` Depth: max ${depth}`);
245
+ console.log(` Expires: ${del.expiresAt}`);
246
+ console.log('');
247
+ }
248
+ // ══════════════════════════════════════
249
+ // WORK — Record an action
250
+ // ══════════════════════════════════════
251
+ function cmdWork() {
252
+ const agent = loadAgent();
253
+ const type = getFlag('--type') || 'task';
254
+ const target = getFlag('--target') || 'unknown';
255
+ const scope = getFlag('--scope');
256
+ const spend = Number(getFlag('--spend') || '0');
257
+ const result = (getFlag('--result') || 'success');
258
+ const summary = getFlag('--summary') || '';
259
+ const delId = getFlag('--delegation');
260
+ const chain = getFlag('--chain')?.split(',');
261
+ if (!scope) {
262
+ console.error('Usage: passport work --scope <scope> [--type task] [--target x] [--spend 10] [--result success] [--summary "did stuff"]');
263
+ console.error(' --delegation <id> — delegation to act under');
264
+ console.error(' --chain <key1,key2,...> — delegation chain (principal to executor)');
265
+ process.exit(1);
266
+ }
267
+ // Find delegation
268
+ const delegations = loadDelegations();
269
+ let del;
270
+ if (delId) {
271
+ del = delegations.find(d => d.delegationId === delId);
272
+ }
273
+ else {
274
+ // Auto-find: first delegation that includes this scope
275
+ del = delegations.find(d => d.scope.includes(scope));
276
+ }
277
+ if (!del) {
278
+ console.error('❌ No valid delegation found for scope: ' + scope);
279
+ console.error(' Create one with: passport delegate --to <key> --scope ' + scope);
280
+ process.exit(1);
281
+ }
282
+ // Build chain: default to [delegator, agent]
283
+ const delegationChain = chain || [del.delegatedBy, agent.publicKey];
284
+ const receipt = recordWork(agent, del, delegationChain, { type, target, scope, spend, result, summary });
285
+ ensureDirs();
286
+ saveJSON(join(RECEIPT_DIR, `${receipt.receiptId}.json`), receipt);
287
+ console.log('📝 Work recorded');
288
+ console.log('');
289
+ console.log(` Receipt: ${receipt.receiptId}`);
290
+ console.log(` Type: ${type}`);
291
+ console.log(` Target: ${target}`);
292
+ console.log(` Scope: ${scope}`);
293
+ if (spend)
294
+ console.log(` Spend: $${spend}`);
295
+ console.log(` Result: ${result}`);
296
+ if (summary)
297
+ console.log(` Summary: ${summary}`);
298
+ console.log(` Under: ${del.delegationId}`);
299
+ console.log('');
300
+ }
301
+ // ══════════════════════════════════════
302
+ // PROVE — Generate contribution proofs
303
+ // ══════════════════════════════════════
304
+ function cmdProve() {
305
+ const agent = loadAgent();
306
+ const beneficiary = getFlag('--beneficiary') || agent.publicKey;
307
+ const receipts = loadReceipts();
308
+ const delegations = loadDelegations();
309
+ if (receipts.length === 0) {
310
+ console.error('❌ No receipts found. Record work first: passport work --scope ...');
311
+ process.exit(1);
312
+ }
313
+ const proof = proveContributions(agent, receipts, delegations, beneficiary);
314
+ ensureDirs();
315
+ // Serialize proofs map
316
+ const serializedProofs = {};
317
+ for (const [id, p] of proof.proofs) {
318
+ serializedProofs[id] = p;
319
+ }
320
+ const output = {
321
+ attribution: proof.attribution,
322
+ merkleRoot: proof.merkleRoot,
323
+ proofs: serializedProofs,
324
+ traces: proof.traces,
325
+ generatedAt: new Date().toISOString()
326
+ };
327
+ const outFile = join(PROOF_DIR, `proof-${Date.now().toString(36)}.json`);
328
+ saveJSON(outFile, output);
329
+ console.log('🌳 Contribution proof generated');
330
+ console.log('');
331
+ console.log(` Agent: ${agent.agentId}`);
332
+ console.log(` Beneficiary: ${beneficiary}`);
333
+ console.log(` Receipts: ${proof.attribution.receiptCount}`);
334
+ console.log(` Weight: ${proof.attribution.totalWeight}`);
335
+ console.log(` Merkle root: ${proof.merkleRoot.slice(0, 24)}...`);
336
+ console.log(` Proofs: ${proof.proofs.size} (one per receipt)`);
337
+ // Verify each proof
338
+ let allValid = true;
339
+ for (const [id, merkleProof] of proof.proofs) {
340
+ if (!verifyMerkleProof(merkleProof)) {
341
+ console.log(` ❌ ${id}: proof INVALID`);
342
+ allValid = false;
343
+ }
344
+ }
345
+ if (allValid)
346
+ console.log(` Verified: ✓ all proofs valid`);
347
+ // Show traces
348
+ const verified = proof.traces.filter(t => t.verified).length;
349
+ console.log(` Traces: ${verified}/${proof.traces.length} fully verified`);
350
+ console.log('');
351
+ console.log(` Saved: ${outFile}`);
352
+ console.log('');
353
+ }
354
+ // ══════════════════════════════════════
355
+ // AUDIT — Check compliance against Floor
356
+ // ══════════════════════════════════════
357
+ function cmdAudit() {
358
+ const floorPath = getFlag('--floor') || args[1];
359
+ if (!floorPath) {
360
+ console.error('Usage: passport audit --floor <floor.yaml>');
361
+ process.exit(1);
362
+ }
363
+ if (!existsSync(floorPath)) {
364
+ console.error(`❌ Floor file not found: ${floorPath}`);
365
+ process.exit(1);
366
+ }
367
+ const agent = loadAgent();
368
+ const receipts = loadReceipts();
369
+ const delegations = loadDelegations();
370
+ const floor = loadFloor(readFileSync(floorPath, 'utf8'));
371
+ const verifier = generateKeyPair();
372
+ // Build delegation context
373
+ const delContext = new Map();
374
+ for (const d of delegations) {
375
+ delContext.set(d.delegationId, { scope: d.scope, revoked: false });
376
+ }
377
+ const report = auditCompliance(agent.agentId, receipts, floor, delContext, verifier);
378
+ console.log('🔍 Compliance Audit');
379
+ console.log('');
380
+ console.log(` Agent: ${agent.agentId}`);
381
+ console.log(` Floor: v${report.floorVersion}`);
382
+ console.log(` Receipts: ${report.receiptsAnalyzed}`);
383
+ console.log(` Compliance: ${(report.overallCompliance * 100).toFixed(1)}%`);
384
+ console.log('');
385
+ for (const check of report.checks) {
386
+ const icon = check.status === 'enforced' ? '🔒' :
387
+ check.status === 'attested' ? '📝' :
388
+ check.status === 'violation' ? '❌' : '❓';
389
+ console.log(` ${icon} ${check.principleName}: ${check.status}`);
390
+ console.log(` ${check.detail}`);
391
+ }
392
+ console.log('');
393
+ }
394
+ // ══════════════════════════════════════
395
+ // INSPECT — View any protocol artifact
396
+ // ══════════════════════════════════════
397
+ function cmdInspect() {
398
+ const file = args[1];
399
+ if (!file) {
400
+ console.error('Usage: passport inspect <file.json>');
401
+ process.exit(1);
402
+ }
403
+ if (!existsSync(file)) {
404
+ console.error(`❌ File not found: ${file}`);
405
+ process.exit(1);
406
+ }
407
+ const data = loadJSON(file);
408
+ console.log('');
409
+ // Detect what kind of artifact this is (order matters — check specific fields first)
410
+ if (data.passport && data.keyPair) {
411
+ console.log('📋 Agent (full)');
412
+ console.log(` ID: ${data.agentId}`);
413
+ console.log(` Name: ${data.passport.passport.agentName}`);
414
+ console.log(` Key: ${data.publicKey.slice(0, 16)}...`);
415
+ console.log(` Floor: ${data.attestation ? 'v' + data.attestation.floorVersion : 'none'}`);
416
+ }
417
+ else if (data.passport && data.signature && data.signedAt) {
418
+ console.log('📋 Signed Passport');
419
+ const p = data.passport;
420
+ console.log(` Agent: ${p.agentName} (${p.agentId})`);
421
+ console.log(` Owner: ${p.ownerAlias}`);
422
+ console.log(` Caps: ${p.capabilities.join(', ')}`);
423
+ console.log(` Expires: ${p.expiresAt}`);
424
+ }
425
+ else if (data.receiptId) {
426
+ console.log('📋 Action Receipt');
427
+ console.log(` ID: ${data.receiptId}`);
428
+ console.log(` Agent: ${data.agentId}`);
429
+ console.log(` Action: ${data.action?.type} → ${data.action?.target}`);
430
+ console.log(` Scope: ${data.action?.scopeUsed}`);
431
+ console.log(` Result: ${data.result?.status}`);
432
+ console.log(` Chain: ${data.delegationChain?.length} hops`);
433
+ }
434
+ else if (data.attribution) {
435
+ console.log('📋 Contribution Proof');
436
+ console.log(` Agent: ${data.attribution.agentId}`);
437
+ console.log(` Weight: ${data.attribution.totalWeight}`);
438
+ console.log(` Root: ${data.merkleRoot?.slice(0, 24)}...`);
439
+ console.log(` Proofs: ${Object.keys(data.proofs || {}).length}`);
440
+ console.log(` Traces: ${data.traces?.length || 0}`);
441
+ }
442
+ else if (data.reportId && data.checks) {
443
+ console.log('📋 Compliance Report');
444
+ console.log(` Agent: ${data.agentId}`);
445
+ console.log(` Floor: v${data.floorVersion}`);
446
+ console.log(` Score: ${(data.overallCompliance * 100).toFixed(1)}%`);
447
+ console.log(` Checks: ${data.checks.length}`);
448
+ }
449
+ else if (data.delegationId) {
450
+ console.log('📋 Delegation');
451
+ console.log(` ID: ${data.delegationId}`);
452
+ console.log(` From: ${data.delegatedBy?.slice(0, 16)}...`);
453
+ console.log(` To: ${data.delegatedTo?.slice(0, 16)}...`);
454
+ console.log(` Scope: ${data.scope?.join(', ')}`);
455
+ console.log(` Expires: ${data.expiresAt}`);
456
+ }
457
+ else {
458
+ console.log('📋 Unknown artifact');
459
+ console.log(JSON.stringify(data, null, 2).slice(0, 500));
460
+ }
461
+ console.log('');
462
+ }
463
+ // ══════════════════════════════════════
464
+ // STATUS — Current agent status
465
+ // ══════════════════════════════════════
466
+ function cmdStatus() {
467
+ if (!agentExists()) {
468
+ console.log('');
469
+ console.log(' No agent found.');
470
+ console.log(' Run: passport join --name <name> --owner <owner>');
471
+ console.log('');
472
+ return;
473
+ }
474
+ const agent = loadAgent();
475
+ const delegations = loadDelegations();
476
+ const receipts = loadReceipts();
477
+ const proofFiles = existsSync(PROOF_DIR)
478
+ ? readdirSync(PROOF_DIR).filter(f => f.endsWith('.json'))
479
+ : [];
480
+ console.log('');
481
+ console.log('🤝 Agent Social Contract — Status');
482
+ console.log('━'.repeat(40));
483
+ console.log('');
484
+ console.log(` Agent: ${agent.agentId}`);
485
+ console.log(` Key: ${agent.publicKey.slice(0, 16)}...`);
486
+ // Verify identity
487
+ const idCheck = verifyPassport(agent.passport);
488
+ console.log(` Identity: ${idCheck.valid ? '✓ valid' : '✗ INVALID'}`);
489
+ // Check attestation
490
+ if (agent.attestation) {
491
+ const attCheck = verifyAttestation(agent.attestation);
492
+ console.log(` Floor: v${agent.attestation.floorVersion} ${attCheck.valid ? '✓' : '✗ ' + attCheck.errors[0]}`);
493
+ }
494
+ else {
495
+ console.log(` Floor: — not attested`);
496
+ }
497
+ console.log('');
498
+ console.log(` Delegations: ${delegations.length}`);
499
+ const active = delegations.filter(d => new Date(d.expiresAt) > new Date());
500
+ const expired = delegations.length - active.length;
501
+ if (expired > 0)
502
+ console.log(` (${expired} expired)`);
503
+ console.log(` Receipts: ${receipts.length}`);
504
+ if (receipts.length > 0) {
505
+ const scopes = new Set(receipts.map(r => r.action.scopeUsed));
506
+ console.log(` Scopes: ${[...scopes].join(', ')}`);
507
+ const success = receipts.filter(r => r.result.status === 'success').length;
508
+ console.log(` Success: ${success}/${receipts.length}`);
509
+ }
510
+ console.log(` Proofs: ${proofFiles.length}`);
511
+ console.log('');
512
+ }
513
+ // ══════════════════════════════════════
514
+ // HELP
515
+ // ══════════════════════════════════════
516
+ function cmdHelp() {
517
+ console.log(`
518
+ 🤝 Agent Social Contract — CLI
519
+
520
+ GETTING STARTED:
521
+ passport join --name aeoess --owner tymofii --floor values/floor.yaml
522
+ passport status
523
+
524
+ COMMANDS:
525
+ join Create an agent in the social contract
526
+ --name <name> --owner <owner> --mission <text>
527
+ --capabilities code_execution,web_search
528
+ --platform node --models claude-sonnet
529
+ --floor <floor.yaml> --beneficiary <id>
530
+
531
+ verify Verify another agent's passport
532
+ passport verify <agent.json or passport.json>
533
+
534
+ delegate Grant authority to another agent
535
+ --to <publicKey> --scope <scope1,scope2>
536
+ --limit <amount> --hours <24> --depth <1>
537
+
538
+ work Record a unit of work
539
+ --scope <scope> --type <task> --target <x>
540
+ --spend <10> --result success --summary "text"
541
+ --delegation <id> --chain <key1,key2>
542
+
543
+ prove Generate contribution proofs (Merkle tree)
544
+ --beneficiary <id>
545
+
546
+ audit Check compliance against the Floor
547
+ --floor <floor.yaml>
548
+
549
+ inspect View any protocol artifact
550
+ passport inspect <file.json>
551
+
552
+ status Show current agent status
553
+
554
+ DATA:
555
+ All data stored in .passport/ directory.
556
+ Keep .passport/agent.json safe — it contains your private key.
557
+
558
+ PROTOCOL:
559
+ https://github.com/aeoess/agent-passport-system
560
+ `);
561
+ }
562
+ // ── Flag parser ──
563
+ function getFlag(flag) {
564
+ const idx = args.indexOf(flag);
565
+ if (idx === -1 || idx + 1 >= args.length)
566
+ return undefined;
567
+ return args[idx + 1];
568
+ }
569
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}