@itachisol/plugin-x402-swarms 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +323 -0
- package/dist/actions/delegateToSwarm.d.ts +8 -0
- package/dist/actions/delegateToSwarm.d.ts.map +1 -0
- package/dist/actions/delegateToSwarm.js +296 -0
- package/dist/actions/delegateToSwarm.js.map +1 -0
- package/dist/actions/delegateToSwarmWithPayment.d.ts +8 -0
- package/dist/actions/delegateToSwarmWithPayment.d.ts.map +1 -0
- package/dist/actions/delegateToSwarmWithPayment.js +323 -0
- package/dist/actions/delegateToSwarmWithPayment.js.map +1 -0
- package/dist/actions/discoverServices.d.ts +3 -0
- package/dist/actions/discoverServices.d.ts.map +1 -0
- package/dist/actions/discoverServices.js +63 -0
- package/dist/actions/discoverServices.js.map +1 -0
- package/dist/actions/index.d.ts +6 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +6 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/payForService.d.ts +3 -0
- package/dist/actions/payForService.d.ts.map +1 -0
- package/dist/actions/payForService.js +115 -0
- package/dist/actions/payForService.js.map +1 -0
- package/dist/actions/runSwarmAgent.d.ts +7 -0
- package/dist/actions/runSwarmAgent.d.ts.map +1 -0
- package/dist/actions/runSwarmAgent.js +131 -0
- package/dist/actions/runSwarmAgent.js.map +1 -0
- package/dist/client/index.d.ts +512 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +469 -0
- package/dist/client/index.js.map +1 -0
- package/dist/evaluators/paymentEvaluator.d.ts +7 -0
- package/dist/evaluators/paymentEvaluator.d.ts.map +1 -0
- package/dist/evaluators/paymentEvaluator.js +104 -0
- package/dist/evaluators/paymentEvaluator.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/marketing/index.d.ts +7 -0
- package/dist/marketing/index.d.ts.map +1 -0
- package/dist/marketing/index.js +7 -0
- package/dist/marketing/index.js.map +1 -0
- package/dist/marketing/milestoneAgent.d.ts +54 -0
- package/dist/marketing/milestoneAgent.d.ts.map +1 -0
- package/dist/marketing/milestoneAgent.js +121 -0
- package/dist/marketing/milestoneAgent.js.map +1 -0
- package/dist/marketing/tweetTemplates.d.ts +32 -0
- package/dist/marketing/tweetTemplates.d.ts.map +1 -0
- package/dist/marketing/tweetTemplates.js +60 -0
- package/dist/marketing/tweetTemplates.js.map +1 -0
- package/dist/marketing/xMonitor.d.ts +51 -0
- package/dist/marketing/xMonitor.d.ts.map +1 -0
- package/dist/marketing/xMonitor.js +141 -0
- package/dist/marketing/xMonitor.js.map +1 -0
- package/dist/providers/x402Provider.d.ts +7 -0
- package/dist/providers/x402Provider.d.ts.map +1 -0
- package/dist/providers/x402Provider.js +72 -0
- package/dist/providers/x402Provider.js.map +1 -0
- package/dist/providers/x402ServerProvider.d.ts +7 -0
- package/dist/providers/x402ServerProvider.d.ts.map +1 -0
- package/dist/providers/x402ServerProvider.js +48 -0
- package/dist/providers/x402ServerProvider.js.map +1 -0
- package/dist/routes/advancedRoutes.d.ts +5 -0
- package/dist/routes/advancedRoutes.d.ts.map +1 -0
- package/dist/routes/advancedRoutes.js +869 -0
- package/dist/routes/advancedRoutes.js.map +1 -0
- package/dist/routes/batchRoutes.d.ts +13 -0
- package/dist/routes/batchRoutes.d.ts.map +1 -0
- package/dist/routes/batchRoutes.js +496 -0
- package/dist/routes/batchRoutes.js.map +1 -0
- package/dist/routes/codeAuditRoutes.d.ts +6 -0
- package/dist/routes/codeAuditRoutes.d.ts.map +1 -0
- package/dist/routes/codeAuditRoutes.js +415 -0
- package/dist/routes/codeAuditRoutes.js.map +1 -0
- package/dist/routes/contentRoutes.d.ts +5 -0
- package/dist/routes/contentRoutes.d.ts.map +1 -0
- package/dist/routes/contentRoutes.js +370 -0
- package/dist/routes/contentRoutes.js.map +1 -0
- package/dist/routes/cryptoAnalysisRoutes.d.ts +5 -0
- package/dist/routes/cryptoAnalysisRoutes.d.ts.map +1 -0
- package/dist/routes/cryptoAnalysisRoutes.js +641 -0
- package/dist/routes/cryptoAnalysisRoutes.js.map +1 -0
- package/dist/routes/cryptoRoutes.d.ts +5 -0
- package/dist/routes/cryptoRoutes.d.ts.map +1 -0
- package/dist/routes/cryptoRoutes.js +1225 -0
- package/dist/routes/cryptoRoutes.js.map +1 -0
- package/dist/routes/heliusDataRoutes.d.ts +14 -0
- package/dist/routes/heliusDataRoutes.d.ts.map +1 -0
- package/dist/routes/heliusDataRoutes.js +388 -0
- package/dist/routes/heliusDataRoutes.js.map +1 -0
- package/dist/routes/taskRoutes.d.ts +5 -0
- package/dist/routes/taskRoutes.d.ts.map +1 -0
- package/dist/routes/taskRoutes.js +574 -0
- package/dist/routes/taskRoutes.js.map +1 -0
- package/dist/routes/tradingRoutes.d.ts +5 -0
- package/dist/routes/tradingRoutes.d.ts.map +1 -0
- package/dist/routes/tradingRoutes.js +500 -0
- package/dist/routes/tradingRoutes.js.map +1 -0
- package/dist/routes/walletAnalyzerRoutes.d.ts +12 -0
- package/dist/routes/walletAnalyzerRoutes.d.ts.map +1 -0
- package/dist/routes/walletAnalyzerRoutes.js +316 -0
- package/dist/routes/walletAnalyzerRoutes.js.map +1 -0
- package/dist/routes/x402Routes.d.ts +9 -0
- package/dist/routes/x402Routes.d.ts.map +1 -0
- package/dist/routes/x402Routes.js +474 -0
- package/dist/routes/x402Routes.js.map +1 -0
- package/dist/schemas/budgetState.d.ts +250 -0
- package/dist/schemas/budgetState.d.ts.map +1 -0
- package/dist/schemas/budgetState.js +20 -0
- package/dist/schemas/budgetState.js.map +1 -0
- package/dist/schemas/endpointScores.d.ts +182 -0
- package/dist/schemas/endpointScores.d.ts.map +1 -0
- package/dist/schemas/endpointScores.js +17 -0
- package/dist/schemas/endpointScores.js.map +1 -0
- package/dist/schemas/index.d.ts +4 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +4 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/paymentHistory.d.ts +284 -0
- package/dist/schemas/paymentHistory.d.ts.map +1 -0
- package/dist/schemas/paymentHistory.js +24 -0
- package/dist/schemas/paymentHistory.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/x402Gate.d.ts +56 -0
- package/dist/server/x402Gate.d.ts.map +1 -0
- package/dist/server/x402Gate.js +240 -0
- package/dist/server/x402Gate.js.map +1 -0
- package/dist/server/x402ServerService.d.ts +30 -0
- package/dist/server/x402ServerService.d.ts.map +1 -0
- package/dist/server/x402ServerService.js +79 -0
- package/dist/server/x402ServerService.js.map +1 -0
- package/dist/services/paymentMemoryService.d.ts +73 -0
- package/dist/services/paymentMemoryService.d.ts.map +1 -0
- package/dist/services/paymentMemoryService.js +247 -0
- package/dist/services/paymentMemoryService.js.map +1 -0
- package/dist/services/swarmsService.d.ts +66 -0
- package/dist/services/swarmsService.d.ts.map +1 -0
- package/dist/services/swarmsService.js +102 -0
- package/dist/services/swarmsService.js.map +1 -0
- package/dist/services/x402WalletService.d.ts +57 -0
- package/dist/services/x402WalletService.d.ts.map +1 -0
- package/dist/services/x402WalletService.js +258 -0
- package/dist/services/x402WalletService.js.map +1 -0
- package/dist/templates/index.d.ts +24 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +51 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/swarmTemplates.d.ts +22 -0
- package/dist/templates/swarmTemplates.d.ts.map +1 -0
- package/dist/templates/swarmTemplates.js +225 -0
- package/dist/templates/swarmTemplates.js.map +1 -0
- package/dist/types.d.ts +197 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cache.d.ts +17 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +32 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/llm.d.ts +16 -0
- package/dist/utils/llm.d.ts.map +1 -0
- package/dist/utils/llm.js +32 -0
- package/dist/utils/llm.js.map +1 -0
- package/dist/utils/reportStore.d.ts +45 -0
- package/dist/utils/reportStore.d.ts.map +1 -0
- package/dist/utils/reportStore.js +164 -0
- package/dist/utils/reportStore.js.map +1 -0
- package/dist/utils/taskQueue.d.ts +54 -0
- package/dist/utils/taskQueue.d.ts.map +1 -0
- package/dist/utils/taskQueue.js +124 -0
- package/dist/utils/taskQueue.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Action } from "@elizaos/core";
|
|
2
|
+
/**
|
|
3
|
+
* Delegate a task to a Swarms multi-agent system with x402-funded data.
|
|
4
|
+
* Pre-fetches paid data from OpenDexter, injects it into the swarm prompt,
|
|
5
|
+
* and optionally re-runs if the swarm needs more data.
|
|
6
|
+
*/
|
|
7
|
+
export declare const delegateToSwarmWithPayment: Action;
|
|
8
|
+
//# sourceMappingURL=delegateToSwarmWithPayment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegateToSwarmWithPayment.d.ts","sourceRoot":"","sources":["../../src/actions/delegateToSwarmWithPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AAyBvB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,MA6QxC,CAAC"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { ModelType, } from "@elizaos/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { searchAPIs } from "@dexterai/x402/client";
|
|
4
|
+
import { findMatchingTemplate } from "../templates/index.js";
|
|
5
|
+
const MAX_PREFETCH_SERVICES = 3;
|
|
6
|
+
const MAX_DATA_PER_SOURCE = 4000;
|
|
7
|
+
const MAX_RERUN = 1;
|
|
8
|
+
const TaskAndKeywordsSchema = z.object({
|
|
9
|
+
task: z.string().min(1),
|
|
10
|
+
keywords: z.array(z.string()).optional().default([]),
|
|
11
|
+
category: z.string().optional(),
|
|
12
|
+
});
|
|
13
|
+
const DataRequestSchema = z.array(z.object({
|
|
14
|
+
query: z.string(),
|
|
15
|
+
reason: z.string().optional(),
|
|
16
|
+
}));
|
|
17
|
+
/**
|
|
18
|
+
* Delegate a task to a Swarms multi-agent system with x402-funded data.
|
|
19
|
+
* Pre-fetches paid data from OpenDexter, injects it into the swarm prompt,
|
|
20
|
+
* and optionally re-runs if the swarm needs more data.
|
|
21
|
+
*/
|
|
22
|
+
export const delegateToSwarmWithPayment = {
|
|
23
|
+
name: "DELEGATE_TO_SWARM_WITH_PAYMENT",
|
|
24
|
+
description: "Delegate a complex task to a Swarms multi-agent system, automatically discovering and paying for relevant data via x402 before running the swarm. Combines marketplace discovery, micropayments, and multi-agent orchestration in one action.",
|
|
25
|
+
similes: [
|
|
26
|
+
"RESEARCH_AND_SWARM",
|
|
27
|
+
"PAID_SWARM_TASK",
|
|
28
|
+
"X402_SWARM",
|
|
29
|
+
"BUY_DATA_AND_ANALYZE",
|
|
30
|
+
"FUNDED_MULTI_AGENT",
|
|
31
|
+
],
|
|
32
|
+
validate: async (runtime, _message, _state) => {
|
|
33
|
+
const hasSwarms = !!runtime.getSetting("SWARMS_API_KEY");
|
|
34
|
+
const hasWallet = !!runtime.getSetting("SOLANA_PRIVATE_KEY") ||
|
|
35
|
+
!!runtime.getSetting("EVM_PRIVATE_KEY");
|
|
36
|
+
return hasSwarms && hasWallet;
|
|
37
|
+
},
|
|
38
|
+
handler: async (runtime, message, _state, _options, callback) => {
|
|
39
|
+
const swarmsService = runtime.getService("SWARMS");
|
|
40
|
+
const walletService = runtime.getService("X402_WALLET");
|
|
41
|
+
if (!swarmsService?.isAvailable()) {
|
|
42
|
+
await callback?.({ text: "Swarms service not available. Set SWARMS_API_KEY.", error: true });
|
|
43
|
+
return { success: false, error: "Swarms not available" };
|
|
44
|
+
}
|
|
45
|
+
if (!walletService?.getBudgetAccount()) {
|
|
46
|
+
await callback?.({ text: "Wallet not configured. Set SOLANA_PRIVATE_KEY or EVM_PRIVATE_KEY.", error: true });
|
|
47
|
+
return { success: false, error: "Wallet not configured" };
|
|
48
|
+
}
|
|
49
|
+
const userText = message.content.text ?? "";
|
|
50
|
+
// Step 1: Extract task + data keywords
|
|
51
|
+
const extraction = await runtime.useModel(ModelType.TEXT_SMALL, {
|
|
52
|
+
prompt: `Extract the task and data keywords from the user message.
|
|
53
|
+
Return JSON: { "task": "<what needs to be done>", "keywords": ["<search terms for finding relevant paid data APIs>"], "category": "<optional: defi, ai, data, social>" }
|
|
54
|
+
|
|
55
|
+
User message: "${userText}"
|
|
56
|
+
|
|
57
|
+
Return only valid JSON, no markdown.`,
|
|
58
|
+
});
|
|
59
|
+
let params;
|
|
60
|
+
try {
|
|
61
|
+
params = TaskAndKeywordsSchema.parse(JSON.parse(String(extraction)));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
params = { task: userText, keywords: userText.split(/\s+/).slice(0, 5) };
|
|
65
|
+
}
|
|
66
|
+
// Step 2: Discover relevant x402 services
|
|
67
|
+
await callback?.({ text: `Searching OpenDexter for data services matching: ${params.keywords.join(", ")}...` });
|
|
68
|
+
let discoveredApis = [];
|
|
69
|
+
try {
|
|
70
|
+
const searchQueries = [
|
|
71
|
+
params.keywords.join(" "),
|
|
72
|
+
...(params.category ? [params.category] : []),
|
|
73
|
+
];
|
|
74
|
+
for (const query of searchQueries) {
|
|
75
|
+
const results = await searchAPIs({
|
|
76
|
+
query,
|
|
77
|
+
limit: 5,
|
|
78
|
+
maxPrice: walletService.getConfig().maxAutoPayUsd,
|
|
79
|
+
sort: "quality_score",
|
|
80
|
+
});
|
|
81
|
+
discoveredApis.push(...results);
|
|
82
|
+
}
|
|
83
|
+
// Deduplicate by URL
|
|
84
|
+
const seen = new Set();
|
|
85
|
+
discoveredApis = discoveredApis.filter((api) => {
|
|
86
|
+
if (seen.has(api.url))
|
|
87
|
+
return false;
|
|
88
|
+
seen.add(api.url);
|
|
89
|
+
return true;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Marketplace unavailable — continue without pre-fetched data
|
|
94
|
+
}
|
|
95
|
+
// Step 3: Pre-fetch data from top services
|
|
96
|
+
const dataFetches = [];
|
|
97
|
+
const servicesToFetch = discoveredApis.slice(0, MAX_PREFETCH_SERVICES);
|
|
98
|
+
if (servicesToFetch.length > 0) {
|
|
99
|
+
await callback?.({
|
|
100
|
+
text: `Found ${discoveredApis.length} service(s). Paying for data from ${servicesToFetch.length}...`,
|
|
101
|
+
});
|
|
102
|
+
for (const api of servicesToFetch) {
|
|
103
|
+
try {
|
|
104
|
+
const result = await walletService.payForResource(api.url);
|
|
105
|
+
const responseText = await result.response.text().catch(() => "");
|
|
106
|
+
dataFetches.push({
|
|
107
|
+
serviceName: api.name,
|
|
108
|
+
endpoint: api.url,
|
|
109
|
+
amountUsd: result.amountUsd,
|
|
110
|
+
txHash: result.txHash,
|
|
111
|
+
network: result.network,
|
|
112
|
+
data: responseText.slice(0, MAX_DATA_PER_SOURCE),
|
|
113
|
+
fetchedAt: Date.now(),
|
|
114
|
+
phase: "prefetch",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// Payment failed for this service — skip and continue
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const prefetchSpend = dataFetches.reduce((sum, d) => sum + d.amountUsd, 0);
|
|
123
|
+
const budgetAccount = walletService.getBudgetAccount();
|
|
124
|
+
// Step 4: Build augmented task prompt
|
|
125
|
+
const augmentedTask = buildAugmentedTask(params.task, dataFetches);
|
|
126
|
+
// Step 5: Select swarm template or use default
|
|
127
|
+
const template = findMatchingTemplate(userText);
|
|
128
|
+
const swarmType = template?.swarmType ?? "SequentialWorkflow";
|
|
129
|
+
const agents = template?.agents ?? [
|
|
130
|
+
{
|
|
131
|
+
agent_name: "Researcher",
|
|
132
|
+
system_prompt: "You are a thorough researcher. Analyze the provided data and task. Produce detailed findings.",
|
|
133
|
+
model_name: "gpt-4o-mini",
|
|
134
|
+
role: "worker",
|
|
135
|
+
max_loops: 1,
|
|
136
|
+
max_tokens: 4096,
|
|
137
|
+
temperature: 0.5,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
agent_name: "Analyst",
|
|
141
|
+
system_prompt: "You are an expert analyst. Take the research and produce actionable insights and recommendations.",
|
|
142
|
+
model_name: "gpt-4o-mini",
|
|
143
|
+
role: "worker",
|
|
144
|
+
max_loops: 1,
|
|
145
|
+
max_tokens: 4096,
|
|
146
|
+
temperature: 0.3,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
const templateLabel = template ? ` [${template.name}]` : "";
|
|
150
|
+
await callback?.({
|
|
151
|
+
text: `Running swarm (${swarmType})${templateLabel} with ${agents.length} agent(s)...\nPre-fetched: ${dataFetches.length} source(s), $${prefetchSpend.toFixed(4)} spent`,
|
|
152
|
+
});
|
|
153
|
+
// Step 5: Run swarm
|
|
154
|
+
let swarmOutput;
|
|
155
|
+
let swarmJobId = "";
|
|
156
|
+
let executionTime = 0;
|
|
157
|
+
let rounds = 1;
|
|
158
|
+
try {
|
|
159
|
+
const result = await swarmsService.runSwarm({
|
|
160
|
+
name: `x402-bridge-${Date.now()}`,
|
|
161
|
+
agents,
|
|
162
|
+
task: augmentedTask,
|
|
163
|
+
swarm_type: swarmType,
|
|
164
|
+
max_loops: template?.maxLoops ?? 1,
|
|
165
|
+
rules: template?.rules,
|
|
166
|
+
});
|
|
167
|
+
swarmJobId = result.job_id ?? "";
|
|
168
|
+
executionTime = result.execution_time ?? 0;
|
|
169
|
+
swarmOutput = typeof result.output === "string"
|
|
170
|
+
? result.output
|
|
171
|
+
: JSON.stringify(result.output, null, 2);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
175
|
+
await callback?.({ text: `Swarm failed: ${msg}`, error: true });
|
|
176
|
+
return { success: false, error: msg };
|
|
177
|
+
}
|
|
178
|
+
// Step 6: Check for DATA_REQUESTS and optionally re-run
|
|
179
|
+
if (rounds <= MAX_RERUN) {
|
|
180
|
+
const additionalData = await fetchRequestedData(swarmOutput, runtime, walletService, dataFetches);
|
|
181
|
+
if (additionalData.length > 0) {
|
|
182
|
+
rounds = 2;
|
|
183
|
+
const allFetches = [...dataFetches, ...additionalData];
|
|
184
|
+
const rerunTask = buildAugmentedTask(params.task, allFetches);
|
|
185
|
+
await callback?.({
|
|
186
|
+
text: `Swarm requested ${additionalData.length} more data source(s). Re-running with additional data...`,
|
|
187
|
+
});
|
|
188
|
+
try {
|
|
189
|
+
const rerunResult = await swarmsService.runSwarm({
|
|
190
|
+
name: `x402-bridge-rerun-${Date.now()}`,
|
|
191
|
+
agents,
|
|
192
|
+
task: rerunTask,
|
|
193
|
+
swarm_type: swarmType,
|
|
194
|
+
max_loops: template?.maxLoops ?? 1,
|
|
195
|
+
rules: template?.rules,
|
|
196
|
+
});
|
|
197
|
+
swarmJobId = rerunResult.job_id ?? swarmJobId;
|
|
198
|
+
executionTime += rerunResult.execution_time ?? 0;
|
|
199
|
+
swarmOutput = typeof rerunResult.output === "string"
|
|
200
|
+
? rerunResult.output
|
|
201
|
+
: JSON.stringify(rerunResult.output, null, 2);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Re-run failed — use the original output
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Step 7: Return results with payment transparency
|
|
209
|
+
const allFetches = dataFetches;
|
|
210
|
+
const totalSpend = allFetches.reduce((sum, d) => sum + d.amountUsd, 0);
|
|
211
|
+
const paymentLines = allFetches.map((d) => ` - ${d.serviceName}: $${d.amountUsd.toFixed(4)} (${d.phase})`);
|
|
212
|
+
const text = `Swarm completed (${swarmType})${templateLabel}
|
|
213
|
+
Agents: ${agents.length} | Execution time: ${executionTime.toFixed(1)}s | Rounds: ${rounds}
|
|
214
|
+
|
|
215
|
+
x402 Payments:
|
|
216
|
+
${paymentLines.length > 0 ? paymentLines.join("\n") : " (no paid data used)"}
|
|
217
|
+
Total x402 spend: $${totalSpend.toFixed(4)} | Budget remaining: ${budgetAccount.remaining}
|
|
218
|
+
|
|
219
|
+
Result:
|
|
220
|
+
${swarmOutput.slice(0, 1500)}`;
|
|
221
|
+
await callback?.({
|
|
222
|
+
text,
|
|
223
|
+
content: {
|
|
224
|
+
swarmJobId,
|
|
225
|
+
swarmType,
|
|
226
|
+
executionTime: String(executionTime),
|
|
227
|
+
rounds: String(rounds),
|
|
228
|
+
totalX402Spend: String(totalSpend),
|
|
229
|
+
dataSourceCount: String(allFetches.length),
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
return { success: true, text };
|
|
233
|
+
},
|
|
234
|
+
examples: [
|
|
235
|
+
[
|
|
236
|
+
{
|
|
237
|
+
name: "user",
|
|
238
|
+
content: { text: "Research the top DeFi protocols by TVL using paid data sources and give me a full analysis" },
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
name: "agent",
|
|
242
|
+
content: {
|
|
243
|
+
text: "Swarm completed (SequentialWorkflow)\nAgents: 3 | Rounds: 1\n\nx402 Payments:\n - CoinGecko: $0.01 (prefetch)\n - DeFi Risk DB: $0.03 (prefetch)\nTotal: $0.04\n\nResult: [detailed analysis]...",
|
|
244
|
+
actions: ["DELEGATE_TO_SWARM_WITH_PAYMENT"],
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
],
|
|
249
|
+
};
|
|
250
|
+
/** Build the augmented task prompt with fetched data injected */
|
|
251
|
+
function buildAugmentedTask(task, fetches) {
|
|
252
|
+
if (fetches.length === 0) {
|
|
253
|
+
return `TASK: ${task}
|
|
254
|
+
|
|
255
|
+
NOTE: No external data was available for pre-fetching. Complete the task using your built-in knowledge. If you need specific external data, list what you need in a section titled "DATA_REQUESTS:" at the end of your response. Format each as a bullet with the data type and why you need it.`;
|
|
256
|
+
}
|
|
257
|
+
const dataSections = fetches.map((d) => `--- Source: ${d.serviceName} (${d.endpoint}) ---
|
|
258
|
+
${d.data}
|
|
259
|
+
--- End Source ---`);
|
|
260
|
+
return `TASK: ${task}
|
|
261
|
+
|
|
262
|
+
AVAILABLE DATA (pre-fetched from paid x402 APIs):
|
|
263
|
+
${dataSections.join("\n\n")}
|
|
264
|
+
|
|
265
|
+
INSTRUCTIONS: Use the above data to complete the task. If you need additional data not provided above, list what you need in a section titled "DATA_REQUESTS:" at the end of your response. Format each as a bullet with the data type and why you need it.`;
|
|
266
|
+
}
|
|
267
|
+
/** Parse swarm output for DATA_REQUESTS and fetch additional data */
|
|
268
|
+
async function fetchRequestedData(swarmOutput, runtime, walletService, existingFetches) {
|
|
269
|
+
// Look for DATA_REQUESTS section
|
|
270
|
+
const requestMatch = swarmOutput.match(/DATA_REQUESTS:\s*([\s\S]*?)(?:$|---|\n\n(?=[A-Z]))/i);
|
|
271
|
+
if (!requestMatch)
|
|
272
|
+
return [];
|
|
273
|
+
// Parse the requests via LLM
|
|
274
|
+
let requests;
|
|
275
|
+
try {
|
|
276
|
+
const parsed = await runtime.useModel(ModelType.TEXT_SMALL, {
|
|
277
|
+
prompt: `Extract data requests from this text. Return a JSON array of { query: string, reason: string }.
|
|
278
|
+
|
|
279
|
+
Text:
|
|
280
|
+
${requestMatch[1].slice(0, 1000)}
|
|
281
|
+
|
|
282
|
+
Return only valid JSON array, no markdown.`,
|
|
283
|
+
});
|
|
284
|
+
requests = DataRequestSchema.parse(JSON.parse(String(parsed)));
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
if (requests.length === 0)
|
|
290
|
+
return [];
|
|
291
|
+
// Fetch each requested data source
|
|
292
|
+
const additionalFetches = [];
|
|
293
|
+
const existingUrls = new Set(existingFetches.map((d) => d.endpoint));
|
|
294
|
+
for (const req of requests.slice(0, MAX_PREFETCH_SERVICES)) {
|
|
295
|
+
try {
|
|
296
|
+
const apis = await searchAPIs({
|
|
297
|
+
query: req.query,
|
|
298
|
+
limit: 1,
|
|
299
|
+
maxPrice: walletService.getConfig().maxAutoPayUsd,
|
|
300
|
+
sort: "quality_score",
|
|
301
|
+
});
|
|
302
|
+
if (apis.length === 0 || existingUrls.has(apis[0].url))
|
|
303
|
+
continue;
|
|
304
|
+
const result = await walletService.payForResource(apis[0].url);
|
|
305
|
+
const responseText = await result.response.text().catch(() => "");
|
|
306
|
+
additionalFetches.push({
|
|
307
|
+
serviceName: apis[0].name,
|
|
308
|
+
endpoint: apis[0].url,
|
|
309
|
+
amountUsd: result.amountUsd,
|
|
310
|
+
txHash: result.txHash,
|
|
311
|
+
network: result.network,
|
|
312
|
+
data: responseText.slice(0, MAX_DATA_PER_SOURCE),
|
|
313
|
+
fetchedAt: Date.now(),
|
|
314
|
+
phase: "swarm-requested",
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
// Skip failed fetches
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return additionalFetches;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=delegateToSwarmWithPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegateToSwarmWithPayment.js","sourceRoot":"","sources":["../../src/actions/delegateToSwarmWithPayment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoverServices.d.ts","sourceRoot":"","sources":["../../src/actions/discoverServices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAKZ,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,gBAAgB,EAAE,MAiF9B,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { searchAPIs } from "@dexterai/x402/client";
|
|
2
|
+
export const discoverServices = {
|
|
3
|
+
name: "DISCOVER_X402_SERVICES",
|
|
4
|
+
description: "Discover available x402-protected services on the OpenDexter marketplace. Returns a list of services with their prices and endpoints.",
|
|
5
|
+
similes: [
|
|
6
|
+
"LIST_X402_SERVICES",
|
|
7
|
+
"FIND_PAID_APIS",
|
|
8
|
+
"BROWSE_X402_MARKETPLACE",
|
|
9
|
+
"SEARCH_SERVICES",
|
|
10
|
+
],
|
|
11
|
+
validate: async (_runtime, _message, _state) => true,
|
|
12
|
+
handler: async (_runtime, message, _state, _options, callback) => {
|
|
13
|
+
const query = (message.content.text ?? "").toLowerCase();
|
|
14
|
+
let apis;
|
|
15
|
+
try {
|
|
16
|
+
apis = await searchAPIs({
|
|
17
|
+
query: query || undefined,
|
|
18
|
+
limit: 10,
|
|
19
|
+
sort: "quality_score",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
24
|
+
await callback?.({
|
|
25
|
+
text: `Failed to search OpenDexter marketplace: ${msg}`,
|
|
26
|
+
error: true,
|
|
27
|
+
});
|
|
28
|
+
return { success: false, error: msg };
|
|
29
|
+
}
|
|
30
|
+
if (apis.length === 0) {
|
|
31
|
+
await callback?.({
|
|
32
|
+
text: "No x402 services found matching your query on OpenDexter.",
|
|
33
|
+
});
|
|
34
|
+
return { success: true, text: "No services found" };
|
|
35
|
+
}
|
|
36
|
+
const lines = apis.map((s) => `**${s.name}** (${s.category})${s.verified ? " [verified]" : ""}\n ${s.description}\n Price: ${s.price}/call | Network: ${s.network ?? "multi"}\n Endpoint: ${s.url}`);
|
|
37
|
+
const text = `Found ${apis.length} x402 service(s) on OpenDexter:\n\n${lines.join("\n\n")}`;
|
|
38
|
+
await callback?.({
|
|
39
|
+
text,
|
|
40
|
+
content: {
|
|
41
|
+
serviceCount: String(apis.length),
|
|
42
|
+
serviceNames: apis.map((a) => a.name).join(", "),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
return { success: true, text };
|
|
46
|
+
},
|
|
47
|
+
examples: [
|
|
48
|
+
[
|
|
49
|
+
{
|
|
50
|
+
name: "user",
|
|
51
|
+
content: { text: "What x402 services are available?" },
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "agent",
|
|
55
|
+
content: {
|
|
56
|
+
text: "Found 3 x402 service(s) on OpenDexter:\n\n**Exa Search** ...",
|
|
57
|
+
actions: ["DISCOVER_X402_SERVICES"],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=discoverServices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discoverServices.js","sourceRoot":"","sources":["../../src/actions/discoverServices.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAsB,MAAM,uBAAuB,CAAC;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACtC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,uIAAuI;IACzI,OAAO,EAAE;QACP,oBAAoB;QACpB,gBAAgB;QAChB,yBAAyB;QACzB,iBAAiB;KAClB;IAED,QAAQ,EAAE,KAAK,EACb,QAAuB,EACvB,QAAgB,EAChB,MAAc,EACI,EAAE,CAAC,IAAI;IAE3B,OAAO,EAAE,KAAK,EACZ,QAAuB,EACvB,OAAe,EACf,MAAc,EACd,QAAkC,EAClC,QAA0B,EACgD,EAAE;QAC5E,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAEzD,IAAI,IAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,UAAU,CAAC;gBACtB,KAAK,EAAE,KAAK,IAAI,SAAS;gBACzB,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,QAAQ,EAAE,CAAC;gBACf,IAAI,EAAE,4CAA4C,GAAG,EAAE;gBACvD,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,EAAE,CAAC;gBACf,IAAI,EAAE,2DAA2D;aAClE,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,WAAW,cAAc,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,OAAO,IAAI,OAAO,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAC3K,CAAC;QAEF,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,MAAM,sCAAsC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAE5F,MAAM,QAAQ,EAAE,CAAC;YACf,IAAI;YACJ,OAAO,EAAE;gBACP,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACjD;SACF,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,QAAQ,EAAE;QACR;YACE;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;aACvD;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE;oBACP,IAAI,EAAE,8DAA8D;oBACpE,OAAO,EAAE,CAAC,wBAAwB,CAAC;iBACpC;aACF;SACF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { payForService } from "./payForService.js";
|
|
2
|
+
export { discoverServices } from "./discoverServices.js";
|
|
3
|
+
export { delegateToSwarm } from "./delegateToSwarm.js";
|
|
4
|
+
export { runSwarmAgent } from "./runSwarmAgent.js";
|
|
5
|
+
export { delegateToSwarmWithPayment } from "./delegateToSwarmWithPayment.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { payForService } from "./payForService.js";
|
|
2
|
+
export { discoverServices } from "./discoverServices.js";
|
|
3
|
+
export { delegateToSwarm } from "./delegateToSwarm.js";
|
|
4
|
+
export { runSwarmAgent } from "./runSwarmAgent.js";
|
|
5
|
+
export { delegateToSwarmWithPayment } from "./delegateToSwarmWithPayment.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payForService.d.ts","sourceRoot":"","sources":["../../src/actions/payForService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AAYvB,eAAO,MAAM,aAAa,EAAE,MAmI3B,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { ModelType, } from "@elizaos/core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const PaySchema = z.object({
|
|
4
|
+
endpoint: z.string().url(),
|
|
5
|
+
method: z.enum(["GET", "POST", "PUT", "DELETE"]).optional().default("GET"),
|
|
6
|
+
body: z.string().optional(),
|
|
7
|
+
headers: z.record(z.string()).optional(),
|
|
8
|
+
description: z.string().optional(),
|
|
9
|
+
});
|
|
10
|
+
export const payForService = {
|
|
11
|
+
name: "PAY_FOR_X402_SERVICE",
|
|
12
|
+
description: "Access an x402-protected API endpoint. Payment is handled automatically by the Dexter SDK. Supports GET, POST, PUT, DELETE.",
|
|
13
|
+
similes: [
|
|
14
|
+
"PAY_FOR_API",
|
|
15
|
+
"X402_PAY",
|
|
16
|
+
"MICROPAYMENT",
|
|
17
|
+
"PAY_FOR_RESOURCE",
|
|
18
|
+
"BUY_API_ACCESS",
|
|
19
|
+
],
|
|
20
|
+
validate: async (runtime, _message, _state) => {
|
|
21
|
+
return (!!runtime.getSetting("SOLANA_PRIVATE_KEY") ||
|
|
22
|
+
!!runtime.getSetting("EVM_PRIVATE_KEY"));
|
|
23
|
+
},
|
|
24
|
+
handler: async (runtime, message, _state, _options, callback) => {
|
|
25
|
+
const walletService = runtime.getService("X402_WALLET");
|
|
26
|
+
if (!walletService) {
|
|
27
|
+
await callback?.({
|
|
28
|
+
text: "X402 wallet service is not initialized. Add X402WalletService to your agent.",
|
|
29
|
+
error: true,
|
|
30
|
+
});
|
|
31
|
+
return { success: false, error: "X402 wallet service not initialized" };
|
|
32
|
+
}
|
|
33
|
+
// Extract endpoint details from the message using the LLM
|
|
34
|
+
const extraction = await runtime.useModel(ModelType.TEXT_SMALL, {
|
|
35
|
+
prompt: `Extract API endpoint details from this request. Return JSON with fields:
|
|
36
|
+
- endpoint (URL, required)
|
|
37
|
+
- method ("GET", "POST", "PUT", or "DELETE", default "GET")
|
|
38
|
+
- body (request body string, optional)
|
|
39
|
+
- headers (object of header key-value pairs, optional)
|
|
40
|
+
- description (optional)
|
|
41
|
+
|
|
42
|
+
User message: "${message.content.text ?? ""}"
|
|
43
|
+
|
|
44
|
+
Return only valid JSON, no markdown.`,
|
|
45
|
+
});
|
|
46
|
+
let params;
|
|
47
|
+
try {
|
|
48
|
+
params = PaySchema.parse(JSON.parse(String(extraction)));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
await callback?.({
|
|
52
|
+
text: "Could not parse endpoint details. Please specify the endpoint URL to access.",
|
|
53
|
+
error: true,
|
|
54
|
+
});
|
|
55
|
+
return { success: false, error: "Could not parse endpoint details" };
|
|
56
|
+
}
|
|
57
|
+
const budgetAccount = walletService.getBudgetAccount();
|
|
58
|
+
if (!budgetAccount) {
|
|
59
|
+
await callback?.({
|
|
60
|
+
text: "Wallet not configured. Set SOLANA_PRIVATE_KEY or EVM_PRIVATE_KEY.",
|
|
61
|
+
error: true,
|
|
62
|
+
});
|
|
63
|
+
return { success: false, error: "Wallet not configured" };
|
|
64
|
+
}
|
|
65
|
+
await callback?.({
|
|
66
|
+
text: `Accessing x402 endpoint: ${params.method} ${params.endpoint}\nRemaining budget: ${budgetAccount.remaining}`,
|
|
67
|
+
});
|
|
68
|
+
try {
|
|
69
|
+
const result = await walletService.payForResource(params.endpoint, {
|
|
70
|
+
method: params.method,
|
|
71
|
+
headers: params.headers,
|
|
72
|
+
body: params.body,
|
|
73
|
+
});
|
|
74
|
+
const responseText = result.response.ok
|
|
75
|
+
? await result.response.text().catch(() => "(binary response)")
|
|
76
|
+
: null;
|
|
77
|
+
const txInfo = result.txHash !== "no-payment-required"
|
|
78
|
+
? `\n- Tx: ${result.txHash}${result.network ? ` (${result.network})` : ""}`
|
|
79
|
+
: "";
|
|
80
|
+
const text = `Access successful.\n- Endpoint: ${params.method} ${params.endpoint}\n- Amount paid: $${result.amountUsd.toFixed(4)} USDC${txInfo}\n- Remaining budget: ${budgetAccount.remaining}${responseText ? `\n\nResponse:\n${responseText.slice(0, 500)}` : ""}`;
|
|
81
|
+
await callback?.({
|
|
82
|
+
text,
|
|
83
|
+
content: {
|
|
84
|
+
txHash: result.txHash,
|
|
85
|
+
amountUsd: String(result.amountUsd),
|
|
86
|
+
responsePreview: responseText?.slice(0, 500),
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
return { success: true, text };
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
93
|
+
await callback?.({ text: `Payment failed: ${msg}`, error: true });
|
|
94
|
+
return { success: false, error: msg };
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
examples: [
|
|
98
|
+
[
|
|
99
|
+
{
|
|
100
|
+
name: "user",
|
|
101
|
+
content: {
|
|
102
|
+
text: "Access the x402 endpoint at https://api.example.com/data",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "agent",
|
|
107
|
+
content: {
|
|
108
|
+
text: "Access successful.\n- Endpoint: GET https://api.example.com/data\n- Amount paid: $0.0100 USDC\n- Tx: 5abc...xyz (solana:5eykt...)\n- Remaining budget: $9.99",
|
|
109
|
+
actions: ["PAY_FOR_X402_SERVICE"],
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
],
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=payForService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payForService.js","sourceRoot":"","sources":["../../src/actions/payForService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Action } from "@elizaos/core";
|
|
2
|
+
/**
|
|
3
|
+
* Run a single specialized agent via the Swarms API.
|
|
4
|
+
* For quick single-agent tasks that don't need multi-agent orchestration.
|
|
5
|
+
*/
|
|
6
|
+
export declare const runSwarmAgent: Action;
|
|
7
|
+
//# sourceMappingURL=runSwarmAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runSwarmAgent.d.ts","sourceRoot":"","sources":["../../src/actions/runSwarmAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AAavB;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAwI3B,CAAC"}
|