bunqueue 2.5.4 → 2.5.5
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/README.md +2 -1
- package/dist/mcp/httpHandler.d.ts +24 -0
- package/dist/mcp/httpHandler.d.ts.map +1 -0
- package/dist/mcp/httpHandler.js +74 -0
- package/dist/mcp/httpHandler.js.map +1 -0
- package/dist/mcp/index.js +6 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/tools/handlerTools.d.ts +8 -0
- package/dist/mcp/tools/handlerTools.d.ts.map +1 -0
- package/dist/mcp/tools/handlerTools.js +67 -0
- package/dist/mcp/tools/handlerTools.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -156,7 +156,8 @@ bunqueue is the **first job queue with native MCP support**. AI agents get a ful
|
|
|
156
156
|
- **Full pull/ack/fail cycle** — agents can consume and process jobs directly
|
|
157
157
|
- **Monitor everything** — stats, memory, Prometheus metrics, logs, DLQ
|
|
158
158
|
- **Control flow** — pause/resume queues, set rate limits, manage concurrency
|
|
159
|
-
- **
|
|
159
|
+
- **73 MCP tools + 5 resources + 3 prompts** — complete control over every feature
|
|
160
|
+
- **HTTP handlers** — register a URL, bunqueue auto-processes jobs via HTTP calls
|
|
160
161
|
|
|
161
162
|
```bash
|
|
162
163
|
# One command to connect Claude Code
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Handler Registry
|
|
3
|
+
* Spawns embedded Workers that auto-process jobs via HTTP calls.
|
|
4
|
+
* Allows AI agents to register handlers so cron/queued jobs execute automatically.
|
|
5
|
+
*/
|
|
6
|
+
export interface HttpHandler {
|
|
7
|
+
url: string;
|
|
8
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
body?: unknown;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class HttpHandlerRegistry {
|
|
14
|
+
private readonly handlers;
|
|
15
|
+
register(queue: string, handler: HttpHandler): void;
|
|
16
|
+
unregister(queue: string): boolean;
|
|
17
|
+
list(): Array<{
|
|
18
|
+
queue: string;
|
|
19
|
+
handler: HttpHandler;
|
|
20
|
+
active: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
shutdown(): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=httpHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpHandler.d.ts","sourceRoot":"","sources":["../../src/mcp/httpHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAE7D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAqDnD,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IASlC,IAAI,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAYvE,QAAQ,IAAI,IAAI;CAMjB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Handler Registry
|
|
3
|
+
* Spawns embedded Workers that auto-process jobs via HTTP calls.
|
|
4
|
+
* Allows AI agents to register handlers so cron/queued jobs execute automatically.
|
|
5
|
+
*/
|
|
6
|
+
import { Worker } from '../client/worker/worker';
|
|
7
|
+
export class HttpHandlerRegistry {
|
|
8
|
+
handlers = new Map();
|
|
9
|
+
register(queue, handler) {
|
|
10
|
+
// Stop existing handler on this queue if any
|
|
11
|
+
if (this.handlers.has(queue)) {
|
|
12
|
+
this.unregister(queue);
|
|
13
|
+
}
|
|
14
|
+
const timeout = handler.timeoutMs ?? 30_000;
|
|
15
|
+
const worker = new Worker(queue, async (job) => {
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
const timer = setTimeout(() => {
|
|
18
|
+
controller.abort();
|
|
19
|
+
}, timeout);
|
|
20
|
+
try {
|
|
21
|
+
const init = {
|
|
22
|
+
method: handler.method,
|
|
23
|
+
headers: {
|
|
24
|
+
'Content-Type': 'application/json',
|
|
25
|
+
...handler.headers,
|
|
26
|
+
},
|
|
27
|
+
signal: controller.signal,
|
|
28
|
+
};
|
|
29
|
+
if (handler.method !== 'GET' && handler.method !== 'DELETE') {
|
|
30
|
+
init.body = JSON.stringify(handler.body ?? job.data);
|
|
31
|
+
}
|
|
32
|
+
const res = await fetch(handler.url, init);
|
|
33
|
+
const contentType = res.headers.get('content-type') ?? '';
|
|
34
|
+
const resBody = contentType.includes('json')
|
|
35
|
+
? await res.json()
|
|
36
|
+
: await res.text();
|
|
37
|
+
if (!res.ok) {
|
|
38
|
+
throw new Error(`HTTP ${res.status}: ${typeof resBody === 'string' ? resBody : JSON.stringify(resBody)}`);
|
|
39
|
+
}
|
|
40
|
+
return { status: res.status, body: resBody };
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
clearTimeout(timer);
|
|
44
|
+
}
|
|
45
|
+
}, { embedded: true, concurrency: 1 });
|
|
46
|
+
this.handlers.set(queue, { handler, worker });
|
|
47
|
+
}
|
|
48
|
+
unregister(queue) {
|
|
49
|
+
const entry = this.handlers.get(queue);
|
|
50
|
+
if (!entry)
|
|
51
|
+
return false;
|
|
52
|
+
void entry.worker.close(true);
|
|
53
|
+
this.handlers.delete(queue);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
list() {
|
|
57
|
+
const result = [];
|
|
58
|
+
for (const [queue, entry] of this.handlers) {
|
|
59
|
+
result.push({
|
|
60
|
+
queue,
|
|
61
|
+
handler: entry.handler,
|
|
62
|
+
active: entry.worker.isRunning(),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
shutdown() {
|
|
68
|
+
for (const [, entry] of this.handlers) {
|
|
69
|
+
void entry.worker.close(true);
|
|
70
|
+
}
|
|
71
|
+
this.handlers.clear();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=httpHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpHandler.js","sourceRoot":"","sources":["../../src/mcp/httpHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -56,6 +56,8 @@ import { registerWebhookTools } from './tools/webhookTools';
|
|
|
56
56
|
import { registerWorkerMgmtTools } from './tools/workerMgmtTools';
|
|
57
57
|
import { registerMonitoringTools } from './tools/monitoringTools';
|
|
58
58
|
import { registerFlowTools } from './tools/flowTools';
|
|
59
|
+
import { registerHandlerTools } from './tools/handlerTools';
|
|
60
|
+
import { HttpHandlerRegistry } from './httpHandler';
|
|
59
61
|
import { registerPrompts } from './prompts';
|
|
60
62
|
async function main() {
|
|
61
63
|
const backend = await createBackend();
|
|
@@ -64,7 +66,8 @@ async function main() {
|
|
|
64
66
|
name: 'bunqueue-mcp',
|
|
65
67
|
version: VERSION,
|
|
66
68
|
});
|
|
67
|
-
|
|
69
|
+
const handlerRegistry = new HttpHandlerRegistry();
|
|
70
|
+
// Register all tools (73 total) and prompts (3)
|
|
68
71
|
registerJobTools(server, backend);
|
|
69
72
|
registerJobMgmtTools(server, backend);
|
|
70
73
|
registerConsumptionTools(server, backend);
|
|
@@ -76,12 +79,14 @@ async function main() {
|
|
|
76
79
|
registerWorkerMgmtTools(server, backend);
|
|
77
80
|
registerMonitoringTools(server, backend);
|
|
78
81
|
registerFlowTools(server, backend);
|
|
82
|
+
registerHandlerTools(server, handlerRegistry);
|
|
79
83
|
// Register resources and prompts
|
|
80
84
|
registerResources(server, backend);
|
|
81
85
|
registerPrompts(server, backend);
|
|
82
86
|
// Graceful shutdown — allow backend and transport to flush before exit
|
|
83
87
|
const shutdown = async () => {
|
|
84
88
|
try {
|
|
89
|
+
handlerRegistry.shutdown();
|
|
85
90
|
backend.shutdown();
|
|
86
91
|
await server.close();
|
|
87
92
|
}
|
package/dist/mcp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gDAAgD;IAChD,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools - HTTP Handler Management
|
|
3
|
+
* Register, unregister, list HTTP handlers that auto-process jobs.
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import type { HttpHandlerRegistry } from '../httpHandler';
|
|
7
|
+
export declare function registerHandlerTools(server: McpServer, registry: HttpHandlerRegistry): void;
|
|
8
|
+
//# sourceMappingURL=handlerTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlerTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/handlerTools.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,QA+EpF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-deprecated, @typescript-eslint/require-await */
|
|
2
|
+
/**
|
|
3
|
+
* MCP Tools - HTTP Handler Management
|
|
4
|
+
* Register, unregister, list HTTP handlers that auto-process jobs.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
8
|
+
export function registerHandlerTools(server, registry) {
|
|
9
|
+
server.tool('bunqueue_register_handler', 'Register an HTTP handler on a queue. Spawns a worker that auto-processes jobs by making HTTP requests. Combine with bunqueue_add_cron for recurring tasks.', {
|
|
10
|
+
queue: z.string().describe('Queue name to attach the handler to'),
|
|
11
|
+
url: z.string().url().describe('HTTP endpoint URL to call when a job is processed'),
|
|
12
|
+
method: z
|
|
13
|
+
.enum(['GET', 'POST', 'PUT', 'DELETE'])
|
|
14
|
+
.describe('HTTP method (GET, POST, PUT, DELETE)'),
|
|
15
|
+
headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),
|
|
16
|
+
body: z
|
|
17
|
+
.unknown()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Request body template for POST/PUT (defaults to job data)'),
|
|
20
|
+
timeoutMs: z
|
|
21
|
+
.number()
|
|
22
|
+
.min(1000)
|
|
23
|
+
.max(120000)
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Request timeout in ms (default: 30000)'),
|
|
26
|
+
}, withErrorHandler(async ({ queue, url, method, headers, body, timeoutMs }) => {
|
|
27
|
+
registry.register(queue, { url, method, headers, body, timeoutMs });
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: 'text',
|
|
32
|
+
text: JSON.stringify({
|
|
33
|
+
success: true,
|
|
34
|
+
queue,
|
|
35
|
+
handler: { url, method, timeoutMs: timeoutMs ?? 30000 },
|
|
36
|
+
message: `Worker started. Jobs in "${queue}" will be processed via ${method} ${url}`,
|
|
37
|
+
}, null, 2),
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
}));
|
|
42
|
+
server.tool('bunqueue_unregister_handler', 'Remove an HTTP handler from a queue and stop its worker.', {
|
|
43
|
+
queue: z.string().describe('Queue name to remove the handler from'),
|
|
44
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
45
|
+
const removed = registry.unregister(queue);
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: 'text',
|
|
50
|
+
text: JSON.stringify({ success: removed, queue }),
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}));
|
|
55
|
+
server.tool('bunqueue_list_handlers', 'List all active HTTP handlers and their workers.', {}, withErrorHandler(async () => {
|
|
56
|
+
const handlers = registry.list();
|
|
57
|
+
return {
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: JSON.stringify({ count: handlers.length, handlers }, null, 2),
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=handlerTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlerTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/handlerTools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunqueue",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.5",
|
|
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",
|