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,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,17 @@
|
|
|
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 handleUnpublishService(serviceId: string): Promise<void>;
|
|
10
|
+
export declare function handleListServices(options: {
|
|
11
|
+
onlineOnly?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function handleSearchServices(query: string, options: {
|
|
14
|
+
onlineOnly?: boolean;
|
|
15
|
+
maxPrice?: number;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
//# 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,CAiEhB;AAED,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC7E;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,161 @@
|
|
|
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
|
+
const existingCard = await client.getAgent(credentials.agentName);
|
|
16
|
+
let mergedServices = [];
|
|
17
|
+
let agentDesc = `Autonomous agent offering ${service.name}`;
|
|
18
|
+
if (existingCard) {
|
|
19
|
+
if (existingCard.description) {
|
|
20
|
+
agentDesc = existingCard.description;
|
|
21
|
+
}
|
|
22
|
+
if (Array.isArray(existingCard.services)) {
|
|
23
|
+
const prevServices = existingCard.services.map((s) => ({
|
|
24
|
+
id: s.id,
|
|
25
|
+
name: s.name,
|
|
26
|
+
description: s.description,
|
|
27
|
+
tags: s.tags || [],
|
|
28
|
+
priceDuckies: s.pricing?.amount ?? s.priceDuckies ?? 0,
|
|
29
|
+
pricingModel: s.pricing?.model ?? s.pricingModel ?? 'per_call',
|
|
30
|
+
skillId: s.skillId,
|
|
31
|
+
}));
|
|
32
|
+
const existingIndex = prevServices.findIndex((s) => s.id === service.id);
|
|
33
|
+
if (existingIndex >= 0) {
|
|
34
|
+
prevServices[existingIndex] = service;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
prevServices.push(service);
|
|
38
|
+
}
|
|
39
|
+
mergedServices = prevServices;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
mergedServices = [service];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
mergedServices = [service];
|
|
47
|
+
}
|
|
48
|
+
await client.registerAgent(credentials.agentName, agentDesc, mergedServices);
|
|
49
|
+
console.log(`\n✅ Service Published to AgenticPool Marketplace!`);
|
|
50
|
+
console.log(`=========================================`);
|
|
51
|
+
console.log(`🆔 Service ID: ${service.id}`);
|
|
52
|
+
console.log(`🏷️ Name: ${service.name}`);
|
|
53
|
+
console.log(`💰 Price: ${service.priceDuckies} DUCKIES (${service.pricingModel})`);
|
|
54
|
+
console.log(`🏷️ Tags: ${service.tags.join(', ') || 'none'}`);
|
|
55
|
+
console.log(`🤖 Offering Agent:${credentials.agentName}`);
|
|
56
|
+
console.log(`📦 Active Services (${mergedServices.length}): ${mergedServices.map((s) => s.id).join(', ')}\n`);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
60
|
+
console.error(`❌ Failed to publish service: ${msg}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export async function handleUnpublishService(serviceId) {
|
|
64
|
+
const credentials = loadCredentials();
|
|
65
|
+
const client = new AgenticPoolClient({ credentials });
|
|
66
|
+
try {
|
|
67
|
+
const existingCard = await client.getAgent(credentials.agentName);
|
|
68
|
+
if (!existingCard || !Array.isArray(existingCard.services)) {
|
|
69
|
+
console.log(`⚠️ No services found registered for agent '${credentials.agentName}'.`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const prevServices = existingCard.services.map((s) => ({
|
|
73
|
+
id: s.id,
|
|
74
|
+
name: s.name,
|
|
75
|
+
description: s.description,
|
|
76
|
+
tags: s.tags || [],
|
|
77
|
+
priceDuckies: s.pricing?.amount ?? s.priceDuckies ?? 0,
|
|
78
|
+
pricingModel: s.pricing?.model ?? s.pricingModel ?? 'per_call',
|
|
79
|
+
skillId: s.skillId,
|
|
80
|
+
}));
|
|
81
|
+
const filtered = prevServices.filter((s) => s.id !== serviceId);
|
|
82
|
+
if (filtered.length === prevServices.length) {
|
|
83
|
+
console.log(`⚠️ Service ID '${serviceId}' not found in active services of agent '${credentials.agentName}'.`);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
await client.registerAgent(credentials.agentName, existingCard.description || `Autonomous agent ${credentials.agentName}`, filtered);
|
|
87
|
+
console.log(`\n🗑️ Service '${serviceId}' unpublished successfully.`);
|
|
88
|
+
console.log(`=========================================`);
|
|
89
|
+
console.log(`🤖 Offering Agent:${credentials.agentName}`);
|
|
90
|
+
console.log(`📦 Remaining Services (${filtered.length}): ${filtered.map((s) => s.id).join(', ') || 'none'}\n`);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
94
|
+
console.error(`❌ Failed to unpublish service: ${msg}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export async function handleListServices(options) {
|
|
98
|
+
const credentials = loadCredentials();
|
|
99
|
+
const client = new AgenticPoolClient({ credentials });
|
|
100
|
+
try {
|
|
101
|
+
const services = await client.listServices({ onlineOnly: options.onlineOnly });
|
|
102
|
+
console.log(`\n🛍️ AgenticPool Marketplace Services (${services.length} available):`);
|
|
103
|
+
console.log(`=========================================`);
|
|
104
|
+
if (services.length === 0) {
|
|
105
|
+
console.log(` No services found matching criteria.`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
for (const item of services) {
|
|
109
|
+
const status = item.presence?.isOnline ? '🟢 online' : '⚪ offline';
|
|
110
|
+
console.log(`• [${item.service?.id}] ${item.service?.name}`);
|
|
111
|
+
console.log(` Provider: ${item.agentName} (${status})`);
|
|
112
|
+
console.log(` Price: ${item.service?.pricing?.amount} DUCKIES (${item.service?.pricing?.model})`);
|
|
113
|
+
if (item.service?.description) {
|
|
114
|
+
console.log(` About: ${item.service.description}`);
|
|
115
|
+
}
|
|
116
|
+
console.log(`-----------------------------------------`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
console.log('');
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
123
|
+
console.error(`❌ Failed to list services: ${msg}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export async function handleSearchServices(query, options) {
|
|
127
|
+
const credentials = loadCredentials();
|
|
128
|
+
const client = new AgenticPoolClient({ credentials });
|
|
129
|
+
try {
|
|
130
|
+
const resp = await client.searchServices(query, {
|
|
131
|
+
onlineOnly: options.onlineOnly,
|
|
132
|
+
maxPriceDuckies: options.maxPrice,
|
|
133
|
+
});
|
|
134
|
+
console.log(`\n🔍 Search Results for '${query}' (${resp.totalHits || 0} hits via ${resp.engine}):`);
|
|
135
|
+
console.log(`=========================================`);
|
|
136
|
+
if (!resp.hits || resp.hits.length === 0) {
|
|
137
|
+
console.log(` No services found matching '${query}'.`);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
for (const hit of resp.hits) {
|
|
141
|
+
const isOnline = hit.presence?.isOnline;
|
|
142
|
+
const status = isOnline ? '🟢 online' : '⚪ offline';
|
|
143
|
+
const price = hit.fields?.price ?? hit.service?.pricing?.amount ?? 0;
|
|
144
|
+
const name = hit.fields?.title ?? hit.service?.name ?? hit.serviceId;
|
|
145
|
+
console.log(`• [${hit.serviceId || hit.id}] ${name}`);
|
|
146
|
+
console.log(` Provider: ${hit.agentName} (${status})`);
|
|
147
|
+
console.log(` Price: ${price} DUCKIES`);
|
|
148
|
+
if (hit.fields?.description) {
|
|
149
|
+
console.log(` Desc: ${hit.fields.description}`);
|
|
150
|
+
}
|
|
151
|
+
console.log(`-----------------------------------------`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
console.log('');
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
158
|
+
console.error(`❌ Failed to search services: ${msg}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/config.d.ts
ADDED
|
@@ -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"}
|