@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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -0
  3. package/dist/actions/delegateToSwarm.d.ts +8 -0
  4. package/dist/actions/delegateToSwarm.d.ts.map +1 -0
  5. package/dist/actions/delegateToSwarm.js +296 -0
  6. package/dist/actions/delegateToSwarm.js.map +1 -0
  7. package/dist/actions/delegateToSwarmWithPayment.d.ts +8 -0
  8. package/dist/actions/delegateToSwarmWithPayment.d.ts.map +1 -0
  9. package/dist/actions/delegateToSwarmWithPayment.js +323 -0
  10. package/dist/actions/delegateToSwarmWithPayment.js.map +1 -0
  11. package/dist/actions/discoverServices.d.ts +3 -0
  12. package/dist/actions/discoverServices.d.ts.map +1 -0
  13. package/dist/actions/discoverServices.js +63 -0
  14. package/dist/actions/discoverServices.js.map +1 -0
  15. package/dist/actions/index.d.ts +6 -0
  16. package/dist/actions/index.d.ts.map +1 -0
  17. package/dist/actions/index.js +6 -0
  18. package/dist/actions/index.js.map +1 -0
  19. package/dist/actions/payForService.d.ts +3 -0
  20. package/dist/actions/payForService.d.ts.map +1 -0
  21. package/dist/actions/payForService.js +115 -0
  22. package/dist/actions/payForService.js.map +1 -0
  23. package/dist/actions/runSwarmAgent.d.ts +7 -0
  24. package/dist/actions/runSwarmAgent.d.ts.map +1 -0
  25. package/dist/actions/runSwarmAgent.js +131 -0
  26. package/dist/actions/runSwarmAgent.js.map +1 -0
  27. package/dist/client/index.d.ts +512 -0
  28. package/dist/client/index.d.ts.map +1 -0
  29. package/dist/client/index.js +469 -0
  30. package/dist/client/index.js.map +1 -0
  31. package/dist/evaluators/paymentEvaluator.d.ts +7 -0
  32. package/dist/evaluators/paymentEvaluator.d.ts.map +1 -0
  33. package/dist/evaluators/paymentEvaluator.js +104 -0
  34. package/dist/evaluators/paymentEvaluator.js.map +1 -0
  35. package/dist/index.d.ts +29 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +60 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/marketing/index.d.ts +7 -0
  40. package/dist/marketing/index.d.ts.map +1 -0
  41. package/dist/marketing/index.js +7 -0
  42. package/dist/marketing/index.js.map +1 -0
  43. package/dist/marketing/milestoneAgent.d.ts +54 -0
  44. package/dist/marketing/milestoneAgent.d.ts.map +1 -0
  45. package/dist/marketing/milestoneAgent.js +121 -0
  46. package/dist/marketing/milestoneAgent.js.map +1 -0
  47. package/dist/marketing/tweetTemplates.d.ts +32 -0
  48. package/dist/marketing/tweetTemplates.d.ts.map +1 -0
  49. package/dist/marketing/tweetTemplates.js +60 -0
  50. package/dist/marketing/tweetTemplates.js.map +1 -0
  51. package/dist/marketing/xMonitor.d.ts +51 -0
  52. package/dist/marketing/xMonitor.d.ts.map +1 -0
  53. package/dist/marketing/xMonitor.js +141 -0
  54. package/dist/marketing/xMonitor.js.map +1 -0
  55. package/dist/providers/x402Provider.d.ts +7 -0
  56. package/dist/providers/x402Provider.d.ts.map +1 -0
  57. package/dist/providers/x402Provider.js +72 -0
  58. package/dist/providers/x402Provider.js.map +1 -0
  59. package/dist/providers/x402ServerProvider.d.ts +7 -0
  60. package/dist/providers/x402ServerProvider.d.ts.map +1 -0
  61. package/dist/providers/x402ServerProvider.js +48 -0
  62. package/dist/providers/x402ServerProvider.js.map +1 -0
  63. package/dist/routes/advancedRoutes.d.ts +5 -0
  64. package/dist/routes/advancedRoutes.d.ts.map +1 -0
  65. package/dist/routes/advancedRoutes.js +869 -0
  66. package/dist/routes/advancedRoutes.js.map +1 -0
  67. package/dist/routes/batchRoutes.d.ts +13 -0
  68. package/dist/routes/batchRoutes.d.ts.map +1 -0
  69. package/dist/routes/batchRoutes.js +496 -0
  70. package/dist/routes/batchRoutes.js.map +1 -0
  71. package/dist/routes/codeAuditRoutes.d.ts +6 -0
  72. package/dist/routes/codeAuditRoutes.d.ts.map +1 -0
  73. package/dist/routes/codeAuditRoutes.js +415 -0
  74. package/dist/routes/codeAuditRoutes.js.map +1 -0
  75. package/dist/routes/contentRoutes.d.ts +5 -0
  76. package/dist/routes/contentRoutes.d.ts.map +1 -0
  77. package/dist/routes/contentRoutes.js +370 -0
  78. package/dist/routes/contentRoutes.js.map +1 -0
  79. package/dist/routes/cryptoAnalysisRoutes.d.ts +5 -0
  80. package/dist/routes/cryptoAnalysisRoutes.d.ts.map +1 -0
  81. package/dist/routes/cryptoAnalysisRoutes.js +641 -0
  82. package/dist/routes/cryptoAnalysisRoutes.js.map +1 -0
  83. package/dist/routes/cryptoRoutes.d.ts +5 -0
  84. package/dist/routes/cryptoRoutes.d.ts.map +1 -0
  85. package/dist/routes/cryptoRoutes.js +1225 -0
  86. package/dist/routes/cryptoRoutes.js.map +1 -0
  87. package/dist/routes/heliusDataRoutes.d.ts +14 -0
  88. package/dist/routes/heliusDataRoutes.d.ts.map +1 -0
  89. package/dist/routes/heliusDataRoutes.js +388 -0
  90. package/dist/routes/heliusDataRoutes.js.map +1 -0
  91. package/dist/routes/taskRoutes.d.ts +5 -0
  92. package/dist/routes/taskRoutes.d.ts.map +1 -0
  93. package/dist/routes/taskRoutes.js +574 -0
  94. package/dist/routes/taskRoutes.js.map +1 -0
  95. package/dist/routes/tradingRoutes.d.ts +5 -0
  96. package/dist/routes/tradingRoutes.d.ts.map +1 -0
  97. package/dist/routes/tradingRoutes.js +500 -0
  98. package/dist/routes/tradingRoutes.js.map +1 -0
  99. package/dist/routes/walletAnalyzerRoutes.d.ts +12 -0
  100. package/dist/routes/walletAnalyzerRoutes.d.ts.map +1 -0
  101. package/dist/routes/walletAnalyzerRoutes.js +316 -0
  102. package/dist/routes/walletAnalyzerRoutes.js.map +1 -0
  103. package/dist/routes/x402Routes.d.ts +9 -0
  104. package/dist/routes/x402Routes.d.ts.map +1 -0
  105. package/dist/routes/x402Routes.js +474 -0
  106. package/dist/routes/x402Routes.js.map +1 -0
  107. package/dist/schemas/budgetState.d.ts +250 -0
  108. package/dist/schemas/budgetState.d.ts.map +1 -0
  109. package/dist/schemas/budgetState.js +20 -0
  110. package/dist/schemas/budgetState.js.map +1 -0
  111. package/dist/schemas/endpointScores.d.ts +182 -0
  112. package/dist/schemas/endpointScores.d.ts.map +1 -0
  113. package/dist/schemas/endpointScores.js +17 -0
  114. package/dist/schemas/endpointScores.js.map +1 -0
  115. package/dist/schemas/index.d.ts +4 -0
  116. package/dist/schemas/index.d.ts.map +1 -0
  117. package/dist/schemas/index.js +4 -0
  118. package/dist/schemas/index.js.map +1 -0
  119. package/dist/schemas/paymentHistory.d.ts +284 -0
  120. package/dist/schemas/paymentHistory.d.ts.map +1 -0
  121. package/dist/schemas/paymentHistory.js +24 -0
  122. package/dist/schemas/paymentHistory.js.map +1 -0
  123. package/dist/server/index.d.ts +3 -0
  124. package/dist/server/index.d.ts.map +1 -0
  125. package/dist/server/index.js +3 -0
  126. package/dist/server/index.js.map +1 -0
  127. package/dist/server/x402Gate.d.ts +56 -0
  128. package/dist/server/x402Gate.d.ts.map +1 -0
  129. package/dist/server/x402Gate.js +240 -0
  130. package/dist/server/x402Gate.js.map +1 -0
  131. package/dist/server/x402ServerService.d.ts +30 -0
  132. package/dist/server/x402ServerService.d.ts.map +1 -0
  133. package/dist/server/x402ServerService.js +79 -0
  134. package/dist/server/x402ServerService.js.map +1 -0
  135. package/dist/services/paymentMemoryService.d.ts +73 -0
  136. package/dist/services/paymentMemoryService.d.ts.map +1 -0
  137. package/dist/services/paymentMemoryService.js +247 -0
  138. package/dist/services/paymentMemoryService.js.map +1 -0
  139. package/dist/services/swarmsService.d.ts +66 -0
  140. package/dist/services/swarmsService.d.ts.map +1 -0
  141. package/dist/services/swarmsService.js +102 -0
  142. package/dist/services/swarmsService.js.map +1 -0
  143. package/dist/services/x402WalletService.d.ts +57 -0
  144. package/dist/services/x402WalletService.d.ts.map +1 -0
  145. package/dist/services/x402WalletService.js +258 -0
  146. package/dist/services/x402WalletService.js.map +1 -0
  147. package/dist/templates/index.d.ts +24 -0
  148. package/dist/templates/index.d.ts.map +1 -0
  149. package/dist/templates/index.js +51 -0
  150. package/dist/templates/index.js.map +1 -0
  151. package/dist/templates/swarmTemplates.d.ts +22 -0
  152. package/dist/templates/swarmTemplates.d.ts.map +1 -0
  153. package/dist/templates/swarmTemplates.js +225 -0
  154. package/dist/templates/swarmTemplates.js.map +1 -0
  155. package/dist/types.d.ts +197 -0
  156. package/dist/types.d.ts.map +1 -0
  157. package/dist/types.js +2 -0
  158. package/dist/types.js.map +1 -0
  159. package/dist/utils/cache.d.ts +17 -0
  160. package/dist/utils/cache.d.ts.map +1 -0
  161. package/dist/utils/cache.js +32 -0
  162. package/dist/utils/cache.js.map +1 -0
  163. package/dist/utils/llm.d.ts +16 -0
  164. package/dist/utils/llm.d.ts.map +1 -0
  165. package/dist/utils/llm.js +32 -0
  166. package/dist/utils/llm.js.map +1 -0
  167. package/dist/utils/reportStore.d.ts +45 -0
  168. package/dist/utils/reportStore.d.ts.map +1 -0
  169. package/dist/utils/reportStore.js +164 -0
  170. package/dist/utils/reportStore.js.map +1 -0
  171. package/dist/utils/taskQueue.d.ts +54 -0
  172. package/dist/utils/taskQueue.d.ts.map +1 -0
  173. package/dist/utils/taskQueue.js +124 -0
  174. package/dist/utils/taskQueue.js.map +1 -0
  175. 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,3 @@
1
+ import { type Action } from "@elizaos/core";
2
+ export declare const discoverServices: Action;
3
+ //# sourceMappingURL=discoverServices.d.ts.map
@@ -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,3 @@
1
+ import { type Action } from "@elizaos/core";
2
+ export declare const payForService: Action;
3
+ //# sourceMappingURL=payForService.d.ts.map
@@ -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"}