@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,574 @@
|
|
|
1
|
+
import { x402Gate } from "../server/x402Gate.js";
|
|
2
|
+
import { codeReviewTemplate, researchPipelineTemplate, debateAndDecideTemplate, } from "../templates/swarmTemplates.js";
|
|
3
|
+
import { callOpenAI } from "../utils/llm.js";
|
|
4
|
+
import { saveReport } from "../utils/reportStore.js";
|
|
5
|
+
// ── Input validation helpers ───────────────────────────────────────────
|
|
6
|
+
function requireString(body, field, maxLen = 100_000) {
|
|
7
|
+
const val = body[field];
|
|
8
|
+
if (!val || typeof val !== "string" || val.trim().length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
return val.slice(0, maxLen);
|
|
11
|
+
}
|
|
12
|
+
function requireStringArray(body, field, maxItems = 50) {
|
|
13
|
+
const val = body[field];
|
|
14
|
+
if (!Array.isArray(val) || val.length === 0)
|
|
15
|
+
return null;
|
|
16
|
+
const filtered = val
|
|
17
|
+
.filter((v) => typeof v === "string" && v.trim().length > 0)
|
|
18
|
+
.slice(0, maxItems);
|
|
19
|
+
return filtered.length > 0 ? filtered : null;
|
|
20
|
+
}
|
|
21
|
+
// ── Catalog entries for the 7 new task endpoints ───────────────────────
|
|
22
|
+
export const TASK_CATALOG = [
|
|
23
|
+
{
|
|
24
|
+
name: "Summarize",
|
|
25
|
+
description: "AI-powered text summarization — any content, any length, concise output",
|
|
26
|
+
path: "/x402/summarize",
|
|
27
|
+
method: "POST",
|
|
28
|
+
priceUsd: "0.01",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "Translate",
|
|
32
|
+
description: "AI translation to any language — auto-detects source language",
|
|
33
|
+
path: "/x402/translate",
|
|
34
|
+
method: "POST",
|
|
35
|
+
priceUsd: "0.02",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "Code Review",
|
|
39
|
+
description: "Multi-agent code review — security audit, performance analysis, and style check in parallel",
|
|
40
|
+
path: "/x402/code-review",
|
|
41
|
+
method: "POST",
|
|
42
|
+
priceUsd: "0.03",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "Write",
|
|
46
|
+
description: "Multi-agent content writing — research, fact-check, and write on any topic",
|
|
47
|
+
path: "/x402/write",
|
|
48
|
+
method: "POST",
|
|
49
|
+
priceUsd: "0.03",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "Debate",
|
|
53
|
+
description: "Multi-agent debate — pro and con agents argue, a judge delivers a verdict",
|
|
54
|
+
path: "/x402/debate",
|
|
55
|
+
method: "POST",
|
|
56
|
+
priceUsd: "0.03",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Extract",
|
|
60
|
+
description: "Structured data extraction — pull specific fields from unstructured text",
|
|
61
|
+
path: "/x402/extract",
|
|
62
|
+
method: "POST",
|
|
63
|
+
priceUsd: "0.01",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "Sentiment",
|
|
67
|
+
description: "Sentiment analysis — positive/negative/neutral classification with confidence and reasoning",
|
|
68
|
+
path: "/x402/sentiment",
|
|
69
|
+
method: "POST",
|
|
70
|
+
priceUsd: "0.01",
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
// ── Helper: get SwarmsService or 503 ──────────────────────────────────
|
|
74
|
+
function getSwarmsService(runtime) {
|
|
75
|
+
const svc = runtime.getService("SWARMS");
|
|
76
|
+
return svc?.isAvailable() ? svc : null;
|
|
77
|
+
}
|
|
78
|
+
// ── Routes ─────────────────────────────────────────────────────────────
|
|
79
|
+
export const taskRoutes = [
|
|
80
|
+
// ── POST /x402/summarize — $0.01 ──────────────────────────────────
|
|
81
|
+
{
|
|
82
|
+
type: "POST",
|
|
83
|
+
path: "/x402/summarize",
|
|
84
|
+
handler: async (req, res, runtime) => {
|
|
85
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
86
|
+
amountUsd: "0.01",
|
|
87
|
+
description: "AI text summarization",
|
|
88
|
+
});
|
|
89
|
+
if (!gate.paid)
|
|
90
|
+
return;
|
|
91
|
+
const body = req.body ?? {};
|
|
92
|
+
const text = requireString(body, "text");
|
|
93
|
+
if (!text) {
|
|
94
|
+
res.status(400).json({ error: "Missing required field: text (non-empty string)" });
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const maxLength = typeof body.maxLength === "number" ? Math.max(10, Math.min(body.maxLength, 10000)) : 200;
|
|
98
|
+
const systemPrompt = "You are a precise summarizer. Produce a clear, concise summary of the input text. " +
|
|
99
|
+
"Return ONLY the summary — no preamble, no labels, no extra commentary.";
|
|
100
|
+
const userPrompt = `Summarize the following text in at most ${maxLength} words:\n\n${text}`;
|
|
101
|
+
try {
|
|
102
|
+
let summary;
|
|
103
|
+
const openaiKey = String(runtime.getSetting("OPENAI_API_KEY") ?? "");
|
|
104
|
+
if (openaiKey) {
|
|
105
|
+
// Direct OpenAI — single agent, no Swarms overhead
|
|
106
|
+
summary = await callOpenAI({
|
|
107
|
+
apiKey: openaiKey,
|
|
108
|
+
systemPrompt,
|
|
109
|
+
userPrompt,
|
|
110
|
+
maxTokens: 4096,
|
|
111
|
+
temperature: 0.3,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Fallback: Swarms API
|
|
116
|
+
const swarmsService = getSwarmsService(runtime);
|
|
117
|
+
if (!swarmsService) {
|
|
118
|
+
res.status(503).json({ error: "Neither OPENAI_API_KEY nor Swarms service available" });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const result = await swarmsService.runAgent({
|
|
122
|
+
agent_name: "summarizer",
|
|
123
|
+
model_name: "gpt-4o-mini",
|
|
124
|
+
system_prompt: systemPrompt,
|
|
125
|
+
max_loops: 1,
|
|
126
|
+
max_tokens: 4096,
|
|
127
|
+
temperature: 0.3,
|
|
128
|
+
role: "worker",
|
|
129
|
+
}, userPrompt);
|
|
130
|
+
summary = String(result.outputs ?? result);
|
|
131
|
+
}
|
|
132
|
+
const wordCount = summary.split(/\s+/).filter(Boolean).length;
|
|
133
|
+
res.json({
|
|
134
|
+
summary,
|
|
135
|
+
wordCount,
|
|
136
|
+
payment: { amount: "0.01", transaction: gate.transaction, network: gate.network },
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/summarize] Agent execution failed");
|
|
141
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
// ── POST /x402/translate — $0.02 ──────────────────────────────────
|
|
146
|
+
{
|
|
147
|
+
type: "POST",
|
|
148
|
+
path: "/x402/translate",
|
|
149
|
+
handler: async (req, res, runtime) => {
|
|
150
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
151
|
+
amountUsd: "0.02",
|
|
152
|
+
description: "AI text translation",
|
|
153
|
+
});
|
|
154
|
+
if (!gate.paid)
|
|
155
|
+
return;
|
|
156
|
+
const body = req.body ?? {};
|
|
157
|
+
const text = requireString(body, "text");
|
|
158
|
+
if (!text) {
|
|
159
|
+
res.status(400).json({ error: "Missing required field: text (non-empty string)" });
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const targetLanguage = requireString(body, "targetLanguage", 100);
|
|
163
|
+
if (!targetLanguage) {
|
|
164
|
+
res.status(400).json({ error: "Missing required field: targetLanguage (e.g. 'Spanish', 'Japanese')" });
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const systemPrompt = "You are an expert translator. Translate the given text to the target language accurately, " +
|
|
168
|
+
"preserving tone and meaning. Respond with ONLY a JSON object: " +
|
|
169
|
+
'{ "translation": "<translated text>", "sourceLanguage": "<detected source language>" }. ' +
|
|
170
|
+
"No extra text outside the JSON.";
|
|
171
|
+
const userPrompt = `Translate to ${targetLanguage}:\n\n${text}`;
|
|
172
|
+
try {
|
|
173
|
+
let raw;
|
|
174
|
+
const openaiKey = String(runtime.getSetting("OPENAI_API_KEY") ?? "");
|
|
175
|
+
if (openaiKey) {
|
|
176
|
+
// Direct OpenAI — single agent, no Swarms overhead
|
|
177
|
+
raw = await callOpenAI({
|
|
178
|
+
apiKey: openaiKey,
|
|
179
|
+
systemPrompt,
|
|
180
|
+
userPrompt,
|
|
181
|
+
maxTokens: 8192,
|
|
182
|
+
temperature: 0.2,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Fallback: Swarms API
|
|
187
|
+
const swarmsService = getSwarmsService(runtime);
|
|
188
|
+
if (!swarmsService) {
|
|
189
|
+
res.status(503).json({ error: "Neither OPENAI_API_KEY nor Swarms service available" });
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const result = await swarmsService.runAgent({
|
|
193
|
+
agent_name: "translator",
|
|
194
|
+
model_name: "gpt-4o-mini",
|
|
195
|
+
system_prompt: systemPrompt,
|
|
196
|
+
max_loops: 1,
|
|
197
|
+
max_tokens: 8192,
|
|
198
|
+
temperature: 0.2,
|
|
199
|
+
role: "worker",
|
|
200
|
+
}, userPrompt);
|
|
201
|
+
raw = String(result.outputs ?? result);
|
|
202
|
+
}
|
|
203
|
+
let translation = raw;
|
|
204
|
+
let sourceLanguage = "unknown";
|
|
205
|
+
// Attempt to parse structured JSON from agent output
|
|
206
|
+
try {
|
|
207
|
+
const jsonMatch = raw.match(/\{[\s\S]*\}/);
|
|
208
|
+
if (jsonMatch) {
|
|
209
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
210
|
+
if (typeof parsed.translation === "string")
|
|
211
|
+
translation = parsed.translation;
|
|
212
|
+
if (typeof parsed.sourceLanguage === "string")
|
|
213
|
+
sourceLanguage = parsed.sourceLanguage;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Fallback: use raw output as translation
|
|
218
|
+
}
|
|
219
|
+
res.json({
|
|
220
|
+
translation,
|
|
221
|
+
sourceLanguage,
|
|
222
|
+
targetLanguage,
|
|
223
|
+
payment: { amount: "0.02", transaction: gate.transaction, network: gate.network },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/translate] Agent execution failed");
|
|
228
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
// ── POST /x402/code-review — $0.03 ────────────────────────────────
|
|
233
|
+
{
|
|
234
|
+
type: "POST",
|
|
235
|
+
path: "/x402/code-review",
|
|
236
|
+
handler: async (req, res, runtime) => {
|
|
237
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
238
|
+
amountUsd: "0.03",
|
|
239
|
+
description: "Multi-agent code review (security + performance + style)",
|
|
240
|
+
});
|
|
241
|
+
if (!gate.paid)
|
|
242
|
+
return;
|
|
243
|
+
const body = req.body ?? {};
|
|
244
|
+
const code = requireString(body, "code");
|
|
245
|
+
if (!code) {
|
|
246
|
+
res.status(400).json({ error: "Missing required field: code (non-empty string)" });
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const language = typeof body.language === "string" ? body.language : "auto-detect";
|
|
250
|
+
const swarmsService = getSwarmsService(runtime);
|
|
251
|
+
if (!swarmsService) {
|
|
252
|
+
res.status(503).json({ error: "Swarms service unavailable" });
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const result = await swarmsService.runSwarm({
|
|
257
|
+
name: `code-review-${Date.now()}`,
|
|
258
|
+
description: `Code review (${language})`,
|
|
259
|
+
agents: codeReviewTemplate.agents,
|
|
260
|
+
swarm_type: codeReviewTemplate.swarmType,
|
|
261
|
+
task: `Review the following ${language} code. Each reviewer should output a JSON block with their findings.\n\n` +
|
|
262
|
+
"```\n" +
|
|
263
|
+
code +
|
|
264
|
+
"\n```",
|
|
265
|
+
max_loops: codeReviewTemplate.maxLoops ?? 1,
|
|
266
|
+
});
|
|
267
|
+
const output = String(result.output ?? result);
|
|
268
|
+
// Save report for shareable link + badge
|
|
269
|
+
const base = process.env.RAILWAY_PUBLIC_DOMAIN
|
|
270
|
+
? `https://${process.env.RAILWAY_PUBLIC_DOMAIN}`
|
|
271
|
+
: process.env.SWARMX_BASE_URL ?? "https://api.swarmx.io";
|
|
272
|
+
const reportId = saveReport({
|
|
273
|
+
type: "code-review",
|
|
274
|
+
createdAt: new Date().toISOString(),
|
|
275
|
+
input: { code: code.slice(0, 2000), language },
|
|
276
|
+
result: { output },
|
|
277
|
+
riskScore: null,
|
|
278
|
+
paid: gate.amountUsd > 0,
|
|
279
|
+
});
|
|
280
|
+
res.json({
|
|
281
|
+
security: output,
|
|
282
|
+
performance: output,
|
|
283
|
+
style: output,
|
|
284
|
+
overallScore: output,
|
|
285
|
+
rawOutput: output,
|
|
286
|
+
reportUrl: `${base}/report/${reportId}`,
|
|
287
|
+
badgeUrl: `${base}/badge/${reportId}`,
|
|
288
|
+
badgeMarkdown: `[](${base}/report/${reportId})`,
|
|
289
|
+
template: "CodeReview",
|
|
290
|
+
payment: { amount: "0.03", transaction: gate.transaction, network: gate.network },
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/code-review] Swarm execution failed");
|
|
295
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
// ── POST /x402/write — $0.03 ──────────────────────────────────────
|
|
300
|
+
{
|
|
301
|
+
type: "POST",
|
|
302
|
+
path: "/x402/write",
|
|
303
|
+
handler: async (req, res, runtime) => {
|
|
304
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
305
|
+
amountUsd: "0.03",
|
|
306
|
+
description: "Multi-agent content writing (research + fact-check + write)",
|
|
307
|
+
});
|
|
308
|
+
if (!gate.paid)
|
|
309
|
+
return;
|
|
310
|
+
const body = req.body ?? {};
|
|
311
|
+
const topic = requireString(body, "topic", 10_000);
|
|
312
|
+
if (!topic) {
|
|
313
|
+
res.status(400).json({ error: "Missing required field: topic (non-empty string)" });
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const style = typeof body.style === "string" ? body.style : "professional";
|
|
317
|
+
const length = typeof body.length === "string" ? body.length : "medium";
|
|
318
|
+
const swarmsService = getSwarmsService(runtime);
|
|
319
|
+
if (!swarmsService) {
|
|
320
|
+
res.status(503).json({ error: "Swarms service unavailable" });
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
try {
|
|
324
|
+
const result = await swarmsService.runSwarm({
|
|
325
|
+
name: `write-${Date.now()}`,
|
|
326
|
+
description: `Write about: ${topic.slice(0, 100)}`,
|
|
327
|
+
agents: researchPipelineTemplate.agents,
|
|
328
|
+
swarm_type: researchPipelineTemplate.swarmType,
|
|
329
|
+
task: `Write a ${length}-length article about: ${topic}\n` +
|
|
330
|
+
`Style: ${style}\n` +
|
|
331
|
+
"The Researcher gathers information, the FactChecker verifies it, and the Writer produces the final piece.",
|
|
332
|
+
max_loops: researchPipelineTemplate.maxLoops ?? 1,
|
|
333
|
+
rules: researchPipelineTemplate.rules,
|
|
334
|
+
});
|
|
335
|
+
const content = String(result.output ?? result);
|
|
336
|
+
const wordCount = content.split(/\s+/).filter(Boolean).length;
|
|
337
|
+
res.json({
|
|
338
|
+
content,
|
|
339
|
+
wordCount,
|
|
340
|
+
template: "ResearchPipeline",
|
|
341
|
+
payment: { amount: "0.03", transaction: gate.transaction, network: gate.network },
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/write] Swarm execution failed");
|
|
346
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
// ── POST /x402/debate — $0.03 ─────────────────────────────────────
|
|
351
|
+
{
|
|
352
|
+
type: "POST",
|
|
353
|
+
path: "/x402/debate",
|
|
354
|
+
handler: async (req, res, runtime) => {
|
|
355
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
356
|
+
amountUsd: "0.03",
|
|
357
|
+
description: "Multi-agent debate (pro + con + judge verdict)",
|
|
358
|
+
});
|
|
359
|
+
if (!gate.paid)
|
|
360
|
+
return;
|
|
361
|
+
const body = req.body ?? {};
|
|
362
|
+
const proposition = requireString(body, "proposition", 10_000);
|
|
363
|
+
if (!proposition) {
|
|
364
|
+
res.status(400).json({ error: "Missing required field: proposition (non-empty string)" });
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const swarmsService = getSwarmsService(runtime);
|
|
368
|
+
if (!swarmsService) {
|
|
369
|
+
res.status(503).json({ error: "Swarms service unavailable" });
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
try {
|
|
373
|
+
const result = await swarmsService.runSwarm({
|
|
374
|
+
name: `debate-${Date.now()}`,
|
|
375
|
+
description: `Debate: ${proposition.slice(0, 100)}`,
|
|
376
|
+
agents: debateAndDecideTemplate.agents,
|
|
377
|
+
swarm_type: debateAndDecideTemplate.swarmType,
|
|
378
|
+
task: `Debate the following proposition: ${proposition}`,
|
|
379
|
+
max_loops: debateAndDecideTemplate.maxLoops ?? 1,
|
|
380
|
+
});
|
|
381
|
+
const output = String(result.output ?? result);
|
|
382
|
+
res.json({
|
|
383
|
+
proArgument: output,
|
|
384
|
+
conArgument: output,
|
|
385
|
+
verdict: output,
|
|
386
|
+
confidence: output,
|
|
387
|
+
rawOutput: output,
|
|
388
|
+
template: "DebateAndDecide",
|
|
389
|
+
payment: { amount: "0.03", transaction: gate.transaction, network: gate.network },
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
catch (err) {
|
|
393
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/debate] Swarm execution failed");
|
|
394
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
// ── POST /x402/extract — $0.01 ────────────────────────────────────
|
|
399
|
+
{
|
|
400
|
+
type: "POST",
|
|
401
|
+
path: "/x402/extract",
|
|
402
|
+
handler: async (req, res, runtime) => {
|
|
403
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
404
|
+
amountUsd: "0.01",
|
|
405
|
+
description: "Structured data extraction from unstructured text",
|
|
406
|
+
});
|
|
407
|
+
if (!gate.paid)
|
|
408
|
+
return;
|
|
409
|
+
const body = req.body ?? {};
|
|
410
|
+
const text = requireString(body, "text");
|
|
411
|
+
if (!text) {
|
|
412
|
+
res.status(400).json({ error: "Missing required field: text (non-empty string)" });
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
const fields = requireStringArray(body, "fields");
|
|
416
|
+
if (!fields) {
|
|
417
|
+
res.status(400).json({ error: "Missing required field: fields (non-empty string array)" });
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const systemPrompt = "You are a data extraction specialist. Extract the requested fields from the input text. " +
|
|
421
|
+
"Respond with ONLY a JSON object where keys are the requested field names and values are " +
|
|
422
|
+
'the extracted data (use "" if not found). No extra text outside the JSON.';
|
|
423
|
+
const fieldList = fields.join(", ");
|
|
424
|
+
const userPrompt = `Extract the following fields: [${fieldList}]\n\nFrom this text:\n${text}`;
|
|
425
|
+
try {
|
|
426
|
+
let raw;
|
|
427
|
+
const openaiKey = String(runtime.getSetting("OPENAI_API_KEY") ?? "");
|
|
428
|
+
if (openaiKey) {
|
|
429
|
+
// Direct OpenAI — single agent, no Swarms overhead
|
|
430
|
+
raw = await callOpenAI({
|
|
431
|
+
apiKey: openaiKey,
|
|
432
|
+
systemPrompt,
|
|
433
|
+
userPrompt,
|
|
434
|
+
maxTokens: 4096,
|
|
435
|
+
temperature: 0.1,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
// Fallback: Swarms API
|
|
440
|
+
const swarmsService = getSwarmsService(runtime);
|
|
441
|
+
if (!swarmsService) {
|
|
442
|
+
res.status(503).json({ error: "Neither OPENAI_API_KEY nor Swarms service available" });
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
const result = await swarmsService.runAgent({
|
|
446
|
+
agent_name: "extractor",
|
|
447
|
+
model_name: "gpt-4o-mini",
|
|
448
|
+
system_prompt: systemPrompt,
|
|
449
|
+
max_loops: 1,
|
|
450
|
+
max_tokens: 4096,
|
|
451
|
+
temperature: 0.1,
|
|
452
|
+
role: "worker",
|
|
453
|
+
}, userPrompt);
|
|
454
|
+
raw = String(result.outputs ?? result);
|
|
455
|
+
}
|
|
456
|
+
let extracted = {};
|
|
457
|
+
// Attempt to parse structured JSON
|
|
458
|
+
try {
|
|
459
|
+
const jsonMatch = raw.match(/\{[\s\S]*\}/);
|
|
460
|
+
if (jsonMatch) {
|
|
461
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
462
|
+
for (const f of fields) {
|
|
463
|
+
extracted[f] = typeof parsed[f] === "string" ? parsed[f] : String(parsed[f] ?? "");
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
// Fallback: set all fields to raw output
|
|
468
|
+
for (const f of fields)
|
|
469
|
+
extracted[f] = raw;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
for (const f of fields)
|
|
474
|
+
extracted[f] = raw;
|
|
475
|
+
}
|
|
476
|
+
res.json({
|
|
477
|
+
extracted,
|
|
478
|
+
payment: { amount: "0.01", transaction: gate.transaction, network: gate.network },
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
catch (err) {
|
|
482
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/extract] Agent execution failed");
|
|
483
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
},
|
|
487
|
+
// ── POST /x402/sentiment — $0.01 ──────────────────────────────────
|
|
488
|
+
{
|
|
489
|
+
type: "POST",
|
|
490
|
+
path: "/x402/sentiment",
|
|
491
|
+
handler: async (req, res, runtime) => {
|
|
492
|
+
const gate = await x402Gate(runtime, req, res, {
|
|
493
|
+
amountUsd: "0.01",
|
|
494
|
+
description: "AI sentiment analysis",
|
|
495
|
+
});
|
|
496
|
+
if (!gate.paid)
|
|
497
|
+
return;
|
|
498
|
+
const body = req.body ?? {};
|
|
499
|
+
const text = requireString(body, "text");
|
|
500
|
+
if (!text) {
|
|
501
|
+
res.status(400).json({ error: "Missing required field: text (non-empty string)" });
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
const systemPrompt = "You are a sentiment analysis expert. Analyze the sentiment of the given text. " +
|
|
505
|
+
"Respond with ONLY a JSON object: " +
|
|
506
|
+
'{ "sentiment": "positive"|"negative"|"neutral", "confidence": <0.0-1.0>, "reasoning": "<brief explanation>" }. ' +
|
|
507
|
+
"No extra text outside the JSON.";
|
|
508
|
+
const userPrompt = `Analyze the sentiment of the following text:\n\n${text}`;
|
|
509
|
+
try {
|
|
510
|
+
let raw;
|
|
511
|
+
const openaiKey = String(runtime.getSetting("OPENAI_API_KEY") ?? "");
|
|
512
|
+
if (openaiKey) {
|
|
513
|
+
// Direct OpenAI — single agent, no Swarms overhead
|
|
514
|
+
raw = await callOpenAI({
|
|
515
|
+
apiKey: openaiKey,
|
|
516
|
+
systemPrompt,
|
|
517
|
+
userPrompt,
|
|
518
|
+
maxTokens: 1024,
|
|
519
|
+
temperature: 0.1,
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
// Fallback: Swarms API
|
|
524
|
+
const swarmsService = getSwarmsService(runtime);
|
|
525
|
+
if (!swarmsService) {
|
|
526
|
+
res.status(503).json({ error: "Neither OPENAI_API_KEY nor Swarms service available" });
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
const result = await swarmsService.runAgent({
|
|
530
|
+
agent_name: "sentiment-analyst",
|
|
531
|
+
model_name: "gpt-4o-mini",
|
|
532
|
+
system_prompt: systemPrompt,
|
|
533
|
+
max_loops: 1,
|
|
534
|
+
max_tokens: 1024,
|
|
535
|
+
temperature: 0.1,
|
|
536
|
+
role: "worker",
|
|
537
|
+
}, userPrompt);
|
|
538
|
+
raw = String(result.outputs ?? result);
|
|
539
|
+
}
|
|
540
|
+
let sentiment = "neutral";
|
|
541
|
+
let confidence = 0.5;
|
|
542
|
+
let reasoning = raw;
|
|
543
|
+
// Attempt to parse structured JSON
|
|
544
|
+
try {
|
|
545
|
+
const jsonMatch = raw.match(/\{[\s\S]*\}/);
|
|
546
|
+
if (jsonMatch) {
|
|
547
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
548
|
+
if (parsed.sentiment === "positive" || parsed.sentiment === "negative" || parsed.sentiment === "neutral") {
|
|
549
|
+
sentiment = parsed.sentiment;
|
|
550
|
+
}
|
|
551
|
+
if (typeof parsed.confidence === "number")
|
|
552
|
+
confidence = parsed.confidence;
|
|
553
|
+
if (typeof parsed.reasoning === "string")
|
|
554
|
+
reasoning = parsed.reasoning;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
catch {
|
|
558
|
+
// Fallback: raw output as reasoning
|
|
559
|
+
}
|
|
560
|
+
res.json({
|
|
561
|
+
sentiment,
|
|
562
|
+
confidence,
|
|
563
|
+
reasoning,
|
|
564
|
+
payment: { amount: "0.01", transaction: gate.transaction, network: gate.network },
|
|
565
|
+
});
|
|
566
|
+
}
|
|
567
|
+
catch (err) {
|
|
568
|
+
runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/sentiment] Agent execution failed");
|
|
569
|
+
res.status(500).json({ error: "Service temporarily unavailable" });
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
},
|
|
573
|
+
];
|
|
574
|
+
//# sourceMappingURL=taskRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskRoutes.js","sourceRoot":"","sources":["../../src/routes/taskRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tradingRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/tradingRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA4CvD,eAAO,MAAM,eAAe,EAAE,mBAAmB,EAyChD,CAAC;AAyBF,eAAO,MAAM,aAAa,EAAE,KAAK,EAochC,CAAC"}
|