agenticpool 1.0.18 → 2.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.
Files changed (132) hide show
  1. package/README.md +68 -118
  2. package/bin/agenticpool.js +6 -0
  3. package/dist/adapters/autogen.d.ts +33 -0
  4. package/dist/adapters/autogen.d.ts.map +1 -0
  5. package/dist/adapters/autogen.js +49 -0
  6. package/dist/adapters/autogen.js.map +1 -0
  7. package/dist/adapters/crewai.d.ts +30 -0
  8. package/dist/adapters/crewai.d.ts.map +1 -0
  9. package/dist/adapters/crewai.js +48 -0
  10. package/dist/adapters/crewai.js.map +1 -0
  11. package/dist/adapters/langchain.d.ts +30 -0
  12. package/dist/adapters/langchain.d.ts.map +1 -0
  13. package/dist/adapters/langchain.js +53 -0
  14. package/dist/adapters/langchain.js.map +1 -0
  15. package/dist/adapters/llamaindex.d.ts +29 -0
  16. package/dist/adapters/llamaindex.d.ts.map +1 -0
  17. package/dist/adapters/llamaindex.js +47 -0
  18. package/dist/adapters/llamaindex.js.map +1 -0
  19. package/dist/adapters/openai.d.ts +21 -0
  20. package/dist/adapters/openai.d.ts.map +1 -0
  21. package/dist/adapters/openai.js +51 -0
  22. package/dist/adapters/openai.js.map +1 -0
  23. package/dist/cli.d.ts +3 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +187 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/client.d.ts +115 -0
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +251 -0
  30. package/dist/client.js.map +1 -0
  31. package/dist/commands/balance.d.ts +4 -0
  32. package/dist/commands/balance.d.ts.map +1 -0
  33. package/dist/commands/balance.js +34 -0
  34. package/dist/commands/balance.js.map +1 -0
  35. package/dist/commands/contract.d.ts +20 -0
  36. package/dist/commands/contract.d.ts.map +1 -0
  37. package/dist/commands/contract.js +188 -0
  38. package/dist/commands/contract.js.map +1 -0
  39. package/dist/commands/favor.d.ts +21 -0
  40. package/dist/commands/favor.d.ts.map +1 -0
  41. package/dist/commands/favor.js +144 -0
  42. package/dist/commands/favor.js.map +1 -0
  43. package/dist/commands/init.d.ts +5 -0
  44. package/dist/commands/init.d.ts.map +1 -0
  45. package/dist/commands/init.js +77 -0
  46. package/dist/commands/init.js.map +1 -0
  47. package/dist/commands/reputation.d.ts +2 -0
  48. package/dist/commands/reputation.d.ts.map +1 -0
  49. package/dist/commands/reputation.js +38 -0
  50. package/dist/commands/reputation.js.map +1 -0
  51. package/dist/commands/serve.d.ts +7 -0
  52. package/dist/commands/serve.d.ts.map +1 -0
  53. package/dist/commands/serve.js +110 -0
  54. package/dist/commands/serve.js.map +1 -0
  55. package/dist/commands/services.d.ts +16 -0
  56. package/dist/commands/services.d.ts.map +1 -0
  57. package/dist/commands/services.js +93 -0
  58. package/dist/commands/services.js.map +1 -0
  59. package/dist/commands/trust.d.ts +2 -0
  60. package/dist/commands/trust.d.ts.map +1 -0
  61. package/dist/commands/trust.js +44 -0
  62. package/dist/commands/trust.js.map +1 -0
  63. package/dist/commands/whoami.d.ts +2 -0
  64. package/dist/commands/whoami.d.ts.map +1 -0
  65. package/dist/commands/whoami.js +32 -0
  66. package/dist/commands/whoami.js.map +1 -0
  67. package/dist/config.d.ts +30 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +72 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/economy/duckies.d.ts +75 -0
  72. package/dist/economy/duckies.d.ts.map +1 -0
  73. package/dist/economy/duckies.js +386 -0
  74. package/dist/economy/duckies.js.map +1 -0
  75. package/dist/index.d.ts +12 -2
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +12 -29
  78. package/dist/index.js.map +1 -0
  79. package/dist/types.d.ts +90 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +5 -0
  82. package/dist/types.js.map +1 -0
  83. package/package.json +28 -38
  84. package/LICENSE +0 -1
  85. package/dist/api/ApiClient.d.ts +0 -37
  86. package/dist/api/ApiClient.js +0 -160
  87. package/dist/api/index.d.ts +0 -1
  88. package/dist/api/index.js +0 -6
  89. package/dist/auth/AuthHelper.d.ts +0 -17
  90. package/dist/auth/AuthHelper.js +0 -197
  91. package/dist/commands/auth.d.ts +0 -2
  92. package/dist/commands/auth.js +0 -206
  93. package/dist/commands/config.d.ts +0 -2
  94. package/dist/commands/config.js +0 -51
  95. package/dist/commands/connections.d.ts +0 -2
  96. package/dist/commands/connections.js +0 -244
  97. package/dist/commands/contacts.d.ts +0 -2
  98. package/dist/commands/contacts.js +0 -205
  99. package/dist/commands/conversations.d.ts +0 -2
  100. package/dist/commands/conversations.js +0 -251
  101. package/dist/commands/errors.d.ts +0 -2
  102. package/dist/commands/errors.js +0 -73
  103. package/dist/commands/humans.d.ts +0 -2
  104. package/dist/commands/humans.js +0 -161
  105. package/dist/commands/identities.d.ts +0 -2
  106. package/dist/commands/identities.js +0 -141
  107. package/dist/commands/index.d.ts +0 -11
  108. package/dist/commands/index.js +0 -26
  109. package/dist/commands/messages.d.ts +0 -2
  110. package/dist/commands/messages.js +0 -154
  111. package/dist/commands/networks.d.ts +0 -2
  112. package/dist/commands/networks.js +0 -430
  113. package/dist/commands/profile.d.ts +0 -2
  114. package/dist/commands/profile.js +0 -225
  115. package/dist/config/ConfigManager.d.ts +0 -47
  116. package/dist/config/ConfigManager.js +0 -234
  117. package/dist/config/index.d.ts +0 -1
  118. package/dist/config/index.js +0 -7
  119. package/dist/datamodel/index.d.ts +0 -3
  120. package/dist/datamodel/index.js +0 -20
  121. package/dist/datamodel/models/humans.d.ts +0 -81
  122. package/dist/datamodel/models/humans.js +0 -3
  123. package/dist/datamodel/models/index.d.ts +0 -110
  124. package/dist/datamodel/models/index.js +0 -3
  125. package/dist/datamodel/toon/index.d.ts +0 -5
  126. package/dist/datamodel/toon/index.js +0 -211
  127. package/dist/limits/LimitsManager.d.ts +0 -23
  128. package/dist/limits/LimitsManager.js +0 -99
  129. package/dist/utils/colors.d.ts +0 -16
  130. package/dist/utils/colors.js +0 -23
  131. package/dist/utils/logger.d.ts +0 -11
  132. package/dist/utils/logger.js +0 -34
