agenticpool 1.0.19 → 2.0.1

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 (140) 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 +220 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/client.d.ts +119 -0
  28. package/dist/client.d.ts.map +1 -0
  29. package/dist/client.js +262 -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/inbox.d.ts +4 -0
  44. package/dist/commands/inbox.d.ts.map +1 -0
  45. package/dist/commands/inbox.js +69 -0
  46. package/dist/commands/inbox.js.map +1 -0
  47. package/dist/commands/init.d.ts +5 -0
  48. package/dist/commands/init.d.ts.map +1 -0
  49. package/dist/commands/init.js +77 -0
  50. package/dist/commands/init.js.map +1 -0
  51. package/dist/commands/node.d.ts +8 -0
  52. package/dist/commands/node.d.ts.map +1 -0
  53. package/dist/commands/node.js +151 -0
  54. package/dist/commands/node.js.map +1 -0
  55. package/dist/commands/reputation.d.ts +2 -0
  56. package/dist/commands/reputation.d.ts.map +1 -0
  57. package/dist/commands/reputation.js +38 -0
  58. package/dist/commands/reputation.js.map +1 -0
  59. package/dist/commands/serve.d.ts +7 -0
  60. package/dist/commands/serve.d.ts.map +1 -0
  61. package/dist/commands/serve.js +110 -0
  62. package/dist/commands/serve.js.map +1 -0
  63. package/dist/commands/services.d.ts +17 -0
  64. package/dist/commands/services.d.ts.map +1 -0
  65. package/dist/commands/services.js +161 -0
  66. package/dist/commands/services.js.map +1 -0
  67. package/dist/commands/trust.d.ts +2 -0
  68. package/dist/commands/trust.d.ts.map +1 -0
  69. package/dist/commands/trust.js +44 -0
  70. package/dist/commands/trust.js.map +1 -0
  71. package/dist/commands/whoami.d.ts +2 -0
  72. package/dist/commands/whoami.d.ts.map +1 -0
  73. package/dist/commands/whoami.js +32 -0
  74. package/dist/commands/whoami.js.map +1 -0
  75. package/dist/config.d.ts +30 -0
  76. package/dist/config.d.ts.map +1 -0
  77. package/dist/config.js +72 -0
  78. package/dist/config.js.map +1 -0
  79. package/dist/economy/duckies.d.ts +75 -0
  80. package/dist/economy/duckies.d.ts.map +1 -0
  81. package/dist/economy/duckies.js +386 -0
  82. package/dist/economy/duckies.js.map +1 -0
  83. package/dist/index.d.ts +12 -2
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +12 -29
  86. package/dist/index.js.map +1 -0
  87. package/dist/types.d.ts +90 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +5 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +28 -38
  92. package/LICENSE +0 -1
  93. package/dist/api/ApiClient.d.ts +0 -37
  94. package/dist/api/ApiClient.js +0 -160
  95. package/dist/api/index.d.ts +0 -1
  96. package/dist/api/index.js +0 -6
  97. package/dist/auth/AuthHelper.d.ts +0 -17
  98. package/dist/auth/AuthHelper.js +0 -197
  99. package/dist/commands/auth.d.ts +0 -2
  100. package/dist/commands/auth.js +0 -206
  101. package/dist/commands/config.d.ts +0 -2
  102. package/dist/commands/config.js +0 -51
  103. package/dist/commands/connections.d.ts +0 -2
  104. package/dist/commands/connections.js +0 -244
  105. package/dist/commands/contacts.d.ts +0 -2
  106. package/dist/commands/contacts.js +0 -205
  107. package/dist/commands/conversations.d.ts +0 -2
  108. package/dist/commands/conversations.js +0 -251
  109. package/dist/commands/errors.d.ts +0 -2
  110. package/dist/commands/errors.js +0 -73
  111. package/dist/commands/humans.d.ts +0 -2
  112. package/dist/commands/humans.js +0 -161
  113. package/dist/commands/identities.d.ts +0 -2
  114. package/dist/commands/identities.js +0 -141
  115. package/dist/commands/index.d.ts +0 -11
  116. package/dist/commands/index.js +0 -26
  117. package/dist/commands/messages.d.ts +0 -2
  118. package/dist/commands/messages.js +0 -216
  119. package/dist/commands/networks.d.ts +0 -2
  120. package/dist/commands/networks.js +0 -430
  121. package/dist/commands/profile.d.ts +0 -2
  122. package/dist/commands/profile.js +0 -257
  123. package/dist/config/ConfigManager.d.ts +0 -47
  124. package/dist/config/ConfigManager.js +0 -234
  125. package/dist/config/index.d.ts +0 -1
  126. package/dist/config/index.js +0 -7
  127. package/dist/datamodel/index.d.ts +0 -3
  128. package/dist/datamodel/index.js +0 -20
  129. package/dist/datamodel/models/humans.d.ts +0 -81
  130. package/dist/datamodel/models/humans.js +0 -3
  131. package/dist/datamodel/models/index.d.ts +0 -110
  132. package/dist/datamodel/models/index.js +0 -3
  133. package/dist/datamodel/toon/index.d.ts +0 -5
  134. package/dist/datamodel/toon/index.js +0 -225
  135. package/dist/limits/LimitsManager.d.ts +0 -23
  136. package/dist/limits/LimitsManager.js +0 -99
  137. package/dist/utils/colors.d.ts +0 -16
  138. package/dist/utils/colors.js +0 -23
  139. package/dist/utils/logger.d.ts +0 -11
  140. package/dist/utils/logger.js +0 -34
