bunqueue 2.7.22 → 2.8.1

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 CHANGED
@@ -602,6 +602,7 @@ https://github.com/user-attachments/assets/e8a8d38e-b4a6-4dc8-8360-876c0f24d116
602
602
  - **MCP server included** — 73 tools, 5 resources, 3 prompts. AI agents get full control out of the box
603
603
  - **BullMQ-compatible API** — Same `Queue`, `Worker`, `QueueEvents`
604
604
  - **Zero dependencies** — No Redis, no MongoDB
605
+ - **Tiny footprint** — 8.2 MB installed, 7 packages (just 2 runtime deps: `croner` + `msgpackr`)
605
606
  - **SQLite persistence** — Survives restarts, WAL mode for concurrent access
606
607
  - **Up to 286K ops/sec** — [Verified benchmarks](https://bunqueue.dev/guide/benchmarks/)
607
608
 
@@ -629,12 +630,17 @@ bunqueue is the **first job queue with native MCP support**. AI agents get a ful
629
630
  # bunqueue-mcp is a binary bundled inside the bunqueue package (not a standalone npm package),
630
631
  # so install bunqueue first, then connect Claude Code:
631
632
  bun add bunqueue
633
+ # Since v2.8.0 the MCP SDK is an optional peer dependency. Queue-only users skip it entirely:
634
+ # a clean install drops from 93 MB / 117 packages to 8.2 MB / 7 packages (−91%, 3.8x faster).
635
+ # bunx --package=bunqueue does NOT auto-install optional peers, so install the SDK once to run the MCP server:
636
+ bun add @modelcontextprotocol/sdk
632
637
  claude mcp add bunqueue -- bunx bunqueue-mcp
633
638
  ```
634
639
 
635
640
  ```json
636
641
  // Claude Desktop / Cursor / Windsurf — --package=bunqueue lets bunx resolve the bundled
637
- // bunqueue-mcp binary without a separate install:
642
+ // bunqueue-mcp binary without a separate install (the @modelcontextprotocol/sdk optional
643
+ // peer dependency must still be installed once: bun add @modelcontextprotocol/sdk):
638
644
  {
639
645
  "mcpServers": {
640
646
  "bunqueue": {
@@ -40,5 +40,5 @@
40
40
  * }
41
41
  * ```
42
42
  */
43
- export {};
43
+ declare function launch(): Promise<void>;
44
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AASH,iBAAe,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBrC"}
package/dist/mcp/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bun
2
+ "use strict";
2
3
  /**
3
4
  * bunqueue MCP Server
4
5
  *
@@ -40,94 +41,30 @@
40
41
  * }
41
42
  * ```
42
43
  */
43
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
44
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
45
- import { VERSION } from '../shared/version';
46
- import { createBackend } from './adapter';
47
- import { registerResources } from './resources';
48
- import { registerJobTools } from './tools/jobTools';
49
- import { registerJobMgmtTools } from './tools/jobMgmtTools';
50
- import { registerConsumptionTools } from './tools/consumptionTools';
51
- import { registerQueueTools } from './tools/queueTools';
52
- import { registerDlqTools } from './tools/dlqTools';
53
- import { registerCronTools } from './tools/cronTools';
54
- import { registerRateLimitTools } from './tools/rateLimitTools';
55
- import { registerWebhookTools } from './tools/webhookTools';
56
- import { registerWorkerMgmtTools } from './tools/workerMgmtTools';
57
- import { registerMonitoringTools } from './tools/monitoringTools';
58
- import { registerFlowTools } from './tools/flowTools';
59
- import { registerHandlerTools } from './tools/handlerTools';
60
- import { HttpHandlerRegistry } from './httpHandler';
61
- import { registerPrompts } from './prompts';
62
- import { mcpTracker } from './tools/mcpTracker';
63
- import { CloudAgent } from '../infrastructure/cloud/cloudAgent';
64
- import { getSharedManager } from '../client/manager';
65
- async function main() {
66
- const backend = await createBackend();
67
- const mode = process.env.BUNQUEUE_MODE ?? 'embedded';
68
- const server = new McpServer({
69
- name: 'bunqueue-mcp',
70
- version: VERSION,
71
- });
72
- const handlerRegistry = new HttpHandlerRegistry();
73
- // Register all tools (73 total) and prompts (3)
74
- registerJobTools(server, backend);
75
- registerJobMgmtTools(server, backend);
76
- registerConsumptionTools(server, backend);
77
- registerQueueTools(server, backend);
78
- registerDlqTools(server, backend);
79
- registerCronTools(server, backend);
80
- registerRateLimitTools(server, backend);
81
- registerWebhookTools(server, backend);
82
- registerWorkerMgmtTools(server, backend);
83
- registerMonitoringTools(server, backend);
84
- registerFlowTools(server, backend);
85
- registerHandlerTools(server, handlerRegistry);
86
- // Register resources and prompts
87
- registerResources(server, backend);
88
- registerPrompts(server, backend);
89
- // Start Cloud agent for MCP telemetry (embedded mode only)
90
- let cloudAgent = null;
91
- if (mode === 'embedded' && process.env.BUNQUEUE_CLOUD_URL) {
92
- const manager = getSharedManager();
93
- cloudAgent = CloudAgent.create(manager);
94
- if (cloudAgent) {
95
- cloudAgent.setServerHandles({
96
- getConnectionCount: () => 0,
97
- getWsClientCount: () => 0,
98
- getSseClientCount: () => 0,
99
- getMcpOperations: () => {
100
- // IMPORTANT: getSummary() MUST be called before drain() — drain empties the buffer
101
- const summary = mcpTracker.getSummary();
102
- const operations = mcpTracker.drain();
103
- return { operations, summary };
104
- },
105
- });
106
- }
44
+ // The MCP server implementation lives in ./server.ts and is loaded LAZILY via
45
+ // dynamic import below. This keeps `@modelcontextprotocol/sdk` (and its zod
46
+ // sub-dependency) out of this entrypoint's static import graph, so they can be
47
+ // an OPTIONAL peer dependency: queue-only consumers of bunqueue never download
48
+ // the SDK + zod + its HTTP stack (~24 MB). If a user starts `bunqueue-mcp`
49
+ // without the SDK installed, the guard below prints an actionable install hint.
50
+ async function launch() {
51
+ try {
52
+ const mod = await import('./server.js');
53
+ await mod.run();
107
54
  }
108
- // Graceful shutdown — allow backend and transport to flush before exit
109
- const shutdown = async () => {
110
- try {
111
- if (cloudAgent)
112
- await cloudAgent.stop();
113
- handlerRegistry.shutdown();
114
- backend.shutdown();
115
- await server.close();
116
- }
117
- catch {
118
- // Ignore cleanup errors during shutdown
55
+ catch (err) {
56
+ const e = err;
57
+ const msg = String(e?.message ?? err);
58
+ const isModuleNotFound = e?.code === 'ERR_MODULE_NOT_FOUND' || /Cannot find (module|package)/i.test(msg);
59
+ const mentionsMcpDeps = /@modelcontextprotocol\/sdk|(^|\W)zod(\W|$)/i.test(msg);
60
+ if (isModuleNotFound && mentionsMcpDeps) {
61
+ process.stderr.write('[bunqueue-mcp] The MCP server requires "@modelcontextprotocol/sdk" (an optional peer dependency).\n' +
62
+ 'Install it with: bun add @modelcontextprotocol/sdk\n');
63
+ process.exit(1);
119
64
  }
120
- process.exit(0);
121
- };
122
- process.on('SIGINT', () => void shutdown());
123
- process.on('SIGTERM', () => void shutdown());
124
- // Connect via stdio transport
125
- const transport = new StdioServerTransport();
126
- await server.connect(transport);
127
- process.stderr.write(`bunqueue MCP server started (mode: ${mode}, version: ${VERSION})\n`);
65
+ process.stderr.write(`Fatal error: ${err}\n`);
66
+ process.exit(1);
67
+ }
128
68
  }
129
- main().catch((err) => {
130
- process.stderr.write(`Fatal error: ${err}\n`);
131
- process.exit(1);
132
- });
69
+ void launch();
133
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAEhF,KAAK,UAAU,MAAM;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAA0C,CAAC;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QACtC,MAAM,gBAAgB,GACpB,CAAC,EAAE,IAAI,KAAK,sBAAsB,IAAI,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClF,MAAM,eAAe,GAAG,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhF,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qGAAqG;gBACnG,uDAAuD,CAC1D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,MAAM,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * bunqueue MCP Server — implementation.
3
+ *
4
+ * Loaded lazily by ./index.ts (the `bunqueue-mcp` bin) via dynamic import, so
5
+ * that the static `@modelcontextprotocol/sdk` imports below are only resolved
6
+ * when the MCP server is actually started.
7
+ *
8
+ * `@modelcontextprotocol/sdk` is an OPTIONAL peer dependency (declared in
9
+ * package.json). `zod` (used by the tool schemas) is NOT declared by bunqueue
10
+ * at all — it resolves transitively from the SDK, which hard-depends on
11
+ * `zod: "^3.25 || ^4.0"`. Queue-only consumers download neither. If a future
12
+ * SDK major drops or peer-izes zod, declare zod explicitly here.
13
+ * See ./index.ts for the install-hint guard when the SDK is absent.
14
+ */
15
+ export declare function run(): Promise<void>;
16
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyBH,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAqEzC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * bunqueue MCP Server — implementation.
3
+ *
4
+ * Loaded lazily by ./index.ts (the `bunqueue-mcp` bin) via dynamic import, so
5
+ * that the static `@modelcontextprotocol/sdk` imports below are only resolved
6
+ * when the MCP server is actually started.
7
+ *
8
+ * `@modelcontextprotocol/sdk` is an OPTIONAL peer dependency (declared in
9
+ * package.json). `zod` (used by the tool schemas) is NOT declared by bunqueue
10
+ * at all — it resolves transitively from the SDK, which hard-depends on
11
+ * `zod: "^3.25 || ^4.0"`. Queue-only consumers download neither. If a future
12
+ * SDK major drops or peer-izes zod, declare zod explicitly here.
13
+ * See ./index.ts for the install-hint guard when the SDK is absent.
14
+ */
15
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
16
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
17
+ import { VERSION } from '../shared/version';
18
+ import { createBackend } from './adapter';
19
+ import { registerResources } from './resources';
20
+ import { registerJobTools } from './tools/jobTools';
21
+ import { registerJobMgmtTools } from './tools/jobMgmtTools';
22
+ import { registerConsumptionTools } from './tools/consumptionTools';
23
+ import { registerQueueTools } from './tools/queueTools';
24
+ import { registerDlqTools } from './tools/dlqTools';
25
+ import { registerCronTools } from './tools/cronTools';
26
+ import { registerRateLimitTools } from './tools/rateLimitTools';
27
+ import { registerWebhookTools } from './tools/webhookTools';
28
+ import { registerWorkerMgmtTools } from './tools/workerMgmtTools';
29
+ import { registerMonitoringTools } from './tools/monitoringTools';
30
+ import { registerFlowTools } from './tools/flowTools';
31
+ import { registerHandlerTools } from './tools/handlerTools';
32
+ import { HttpHandlerRegistry } from './httpHandler';
33
+ import { registerPrompts } from './prompts';
34
+ import { mcpTracker } from './tools/mcpTracker';
35
+ import { CloudAgent } from '../infrastructure/cloud/cloudAgent';
36
+ import { getSharedManager } from '../client/manager';
37
+ export async function run() {
38
+ const backend = await createBackend();
39
+ const mode = process.env.BUNQUEUE_MODE ?? 'embedded';
40
+ const server = new McpServer({
41
+ name: 'bunqueue-mcp',
42
+ version: VERSION,
43
+ });
44
+ const handlerRegistry = new HttpHandlerRegistry();
45
+ // Register all tools (73 total) and prompts (3)
46
+ registerJobTools(server, backend);
47
+ registerJobMgmtTools(server, backend);
48
+ registerConsumptionTools(server, backend);
49
+ registerQueueTools(server, backend);
50
+ registerDlqTools(server, backend);
51
+ registerCronTools(server, backend);
52
+ registerRateLimitTools(server, backend);
53
+ registerWebhookTools(server, backend);
54
+ registerWorkerMgmtTools(server, backend);
55
+ registerMonitoringTools(server, backend);
56
+ registerFlowTools(server, backend);
57
+ registerHandlerTools(server, handlerRegistry);
58
+ // Register resources and prompts
59
+ registerResources(server, backend);
60
+ registerPrompts(server, backend);
61
+ // Start Cloud agent for MCP telemetry (embedded mode only)
62
+ let cloudAgent = null;
63
+ if (mode === 'embedded' && process.env.BUNQUEUE_CLOUD_URL) {
64
+ const manager = getSharedManager();
65
+ cloudAgent = CloudAgent.create(manager);
66
+ if (cloudAgent) {
67
+ cloudAgent.setServerHandles({
68
+ getConnectionCount: () => 0,
69
+ getWsClientCount: () => 0,
70
+ getSseClientCount: () => 0,
71
+ getMcpOperations: () => {
72
+ // IMPORTANT: getSummary() MUST be called before drain() — drain empties the buffer
73
+ const summary = mcpTracker.getSummary();
74
+ const operations = mcpTracker.drain();
75
+ return { operations, summary };
76
+ },
77
+ });
78
+ }
79
+ }
80
+ // Graceful shutdown — allow backend and transport to flush before exit
81
+ const shutdown = async () => {
82
+ try {
83
+ if (cloudAgent)
84
+ await cloudAgent.stop();
85
+ handlerRegistry.shutdown();
86
+ backend.shutdown();
87
+ await server.close();
88
+ }
89
+ catch {
90
+ // Ignore cleanup errors during shutdown
91
+ }
92
+ process.exit(0);
93
+ };
94
+ process.on('SIGINT', () => void shutdown());
95
+ process.on('SIGTERM', () => void shutdown());
96
+ // Connect via stdio transport
97
+ const transport = new StdioServerTransport();
98
+ await server.connect(transport);
99
+ process.stderr.write(`bunqueue MCP server started (mode: ${mode}, version: ${VERSION})\n`);
100
+ }
101
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;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,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,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,MAAM,eAAe,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAElD,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;IACnC,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE9C,iCAAiC;IACjC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,2DAA2D;IAC3D,IAAI,UAAU,GAAsB,IAAI,CAAC;IACzC,IAAI,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,gBAAgB,CAAC;gBAC1B,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3B,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzB,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC1B,gBAAgB,EAAE,GAAG,EAAE;oBACrB,mFAAmF;oBACnF,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;oBACxC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;gBACjC,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,CAAC;YACH,IAAI,UAAU;gBAAE,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;YACxC,eAAe,CAAC,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,IAAI,cAAc,OAAO,KAAK,CAAC,CAAC;AAC7F,CAAC"}
@@ -6,7 +6,7 @@ import { z } from 'zod';
6
6
  import { withErrorHandler } from './withErrorHandler';
7
7
  export function registerWebhookTools(server, backend) {
8
8
  server.tool('bunqueue_add_webhook', 'Add a webhook to receive notifications for job events.', {
9
- url: z.url().describe('Webhook URL to receive POST requests'),
9
+ url: z.string().url().describe('Webhook URL to receive POST requests'),
10
10
  events: z
11
11
  .array(z.enum([
12
12
  'job.completed',
@@ -1 +1 @@
1
- {"version":3,"file":"webhookTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhookTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/webhookTools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunqueue",
3
- "version": "2.7.22",
3
+ "version": "2.8.1",
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",
@@ -62,13 +62,12 @@
62
62
  "prepublishOnly": "bun run build:lib"
63
63
  },
64
64
  "dependencies": {
65
- "@modelcontextprotocol/sdk": "^1.26.0",
66
65
  "croner": "10.0.1",
67
- "msgpackr": "^1.11.8",
68
- "zod": "^4.3.6"
66
+ "msgpackr": "^1.11.8"
69
67
  },
70
68
  "devDependencies": {
71
69
  "@eslint/js": "^10.0.1",
70
+ "@modelcontextprotocol/sdk": "^1.26.0",
72
71
  "@types/bun": "^1.3.9",
73
72
  "bullmq": "^5.70.1",
74
73
  "elysia": "^1.4.25",
@@ -77,10 +76,16 @@
77
76
  "ioredis": "^5.9.3",
78
77
  "prettier": "^3.8.1",
79
78
  "typescript": "^5.9.3",
80
- "typescript-eslint": "8.56.1"
79
+ "typescript-eslint": "8.56.1",
80
+ "zod": "^4.3.6"
81
81
  },
82
82
  "peerDependencies": {
83
- "bun": "^1.3.9"
83
+ "@modelcontextprotocol/sdk": "^1.26.0"
84
+ },
85
+ "peerDependenciesMeta": {
86
+ "@modelcontextprotocol/sdk": {
87
+ "optional": true
88
+ }
84
89
  },
85
90
  "keywords": [
86
91
  "bun",
@@ -134,6 +139,6 @@
134
139
  "homepage": "https://bunqueue.dev",
135
140
  "engines": {
136
141
  "node": ">=18.0.0",
137
- "bun": ">=1.0.0"
142
+ "bun": ">=1.3.9"
138
143
  }
139
144
  }