@@ -0,0 +1,110 @@
1
+ import * as http from 'node:http';
2
+ import { loadCredentials } from '../config.js';
3
+ import { AgenticPoolClient } from '../client.js';
4
+ import { DuckiesLedger } from '../economy/duckies.js';
5
+ export async function handleServe(options) {
6
+ const credentials = loadCredentials();
7
+ const client = new AgenticPoolClient({ credentials });
8
+ const ledger = new DuckiesLedger();
9
+ const port = options.port || 7300;
10
+ const serviceId = options.serviceId || 'generic.favor';
11
+ const serviceName = options.serviceName || 'General Agentic Favor Fulfillment';
12
+ const priceDuckies = options.price || 5.0;
13
+ // 1. Start Local HTTP server for A2A favor requests
14
+ const server = http.createServer(async (req, res) => {
15
+ res.setHeader('Access-Control-Allow-Origin', '*');
16
+ res.setHeader('Content-Type', 'application/json');
17
+ if (req.method === 'GET' && req.url === '/.well-known/agent-card.json') {
18
+ res.writeHead(200);
19
+ res.end(JSON.stringify({
20
+ name: credentials.agentName,
21
+ description: `AgenticPool node fulfilling ${serviceName}`,
22
+ version: '0.1.0',
23
+ url: `http://127.0.0.1:${port}`,
24
+ services: [
25
+ {
26
+ id: serviceId,
27
+ name: serviceName,
28
+ pricing: {
29
+ amount: priceDuckies,
30
+ currency: 'DUCKIES',
31
+ model: 'per_call',
32
+ },
33
+ },
34
+ ],
35
+ }));
36
+ return;
37
+ }
38
+ if (req.method === 'POST') {
39
+ let body = '';
40
+ req.on('data', (c) => (body += c));
41
+ req.on('end', async () => {
42
+ try {
43
+ const rpc = JSON.parse(body);
44
+ const fromSender = req.headers['x-agora-sender'] || 'unknown-client';
45
+ const messageText = rpc.params?.message?.parts?.[0]?.text || 'No text';
46
+ console.log(`\n📥 Received favor task from '${fromSender}': "${messageText}"`);
47
+ // Process the favor
48
+ const output = `[${credentials.agentName}] Fulfill favor for '${messageText}'. Completed successfully.`;
49
+ // Record Duckies payout in local ledger
50
+ ledger.settleEscrow(fromSender, credentials.agentName, priceDuckies, serviceId);
51
+ console.log(`💰 Earned ${priceDuckies} DUCKIES from '${fromSender}'!`);
52
+ res.writeHead(200);
53
+ res.end(JSON.stringify({
54
+ jsonrpc: '2.0',
55
+ id: rpc.id,
56
+ result: {
57
+ id: `task-${Date.now()}`,
58
+ status: {
59
+ state: 'completed',
60
+ message: {
61
+ role: 'agent',
62
+ parts: [{ kind: 'text', text: output }],
63
+ },
64
+ },
65
+ },
66
+ }));
67
+ }
68
+ catch (err) {
69
+ const msg = err instanceof Error ? err.message : String(err);
70
+ res.writeHead(500);
71
+ res.end(JSON.stringify({ error: msg }));
72
+ }
73
+ });
74
+ return;
75
+ }
76
+ res.writeHead(404);
77
+ res.end(JSON.stringify({ error: 'Not found' }));
78
+ });
79
+ server.listen(port, '0.0.0.0', async () => {
80
+ console.log(`\n🚀 AgenticPool Worker Node Started!`);
81
+ console.log(`=========================================`);
82
+ console.log(`🤖 Agent: ${credentials.agentName}`);
83
+ console.log(`🌐 Local URL: http://127.0.0.1:${port}`);
84
+ console.log(`🏷️ Service: ${serviceName} (${serviceId})`);
85
+ console.log(`💰 Price/Favor: ${priceDuckies} DUCKIES`);
86
+ console.log(`🌐 Gateway: ${credentials.gatewayUrl}`);
87
+ // Register with Gateway and start heartbeats
88
+ try {
89
+ await client.registerAgent(credentials.agentName, `AgenticPool provider for ${serviceName}`, [
90
+ {
91
+ id: serviceId,
92
+ name: serviceName,
93
+ priceDuckies,
94
+ pricingModel: 'per_call',
95
+ tags: ['favor', 'agenticpool'],
96
+ },
97
+ ], `http://127.0.0.1:${port}`);
98
+ console.log(`✅ Registered on AgenticPool directory & marketplace.`);
99
+ // Heartbeat pulse every 30s
100
+ setInterval(() => {
101
+ client.heartbeat(credentials.agentName, 'online').catch(() => { });
102
+ }, 30000);
103
+ }
104
+ catch (err) {
105
+ console.warn(`⚠️ Gateway connection notice: ${err}`);
106
+ }
107
+ console.log(`\n👂 Listening for incoming favor requests... (Press Ctrl+C to stop)\n`);
108
+ });
109
+ }
110
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare function handlePublishService(options: {
2
+ id: string;
3
+ name: string;
4
+ price: number;
5
+ description?: string;
6
+ tags?: string;
7
+ model?: 'per_call' | 'per_minute' | 'flat';
8
+ }): Promise<void>;
9
+ export declare function handleListServices(options: {
10
+ onlineOnly?: boolean;
11
+ }): Promise<void>;
12
+ export declare function handleSearchServices(query: string, options: {
13
+ onlineOnly?: boolean;
14
+ maxPrice?: number;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"AAIA,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;CAC5C,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BzF;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,93 @@
1
+ import { loadCredentials } from '../config.js';
2
+ import { AgenticPoolClient } from '../client.js';
3
+ export async function handlePublishService(options) {
4
+ const credentials = loadCredentials();
5
+ const client = new AgenticPoolClient({ credentials });
6
+ const service = {
7
+ id: options.id,
8
+ name: options.name,
9
+ description: options.description,
10
+ tags: options.tags ? options.tags.split(',').map((t) => t.trim()) : [],
11
+ priceDuckies: options.price || 0,
12
+ pricingModel: options.model || 'per_call',
13
+ };
14
+ try {
15
+ await client.registerAgent(credentials.agentName, `Autonomous agent offering ${service.name}`, [service]);
16
+ console.log(`\n✅ Service Published to AgenticPool Marketplace!`);
17
+ console.log(`=========================================`);
18
+ console.log(`🆔 Service ID: ${service.id}`);
19
+ console.log(`🏷️ Name: ${service.name}`);
20
+ console.log(`💰 Price: ${service.priceDuckies} DUCKIES (${service.pricingModel})`);
21
+ console.log(`🏷️ Tags: ${service.tags.join(', ') || 'none'}`);
22
+ console.log(`🤖 Offering Agent:${credentials.agentName}\n`);
23
+ }
24
+ catch (err) {
25
+ const msg = err instanceof Error ? err.message : String(err);
26
+ console.error(`❌ Failed to publish service: ${msg}`);
27
+ }
28
+ }
29
+ export async function handleListServices(options) {
30
+ const credentials = loadCredentials();
31
+ const client = new AgenticPoolClient({ credentials });
32
+ try {
33
+ const services = await client.listServices({ onlineOnly: options.onlineOnly });
34
+ console.log(`\n🛍️ AgenticPool Marketplace Services (${services.length} available):`);
35
+ console.log(`=========================================`);
36
+ if (services.length === 0) {
37
+ console.log(` No services found matching criteria.`);
38
+ }
39
+ else {
40
+ for (const item of services) {
41
+ const status = item.presence?.isOnline ? '🟢 online' : '⚪ offline';
42
+ console.log(`• [${item.service?.id}] ${item.service?.name}`);
43
+ console.log(` Provider: ${item.agentName} (${status})`);
44
+ console.log(` Price: ${item.service?.pricing?.amount} DUCKIES (${item.service?.pricing?.model})`);
45
+ if (item.service?.description) {
46
+ console.log(` About: ${item.service.description}`);
47
+ }
48
+ console.log(`-----------------------------------------`);
49
+ }
50
+ }
51
+ console.log('');
52
+ }
53
+ catch (err) {
54
+ const msg = err instanceof Error ? err.message : String(err);
55
+ console.error(`❌ Failed to list services: ${msg}`);
56
+ }
57
+ }
58
+ export async function handleSearchServices(query, options) {
59
+ const credentials = loadCredentials();
60
+ const client = new AgenticPoolClient({ credentials });
61
+ try {
62
+ const resp = await client.searchServices(query, {
63
+ onlineOnly: options.onlineOnly,
64
+ maxPriceDuckies: options.maxPrice,
65
+ });
66
+ console.log(`\n🔍 Search Results for '${query}' (${resp.totalHits || 0} hits via ${resp.engine}):`);
67
+ console.log(`=========================================`);
68
+ if (!resp.hits || resp.hits.length === 0) {
69
+ console.log(` No services found matching '${query}'.`);
70
+ }
71
+ else {
72
+ for (const hit of resp.hits) {
73
+ const isOnline = hit.presence?.isOnline;
74
+ const status = isOnline ? '🟢 online' : '⚪ offline';
75
+ const price = hit.fields?.price ?? hit.service?.pricing?.amount ?? 0;
76
+ const name = hit.fields?.title ?? hit.service?.name ?? hit.serviceId;
77
+ console.log(`• [${hit.serviceId || hit.id}] ${name}`);
78
+ console.log(` Provider: ${hit.agentName} (${status})`);
79
+ console.log(` Price: ${price} DUCKIES`);
80
+ if (hit.fields?.description) {
81
+ console.log(` Desc: ${hit.fields.description}`);
82
+ }
83
+ console.log(`-----------------------------------------`);
84
+ }
85
+ }
86
+ console.log('');
87
+ }
88
+ catch (err) {
89
+ const msg = err instanceof Error ? err.message : String(err);
90
+ console.error(`❌ Failed to search services: ${msg}`);
91
+ }
92
+ }
93
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/commands/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function handleTrustEvaluate(target: string, fromAgent?: string): Promise<void>;
2
+ //# sourceMappingURL=trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C3F"}
@@ -0,0 +1,44 @@
1
+ import { loadCredentials } from '../config.js';
2
+ import { AgenticPoolClient } from '../client.js';
3
+ export async function handleTrustEvaluate(target, fromAgent) {
4
+ const credentials = loadCredentials();
5
+ const evaluator = fromAgent || credentials.agentName;
6
+ const client = new AgenticPoolClient({ credentials });
7
+ console.log(`\n🕸️ Evaluating Trust in '${target}' from perspective of '${evaluator}'...`);
8
+ const evalResult = await client.evaluateTrust(target, evaluator);
9
+ console.log(`\n======================================================`);
10
+ console.log(`📊 Perspectivist Trust Report for '${target}'`);
11
+ console.log(`======================================================`);
12
+ console.log(`🌐 Global Network Metrics:`);
13
+ console.log(` • Duckies de Goma (Éxitos): 🦆 ${evalResult.globalMetrics.gomaTotal}`);
14
+ console.log(` • Duckies de Plomo (Fallos): 🌑 ${evalResult.globalMetrics.plomoTotal.toFixed(1)}`);
15
+ console.log(` • Nodos Conectados: 🔗 ${evalResult.globalMetrics.connections}`);
16
+ console.log(` • Score General: ⭐ ${evalResult.globalMetrics.score.toFixed(2)}`);
17
+ console.log(` • Ratio Global de Éxito: 🎯 ${(evalResult.globalMetrics.ratio * 100).toFixed(1)}%\n`);
18
+ if (evalResult.personalizedTrust) {
19
+ const pt = evalResult.personalizedTrust;
20
+ console.log(`👤 Según tu red ('${evaluator}'):`);
21
+ if (pt.killSwitchActive) {
22
+ console.log(` ⛔ ESTADO: ¡KILL SWITCH ACTIVADO! (Goma <= Plomo en historial local)`);
23
+ console.log(` 🚫 Credibilidad: 0.0% (Veto Inapelable - No enrutar tráfico)`);
24
+ }
25
+ else {
26
+ let icon = '🟢';
27
+ if (pt.verdict === 'cautious')
28
+ icon = '🟡';
29
+ console.log(` • Veredicto: ${icon} ${pt.verdict.toUpperCase()}`);
30
+ console.log(` • Credibilidad Recomendada: 🎯 ${pt.credibilityPercent.toFixed(1)}%`);
31
+ }
32
+ if (pt.directInteractions.hasHistory) {
33
+ console.log(` • Historial Directo (1 salto): 🦆 ${pt.directInteractions.gomaLocal} Goma | 🌑 ${pt.directInteractions.plomoLocal.toFixed(1)} Plomo`);
34
+ }
35
+ else {
36
+ console.log(` • Historial Directo (1 salto): (Sin interacciones previas)`);
37
+ }
38
+ if (pt.networkVouching.trustedPeersCount > 0) {
39
+ console.log(` • Avalado por tu red (2 saltos): ${pt.networkVouching.trustedPeersCount} agentes (${pt.networkVouching.samplePeers.join(', ')})`);
40
+ }
41
+ }
42
+ console.log(`======================================================\n`);
43
+ }
44
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/commands/trust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function handleWhoami(): Promise<void>;
2
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BlD"}
@@ -0,0 +1,32 @@
1
+ import { loadCredentials } from '../config.js';
2
+ import { DuckiesLedger } from '../economy/duckies.js';
3
+ import { AgenticPoolClient } from '../client.js';
4
+ export async function handleWhoami() {
5
+ const credentials = loadCredentials();
6
+ const ledger = new DuckiesLedger();
7
+ const balance = ledger.getBalance(credentials.agentName);
8
+ const client = new AgenticPoolClient({ credentials });
9
+ let onlineStatus = 'unknown';
10
+ try {
11
+ const statusResp = await client.getStatus(credentials.agentName);
12
+ onlineStatus = statusResp?.isOnline ? '🟢 online' : '⚪ offline';
13
+ }
14
+ catch {
15
+ onlineStatus = '⚪ disconnected';
16
+ }
17
+ console.log(`\n🤖 AgenticPool Agent Identity`);
18
+ console.log(`=========================================`);
19
+ console.log(`Name: ${credentials.agentName}`);
20
+ console.log(`ID: ${credentials.agentId}`);
21
+ console.log(`Gateway: ${credentials.gatewayUrl}`);
22
+ console.log(`Network Status: ${onlineStatus}`);
23
+ console.log(`Signing Key: ${credentials.signingPublicKey}`);
24
+ console.log(`Encryption Key: ${credentials.encryptionPublicKey}`);
25
+ console.log(`Registered At: ${credentials.registeredAt}`);
26
+ console.log(`\n💰 Duckies Balance:`);
27
+ console.log(` Available: ${balance.available} DUCKIES`);
28
+ console.log(` In Escrow: ${balance.lockedInEscrow} DUCKIES`);
29
+ console.log(` Total Earned: ${balance.totalEarned} DUCKIES`);
30
+ console.log(` Total Spent: ${balance.totalSpent} DUCKIES\n`);
31
+ }
32
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAEtD,IAAI,YAAY,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjE,YAAY,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,gBAAgB,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,SAAS,UAAU,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,cAAc,UAAU,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,WAAW,UAAU,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,UAAU,YAAY,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { AgentCredentials } from './types.js';
2
+ export declare const DEFAULT_GATEWAY_URL = "https://api.agenticpool.net";
3
+ export declare const DEFAULT_CONFIG_DIR: string;
4
+ export declare const DEFAULT_CREDENTIALS_FILE: string;
5
+ /**
6
+ * Generate a new Ed25519 and X25519 keypair for an agent.
7
+ */
8
+ export declare function generateAgentKeys(): {
9
+ signingPublicKey: string;
10
+ signingPrivateKey: string;
11
+ encryptionPublicKey: string;
12
+ encryptionPrivateKey: string;
13
+ };
14
+ /**
15
+ * Check if the agent credentials exist locally.
16
+ */
17
+ export declare function isInitialized(filePath?: string): boolean;
18
+ /**
19
+ * Load credentials from local disk.
20
+ */
21
+ export declare function loadCredentials(filePath?: string): AgentCredentials;
22
+ /**
23
+ * Save credentials to local disk with strict 0600 file permissions.
24
+ */
25
+ export declare function saveCredentials(credentials: AgentCredentials, filePath?: string): void;
26
+ /**
27
+ * Delete local credentials.
28
+ */
29
+ export declare function clearCredentials(filePath?: string): void;
30
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,mBAAmB,gCAAgC,CAAC;AACjE,eAAO,MAAM,kBAAkB,QAA0C,CAAC;AAC1E,eAAO,MAAM,wBAAwB,QAAoD,CAAC;AAE1F;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAsBA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,GAAE,MAAiC,GAAG,OAAO,CAElF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAiC,GAAG,gBAAgB,CAc7F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,GAAE,MAAiC,GAC1C,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAiC,GAAG,IAAI,CAIlF"}
package/dist/config.js ADDED
@@ -0,0 +1,72 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ import * as crypto from 'node:crypto';
5
+ export const DEFAULT_GATEWAY_URL = 'https://api.agenticpool.net';
6
+ export const DEFAULT_CONFIG_DIR = path.join(os.homedir(), '.agenticpool');
7
+ export const DEFAULT_CREDENTIALS_FILE = path.join(DEFAULT_CONFIG_DIR, 'credentials.json');
8
+ /**
9
+ * Generate a new Ed25519 and X25519 keypair for an agent.
10
+ */
11
+ export function generateAgentKeys() {
12
+ const edKeyPair = crypto.generateKeyPairSync('ed25519', {
13
+ publicKeyEncoding: { type: 'spki', format: 'der' },
14
+ privateKeyEncoding: { type: 'pkcs8', format: 'der' },
15
+ });
16
+ const xKeyPair = crypto.generateKeyPairSync('x25519', {
17
+ publicKeyEncoding: { type: 'spki', format: 'der' },
18
+ privateKeyEncoding: { type: 'pkcs8', format: 'der' },
19
+ });
20
+ const edPubRaw = edKeyPair.publicKey.subarray(-32);
21
+ const edPrivRaw = edKeyPair.privateKey.subarray(-32);
22
+ const xPubRaw = xKeyPair.publicKey.subarray(-32);
23
+ const xPrivRaw = xKeyPair.privateKey.subarray(-32);
24
+ return {
25
+ signingPublicKey: edPubRaw.toString('hex'),
26
+ signingPrivateKey: edPrivRaw.toString('hex'),
27
+ encryptionPublicKey: xPubRaw.toString('hex'),
28
+ encryptionPrivateKey: xPrivRaw.toString('hex'),
29
+ };
30
+ }
31
+ /**
32
+ * Check if the agent credentials exist locally.
33
+ */
34
+ export function isInitialized(filePath = DEFAULT_CREDENTIALS_FILE) {
35
+ return fs.existsSync(filePath);
36
+ }
37
+ /**
38
+ * Load credentials from local disk.
39
+ */
40
+ export function loadCredentials(filePath = DEFAULT_CREDENTIALS_FILE) {
41
+ if (!fs.existsSync(filePath)) {
42
+ throw new Error(`AgenticPool credentials not found at '${filePath}'. Run 'agenticpool init' first.`);
43
+ }
44
+ try {
45
+ const raw = fs.readFileSync(filePath, 'utf-8');
46
+ return JSON.parse(raw);
47
+ }
48
+ catch (err) {
49
+ const msg = err instanceof Error ? err.message : String(err);
50
+ throw new Error(`Failed to parse credentials file at '${filePath}': ${msg}`);
51
+ }
52
+ }
53
+ /**
54
+ * Save credentials to local disk with strict 0600 file permissions.
55
+ */
56
+ export function saveCredentials(credentials, filePath = DEFAULT_CREDENTIALS_FILE) {
57
+ const dir = path.dirname(filePath);
58
+ if (!fs.existsSync(dir)) {
59
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
60
+ }
61
+ const json = JSON.stringify(credentials, null, 2);
62
+ fs.writeFileSync(filePath, json, { encoding: 'utf-8', mode: 0o600 });
63
+ }
64
+ /**
65
+ * Delete local credentials.
66
+ */
67
+ export function clearCredentials(filePath = DEFAULT_CREDENTIALS_FILE) {
68
+ if (fs.existsSync(filePath)) {
69
+ fs.unlinkSync(filePath);
70
+ }
71
+ }
72
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { AgentReputation, DuckiesBalance, DuckiesTransaction, FavorDispute } from '../types.js';
2
+ export declare const INITIAL_FAUCET_AMOUNT = 100;
3
+ export declare const BURN_FEE_RATE = 0.03;
4
+ export declare const DEFAULT_CANCELLATION_FEE_RATE = 0.1;
5
+ export declare const DEFAULT_LEDGER_FILE: string;
6
+ export declare const DEFAULT_DISPUTES_FILE: string;
7
+ export declare class DuckiesLedger {
8
+ private transactions;
9
+ private disputes;
10
+ private filePath;
11
+ private disputesFilePath;
12
+ constructor(filePath?: string, disputesFilePath?: string);
13
+ private load;
14
+ private save;
15
+ /**
16
+ * Grant initial starter Duckies (locked as voucher credits).
17
+ */
18
+ grantStarterDuckies(agentName: string, amount?: number): void;
19
+ /**
20
+ * Calculate current Duckies balance with voucher and earned separation.
21
+ */
22
+ getBalance(agentName: string): DuckiesBalance;
23
+ /**
24
+ * Lock Duckies in escrow before delegating a favor.
25
+ */
26
+ lockEscrow(fromAgent: string, targetAgent: string, amount: number, serviceId: string, taskId?: string): DuckiesTransaction;
27
+ /**
28
+ * Settle escrow payout upon successful favor completion, applying the 3% burn fee.
29
+ */
30
+ settleEscrow(fromAgent: string, targetAgent: string, amount: number, serviceId: string, taskId?: string): {
31
+ payment: DuckiesTransaction;
32
+ burn: DuckiesTransaction;
33
+ payout: DuckiesTransaction;
34
+ };
35
+ /**
36
+ * Refund escrow if favor fails or is canceled before work began.
37
+ */
38
+ refundEscrow(fromAgent: string, targetAgent: string, amount: number, serviceId: string, reason: string): DuckiesTransaction;
39
+ /**
40
+ * Cancel in-progress favor with computational compensation for worker.
41
+ */
42
+ cancelEscrowWithCompensation(fromAgent: string, targetAgent: string, amount: number, serviceId: string, taskId?: string, compensationRate?: number): {
43
+ compensation: DuckiesTransaction;
44
+ refund: DuckiesTransaction;
45
+ };
46
+ /**
47
+ * Open a dispute on an unsatisfactory favor delivery.
48
+ */
49
+ openDispute(fromAgent: string, targetAgent: string, amount: number, serviceId: string, reason: string, taskId?: string): FavorDispute;
50
+ /**
51
+ * Resolve dispute (full refund, full payout, or split).
52
+ */
53
+ resolveDispute(disputeId: string, outcome: 'refund' | 'payout' | 'split', splitRatio?: number): FavorDispute;
54
+ /**
55
+ * Validate that task output is non-empty and non-fraudulent.
56
+ */
57
+ validateOutput(output: unknown): {
58
+ valid: boolean;
59
+ reason?: string;
60
+ };
61
+ /**
62
+ * Calculate reputation and trust tier for an agent.
63
+ */
64
+ getReputation(agentName: string): AgentReputation;
65
+ /**
66
+ * Get all transactions for an agent.
67
+ */
68
+ getTransactions(agentName: string): DuckiesTransaction[];
69
+ /**
70
+ * Get all disputes for an agent.
71
+ */
72
+ getDisputes(agentName: string): FavorDispute[];
73
+ private recordTransaction;
74
+ }
75
+ //# sourceMappingURL=duckies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duckies.d.ts","sourceRoot":"","sources":["../../src/economy/duckies.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEb,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,qBAAqB,MAAQ,CAAC;AAC3C,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC,eAAO,MAAM,6BAA6B,MAAO,CAAC;AAElD,eAAO,MAAM,mBAAmB,QAAuD,CAAC;AACxF,eAAO,MAAM,qBAAqB,QAAyD,CAAC;AAE5F,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAS;gBAG/B,QAAQ,GAAE,MAA4B,EACtC,gBAAgB,GAAE,MAA8B;IAOlD,OAAO,CAAC,IAAI;IAwBZ,OAAO,CAAC,IAAI;IAeZ;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAA8B,GAAG,IAAI;IAiBpF;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAwD7C;;OAEG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB;IAsBrB;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd;QAAE,OAAO,EAAE,kBAAkB,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE;IA8CxF;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,kBAAkB;IAcrB;;OAEG;IACH,4BAA4B,CAC1B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,GAAE,MAAsC,GACvD;QAAE,YAAY,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE;IAiCnE;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,YAAY;IA+Bf;;OAEG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,EACtC,UAAU,GAAE,MAAY,GACvB,YAAY;IAiDf;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAiBpE;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IA0DjD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAMxD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAM9C,OAAO,CAAC,iBAAiB;CAK1B"}