@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,415 @@
1
+ import { x402Gate } from "../server/x402Gate.js";
2
+ import { saveReport } from "../utils/reportStore.js";
3
+ import { callOpenAI } from "../utils/llm.js";
4
+ // ── Helper: build public URLs for a report ───────────────────────────────
5
+ function reportUrls(id) {
6
+ const base = process.env.RAILWAY_PUBLIC_DOMAIN
7
+ ? `https://${process.env.RAILWAY_PUBLIC_DOMAIN}`
8
+ : process.env.SWARMX_BASE_URL ?? "https://api.swarmx.io";
9
+ return {
10
+ reportUrl: `${base}/report/${id}`,
11
+ badgeUrl: `${base}/badge/${id}`,
12
+ badgeMarkdown: `[![SwarmX Audit](${base}/badge/${id})](${base}/report/${id})`,
13
+ };
14
+ }
15
+ // ── Input validation helpers ───────────────────────────────────────────
16
+ function requireString(body, field, maxLen = 100_000) {
17
+ const val = body[field];
18
+ if (!val || typeof val !== "string" || val.trim().length === 0)
19
+ return null;
20
+ return val.slice(0, maxLen);
21
+ }
22
+ // ── Helper: get SwarmsService or null ──────────────────────────────────
23
+ function getSwarmsService(runtime) {
24
+ const svc = runtime.getService("SWARMS");
25
+ return svc?.isAvailable() ? svc : null;
26
+ }
27
+ // ── JSON parse helper ──────────────────────────────────────────────────
28
+ function tryParseJson(raw) {
29
+ try {
30
+ const match = raw.match(/\{[\s\S]*\}/);
31
+ if (match) {
32
+ return JSON.parse(match[0]);
33
+ }
34
+ }
35
+ catch {
36
+ // not valid JSON
37
+ }
38
+ return null;
39
+ }
40
+ // ── Extract raw text from swarm response ───────────────────────────────
41
+ function extractSwarmOutput(result) {
42
+ const output = result.output;
43
+ if (typeof output === "string")
44
+ return output;
45
+ if (Array.isArray(output)) {
46
+ return output
47
+ .map((item) => {
48
+ if (typeof item === "string")
49
+ return item;
50
+ if (item && typeof item === "object") {
51
+ const obj = item;
52
+ const role = obj.role ?? obj.agent_name ?? "agent";
53
+ const content = obj.content ?? obj.text ?? obj.output ?? "";
54
+ return `[${role}]\n${content}`;
55
+ }
56
+ return String(item);
57
+ })
58
+ .join("\n\n");
59
+ }
60
+ if (output && typeof output === "object") {
61
+ const nested = output;
62
+ if (typeof nested.output === "string")
63
+ return nested.output;
64
+ if (typeof nested.content === "string")
65
+ return nested.content;
66
+ return JSON.stringify(output);
67
+ }
68
+ if (typeof result === "string")
69
+ return result;
70
+ return JSON.stringify(result);
71
+ }
72
+ // ── Language auto-detection ────────────────────────────────────────────
73
+ export function detectLanguage(code) {
74
+ if (/pragma\s+solidity/i.test(code))
75
+ return "solidity";
76
+ if (/(?:^|\n)\s*def\s+/.test(code) || /(?:^|\n)\s*import\s+/.test(code))
77
+ return "python";
78
+ if (/\bfunc\s+/.test(code) && /\bpackage\s+/.test(code))
79
+ return "go";
80
+ if (/\bfn\s+/.test(code) && /\blet\s+mut\b/.test(code))
81
+ return "rust";
82
+ if (/\bfunction\b/.test(code) || /\bconst\s+/.test(code) || /=>/.test(code))
83
+ return "typescript";
84
+ if (/\bpublic\s+class\b/.test(code) || /\bprivate\s+void\b/.test(code))
85
+ return "java";
86
+ if (/<\?php/.test(code))
87
+ return "php";
88
+ if (/#include/.test(code))
89
+ return "c/cpp";
90
+ return "unknown";
91
+ }
92
+ // ── Parse individual agent outputs ─────────────────────────────────────
93
+ function parseSecurityOutput(raw) {
94
+ const parsed = tryParseJson(raw);
95
+ if (parsed) {
96
+ const findings = Array.isArray(parsed.findings) ? parsed.findings : [];
97
+ const securityScore = typeof parsed.securityScore === "number"
98
+ ? parsed.securityScore
99
+ : 50;
100
+ return { findings, securityScore };
101
+ }
102
+ return { findings: [], securityScore: 50 };
103
+ }
104
+ function parsePerformanceOutput(raw) {
105
+ const parsed = tryParseJson(raw);
106
+ if (parsed) {
107
+ const findings = Array.isArray(parsed.findings) ? parsed.findings : [];
108
+ const performanceScore = typeof parsed.performanceScore === "number"
109
+ ? parsed.performanceScore
110
+ : 50;
111
+ return { findings, performanceScore };
112
+ }
113
+ return { findings: [], performanceScore: 50 };
114
+ }
115
+ function parseQualityOutput(raw) {
116
+ const parsed = tryParseJson(raw);
117
+ if (parsed) {
118
+ const findings = Array.isArray(parsed.findings) ? parsed.findings : [];
119
+ const strengths = Array.isArray(parsed.strengths) ? parsed.strengths : [];
120
+ const qualityScore = typeof parsed.qualityScore === "number"
121
+ ? parsed.qualityScore
122
+ : 50;
123
+ return { findings, strengths, qualityScore };
124
+ }
125
+ return { findings: [], strengths: [], qualityScore: 50 };
126
+ }
127
+ // ── Parse combined swarm output into CodeAuditResult ───────────────────
128
+ function parseCodeAuditOutput(rawOutput, language) {
129
+ // Try to find 3 separate JSON blocks from the concurrent agents
130
+ const jsonBlocks = [];
131
+ const regex = /\{[\s\S]*?\}(?=\s*(?:\[|$|\{))/g;
132
+ // Simpler: split by agent markers and extract JSON from each section
133
+ const sections = rawOutput.split(/\[(?:SecurityReviewer|PerformanceAnalyst|BestPracticesChecker|agent)\]/i);
134
+ let secResult = { findings: [], securityScore: 50 };
135
+ let perfResult = { findings: [], performanceScore: 50 };
136
+ let qualResult = { findings: [], strengths: [], qualityScore: 50 };
137
+ if (sections.length >= 4) {
138
+ // Each section after split corresponds to an agent's output
139
+ secResult = parseSecurityOutput(sections[1]);
140
+ perfResult = parsePerformanceOutput(sections[2]);
141
+ qualResult = parseQualityOutput(sections[3]);
142
+ }
143
+ else {
144
+ // Try parsing the whole output as a single JSON block
145
+ const allJson = tryParseJson(rawOutput);
146
+ if (allJson) {
147
+ // Check if it's a combined result
148
+ if (allJson.security && typeof allJson.security === "object") {
149
+ const sec = allJson.security;
150
+ secResult = {
151
+ findings: Array.isArray(sec.findings) ? sec.findings : [],
152
+ securityScore: typeof sec.score === "number" ? sec.score : 50,
153
+ };
154
+ }
155
+ if (allJson.performance && typeof allJson.performance === "object") {
156
+ const perf = allJson.performance;
157
+ perfResult = {
158
+ findings: Array.isArray(perf.findings) ? perf.findings : [],
159
+ performanceScore: typeof perf.score === "number" ? perf.score : 50,
160
+ };
161
+ }
162
+ if (allJson.quality && typeof allJson.quality === "object") {
163
+ const qual = allJson.quality;
164
+ qualResult = {
165
+ findings: Array.isArray(qual.findings) ? qual.findings : [],
166
+ strengths: Array.isArray(qual.strengths) ? qual.strengths : [],
167
+ qualityScore: typeof qual.score === "number" ? qual.score : 50,
168
+ };
169
+ }
170
+ // Also try top-level scores
171
+ if (typeof allJson.securityScore === "number")
172
+ secResult.securityScore = allJson.securityScore;
173
+ if (typeof allJson.performanceScore === "number")
174
+ perfResult.performanceScore = allJson.performanceScore;
175
+ if (typeof allJson.qualityScore === "number")
176
+ qualResult.qualityScore = allJson.qualityScore;
177
+ if (Array.isArray(allJson.strengths) && qualResult.strengths.length === 0) {
178
+ qualResult.strengths = allJson.strengths;
179
+ }
180
+ }
181
+ else {
182
+ // Try to find multiple JSON blocks in the raw output
183
+ const jsonMatches = rawOutput.match(/\{[\s\S]*?\n\}/g) ?? [];
184
+ for (const block of jsonMatches) {
185
+ const obj = tryParseJson(block);
186
+ if (!obj)
187
+ continue;
188
+ if (typeof obj.securityScore === "number") {
189
+ secResult = parseSecurityOutput(block);
190
+ }
191
+ else if (typeof obj.performanceScore === "number") {
192
+ perfResult = parsePerformanceOutput(block);
193
+ }
194
+ else if (typeof obj.qualityScore === "number") {
195
+ qualResult = parseQualityOutput(block);
196
+ }
197
+ }
198
+ }
199
+ }
200
+ const overallScore = Math.round(secResult.securityScore * 0.50 +
201
+ perfResult.performanceScore * 0.25 +
202
+ qualResult.qualityScore * 0.25);
203
+ let verdict;
204
+ if (overallScore >= 85)
205
+ verdict = "EXCELLENT";
206
+ else if (overallScore >= 70)
207
+ verdict = "GOOD";
208
+ else if (overallScore >= 50)
209
+ verdict = "NEEDS_WORK";
210
+ else
211
+ verdict = "POOR";
212
+ return {
213
+ language,
214
+ overallScore,
215
+ verdict,
216
+ security: { score: secResult.securityScore, findings: secResult.findings },
217
+ performance: { score: perfResult.performanceScore, findings: perfResult.findings },
218
+ quality: { score: qualResult.qualityScore, findings: qualResult.findings, strengths: qualResult.strengths },
219
+ };
220
+ }
221
+ // ── Free tier truncation ───────────────────────────────────────────────
222
+ function truncateCodeAuditForFreeTier(result, gate) {
223
+ if (gate.amountUsd > 0)
224
+ return result; // paid — return full
225
+ return {
226
+ language: result.language,
227
+ overallScore: result.overallScore,
228
+ verdict: result.verdict,
229
+ security: { score: result.security.score, findingCount: result.security.findings.length },
230
+ performance: { score: result.performance.score, findingCount: result.performance.findings.length },
231
+ quality: { score: result.quality.score, findingCount: result.quality.findings.length },
232
+ _preview: true,
233
+ _message: `Verdict: ${result.verdict} (${result.overallScore}/100). Found ${result.security.findings.length} security, ${result.performance.findings.length} performance, and ${result.quality.findings.length} quality findings. Pay $0.10 to see full details.`,
234
+ };
235
+ }
236
+ // ── Catalog ────────────────────────────────────────────────────────────
237
+ export const CODE_AUDIT_CATALOG = [
238
+ {
239
+ name: "Code Audit",
240
+ description: "Multi-agent code audit for ANY programming language — security review, performance analysis, best practices check with EXCELLENT/GOOD/NEEDS_WORK/POOR verdict (ConcurrentWorkflow, 3 agents)",
241
+ path: "/x402/code-audit",
242
+ method: "POST",
243
+ priceUsd: "0.10",
244
+ },
245
+ ];
246
+ // ── Agent definitions ──────────────────────────────────────────────────
247
+ function securityReviewerAgent(language) {
248
+ return {
249
+ agent_name: "SecurityReviewer",
250
+ system_prompt: `You are a code security reviewer. Analyze code for: injection vulnerabilities, authentication/authorization flaws, cryptographic issues, data exposure, input validation gaps, concurrency bugs, memory safety issues. Tag each finding as 'confirmed' (directly visible in code) or 'potential' (possible depending on context). Reference specific line numbers or code patterns. If the code is too short for meaningful security analysis, say so. Do NOT pad findings. Output JSON: { findings: [{severity: "critical"|"high"|"medium"|"low"|"info", title: "...", description: "...", confirmed: true|false, lineRef: "..."|null}], securityScore: 0-100 (100=perfect) }. Output ONLY JSON.`,
251
+ model_name: "gpt-4o",
252
+ role: "worker",
253
+ max_loops: 1,
254
+ max_tokens: 4096,
255
+ temperature: 0.15,
256
+ };
257
+ }
258
+ function performanceAnalystAgent() {
259
+ return {
260
+ agent_name: "PerformanceAnalyst",
261
+ system_prompt: `You are a code performance analyst. Analyze for: algorithmic complexity issues (flag O(n^2) where O(n) possible), memory patterns (leaks, unnecessary allocations), I/O antipatterns (N+1 queries, missing batching), missing caching/memoization, wrong data structure choices. Each finding includes estimated impact (high|medium|low). Output JSON: { findings: [{severity: "high"|"medium"|"low", title: "...", description: "...", impact: "...", suggestion: "..."}], performanceScore: 0-100 (100=optimal) }. Output ONLY JSON.`,
262
+ model_name: "gpt-4o-mini",
263
+ role: "worker",
264
+ max_loops: 1,
265
+ max_tokens: 4096,
266
+ temperature: 0.25,
267
+ };
268
+ }
269
+ function bestPracticesCheckerAgent() {
270
+ return {
271
+ agent_name: "BestPracticesChecker",
272
+ system_prompt: `You are a code quality reviewer. Analyze for: naming conventions, error handling quality, code organization (SRP, DRY), documentation gaps, testing gaps, language-specific idiom violations. ALSO list strengths — well-written code deserves recognition. Output JSON: { findings: [{severity: "medium"|"low"|"info", title: "...", description: "..."}], strengths: ["..."], qualityScore: 0-100 (100=excellent) }. Output ONLY JSON.`,
273
+ model_name: "gpt-4o-mini",
274
+ role: "worker",
275
+ max_loops: 1,
276
+ max_tokens: 4096,
277
+ temperature: 0.3,
278
+ };
279
+ }
280
+ // ── Routes ─────────────────────────────────────────────────────────────
281
+ export const codeAuditRoutes = [
282
+ {
283
+ type: "POST",
284
+ path: "/x402/code-audit",
285
+ handler: async (req, res, runtime) => {
286
+ const gate = await x402Gate(runtime, req, res, {
287
+ amountUsd: "0.10",
288
+ description: "Multi-agent code audit — security, performance, quality (3 agents, ConcurrentWorkflow)",
289
+ });
290
+ if (!gate.paid)
291
+ return;
292
+ const body = req.body ?? {};
293
+ const code = requireString(body, "code");
294
+ if (!code) {
295
+ res.status(400).json({ error: "Missing required field: code (non-empty string)" });
296
+ return;
297
+ }
298
+ const language = typeof body.language === "string" && body.language.trim().length > 0
299
+ ? body.language.trim()
300
+ : detectLanguage(code);
301
+ const swarmsService = getSwarmsService(runtime);
302
+ // Fallback: if Swarms unavailable, run SecurityReviewer only via callOpenAI
303
+ if (!swarmsService) {
304
+ const apiKey = process.env.OPENAI_API_KEY;
305
+ if (!apiKey) {
306
+ res.status(503).json({ error: "Swarms service unavailable" });
307
+ return;
308
+ }
309
+ try {
310
+ const agent = securityReviewerAgent(language);
311
+ const secRaw = await callOpenAI({
312
+ apiKey,
313
+ model: agent.model_name,
314
+ systemPrompt: agent.system_prompt,
315
+ userPrompt: `Analyze this ${language} code:\n\n\`\`\`\n${code}\n\`\`\``,
316
+ maxTokens: agent.max_tokens,
317
+ temperature: agent.temperature,
318
+ });
319
+ const secResult = parseSecurityOutput(secRaw);
320
+ const overallScore = secResult.securityScore;
321
+ let verdict;
322
+ if (overallScore >= 85)
323
+ verdict = "EXCELLENT";
324
+ else if (overallScore >= 70)
325
+ verdict = "GOOD";
326
+ else if (overallScore >= 50)
327
+ verdict = "NEEDS_WORK";
328
+ else
329
+ verdict = "POOR";
330
+ const auditResult = {
331
+ language,
332
+ overallScore,
333
+ verdict,
334
+ security: { score: secResult.securityScore, findings: secResult.findings },
335
+ performance: { score: 0, findings: [] },
336
+ quality: { score: 0, findings: [], strengths: [] },
337
+ };
338
+ const truncated = truncateCodeAuditForFreeTier(auditResult, gate);
339
+ const reportId = saveReport({
340
+ type: "code-audit",
341
+ createdAt: new Date().toISOString(),
342
+ input: { code: code.slice(0, 2000), language },
343
+ result: auditResult,
344
+ riskScore: 100 - overallScore,
345
+ paid: gate.amountUsd > 0,
346
+ });
347
+ const urls = reportUrls(reportId);
348
+ res.json({
349
+ ...truncated,
350
+ ...urls,
351
+ template: "CodeAudit",
352
+ _degraded: true,
353
+ freeRemaining: gate.freeRemaining,
354
+ payment: {
355
+ amount: "0.10",
356
+ transaction: gate.transaction,
357
+ network: gate.network,
358
+ },
359
+ });
360
+ return;
361
+ }
362
+ catch (err) {
363
+ runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/code-audit] Fallback OpenAI call failed");
364
+ res.status(503).json({ error: "Swarms service unavailable" });
365
+ return;
366
+ }
367
+ }
368
+ try {
369
+ const result = await swarmsService.runSwarm({
370
+ name: `code-audit-${Date.now()}`,
371
+ description: `Code audit (${language})`,
372
+ agents: [
373
+ securityReviewerAgent(language),
374
+ performanceAnalystAgent(),
375
+ bestPracticesCheckerAgent(),
376
+ ],
377
+ swarm_type: "ConcurrentWorkflow",
378
+ task: `Audit the following ${language} code. Each agent should analyze from their specialization.\n\n` +
379
+ "```\n" +
380
+ code +
381
+ "\n```",
382
+ max_loops: 1,
383
+ });
384
+ const rawOutput = extractSwarmOutput(result);
385
+ const audit = parseCodeAuditOutput(rawOutput, language);
386
+ const truncated = truncateCodeAuditForFreeTier(audit, gate);
387
+ const reportId = saveReport({
388
+ type: "code-audit",
389
+ createdAt: new Date().toISOString(),
390
+ input: { code: code.slice(0, 2000), language },
391
+ result: audit,
392
+ riskScore: 100 - audit.overallScore,
393
+ paid: gate.amountUsd > 0,
394
+ });
395
+ const urls = reportUrls(reportId);
396
+ res.json({
397
+ ...truncated,
398
+ ...urls,
399
+ template: "CodeAudit",
400
+ freeRemaining: gate.freeRemaining,
401
+ payment: {
402
+ amount: "0.10",
403
+ transaction: gate.transaction,
404
+ network: gate.network,
405
+ },
406
+ });
407
+ }
408
+ catch (err) {
409
+ runtime.logger.error({ error: err instanceof Error ? err.message : String(err) }, "[x402/code-audit] Swarm execution failed");
410
+ res.status(500).json({ error: "Service temporarily unavailable" });
411
+ }
412
+ },
413
+ },
414
+ ];
415
+ //# sourceMappingURL=codeAuditRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeAuditRoutes.js","sourceRoot":"","sources":["../../src/routes/codeAuditRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Route } from "@elizaos/core";
2
+ import type { X402ServiceEndpoint } from "../types.js";
3
+ export declare const CONTENT_CATALOG: X402ServiceEndpoint[];
4
+ export declare const contentRoutes: Route[];
5
+ //# sourceMappingURL=contentRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/contentRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoCvD,eAAO,MAAM,eAAe,EAAE,mBAAmB,EAiBhD,CAAC;AAoGF,eAAO,MAAM,aAAa,EAAE,KAAK,EA2RhC,CAAC"}