@@ -0,0 +1,144 @@
1
+ import { loadCredentials } from '../config.js';
2
+ import { AgenticPoolClient } from '../client.js';
3
+ import { DuckiesLedger } from '../economy/duckies.js';
4
+ export async function handleRequestFavor(options) {
5
+ const credentials = loadCredentials();
6
+ const client = new AgenticPoolClient({ credentials });
7
+ const ledger = new DuckiesLedger();
8
+ const priceDuckies = options.price ?? 5.0;
9
+ console.log(`\nšŸ¤ Requesting Agentic Favor...`);
10
+ console.log(`=========================================`);
11
+ console.log(`šŸŽÆ Target Agent: ${options.target}`);
12
+ console.log(`šŸ†” Service ID: ${options.service}`);
13
+ console.log(`šŸ’° Agreed Price: ${priceDuckies} DUCKIES`);
14
+ console.log(`šŸ’¬ Favor Request: "${options.message}"`);
15
+ // 1. Lock Duckies in Escrow
16
+ try {
17
+ ledger.lockEscrow(credentials.agentName, options.target, priceDuckies, options.service);
18
+ console.log(`šŸ”’ Locked ${priceDuckies} DUCKIES in local escrow.`);
19
+ }
20
+ catch (err) {
21
+ const msg = err instanceof Error ? err.message : String(err);
22
+ console.error(`\nāŒ Escrow lock failed: ${msg}`);
23
+ return;
24
+ }
25
+ // 2. Delegate Favor to Target Agent
26
+ try {
27
+ console.log(`šŸ“” Sending task to agent '${options.target}'...`);
28
+ const resp = await client.requestFavor(options.target, options.message);
29
+ const task = resp?.result || resp;
30
+ const taskState = task?.status?.state || 'completed';
31
+ const reply = task?.status?.message?.parts?.[0]?.text;
32
+ // 3. Anti-Fraud Output Validation
33
+ const validation = ledger.validateOutput(reply);
34
+ if (taskState === 'completed' && validation.valid) {
35
+ // Settle Escrow (with 3% burn fee)
36
+ const { payment, burn, payout } = ledger.settleEscrow(credentials.agentName, options.target, priceDuckies, options.service, task?.id);
37
+ console.log(`\nšŸŽ‰ Favor Completed Successfully!`);
38
+ console.log(`šŸ’ø ${payment.amount} DUCKIES settled:`);
39
+ console.log(` ā”œā”€ Worker received: ${payout.amount} DUCKIES`);
40
+ console.log(` └─ Network burn fee: ${burn.amount} DUCKIES (3% anti-wash fee burned)`);
41
+ console.log(`\nšŸ“¬ Result from '${options.target}':`);
42
+ console.log(`-----------------------------------------`);
43
+ console.log(reply);
44
+ console.log(`-----------------------------------------\n`);
45
+ // 4. Proof-of-Execution: Record +1 Duckie de Goma on Trust Graph via Task Review
46
+ if (task?.id) {
47
+ try {
48
+ await client.reviewTask(task.id, {
49
+ outcome: 'satisfied',
50
+ worker: options.target,
51
+ feedback: 'Favor delivered and validated',
52
+ });
53
+ console.log(`šŸ¦† +1 Duckie de Goma awarded to '${options.target}' on the Trust Graph!`);
54
+ }
55
+ catch {
56
+ // Non-blocking if gateway offline during local test
57
+ }
58
+ }
59
+ }
60
+ else {
61
+ const reason = !validation.valid ? validation.reason : `Task state was '${taskState}'`;
62
+ // Open Dispute / Refund Escrow
63
+ ledger.openDispute(credentials.agentName, options.target, priceDuckies, options.service, reason, task?.id);
64
+ ledger.refundEscrow(credentials.agentName, options.target, priceDuckies, options.service, reason);
65
+ console.log(`\nāš ļø Favor rejected by anti-fraud check (${reason}).`);
66
+ console.log(`šŸ›”ļø Escrow refunded to '${credentials.agentName}'.`);
67
+ if (task?.id) {
68
+ try {
69
+ await client.reviewTask(task.id, {
70
+ outcome: 'fraud',
71
+ worker: options.target,
72
+ feedback: reason,
73
+ });
74
+ console.log(`šŸŒ‘ Duckies de Plomo assessed to '${options.target}' on the Trust Graph.`);
75
+ }
76
+ catch {
77
+ // Non-blocking
78
+ }
79
+ }
80
+ }
81
+ }
82
+ catch (err) {
83
+ ledger.refundEscrow(credentials.agentName, options.target, priceDuckies, options.service, 'Network or execution error');
84
+ const msg = err instanceof Error ? err.message : String(err);
85
+ console.error(`\nāŒ Delegation error: ${msg}. Escrow refunded.`);
86
+ }
87
+ }
88
+ export async function handleDisputeFavor(options) {
89
+ const credentials = loadCredentials();
90
+ const ledger = new DuckiesLedger();
91
+ const client = new AgenticPoolClient({ credentials });
92
+ const dispute = ledger.openDispute(credentials.agentName, options.target, options.amount, options.service, options.reason, options.taskId);
93
+ console.log(`\nāš–ļø Dispute Opened!`);
94
+ console.log(`=========================================`);
95
+ console.log(`šŸ†” Dispute ID: ${dispute.id}`);
96
+ console.log(`šŸŽÆ Target Agent: ${options.target}`);
97
+ console.log(`šŸ’° Amount: ${options.amount} DUCKIES`);
98
+ console.log(`šŸ“ Reason: ${options.reason}`);
99
+ console.log(`ā³ Status: ${dispute.status}`);
100
+ if (options.taskId) {
101
+ try {
102
+ await client.reviewTask(options.taskId, {
103
+ outcome: 'disputed',
104
+ worker: options.target,
105
+ feedback: options.reason,
106
+ });
107
+ console.log(`āš–ļø Task review recorded on Trust Graph for task '${options.taskId}'.`);
108
+ }
109
+ catch {
110
+ // Non-blocking
111
+ }
112
+ }
113
+ }
114
+ export async function handleReviewTask(options) {
115
+ const credentials = loadCredentials();
116
+ const client = new AgenticPoolClient({ credentials });
117
+ console.log(`\nšŸ“ Submitting Task Review for '${options.taskId}'...`);
118
+ try {
119
+ const res = await client.reviewTask(options.taskId, {
120
+ outcome: options.outcome,
121
+ worker: options.worker,
122
+ feedback: options.feedback,
123
+ recommender: options.recommender,
124
+ });
125
+ console.log(`\nāœ… Task Review Processed (Proof-of-Execution):`);
126
+ console.log(`=========================================`);
127
+ console.log(`šŸ†” Task ID: ${res.taskId}`);
128
+ console.log(`šŸ“Š Outcome: ${res.outcome.toUpperCase()}`);
129
+ console.log(`šŸ¦† Goma Awarded: +${res.gomaAwarded}`);
130
+ console.log(`šŸŒ‘ Plomo Assessed: +${res.plomoAssessed}`);
131
+ console.log(`šŸ‘¤ Evaluator: ${res.edgeUpdated.fromAgent}`);
132
+ console.log(`šŸŽÆ Worker: ${res.edgeUpdated.toAgent}`);
133
+ console.log(`šŸ“ˆ New Edge Goma: šŸ¦† ${res.edgeUpdated.goma} | šŸŒ‘ ${res.edgeUpdated.plomo.toFixed(1)}`);
134
+ if (res.recommenderEdgeUpdated) {
135
+ console.log(`⭐ Recommender (${options.recommender}) Edge Updated: šŸ¦† ${res.recommenderEdgeUpdated.recomGoma} Recom Goma`);
136
+ }
137
+ console.log(`=========================================\n`);
138
+ }
139
+ catch (err) {
140
+ const msg = err instanceof Error ? err.message : String(err);
141
+ console.error(`āŒ Failed to submit task review: ${msg}`);
142
+ }
143
+ }
144
+ //# sourceMappingURL=favor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"favor.js","sourceRoot":"","sources":["../../src/commands/favor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function handleInboxList(): Promise<void>;
2
+ export declare function handleInboxRead(id: string): Promise<void>;
3
+ export declare function handleInboxReply(id: string, responseText: string): Promise<void>;
4
+ //# sourceMappingURL=inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAkCA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAcrD;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/D;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CActF"}
@@ -0,0 +1,69 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as os from 'node:os';
4
+ function getInboxPath() {
5
+ return path.join(os.homedir(), '.agenticpool', 'inbox.json');
6
+ }
7
+ function loadInbox() {
8
+ const p = getInboxPath();
9
+ if (!fs.existsSync(p))
10
+ return [];
11
+ try {
12
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
13
+ }
14
+ catch {
15
+ return [];
16
+ }
17
+ }
18
+ function saveInbox(items) {
19
+ const p = getInboxPath();
20
+ const dir = path.dirname(p);
21
+ if (!fs.existsSync(dir))
22
+ fs.mkdirSync(dir, { recursive: true });
23
+ fs.writeFileSync(p, JSON.stringify(items, null, 2), { mode: 0o600 });
24
+ }
25
+ export async function handleInboxList() {
26
+ const items = loadInbox();
27
+ console.log(`\nšŸ“¬ AgenticPool Local Inbox`);
28
+ console.log(`=========================`);
29
+ if (items.length === 0) {
30
+ console.log(`(No messages in inbox)\n`);
31
+ return;
32
+ }
33
+ for (const item of items) {
34
+ const statusIcon = item.status === 'pending' ? '🟔 PENDING' : '🟢 REPLIED';
35
+ console.log(`• ID: ${item.id} | From: ${item.sender} | Status: ${statusIcon} | Date: ${item.timestamp}`);
36
+ console.log(` Preview: "${item.text.slice(0, 80)}${item.text.length > 80 ? '...' : ''}"\n`);
37
+ }
38
+ }
39
+ export async function handleInboxRead(id) {
40
+ const items = loadInbox();
41
+ const item = items.find((i) => i.id === id);
42
+ if (!item) {
43
+ console.error(`āŒ Message ID '${id}' not found in inbox.`);
44
+ return;
45
+ }
46
+ console.log(`\nšŸ“– Message Details: ${item.id}`);
47
+ console.log(`==============================`);
48
+ console.log(`From: ${item.sender}`);
49
+ console.log(`Date: ${item.timestamp}`);
50
+ console.log(`Status: ${item.status.toUpperCase()}`);
51
+ console.log(`Content:\n${item.text}\n`);
52
+ if (item.reply) {
53
+ console.log(`Your Reply:\n${item.reply}\n`);
54
+ }
55
+ }
56
+ export async function handleInboxReply(id, responseText) {
57
+ const items = loadInbox();
58
+ const item = items.find((i) => i.id === id);
59
+ if (!item) {
60
+ console.error(`āŒ Message ID '${id}' not found in inbox.`);
61
+ return;
62
+ }
63
+ item.status = 'replied';
64
+ item.reply = responseText;
65
+ saveInbox(items);
66
+ console.log(`\nāœ… Replied to favor '${id}' from '${item.sender}'!`);
67
+ console.log(`Output recorded and ready for A2A settlement.\n`);
68
+ }
69
+ //# sourceMappingURL=inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function handleInit(options: {
2
+ name?: string;
3
+ force?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EhB"}
@@ -0,0 +1,77 @@
1
+ import * as crypto from 'node:crypto';
2
+ import { generateAgentKeys, saveCredentials, isInitialized, DEFAULT_GATEWAY_URL, DEFAULT_CREDENTIALS_FILE } from '../config.js';
3
+ import { DuckiesLedger, INITIAL_FAUCET_AMOUNT } from '../economy/duckies.js';
4
+ export async function handleInit(options) {
5
+ if (isInitialized() && !options.force) {
6
+ console.log(`āš ļø AgenticPool is already initialized on this machine.`);
7
+ console.log(`Use --force to overwrite local credentials at ${DEFAULT_CREDENTIALS_FILE}.`);
8
+ return;
9
+ }
10
+ const agentName = options.name || `agent-${crypto.randomBytes(4).toString('hex')}`;
11
+ const gatewayUrl = DEFAULT_GATEWAY_URL;
12
+ const apiKey = `agp_${crypto.randomBytes(16).toString('hex')}`;
13
+ const keys = generateAgentKeys();
14
+ // Check if agent name is already registered on the gateway
15
+ try {
16
+ const checkRes = await fetch(`${gatewayUrl}/v1/agents/${agentName}`);
17
+ if (checkRes.ok) {
18
+ const existingCard = (await checkRes.json());
19
+ if (existingCard?.publicKey && existingCard.publicKey !== keys.signingPublicKey) {
20
+ console.error(`\nāŒ Error: Agent name '${agentName}' is already registered on AgenticPool by another keypair.`);
21
+ console.error(`šŸ‘‰ Please choose a unique name (e.g. '${agentName}-2' or '${agentName}-bot') using:`);
22
+ console.error(` agenticpool init --name <unique_name>\n`);
23
+ return;
24
+ }
25
+ }
26
+ }
27
+ catch (_err) {
28
+ // Network check optional / offline fallback
29
+ }
30
+ const credentials = {
31
+ agentId: `ap_id_${crypto.randomBytes(8).toString('hex')}`,
32
+ agentName,
33
+ apiKey,
34
+ signingPublicKey: keys.signingPublicKey,
35
+ signingPrivateKey: keys.signingPrivateKey,
36
+ encryptionPublicKey: keys.encryptionPublicKey,
37
+ encryptionPrivateKey: keys.encryptionPrivateKey,
38
+ gatewayUrl,
39
+ registeredAt: new Date().toISOString(),
40
+ };
41
+ // Register agent on the platform gateway
42
+ try {
43
+ await fetch(`${gatewayUrl}/v1/agents`, {
44
+ method: 'POST',
45
+ headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify({
47
+ name: agentName,
48
+ url: `${gatewayUrl}/agents/${agentName}`,
49
+ version: '0.1.0',
50
+ capabilities: { streaming: true },
51
+ defaultInputModes: ['application/json', 'text/plain'],
52
+ defaultOutputModes: ['application/json', 'text/plain'],
53
+ skills: [],
54
+ services: [],
55
+ publicKey: keys.signingPublicKey,
56
+ encryptionKey: keys.encryptionPublicKey,
57
+ }),
58
+ });
59
+ }
60
+ catch (_err) {
61
+ // Local registration still recorded
62
+ }
63
+ saveCredentials(credentials);
64
+ // Grant initial starter Duckies
65
+ const ledger = new DuckiesLedger();
66
+ ledger.grantStarterDuckies(agentName, INITIAL_FAUCET_AMOUNT);
67
+ console.log(`\nšŸŽ‰ AgenticPool.net Account Initialized!`);
68
+ console.log(`=========================================`);
69
+ console.log(`šŸ¤– Agent Name: ${credentials.agentName}`);
70
+ console.log(`šŸ†” Agent ID: ${credentials.agentId}`);
71
+ console.log(`🌐 Gateway API: ${credentials.gatewayUrl}`);
72
+ console.log(`šŸ”‘ Public Key: ${credentials.signingPublicKey.slice(0, 16)}...`);
73
+ console.log(`šŸ’° Starter Duckies: ${INITIAL_FAUCET_AMOUNT} DUCKIES`);
74
+ console.log(`šŸ“ Credentials saved: ~/.agenticpool/credentials.json\n`);
75
+ console.log(`šŸ‘‰ Run 'agenticpool whoami' or 'agenticpool balance' to get started.\n`);
76
+ }
77
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface NodeOptions {
2
+ mode?: 'hook' | 'inbox' | 'spawn';
3
+ port?: number;
4
+ webhook?: string;
5
+ runner?: string;
6
+ }
7
+ export declare function handleNode(options: NodeOptions): Promise<void>;
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJpE"}
@@ -0,0 +1,151 @@
1
+ import * as http from 'node:http';
2
+ import { spawn } from 'node:child_process';
3
+ import * as fs from 'node:fs';
4
+ import * as path from 'node:path';
5
+ import * as os from 'node:os';
6
+ import { loadCredentials } from '../config.js';
7
+ export async function handleNode(options) {
8
+ const credentials = loadCredentials();
9
+ const mode = options.mode || 'hook';
10
+ const port = options.port || 7189;
11
+ const webhookUrl = options.webhook;
12
+ const runnerCmd = options.runner || 'opencode --prompt "{prompt}"';
13
+ const inboxDir = path.join(os.homedir(), '.agenticpool');
14
+ const inboxFile = path.join(inboxDir, 'inbox.json');
15
+ if (!fs.existsSync(inboxDir)) {
16
+ fs.mkdirSync(inboxDir, { recursive: true });
17
+ }
18
+ console.log(`\nšŸš€ AgenticPool Reactive Node Engine v2.0.0`);
19
+ console.log(`=========================================`);
20
+ console.log(`šŸ¤– Agent: ${credentials.agentName}`);
21
+ console.log(`šŸ”€ Mode: ${mode.toUpperCase()}`);
22
+ if (mode === 'hook') {
23
+ if (webhookUrl) {
24
+ console.log(`šŸ”— Webhook URL: ${webhookUrl}`);
25
+ }
26
+ else {
27
+ console.log(`šŸ”Œ Hook Port: ${port}`);
28
+ }
29
+ }
30
+ else if (mode === 'spawn') {
31
+ console.log(`šŸƒ Runner Cmd: ${runnerCmd}`);
32
+ }
33
+ else if (mode === 'inbox') {
34
+ console.log(`šŸ“¬ Inbox File: ${inboxFile}`);
35
+ }
36
+ console.log(`🌐 Gateway: ${credentials.gatewayUrl}`);
37
+ // Create Local HTTP Receiver for A2A Messages
38
+ const server = http.createServer(async (req, res) => {
39
+ res.setHeader('Access-Control-Allow-Origin', '*');
40
+ res.setHeader('Content-Type', 'application/json');
41
+ if (req.method === 'POST') {
42
+ let body = '';
43
+ req.on('data', (c) => (body += c));
44
+ req.on('end', async () => {
45
+ try {
46
+ const rpc = JSON.parse(body);
47
+ const fromSender = req.headers['x-agora-sender'] || 'unknown-peer';
48
+ const messageText = rpc.params?.message?.parts?.[0]?.text || '';
49
+ const taskId = rpc.params?.id || `task-${Date.now()}`;
50
+ console.log(`\nšŸ“„ [A2A Inbound] From '${fromSender}' (Task: ${taskId}): "${messageText}"`);
51
+ let resultText = '';
52
+ if (mode === 'hook') {
53
+ if (webhookUrl) {
54
+ // Forward to full Webhook URL
55
+ const forwardRes = await fetch(webhookUrl, {
56
+ method: 'POST',
57
+ headers: {
58
+ 'Content-Type': 'application/json',
59
+ 'x-agenticpool-sender': fromSender,
60
+ 'x-agenticpool-task-id': taskId,
61
+ },
62
+ body: JSON.stringify({
63
+ sender: fromSender,
64
+ taskId,
65
+ prompt: messageText,
66
+ params: rpc.params,
67
+ }),
68
+ });
69
+ const forwardJson = await forwardRes.json();
70
+ resultText = forwardJson.output || forwardJson.result || forwardJson.message || JSON.stringify(forwardJson);
71
+ }
72
+ else {
73
+ resultText = `[${credentials.agentName}] Hook received task '${taskId}'. Output processed via session listener.`;
74
+ }
75
+ }
76
+ else if (mode === 'inbox') {
77
+ // Save to local inbox for asynchronous pull
78
+ let currentInbox = [];
79
+ if (fs.existsSync(inboxFile)) {
80
+ try {
81
+ currentInbox = JSON.parse(fs.readFileSync(inboxFile, 'utf8'));
82
+ }
83
+ catch {
84
+ currentInbox = [];
85
+ }
86
+ }
87
+ currentInbox.push({
88
+ id: taskId,
89
+ sender: fromSender,
90
+ text: messageText,
91
+ timestamp: new Date().toISOString(),
92
+ status: 'pending',
93
+ });
94
+ fs.writeFileSync(inboxFile, JSON.stringify(currentInbox, null, 2), { mode: 0o600 });
95
+ resultText = `[${credentials.agentName}] Favor queued in local inbox. Task ID: ${taskId}`;
96
+ console.log(`šŸ“¬ Stored in mailbox. View with 'npx agenticpool inbox list'`);
97
+ }
98
+ else if (mode === 'spawn') {
99
+ // Spawn headless process
100
+ console.log(`⚔ Spawning runner: ${runnerCmd}`);
101
+ const cmdToExec = runnerCmd.replace('{prompt}', messageText.replace(/"/g, '\\"'));
102
+ resultText = await new Promise((resolve) => {
103
+ const child = spawn(cmdToExec, { shell: true });
104
+ let stdout = '';
105
+ let stderr = '';
106
+ child.stdout?.on('data', (d) => (stdout += d.toString()));
107
+ child.stderr?.on('data', (d) => (stderr += d.toString()));
108
+ child.on('close', (code) => {
109
+ if (code === 0 && stdout.trim()) {
110
+ resolve(stdout.trim());
111
+ }
112
+ else {
113
+ resolve(`[Spawned Worker Output (exit ${code})]: ${stdout || stderr || 'Execution finished.'}`);
114
+ }
115
+ });
116
+ });
117
+ }
118
+ res.writeHead(200);
119
+ res.end(JSON.stringify({
120
+ jsonrpc: '2.0',
121
+ id: rpc.id,
122
+ result: {
123
+ id: taskId,
124
+ status: {
125
+ state: 'completed',
126
+ message: {
127
+ role: 'agent',
128
+ parts: [{ kind: 'text', text: resultText }],
129
+ },
130
+ },
131
+ },
132
+ }));
133
+ }
134
+ catch (err) {
135
+ const msg = err instanceof Error ? err.message : String(err);
136
+ res.writeHead(500);
137
+ res.end(JSON.stringify({ error: msg }));
138
+ }
139
+ });
140
+ return;
141
+ }
142
+ res.writeHead(404);
143
+ res.end(JSON.stringify({ error: 'Endpoint not found' }));
144
+ });
145
+ const listenPort = webhookUrl ? (options.port || 7189) : port;
146
+ server.listen(listenPort, '0.0.0.0', async () => {
147
+ console.log(`\nšŸ‘‚ Node receiver listening on http://127.0.0.1:${listenPort}`);
148
+ console.log(`🌐 Ready to process A2A requests (Press Ctrl+C to terminate)\n`);
149
+ });
150
+ }
151
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function handleReputation(targetAgentName?: string): Promise<void>;
2
+ //# sourceMappingURL=reputation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.d.ts","sourceRoot":"","sources":["../../src/commands/reputation.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC9E"}
@@ -0,0 +1,38 @@
1
+ import { loadCredentials } from '../config.js';
2
+ import { DuckiesLedger } from '../economy/duckies.js';
3
+ export async function handleReputation(targetAgentName) {
4
+ const credentials = loadCredentials();
5
+ const agentName = targetAgentName || credentials.agentName;
6
+ const ledger = new DuckiesLedger();
7
+ const rep = ledger.getReputation(agentName);
8
+ const disputes = ledger.getDisputes(agentName);
9
+ let badge = '⚪';
10
+ if (rep.trustTier === 'gold')
11
+ badge = 'šŸ„‡';
12
+ else if (rep.trustTier === 'silver')
13
+ badge = '🄈';
14
+ else if (rep.trustTier === 'bronze')
15
+ badge = 'šŸ„‰';
16
+ console.log(`\n${badge} Reputation & Trust Profile: '${agentName}'`);
17
+ console.log(`=========================================`);
18
+ console.log(`⭐ Trust Tier: ${badge} ${rep.trustTier.toUpperCase()}`);
19
+ console.log(`šŸ“Š Reputation Score: ${rep.score} / 100`);
20
+ console.log(`šŸŽÆ Completion Rate: ${(rep.completionRate * 100).toFixed(1)}%`);
21
+ console.log(`āœ… Completed Favors: ${rep.completedFavors}`);
22
+ console.log(`āš ļø Disputed Favors: ${rep.disputedFavors}`);
23
+ console.log(`🚫 Canceled Favors: ${rep.canceledFavors}`);
24
+ console.log(`šŸ’° Total Volume: ${rep.totalVolumeDuckies.toFixed(2)} DUCKIES\n`);
25
+ if (disputes.length > 0) {
26
+ console.log(`āš–ļø Dispute History (${disputes.length} records):`);
27
+ console.log(`-----------------------------------------`);
28
+ for (const d of disputes) {
29
+ console.log(`• [${d.id}] Status: ${d.status}`);
30
+ console.log(` Requester: ${d.fromAgent} ──> Worker: ${d.targetAgent}`);
31
+ console.log(` Amount: ${d.amount} DUCKIES`);
32
+ console.log(` Reason: ${d.reason}`);
33
+ console.log(`-----------------------------------------`);
34
+ }
35
+ console.log('');
36
+ }
37
+ }
38
+ //# sourceMappingURL=reputation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reputation.js","sourceRoot":"","sources":["../../src/commands/reputation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,eAAwB;IAC7D,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,eAAe,IAAI,WAAW,CAAC,SAAS,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM;QAAE,KAAK,GAAG,IAAI,CAAC;SACtC,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ;QAAE,KAAK,GAAG,IAAI,CAAC;SAC7C,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ;QAAE,KAAK,GAAG,IAAI,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,iCAAiC,SAAS,GAAG,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAEnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function handleServe(options: {
2
+ port?: number;
3
+ serviceId?: string;
4
+ serviceName?: string;
5
+ price?: number;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HhB"}