bunqueue 2.5.0 → 2.5.2
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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +17 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/client/queue/operations/add.js +1 -1
- package/dist/client/queue/operations/add.js.map +1 -1
- package/dist/client/tcp/client.d.ts.map +1 -1
- package/dist/client/tcp/client.js +2 -1
- package/dist/client/tcp/client.js.map +1 -1
- package/dist/mcp/adapter.d.ts +1 -1
- package/dist/mcp/adapter.d.ts.map +1 -1
- package/dist/mcp/adapter.js +2 -2
- package/dist/mcp/adapter.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +29 -10
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/tools/consumptionTools.d.ts.map +1 -1
- package/dist/mcp/tools/consumptionTools.js +17 -16
- package/dist/mcp/tools/consumptionTools.js.map +1 -1
- package/dist/mcp/tools/cronTools.d.ts.map +1 -1
- package/dist/mcp/tools/cronTools.js +10 -8
- package/dist/mcp/tools/cronTools.js.map +1 -1
- package/dist/mcp/tools/dlqTools.d.ts.map +1 -1
- package/dist/mcp/tools/dlqTools.js +9 -8
- package/dist/mcp/tools/dlqTools.js.map +1 -1
- package/dist/mcp/tools/jobMgmtTools.d.ts.map +1 -1
- package/dist/mcp/tools/jobMgmtTools.js +14 -12
- package/dist/mcp/tools/jobMgmtTools.js.map +1 -1
- package/dist/mcp/tools/jobTools.d.ts.map +1 -1
- package/dist/mcp/tools/jobTools.js +25 -22
- package/dist/mcp/tools/jobTools.js.map +1 -1
- package/dist/mcp/tools/monitoringTools.d.ts.map +1 -1
- package/dist/mcp/tools/monitoringTools.js +23 -22
- package/dist/mcp/tools/monitoringTools.js.map +1 -1
- package/dist/mcp/tools/queueTools.d.ts.map +1 -1
- package/dist/mcp/tools/queueTools.js +23 -22
- package/dist/mcp/tools/queueTools.js.map +1 -1
- package/dist/mcp/tools/rateLimitTools.d.ts.map +1 -1
- package/dist/mcp/tools/rateLimitTools.js +9 -8
- package/dist/mcp/tools/rateLimitTools.js.map +1 -1
- package/dist/mcp/tools/webhookTools.d.ts.map +1 -1
- package/dist/mcp/tools/webhookTools.js +9 -8
- package/dist/mcp/tools/webhookTools.js.map +1 -1
- package/dist/mcp/tools/withErrorHandler.d.ts +21 -0
- package/dist/mcp/tools/withErrorHandler.d.ts.map +1 -0
- package/dist/mcp/tools/withErrorHandler.js +24 -0
- package/dist/mcp/tools/withErrorHandler.js.map +1 -0
- package/dist/mcp/tools/workerMgmtTools.d.ts.map +1 -1
- package/dist/mcp/tools/workerMgmtTools.js +7 -6
- package/dist/mcp/tools/workerMgmtTools.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,20 +3,21 @@
|
|
|
3
3
|
* MCP Tools - Monitoring, Stats, Workers, Logs
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
6
7
|
export function registerMonitoringTools(server, backend) {
|
|
7
|
-
server.tool('bunqueue_get_stats', 'Get overall queue server statistics including throughput, memory usage, and uptime.', {}, async () => {
|
|
8
|
+
server.tool('bunqueue_get_stats', 'Get overall queue server statistics including throughput, memory usage, and uptime.', {}, withErrorHandler(async () => {
|
|
8
9
|
const stats = await backend.getStats();
|
|
9
10
|
return { content: [{ type: 'text', text: JSON.stringify(stats, null, 2) }] };
|
|
10
|
-
});
|
|
11
|
+
}));
|
|
11
12
|
server.tool('bunqueue_get_queue_stats', 'Get detailed statistics for a specific queue including job counts per state.', {
|
|
12
13
|
queue: z.string().describe('Queue name'),
|
|
13
|
-
}, async ({ queue }) => {
|
|
14
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
14
15
|
const counts = await backend.getJobCounts(queue);
|
|
15
16
|
return {
|
|
16
17
|
content: [{ type: 'text', text: JSON.stringify({ queue, ...counts }, null, 2) }],
|
|
17
18
|
};
|
|
18
|
-
});
|
|
19
|
-
server.tool('bunqueue_list_workers', 'List all registered workers with their status, queues, and processing stats.', {}, async () => {
|
|
19
|
+
}));
|
|
20
|
+
server.tool('bunqueue_list_workers', 'List all registered workers with their status, queues, and processing stats.', {}, withErrorHandler(async () => {
|
|
20
21
|
const workers = await backend.listWorkers();
|
|
21
22
|
return {
|
|
22
23
|
content: [
|
|
@@ -26,10 +27,10 @@ export function registerMonitoringTools(server, backend) {
|
|
|
26
27
|
},
|
|
27
28
|
],
|
|
28
29
|
};
|
|
29
|
-
});
|
|
30
|
+
}));
|
|
30
31
|
server.tool('bunqueue_get_job_logs', 'Get log entries for a specific job.', {
|
|
31
32
|
jobId: z.string().describe('Job ID'),
|
|
32
|
-
}, async ({ jobId }) => {
|
|
33
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
33
34
|
const logs = await backend.getJobLogs(jobId);
|
|
34
35
|
return {
|
|
35
36
|
content: [
|
|
@@ -39,31 +40,31 @@ export function registerMonitoringTools(server, backend) {
|
|
|
39
40
|
},
|
|
40
41
|
],
|
|
41
42
|
};
|
|
42
|
-
});
|
|
43
|
+
}));
|
|
43
44
|
server.tool('bunqueue_add_job_log', 'Add a log entry to a job.', {
|
|
44
45
|
jobId: z.string().describe('Job ID'),
|
|
45
46
|
message: z.string().describe('Log message'),
|
|
46
47
|
level: z.enum(['info', 'warn', 'error']).optional().describe('Log level (default: info)'),
|
|
47
|
-
}, async ({ jobId, message, level }) => {
|
|
48
|
+
}, withErrorHandler(async ({ jobId, message, level }) => {
|
|
48
49
|
const success = await backend.addJobLog(jobId, message, level);
|
|
49
50
|
return { content: [{ type: 'text', text: JSON.stringify({ success, jobId }) }] };
|
|
50
|
-
});
|
|
51
|
-
server.tool('bunqueue_get_storage_status', 'Get storage health status. Reports if disk is full or has errors.', {}, async () => {
|
|
51
|
+
}));
|
|
52
|
+
server.tool('bunqueue_get_storage_status', 'Get storage health status. Reports if disk is full or has errors.', {}, withErrorHandler(async () => {
|
|
52
53
|
const status = await backend.getStorageStatus();
|
|
53
54
|
return { content: [{ type: 'text', text: JSON.stringify(status, null, 2) }] };
|
|
54
|
-
});
|
|
55
|
-
server.tool('bunqueue_get_per_queue_stats', 'Get detailed statistics broken down per queue (throughput, latency, etc.).', {}, async () => {
|
|
55
|
+
}));
|
|
56
|
+
server.tool('bunqueue_get_per_queue_stats', 'Get detailed statistics broken down per queue (throughput, latency, etc.).', {}, withErrorHandler(async () => {
|
|
56
57
|
const stats = await backend.getPerQueueStats();
|
|
57
58
|
return { content: [{ type: 'text', text: JSON.stringify(stats, null, 2) }] };
|
|
58
|
-
});
|
|
59
|
-
server.tool('bunqueue_get_memory_stats', 'Get memory usage statistics (jobIndex, completedJobs, cache sizes, etc.).', {}, async () => {
|
|
59
|
+
}));
|
|
60
|
+
server.tool('bunqueue_get_memory_stats', 'Get memory usage statistics (jobIndex, completedJobs, cache sizes, etc.).', {}, withErrorHandler(async () => {
|
|
60
61
|
const stats = await backend.getMemoryStats();
|
|
61
62
|
return { content: [{ type: 'text', text: JSON.stringify(stats, null, 2) }] };
|
|
62
|
-
});
|
|
63
|
-
server.tool('bunqueue_get_prometheus_metrics', 'Get metrics in Prometheus exposition format for monitoring.', {}, async () => {
|
|
63
|
+
}));
|
|
64
|
+
server.tool('bunqueue_get_prometheus_metrics', 'Get metrics in Prometheus exposition format for monitoring.', {}, withErrorHandler(async () => {
|
|
64
65
|
const metrics = await backend.getPrometheusMetrics();
|
|
65
66
|
return { content: [{ type: 'text', text: metrics }] };
|
|
66
|
-
});
|
|
67
|
+
}));
|
|
67
68
|
server.tool('bunqueue_clear_job_logs', 'Clear log entries for a specific job, optionally keeping the last N entries.', {
|
|
68
69
|
jobId: z.string().describe('Job ID'),
|
|
69
70
|
keepLogs: z
|
|
@@ -71,13 +72,13 @@ export function registerMonitoringTools(server, backend) {
|
|
|
71
72
|
.min(0)
|
|
72
73
|
.optional()
|
|
73
74
|
.describe('Number of recent log entries to keep (default: 0 = clear all)'),
|
|
74
|
-
}, async ({ jobId, keepLogs }) => {
|
|
75
|
+
}, withErrorHandler(async ({ jobId, keepLogs }) => {
|
|
75
76
|
await backend.clearJobLogs(jobId, keepLogs);
|
|
76
77
|
return {
|
|
77
78
|
content: [{ type: 'text', text: JSON.stringify({ success: true, jobId }) }],
|
|
78
79
|
};
|
|
79
|
-
});
|
|
80
|
-
server.tool('bunqueue_compact_memory', 'Force memory compaction to free unused memory.', {}, async () => {
|
|
80
|
+
}));
|
|
81
|
+
server.tool('bunqueue_compact_memory', 'Force memory compaction to free unused memory.', {}, withErrorHandler(async () => {
|
|
81
82
|
await backend.compactMemory();
|
|
82
83
|
return {
|
|
83
84
|
content: [
|
|
@@ -87,6 +88,6 @@ export function registerMonitoringTools(server, backend) {
|
|
|
87
88
|
},
|
|
88
89
|
],
|
|
89
90
|
};
|
|
90
|
-
});
|
|
91
|
+
}));
|
|
91
92
|
}
|
|
92
93
|
//# sourceMappingURL=monitoringTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitoringTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/monitoringTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"monitoringTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/monitoringTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/queueTools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"queueTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/queueTools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QAsLxE"}
|
|
@@ -4,17 +4,18 @@
|
|
|
4
4
|
* List, count, pause, resume, drain, obliterate, clean, get jobs
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
7
8
|
export function registerQueueTools(server, backend) {
|
|
8
|
-
server.tool('bunqueue_list_queues', 'List all queues.', {}, async () => {
|
|
9
|
+
server.tool('bunqueue_list_queues', 'List all queues.', {}, withErrorHandler(async () => {
|
|
9
10
|
const queues = await backend.listQueues();
|
|
10
11
|
return { content: [{ type: 'text', text: JSON.stringify({ queues }) }] };
|
|
11
|
-
});
|
|
12
|
+
}));
|
|
12
13
|
server.tool('bunqueue_count_jobs', 'Count total jobs in a queue (all states).', {
|
|
13
14
|
queue: z.string().describe('Queue name'),
|
|
14
|
-
}, async ({ queue }) => {
|
|
15
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
15
16
|
const count = await backend.countJobs(queue);
|
|
16
17
|
return { content: [{ type: 'text', text: JSON.stringify({ queue, count }) }] };
|
|
17
|
-
});
|
|
18
|
+
}));
|
|
18
19
|
server.tool('bunqueue_get_jobs', 'List jobs in a queue with optional state filter and pagination.', {
|
|
19
20
|
queue: z.string().describe('Queue name'),
|
|
20
21
|
state: z
|
|
@@ -23,7 +24,7 @@ export function registerQueueTools(server, backend) {
|
|
|
23
24
|
.describe('Filter by job state'),
|
|
24
25
|
start: z.number().optional().describe('Start index for pagination (default: 0)'),
|
|
25
26
|
end: z.number().optional().describe('End index for pagination (default: 20)'),
|
|
26
|
-
}, async ({ queue, state, start, end }) => {
|
|
27
|
+
}, withErrorHandler(async ({ queue, state, start, end }) => {
|
|
27
28
|
const jobs = await backend.getJobs(queue, { state, start: start ?? 0, end: end ?? 20 });
|
|
28
29
|
return {
|
|
29
30
|
content: [
|
|
@@ -33,16 +34,16 @@ export function registerQueueTools(server, backend) {
|
|
|
33
34
|
},
|
|
34
35
|
],
|
|
35
36
|
};
|
|
36
|
-
});
|
|
37
|
+
}));
|
|
37
38
|
server.tool('bunqueue_get_job_counts', 'Get job counts per state for a queue (waiting, delayed, active, completed, failed).', {
|
|
38
39
|
queue: z.string().describe('Queue name'),
|
|
39
|
-
}, async ({ queue }) => {
|
|
40
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
40
41
|
const counts = await backend.getJobCounts(queue);
|
|
41
42
|
return { content: [{ type: 'text', text: JSON.stringify({ queue, ...counts }) }] };
|
|
42
|
-
});
|
|
43
|
+
}));
|
|
43
44
|
server.tool('bunqueue_pause_queue', 'Pause job processing on a queue. No new jobs will be processed until resumed.', {
|
|
44
45
|
queue: z.string().describe('Queue name'),
|
|
45
|
-
}, async ({ queue }) => {
|
|
46
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
46
47
|
await backend.pauseQueue(queue);
|
|
47
48
|
return {
|
|
48
49
|
content: [
|
|
@@ -52,10 +53,10 @@ export function registerQueueTools(server, backend) {
|
|
|
52
53
|
},
|
|
53
54
|
],
|
|
54
55
|
};
|
|
55
|
-
});
|
|
56
|
+
}));
|
|
56
57
|
server.tool('bunqueue_resume_queue', 'Resume job processing on a paused queue.', {
|
|
57
58
|
queue: z.string().describe('Queue name'),
|
|
58
|
-
}, async ({ queue }) => {
|
|
59
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
59
60
|
await backend.resumeQueue(queue);
|
|
60
61
|
return {
|
|
61
62
|
content: [
|
|
@@ -65,20 +66,20 @@ export function registerQueueTools(server, backend) {
|
|
|
65
66
|
},
|
|
66
67
|
],
|
|
67
68
|
};
|
|
68
|
-
});
|
|
69
|
+
}));
|
|
69
70
|
server.tool('bunqueue_drain_queue', 'Remove all waiting jobs from a queue. Active jobs continue processing.', {
|
|
70
71
|
queue: z.string().describe('Queue name'),
|
|
71
|
-
}, async ({ queue }) => {
|
|
72
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
72
73
|
const removed = await backend.drainQueue(queue);
|
|
73
74
|
return {
|
|
74
75
|
content: [
|
|
75
76
|
{ type: 'text', text: JSON.stringify({ success: true, queue, removed }) },
|
|
76
77
|
],
|
|
77
78
|
};
|
|
78
|
-
});
|
|
79
|
+
}));
|
|
79
80
|
server.tool('bunqueue_obliterate_queue', 'Remove ALL data from a queue (waiting, active, completed, failed). Destructive operation.', {
|
|
80
81
|
queue: z.string().describe('Queue name'),
|
|
81
|
-
}, async ({ queue }) => {
|
|
82
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
82
83
|
await backend.obliterateQueue(queue);
|
|
83
84
|
return {
|
|
84
85
|
content: [
|
|
@@ -88,7 +89,7 @@ export function registerQueueTools(server, backend) {
|
|
|
88
89
|
},
|
|
89
90
|
],
|
|
90
91
|
};
|
|
91
|
-
});
|
|
92
|
+
}));
|
|
92
93
|
server.tool('bunqueue_clean_queue', 'Remove old jobs from a queue based on grace period and state.', {
|
|
93
94
|
queue: z.string().describe('Queue name'),
|
|
94
95
|
graceMs: z.number().min(0).describe('Grace period in ms - only remove jobs older than this'),
|
|
@@ -97,29 +98,29 @@ export function registerQueueTools(server, backend) {
|
|
|
97
98
|
.optional()
|
|
98
99
|
.describe('State to clean (default: both completed and failed)'),
|
|
99
100
|
limit: z.number().optional().describe('Maximum number of jobs to remove'),
|
|
100
|
-
}, async ({ queue, graceMs, state, limit }) => {
|
|
101
|
+
}, withErrorHandler(async ({ queue, graceMs, state, limit }) => {
|
|
101
102
|
const removed = await backend.cleanQueue(queue, graceMs, state, limit);
|
|
102
103
|
return {
|
|
103
104
|
content: [
|
|
104
105
|
{ type: 'text', text: JSON.stringify({ success: true, queue, removed }) },
|
|
105
106
|
],
|
|
106
107
|
};
|
|
107
|
-
});
|
|
108
|
+
}));
|
|
108
109
|
server.tool('bunqueue_is_paused', 'Check if a queue is currently paused.', {
|
|
109
110
|
queue: z.string().describe('Queue name'),
|
|
110
|
-
}, async ({ queue }) => {
|
|
111
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
111
112
|
const paused = await backend.isPaused(queue);
|
|
112
113
|
return { content: [{ type: 'text', text: JSON.stringify({ queue, paused }) }] };
|
|
113
|
-
});
|
|
114
|
+
}));
|
|
114
115
|
server.tool('bunqueue_get_counts_per_priority', 'Get job count breakdown by priority level for a queue.', {
|
|
115
116
|
queue: z.string().describe('Queue name'),
|
|
116
|
-
}, async ({ queue }) => {
|
|
117
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
117
118
|
const counts = await backend.getCountsPerPriority(queue);
|
|
118
119
|
return {
|
|
119
120
|
content: [
|
|
120
121
|
{ type: 'text', text: JSON.stringify({ queue, priorities: counts }, null, 2) },
|
|
121
122
|
],
|
|
122
123
|
};
|
|
123
|
-
});
|
|
124
|
+
}));
|
|
124
125
|
}
|
|
125
126
|
//# sourceMappingURL=queueTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/queueTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"queueTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/queueTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimitTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/rateLimitTools.ts"],"names":[],"mappings":"AACA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"rateLimitTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/rateLimitTools.ts"],"names":[],"mappings":"AACA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QA8E5E"}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* MCP Tools - Rate Limiting & Concurrency Control
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
6
7
|
export function registerRateLimitTools(server, backend) {
|
|
7
8
|
server.tool('bunqueue_set_rate_limit', 'Set rate limit for a queue (max jobs processed per second).', {
|
|
8
9
|
queue: z.string().describe('Queue name'),
|
|
9
10
|
limit: z.number().min(1).describe('Max jobs per second'),
|
|
10
|
-
}, async ({ queue, limit }) => {
|
|
11
|
+
}, withErrorHandler(async ({ queue, limit }) => {
|
|
11
12
|
await backend.setRateLimit(queue, limit);
|
|
12
13
|
return {
|
|
13
14
|
content: [
|
|
@@ -17,10 +18,10 @@ export function registerRateLimitTools(server, backend) {
|
|
|
17
18
|
},
|
|
18
19
|
],
|
|
19
20
|
};
|
|
20
|
-
});
|
|
21
|
+
}));
|
|
21
22
|
server.tool('bunqueue_clear_rate_limit', 'Remove rate limit from a queue, allowing unlimited throughput.', {
|
|
22
23
|
queue: z.string().describe('Queue name'),
|
|
23
|
-
}, async ({ queue }) => {
|
|
24
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
24
25
|
await backend.clearRateLimit(queue);
|
|
25
26
|
return {
|
|
26
27
|
content: [
|
|
@@ -30,11 +31,11 @@ export function registerRateLimitTools(server, backend) {
|
|
|
30
31
|
},
|
|
31
32
|
],
|
|
32
33
|
};
|
|
33
|
-
});
|
|
34
|
+
}));
|
|
34
35
|
server.tool('bunqueue_set_concurrency', 'Set concurrency limit for a queue (max simultaneous active jobs).', {
|
|
35
36
|
queue: z.string().describe('Queue name'),
|
|
36
37
|
limit: z.number().min(1).describe('Max concurrent jobs'),
|
|
37
|
-
}, async ({ queue, limit }) => {
|
|
38
|
+
}, withErrorHandler(async ({ queue, limit }) => {
|
|
38
39
|
await backend.setConcurrency(queue, limit);
|
|
39
40
|
return {
|
|
40
41
|
content: [
|
|
@@ -44,10 +45,10 @@ export function registerRateLimitTools(server, backend) {
|
|
|
44
45
|
},
|
|
45
46
|
],
|
|
46
47
|
};
|
|
47
|
-
});
|
|
48
|
+
}));
|
|
48
49
|
server.tool('bunqueue_clear_concurrency', 'Remove concurrency limit from a queue.', {
|
|
49
50
|
queue: z.string().describe('Queue name'),
|
|
50
|
-
}, async ({ queue }) => {
|
|
51
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
51
52
|
await backend.clearConcurrency(queue);
|
|
52
53
|
return {
|
|
53
54
|
content: [
|
|
@@ -57,6 +58,6 @@ export function registerRateLimitTools(server, backend) {
|
|
|
57
58
|
},
|
|
58
59
|
],
|
|
59
60
|
};
|
|
60
|
-
});
|
|
61
|
+
}));
|
|
61
62
|
}
|
|
62
63
|
//# sourceMappingURL=rateLimitTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimitTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/rateLimitTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"rateLimitTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/rateLimitTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"AACA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"webhookTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"AACA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QAyE1E"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* MCP Tools - Webhook Management
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
6
7
|
export function registerWebhookTools(server, backend) {
|
|
7
8
|
server.tool('bunqueue_add_webhook', 'Add a webhook to receive notifications for job events.', {
|
|
8
9
|
url: z.url().describe('Webhook URL to receive POST requests'),
|
|
@@ -17,21 +18,21 @@ export function registerWebhookTools(server, backend) {
|
|
|
17
18
|
]))
|
|
18
19
|
.describe('Events to subscribe to'),
|
|
19
20
|
queue: z.string().optional().describe('Limit to a specific queue (omit for all queues)'),
|
|
20
|
-
}, async ({ url, events, queue }) => {
|
|
21
|
+
}, withErrorHandler(async ({ url, events, queue }) => {
|
|
21
22
|
const webhook = await backend.addWebhook(url, events, queue);
|
|
22
23
|
return {
|
|
23
24
|
content: [
|
|
24
25
|
{ type: 'text', text: JSON.stringify({ success: true, ...webhook }, null, 2) },
|
|
25
26
|
],
|
|
26
27
|
};
|
|
27
|
-
});
|
|
28
|
+
}));
|
|
28
29
|
server.tool('bunqueue_remove_webhook', 'Remove a webhook by ID.', {
|
|
29
30
|
id: z.string().describe('Webhook ID to remove'),
|
|
30
|
-
}, async ({ id }) => {
|
|
31
|
+
}, withErrorHandler(async ({ id }) => {
|
|
31
32
|
const success = await backend.removeWebhook(id);
|
|
32
33
|
return { content: [{ type: 'text', text: JSON.stringify({ success, id }) }] };
|
|
33
|
-
});
|
|
34
|
-
server.tool('bunqueue_list_webhooks', 'List all registered webhooks.', {}, async () => {
|
|
34
|
+
}));
|
|
35
|
+
server.tool('bunqueue_list_webhooks', 'List all registered webhooks.', {}, withErrorHandler(async () => {
|
|
35
36
|
const webhooks = await backend.listWebhooks();
|
|
36
37
|
return {
|
|
37
38
|
content: [
|
|
@@ -41,15 +42,15 @@ export function registerWebhookTools(server, backend) {
|
|
|
41
42
|
},
|
|
42
43
|
],
|
|
43
44
|
};
|
|
44
|
-
});
|
|
45
|
+
}));
|
|
45
46
|
server.tool('bunqueue_set_webhook_enabled', 'Enable or disable a webhook without removing it.', {
|
|
46
47
|
id: z.string().describe('Webhook ID'),
|
|
47
48
|
enabled: z.boolean().describe('Whether the webhook should be enabled'),
|
|
48
|
-
}, async ({ id, enabled }) => {
|
|
49
|
+
}, withErrorHandler(async ({ id, enabled }) => {
|
|
49
50
|
const success = await backend.setWebhookEnabled(id, enabled);
|
|
50
51
|
return {
|
|
51
52
|
content: [{ type: 'text', text: JSON.stringify({ success, id, enabled }) }],
|
|
52
53
|
};
|
|
53
|
-
});
|
|
54
|
+
}));
|
|
54
55
|
}
|
|
55
56
|
//# sourceMappingURL=webhookTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"webhookTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Error Handler
|
|
3
|
+
* Wraps tool handlers with try/catch to return proper MCP error responses.
|
|
4
|
+
*/
|
|
5
|
+
/** MCP tool result compatible with SDK's expected return type */
|
|
6
|
+
interface ToolResult {
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
content: Array<{
|
|
9
|
+
type: 'text';
|
|
10
|
+
text: string;
|
|
11
|
+
}>;
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Wraps an MCP tool handler with error handling.
|
|
16
|
+
* Catches exceptions and returns a proper MCP error response with isError: true
|
|
17
|
+
* instead of letting raw stack traces propagate to the AI agent.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withErrorHandler<T>(fn: (args: T) => Promise<ToolResult>): (args: T) => Promise<ToolResult>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=withErrorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withErrorHandler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/withErrorHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,UAAU,UAAU;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACnC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAYlC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Error Handler
|
|
3
|
+
* Wraps tool handlers with try/catch to return proper MCP error responses.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Wraps an MCP tool handler with error handling.
|
|
7
|
+
* Catches exceptions and returns a proper MCP error response with isError: true
|
|
8
|
+
* instead of letting raw stack traces propagate to the AI agent.
|
|
9
|
+
*/
|
|
10
|
+
export function withErrorHandler(fn) {
|
|
11
|
+
return async (args) => {
|
|
12
|
+
try {
|
|
13
|
+
return await fn(args);
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
17
|
+
return {
|
|
18
|
+
content: [{ type: 'text', text: JSON.stringify({ error: message }) }],
|
|
19
|
+
isError: true,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=withErrorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withErrorHandler.js","sourceRoot":"","sources":["../../../src/mcp/tools/withErrorHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAoC;IAEpC,OAAO,KAAK,EAAE,IAAO,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC9E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerMgmtTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workerMgmtTools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"workerMgmtTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/workerMgmtTools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QAyC7E"}
|
|
@@ -4,29 +4,30 @@
|
|
|
4
4
|
* Register, unregister, heartbeat workers
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
7
8
|
export function registerWorkerMgmtTools(server, backend) {
|
|
8
9
|
server.tool('bunqueue_register_worker', 'Register a new worker to process jobs from specified queues.', {
|
|
9
10
|
name: z.string().describe('Worker name/identifier'),
|
|
10
11
|
queues: z.array(z.string()).min(1).describe('Queues this worker will process'),
|
|
11
|
-
}, async ({ name, queues }) => {
|
|
12
|
+
}, withErrorHandler(async ({ name, queues }) => {
|
|
12
13
|
const worker = await backend.registerWorker(name, queues);
|
|
13
14
|
return {
|
|
14
15
|
content: [
|
|
15
16
|
{ type: 'text', text: JSON.stringify({ success: true, worker }, null, 2) },
|
|
16
17
|
],
|
|
17
18
|
};
|
|
18
|
-
});
|
|
19
|
+
}));
|
|
19
20
|
server.tool('bunqueue_unregister_worker', 'Unregister a worker, removing it from the active workers list.', {
|
|
20
21
|
workerId: z.string().describe('Worker ID to unregister'),
|
|
21
|
-
}, async ({ workerId }) => {
|
|
22
|
+
}, withErrorHandler(async ({ workerId }) => {
|
|
22
23
|
const success = await backend.unregisterWorker(workerId);
|
|
23
24
|
return { content: [{ type: 'text', text: JSON.stringify({ success, workerId }) }] };
|
|
24
|
-
});
|
|
25
|
+
}));
|
|
25
26
|
server.tool('bunqueue_worker_heartbeat', 'Send a heartbeat to keep a registered worker alive.', {
|
|
26
27
|
workerId: z.string().describe('Worker ID'),
|
|
27
|
-
}, async ({ workerId }) => {
|
|
28
|
+
}, withErrorHandler(async ({ workerId }) => {
|
|
28
29
|
const success = await backend.workerHeartbeat(workerId);
|
|
29
30
|
return { content: [{ type: 'text', text: JSON.stringify({ success, workerId }) }] };
|
|
30
|
-
});
|
|
31
|
+
}));
|
|
31
32
|
}
|
|
32
33
|
//# sourceMappingURL=workerMgmtTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerMgmtTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/workerMgmtTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"workerMgmtTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/workerMgmtTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,OAAmB;IAC5E,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,8DAA8D,EAC9D;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACnD,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC/E,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACpF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,gEAAgE,EAChE;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACzD,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/F,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,qDAAqD,EACrD;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC3C,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/F,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunqueue",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.2",
|
|
4
4
|
"description": "High-performance job queue for Bun & AI agents. SQLite persistence, cron scheduling, priorities, retries, DLQ, webhooks, native MCP server. Zero external dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|