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.
- package/README.md +68 -118
- package/bin/agenticpool.js +6 -0
- package/dist/adapters/autogen.d.ts +33 -0
- package/dist/adapters/autogen.d.ts.map +1 -0
- package/dist/adapters/autogen.js +49 -0
- package/dist/adapters/autogen.js.map +1 -0
- package/dist/adapters/crewai.d.ts +30 -0
- package/dist/adapters/crewai.d.ts.map +1 -0
- package/dist/adapters/crewai.js +48 -0
- package/dist/adapters/crewai.js.map +1 -0
- package/dist/adapters/langchain.d.ts +30 -0
- package/dist/adapters/langchain.d.ts.map +1 -0
- package/dist/adapters/langchain.js +53 -0
- package/dist/adapters/langchain.js.map +1 -0
- package/dist/adapters/llamaindex.d.ts +29 -0
- package/dist/adapters/llamaindex.d.ts.map +1 -0
- package/dist/adapters/llamaindex.js +47 -0
- package/dist/adapters/llamaindex.js.map +1 -0
- package/dist/adapters/openai.d.ts +21 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +51 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +220 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +119 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +262 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/balance.d.ts +4 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +34 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/contract.d.ts +20 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +188 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/favor.d.ts +21 -0
- package/dist/commands/favor.d.ts.map +1 -0
- package/dist/commands/favor.js +144 -0
- package/dist/commands/favor.js.map +1 -0
- package/dist/commands/inbox.d.ts +4 -0
- package/dist/commands/inbox.d.ts.map +1 -0
- package/dist/commands/inbox.js +69 -0
- package/dist/commands/inbox.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +77 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/node.d.ts +8 -0
- package/dist/commands/node.d.ts.map +1 -0
- package/dist/commands/node.js +151 -0
- package/dist/commands/node.js.map +1 -0
- package/dist/commands/reputation.d.ts +2 -0
- package/dist/commands/reputation.d.ts.map +1 -0
- package/dist/commands/reputation.js +38 -0
- package/dist/commands/reputation.js.map +1 -0
- package/dist/commands/serve.d.ts +7 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +110 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/services.d.ts +17 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +161 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/trust.d.ts +2 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +44 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +32 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +72 -0
- package/dist/config.js.map +1 -0
- package/dist/economy/duckies.d.ts +75 -0
- package/dist/economy/duckies.d.ts.map +1 -0
- package/dist/economy/duckies.js +386 -0
- package/dist/economy/duckies.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -29
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +28 -38
- package/LICENSE +0 -1
- package/dist/api/ApiClient.d.ts +0 -37
- package/dist/api/ApiClient.js +0 -160
- package/dist/api/index.d.ts +0 -1
- package/dist/api/index.js +0 -6
- package/dist/auth/AuthHelper.d.ts +0 -17
- package/dist/auth/AuthHelper.js +0 -197
- package/dist/commands/auth.d.ts +0 -2
- package/dist/commands/auth.js +0 -206
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -51
- package/dist/commands/connections.d.ts +0 -2
- package/dist/commands/connections.js +0 -244
- package/dist/commands/contacts.d.ts +0 -2
- package/dist/commands/contacts.js +0 -205
- package/dist/commands/conversations.d.ts +0 -2
- package/dist/commands/conversations.js +0 -251
- package/dist/commands/errors.d.ts +0 -2
- package/dist/commands/errors.js +0 -73
- package/dist/commands/humans.d.ts +0 -2
- package/dist/commands/humans.js +0 -161
- package/dist/commands/identities.d.ts +0 -2
- package/dist/commands/identities.js +0 -141
- package/dist/commands/index.d.ts +0 -11
- package/dist/commands/index.js +0 -26
- package/dist/commands/messages.d.ts +0 -2
- package/dist/commands/messages.js +0 -216
- package/dist/commands/networks.d.ts +0 -2
- package/dist/commands/networks.js +0 -430
- package/dist/commands/profile.d.ts +0 -2
- package/dist/commands/profile.js +0 -257
- package/dist/config/ConfigManager.d.ts +0 -47
- package/dist/config/ConfigManager.js +0 -234
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -7
- package/dist/datamodel/index.d.ts +0 -3
- package/dist/datamodel/index.js +0 -20
- package/dist/datamodel/models/humans.d.ts +0 -81
- package/dist/datamodel/models/humans.js +0 -3
- package/dist/datamodel/models/index.d.ts +0 -110
- package/dist/datamodel/models/index.js +0 -3
- package/dist/datamodel/toon/index.d.ts +0 -5
- package/dist/datamodel/toon/index.js +0 -225
- package/dist/limits/LimitsManager.d.ts +0 -23
- package/dist/limits/LimitsManager.js +0 -99
- package/dist/utils/colors.d.ts +0 -16
- package/dist/utils/colors.js +0 -23
- package/dist/utils/logger.d.ts +0 -11
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|