@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,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report store — persistent JSONL-backed Map for audit/risk/review reports.
|
|
3
|
+
*
|
|
4
|
+
* Accessed by:
|
|
5
|
+
* - src/routes/cryptoRoutes.ts (save after audit)
|
|
6
|
+
* - server.ts (render report page + badge)
|
|
7
|
+
*
|
|
8
|
+
* Storage strategy:
|
|
9
|
+
* - In-memory Map (capped at 1000) for fast reads
|
|
10
|
+
* - Append-only JSONL file (data/reports.jsonl) for persistence across restarts
|
|
11
|
+
* - On module load: restore in-memory Map from disk
|
|
12
|
+
* - On getReport(): check in-memory first, fall back to scanning JSONL file
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, mkdirSync, readFileSync, appendFileSync } from "node:fs";
|
|
15
|
+
import { join, dirname } from "node:path";
|
|
16
|
+
import { fileURLToPath } from "node:url";
|
|
17
|
+
const MAX_REPORTS = 1000;
|
|
18
|
+
const reports = new Map();
|
|
19
|
+
const insertionOrder = [];
|
|
20
|
+
/* ── Resolve data directory relative to project root ── */
|
|
21
|
+
let DATA_DIR;
|
|
22
|
+
try {
|
|
23
|
+
// Works in ESM context
|
|
24
|
+
const thisFile = fileURLToPath(import.meta.url);
|
|
25
|
+
DATA_DIR = join(dirname(thisFile), "..", "..", "data");
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Fallback: cwd-based
|
|
29
|
+
DATA_DIR = join(process.cwd(), "data");
|
|
30
|
+
}
|
|
31
|
+
const JSONL_PATH = join(DATA_DIR, "reports.jsonl");
|
|
32
|
+
/** Ensure data/ directory exists. */
|
|
33
|
+
function ensureDataDir() {
|
|
34
|
+
if (!existsSync(DATA_DIR)) {
|
|
35
|
+
mkdirSync(DATA_DIR, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Append a single report to the JSONL file (fire-and-forget safe). */
|
|
39
|
+
function appendToDisk(report) {
|
|
40
|
+
try {
|
|
41
|
+
ensureDataDir();
|
|
42
|
+
appendFileSync(JSONL_PATH, JSON.stringify(report) + "\n", "utf-8");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Disk write failure should never block the request flow
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Scan the JSONL file for a specific report ID. */
|
|
49
|
+
function scanDiskForReport(id) {
|
|
50
|
+
try {
|
|
51
|
+
if (!existsSync(JSONL_PATH))
|
|
52
|
+
return null;
|
|
53
|
+
const raw = readFileSync(JSONL_PATH, "utf-8");
|
|
54
|
+
const lines = raw.split("\n");
|
|
55
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
56
|
+
const line = lines[i].trim();
|
|
57
|
+
if (!line)
|
|
58
|
+
continue;
|
|
59
|
+
try {
|
|
60
|
+
const parsed = JSON.parse(line);
|
|
61
|
+
if (parsed.id === id)
|
|
62
|
+
return parsed;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Skip malformed lines
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// File read failure
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/** Restore in-memory Map from JSONL on module load. */
|
|
75
|
+
function restoreFromDisk() {
|
|
76
|
+
try {
|
|
77
|
+
if (!existsSync(JSONL_PATH))
|
|
78
|
+
return;
|
|
79
|
+
const raw = readFileSync(JSONL_PATH, "utf-8");
|
|
80
|
+
const lines = raw.split("\n");
|
|
81
|
+
// Read all lines, but only keep the most recent MAX_REPORTS in memory
|
|
82
|
+
const allReports = [];
|
|
83
|
+
for (const line of lines) {
|
|
84
|
+
const trimmed = line.trim();
|
|
85
|
+
if (!trimmed)
|
|
86
|
+
continue;
|
|
87
|
+
try {
|
|
88
|
+
allReports.push(JSON.parse(trimmed));
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Skip malformed lines
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Load the most recent MAX_REPORTS into memory
|
|
95
|
+
const toLoad = allReports.slice(-MAX_REPORTS);
|
|
96
|
+
for (const r of toLoad) {
|
|
97
|
+
if (!reports.has(r.id)) {
|
|
98
|
+
reports.set(r.id, r);
|
|
99
|
+
insertionOrder.push(r.id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Disk restore failure is non-fatal
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Restore on module load
|
|
108
|
+
restoreFromDisk();
|
|
109
|
+
/** Generate an 8-char hex ID. */
|
|
110
|
+
function generateId() {
|
|
111
|
+
const bytes = new Uint8Array(4);
|
|
112
|
+
crypto.getRandomValues(bytes);
|
|
113
|
+
return Array.from(bytes)
|
|
114
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
115
|
+
.join("");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Save a report and return its unique ID.
|
|
119
|
+
*/
|
|
120
|
+
export function saveReport(report) {
|
|
121
|
+
// Prune oldest when at capacity
|
|
122
|
+
while (reports.size >= MAX_REPORTS && insertionOrder.length > 0) {
|
|
123
|
+
const oldest = insertionOrder.shift();
|
|
124
|
+
reports.delete(oldest);
|
|
125
|
+
}
|
|
126
|
+
const id = generateId();
|
|
127
|
+
const full = { ...report, id };
|
|
128
|
+
reports.set(id, full);
|
|
129
|
+
insertionOrder.push(id);
|
|
130
|
+
// Persist to disk (fire-and-forget)
|
|
131
|
+
appendToDisk(full);
|
|
132
|
+
return id;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Retrieve a report by ID, or null if not found.
|
|
136
|
+
* Checks in-memory first, then falls back to scanning the JSONL file.
|
|
137
|
+
*/
|
|
138
|
+
export function getReport(id) {
|
|
139
|
+
const inMemory = reports.get(id);
|
|
140
|
+
if (inMemory)
|
|
141
|
+
return inMemory;
|
|
142
|
+
// Fall back to disk scan (handles reports evicted from in-memory cache)
|
|
143
|
+
return scanDiskForReport(id);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get the N most recent reports (newest first).
|
|
147
|
+
*/
|
|
148
|
+
export function getRecentReports(limit = 10) {
|
|
149
|
+
const ids = insertionOrder.slice(-limit).reverse();
|
|
150
|
+
const result = [];
|
|
151
|
+
for (const id of ids) {
|
|
152
|
+
const r = reports.get(id);
|
|
153
|
+
if (r)
|
|
154
|
+
result.push(r);
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Total number of stored reports.
|
|
160
|
+
*/
|
|
161
|
+
export function getReportCount() {
|
|
162
|
+
return reports.size;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=reportStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportStore.js","sourceRoot":"","sources":["../../src/utils/reportStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory async task queue for long-running endpoint executions.
|
|
3
|
+
*
|
|
4
|
+
* Allows callers to submit a task, poll for status, and optionally receive
|
|
5
|
+
* results via webhook POST when the task completes.
|
|
6
|
+
*/
|
|
7
|
+
export interface TaskStatus {
|
|
8
|
+
id: string;
|
|
9
|
+
status: "pending" | "running" | "completed" | "failed";
|
|
10
|
+
endpoint: string;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
completedAt?: number;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
error?: string;
|
|
15
|
+
webhookUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
type TaskExecutor = (endpoint: string, params: Record<string, unknown>) => Promise<unknown>;
|
|
18
|
+
export declare class TaskQueue {
|
|
19
|
+
private tasks;
|
|
20
|
+
private executor;
|
|
21
|
+
/** Maximum number of tasks to retain in memory. Oldest completed tasks are pruned first. */
|
|
22
|
+
private maxTasks;
|
|
23
|
+
/**
|
|
24
|
+
* Register the function that actually executes tasks.
|
|
25
|
+
* Called by the route layer so the queue itself stays transport-agnostic.
|
|
26
|
+
*/
|
|
27
|
+
setExecutor(fn: TaskExecutor): void;
|
|
28
|
+
/**
|
|
29
|
+
* Submit a task for async execution.
|
|
30
|
+
* Returns the generated task ID immediately.
|
|
31
|
+
*/
|
|
32
|
+
submit(endpoint: string, params: Record<string, unknown>, webhookUrl?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the current status of a task (or null if not found).
|
|
35
|
+
*/
|
|
36
|
+
getStatus(taskId: string): TaskStatus | null;
|
|
37
|
+
/**
|
|
38
|
+
* Mark a task as completed with the given result.
|
|
39
|
+
* If the task has a webhookUrl, POST the result there.
|
|
40
|
+
*/
|
|
41
|
+
onComplete(taskId: string, result: unknown): void;
|
|
42
|
+
/**
|
|
43
|
+
* Mark a task as failed with the given error message.
|
|
44
|
+
* If the task has a webhookUrl, POST the error there.
|
|
45
|
+
*/
|
|
46
|
+
onError(taskId: string, error: string): void;
|
|
47
|
+
private execute;
|
|
48
|
+
private deliverWebhook;
|
|
49
|
+
private prune;
|
|
50
|
+
}
|
|
51
|
+
/** Singleton task queue instance. */
|
|
52
|
+
export declare const taskQueue: TaskQueue;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=taskQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskQueue.d.ts","sourceRoot":"","sources":["../../src/utils/taskQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,YAAY,GAAG,CAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,QAAQ,CAA6B;IAE7C,4FAA4F;IAC5F,OAAO,CAAC,QAAQ,CAAU;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAInC;;;OAGG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;IAkBT;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI5C;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IASjD;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;YAW9B,OAAO;YAwBP,cAAc;IAsB5B,OAAO,CAAC,KAAK;CAad;AAED,qCAAqC;AACrC,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory async task queue for long-running endpoint executions.
|
|
3
|
+
*
|
|
4
|
+
* Allows callers to submit a task, poll for status, and optionally receive
|
|
5
|
+
* results via webhook POST when the task completes.
|
|
6
|
+
*/
|
|
7
|
+
export class TaskQueue {
|
|
8
|
+
tasks = new Map();
|
|
9
|
+
executor = null;
|
|
10
|
+
/** Maximum number of tasks to retain in memory. Oldest completed tasks are pruned first. */
|
|
11
|
+
maxTasks = 10_000;
|
|
12
|
+
/**
|
|
13
|
+
* Register the function that actually executes tasks.
|
|
14
|
+
* Called by the route layer so the queue itself stays transport-agnostic.
|
|
15
|
+
*/
|
|
16
|
+
setExecutor(fn) {
|
|
17
|
+
this.executor = fn;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Submit a task for async execution.
|
|
21
|
+
* Returns the generated task ID immediately.
|
|
22
|
+
*/
|
|
23
|
+
submit(endpoint, params, webhookUrl) {
|
|
24
|
+
const id = crypto.randomUUID();
|
|
25
|
+
const task = {
|
|
26
|
+
id,
|
|
27
|
+
status: "pending",
|
|
28
|
+
endpoint,
|
|
29
|
+
createdAt: Date.now(),
|
|
30
|
+
webhookUrl,
|
|
31
|
+
};
|
|
32
|
+
this.tasks.set(id, task);
|
|
33
|
+
this.prune();
|
|
34
|
+
// Fire-and-forget execution
|
|
35
|
+
this.execute(id, endpoint, params);
|
|
36
|
+
return id;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the current status of a task (or null if not found).
|
|
40
|
+
*/
|
|
41
|
+
getStatus(taskId) {
|
|
42
|
+
return this.tasks.get(taskId) ?? null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Mark a task as completed with the given result.
|
|
46
|
+
* If the task has a webhookUrl, POST the result there.
|
|
47
|
+
*/
|
|
48
|
+
onComplete(taskId, result) {
|
|
49
|
+
const task = this.tasks.get(taskId);
|
|
50
|
+
if (!task)
|
|
51
|
+
return;
|
|
52
|
+
task.status = "completed";
|
|
53
|
+
task.completedAt = Date.now();
|
|
54
|
+
task.result = result;
|
|
55
|
+
this.deliverWebhook(task);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Mark a task as failed with the given error message.
|
|
59
|
+
* If the task has a webhookUrl, POST the error there.
|
|
60
|
+
*/
|
|
61
|
+
onError(taskId, error) {
|
|
62
|
+
const task = this.tasks.get(taskId);
|
|
63
|
+
if (!task)
|
|
64
|
+
return;
|
|
65
|
+
task.status = "failed";
|
|
66
|
+
task.completedAt = Date.now();
|
|
67
|
+
task.error = error;
|
|
68
|
+
this.deliverWebhook(task);
|
|
69
|
+
}
|
|
70
|
+
// ── Internal helpers ──────────────────────────────────────────────
|
|
71
|
+
async execute(taskId, endpoint, params) {
|
|
72
|
+
const task = this.tasks.get(taskId);
|
|
73
|
+
if (!task)
|
|
74
|
+
return;
|
|
75
|
+
task.status = "running";
|
|
76
|
+
try {
|
|
77
|
+
if (!this.executor) {
|
|
78
|
+
throw new Error("No task executor registered");
|
|
79
|
+
}
|
|
80
|
+
const result = await this.executor(endpoint, params);
|
|
81
|
+
this.onComplete(taskId, result);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
this.onError(taskId, err instanceof Error ? err.message : String(err));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async deliverWebhook(task) {
|
|
88
|
+
if (!task.webhookUrl)
|
|
89
|
+
return;
|
|
90
|
+
try {
|
|
91
|
+
await fetch(task.webhookUrl, {
|
|
92
|
+
method: "POST",
|
|
93
|
+
headers: { "Content-Type": "application/json" },
|
|
94
|
+
body: JSON.stringify({
|
|
95
|
+
taskId: task.id,
|
|
96
|
+
status: task.status,
|
|
97
|
+
endpoint: task.endpoint,
|
|
98
|
+
completedAt: task.completedAt,
|
|
99
|
+
result: task.result,
|
|
100
|
+
error: task.error,
|
|
101
|
+
}),
|
|
102
|
+
signal: AbortSignal.timeout(10_000),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Webhook delivery is best-effort — never block or throw
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
prune() {
|
|
110
|
+
if (this.tasks.size <= this.maxTasks)
|
|
111
|
+
return;
|
|
112
|
+
// Remove oldest completed/failed tasks first
|
|
113
|
+
const sorted = [...this.tasks.values()]
|
|
114
|
+
.filter((t) => t.status === "completed" || t.status === "failed")
|
|
115
|
+
.sort((a, b) => (a.completedAt ?? a.createdAt) - (b.completedAt ?? b.createdAt));
|
|
116
|
+
const toRemove = this.tasks.size - this.maxTasks;
|
|
117
|
+
for (let i = 0; i < toRemove && i < sorted.length; i++) {
|
|
118
|
+
this.tasks.delete(sorted[i].id);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Singleton task queue instance. */
|
|
123
|
+
export const taskQueue = new TaskQueue();
|
|
124
|
+
//# sourceMappingURL=taskQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskQueue.js","sourceRoot":"","sources":["../../src/utils/taskQueue.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@itachisol/plugin-x402-swarms",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "ElizaOS plugin for x402 HTTP payment protocol + Swarms multi-agent orchestration",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./client": {
|
|
15
|
+
"types": "./dist/client/index.d.ts",
|
|
16
|
+
"import": "./dist/client/index.js",
|
|
17
|
+
"default": "./dist/client/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist/",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/ItachiDevv/eliza-x402-swarms.git"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/ItachiDevv/eliza-x402-swarms#readme",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/ItachiDevv/eliza-x402-swarms/issues"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"lint": "eslint src --ext .ts",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:smoke": "RUN_SMOKE=true vitest run --testPathPattern smoke",
|
|
40
|
+
"example": "tsx examples/basic-agent.ts",
|
|
41
|
+
"start:server": "bun run server.ts",
|
|
42
|
+
"demo:code-review": "bun run scripts/demo-code-review.ts",
|
|
43
|
+
"demo:research": "bun run scripts/demo-research.ts",
|
|
44
|
+
"prepublishOnly": "bun run build"
|
|
45
|
+
},
|
|
46
|
+
"keywords": ["elizaos", "plugin", "x402", "swarms", "payments", "ai-agents", "crypto"],
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@dexterai/x402": "^2.0.0",
|
|
50
|
+
"drizzle-orm": "^0.45.1",
|
|
51
|
+
"swarms-ts": "^0.1.0-alpha.10",
|
|
52
|
+
"zod": "^3.22.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^20.0.0",
|
|
56
|
+
"typescript": "^5.3.0",
|
|
57
|
+
"tsx": "^4.0.0",
|
|
58
|
+
"vitest": "^1.0.0"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"@elizaos/core": "2.0.0-alpha.32",
|
|
62
|
+
"viem": "^2.0.0"
|
|
63
|
+
},
|
|
64
|
+
"peerDependenciesMeta": {
|
|
65
|
+
"viem": {
|
|
66
|
+
"optional": true
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|