bunqueue 2.6.2 → 2.6.4

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 (34) hide show
  1. package/dist/application/queueManager.d.ts +6 -0
  2. package/dist/application/queueManager.d.ts.map +1 -1
  3. package/dist/application/queueManager.js +45 -10
  4. package/dist/application/queueManager.js.map +1 -1
  5. package/dist/client/sandboxed/queueOps.d.ts +1 -0
  6. package/dist/client/sandboxed/queueOps.d.ts.map +1 -1
  7. package/dist/client/sandboxed/queueOps.js +6 -0
  8. package/dist/client/sandboxed/queueOps.js.map +1 -1
  9. package/dist/client/sandboxed/types.d.ts +3 -1
  10. package/dist/client/sandboxed/types.d.ts.map +1 -1
  11. package/dist/client/sandboxed/worker.d.ts +15 -1
  12. package/dist/client/sandboxed/worker.d.ts.map +1 -1
  13. package/dist/client/sandboxed/worker.js +32 -4
  14. package/dist/client/sandboxed/worker.js.map +1 -1
  15. package/dist/client/sandboxed/wrapper.d.ts.map +1 -1
  16. package/dist/client/sandboxed/wrapper.js +9 -1
  17. package/dist/client/sandboxed/wrapper.js.map +1 -1
  18. package/dist/client/tcp/client.d.ts +30 -0
  19. package/dist/client/tcp/client.d.ts.map +1 -1
  20. package/dist/client/tcp/client.js +8 -0
  21. package/dist/client/tcp/client.js.map +1 -1
  22. package/dist/client/tcp/reconnect.d.ts +10 -0
  23. package/dist/client/tcp/reconnect.d.ts.map +1 -1
  24. package/dist/client/tcp/reconnect.js +8 -0
  25. package/dist/client/tcp/reconnect.js.map +1 -1
  26. package/package.json +1 -1
  27. package/dist/mcp/mcpHandlers.d.ts +0 -129
  28. package/dist/mcp/mcpHandlers.d.ts.map +0 -1
  29. package/dist/mcp/mcpHandlers.js +0 -204
  30. package/dist/mcp/mcpHandlers.js.map +0 -1
  31. package/dist/mcp/mcpTools.d.ts +0 -15
  32. package/dist/mcp/mcpTools.d.ts.map +0 -1
  33. package/dist/mcp/mcpTools.js +0 -277
  34. package/dist/mcp/mcpTools.js.map +0 -1
@@ -1,277 +0,0 @@
1
- /**
2
- * MCP Tool Definitions
3
- * Tool schemas for the bunqueue MCP server
4
- */
5
- export const TOOLS = [
6
- // Job Operations
7
- {
8
- name: 'bunqueue_add_job',
9
- description: 'Add a job to a queue. Returns the job ID.',
10
- inputSchema: {
11
- type: 'object',
12
- properties: {
13
- queue: { type: 'string', description: 'Queue name' },
14
- name: { type: 'string', description: 'Job name/type' },
15
- data: { type: 'object', description: 'Job payload data' },
16
- priority: { type: 'number', description: 'Priority (higher = processed first)' },
17
- delay: { type: 'number', description: 'Delay in milliseconds before processing' },
18
- attempts: { type: 'number', description: 'Max retry attempts (default: 3)' },
19
- },
20
- required: ['queue', 'name', 'data'],
21
- },
22
- },
23
- {
24
- name: 'bunqueue_add_jobs_bulk',
25
- description: 'Add multiple jobs to a queue in a single operation.',
26
- inputSchema: {
27
- type: 'object',
28
- properties: {
29
- queue: { type: 'string', description: 'Queue name' },
30
- jobs: {
31
- type: 'array',
32
- description: 'Array of jobs to add',
33
- items: {
34
- type: 'object',
35
- properties: {
36
- name: { type: 'string' },
37
- data: { type: 'object' },
38
- priority: { type: 'number' },
39
- delay: { type: 'number' },
40
- },
41
- },
42
- },
43
- },
44
- required: ['queue', 'jobs'],
45
- },
46
- },
47
- {
48
- name: 'bunqueue_get_job',
49
- description: 'Get a job by ID.',
50
- inputSchema: {
51
- type: 'object',
52
- properties: {
53
- jobId: { type: 'string', description: 'Job ID' },
54
- },
55
- required: ['jobId'],
56
- },
57
- },
58
- {
59
- name: 'bunqueue_cancel_job',
60
- description: 'Cancel a waiting or delayed job.',
61
- inputSchema: {
62
- type: 'object',
63
- properties: {
64
- jobId: { type: 'string', description: 'Job ID to cancel' },
65
- },
66
- required: ['jobId'],
67
- },
68
- },
69
- {
70
- name: 'bunqueue_update_progress',
71
- description: 'Update job progress (0-100).',
72
- inputSchema: {
73
- type: 'object',
74
- properties: {
75
- jobId: { type: 'string', description: 'Job ID' },
76
- progress: { type: 'number', description: 'Progress value (0-100)' },
77
- message: { type: 'string', description: 'Optional progress message' },
78
- },
79
- required: ['jobId', 'progress'],
80
- },
81
- },
82
- // Queue Control
83
- {
84
- name: 'bunqueue_pause_queue',
85
- description: 'Pause job processing on a queue.',
86
- inputSchema: {
87
- type: 'object',
88
- properties: {
89
- queue: { type: 'string', description: 'Queue name' },
90
- },
91
- required: ['queue'],
92
- },
93
- },
94
- {
95
- name: 'bunqueue_resume_queue',
96
- description: 'Resume job processing on a paused queue.',
97
- inputSchema: {
98
- type: 'object',
99
- properties: {
100
- queue: { type: 'string', description: 'Queue name' },
101
- },
102
- required: ['queue'],
103
- },
104
- },
105
- {
106
- name: 'bunqueue_drain_queue',
107
- description: 'Remove all waiting jobs from a queue.',
108
- inputSchema: {
109
- type: 'object',
110
- properties: {
111
- queue: { type: 'string', description: 'Queue name' },
112
- },
113
- required: ['queue'],
114
- },
115
- },
116
- {
117
- name: 'bunqueue_obliterate_queue',
118
- description: 'Remove ALL data from a queue (waiting, active, completed, failed).',
119
- inputSchema: {
120
- type: 'object',
121
- properties: {
122
- queue: { type: 'string', description: 'Queue name' },
123
- },
124
- required: ['queue'],
125
- },
126
- },
127
- {
128
- name: 'bunqueue_list_queues',
129
- description: 'List all queues.',
130
- inputSchema: {
131
- type: 'object',
132
- properties: {},
133
- },
134
- },
135
- {
136
- name: 'bunqueue_count_jobs',
137
- description: 'Count jobs in a queue.',
138
- inputSchema: {
139
- type: 'object',
140
- properties: {
141
- queue: { type: 'string', description: 'Queue name' },
142
- },
143
- required: ['queue'],
144
- },
145
- },
146
- // Rate Limiting
147
- {
148
- name: 'bunqueue_set_rate_limit',
149
- description: 'Set rate limit for a queue (jobs per second).',
150
- inputSchema: {
151
- type: 'object',
152
- properties: {
153
- queue: { type: 'string', description: 'Queue name' },
154
- limit: { type: 'number', description: 'Max jobs per second' },
155
- },
156
- required: ['queue', 'limit'],
157
- },
158
- },
159
- {
160
- name: 'bunqueue_set_concurrency',
161
- description: 'Set concurrency limit for a queue.',
162
- inputSchema: {
163
- type: 'object',
164
- properties: {
165
- queue: { type: 'string', description: 'Queue name' },
166
- limit: { type: 'number', description: 'Max concurrent jobs' },
167
- },
168
- required: ['queue', 'limit'],
169
- },
170
- },
171
- // DLQ Operations
172
- {
173
- name: 'bunqueue_get_dlq',
174
- description: 'Get Dead Letter Queue entries for a queue.',
175
- inputSchema: {
176
- type: 'object',
177
- properties: {
178
- queue: { type: 'string', description: 'Queue name' },
179
- limit: { type: 'number', description: 'Max entries to return (default: 20)' },
180
- },
181
- required: ['queue'],
182
- },
183
- },
184
- {
185
- name: 'bunqueue_retry_dlq',
186
- description: 'Retry jobs from the Dead Letter Queue.',
187
- inputSchema: {
188
- type: 'object',
189
- properties: {
190
- queue: { type: 'string', description: 'Queue name' },
191
- jobId: { type: 'string', description: 'Specific job ID to retry (optional)' },
192
- },
193
- required: ['queue'],
194
- },
195
- },
196
- {
197
- name: 'bunqueue_purge_dlq',
198
- description: 'Remove all entries from the Dead Letter Queue.',
199
- inputSchema: {
200
- type: 'object',
201
- properties: {
202
- queue: { type: 'string', description: 'Queue name' },
203
- },
204
- required: ['queue'],
205
- },
206
- },
207
- // Cron Jobs
208
- {
209
- name: 'bunqueue_add_cron',
210
- description: 'Add a recurring cron job.',
211
- inputSchema: {
212
- type: 'object',
213
- properties: {
214
- name: { type: 'string', description: 'Unique cron job name' },
215
- queue: { type: 'string', description: 'Target queue name' },
216
- data: { type: 'object', description: 'Job payload data' },
217
- schedule: { type: 'string', description: 'Cron pattern (e.g., "0 * * * *" for hourly)' },
218
- repeatEvery: { type: 'number', description: 'Alternative: repeat every N milliseconds' },
219
- priority: { type: 'number', description: 'Job priority' },
220
- },
221
- required: ['name', 'queue', 'data'],
222
- },
223
- },
224
- {
225
- name: 'bunqueue_list_crons',
226
- description: 'List all scheduled cron jobs.',
227
- inputSchema: {
228
- type: 'object',
229
- properties: {},
230
- },
231
- },
232
- {
233
- name: 'bunqueue_delete_cron',
234
- description: 'Delete a cron job by name.',
235
- inputSchema: {
236
- type: 'object',
237
- properties: {
238
- name: { type: 'string', description: 'Cron job name to delete' },
239
- },
240
- required: ['name'],
241
- },
242
- },
243
- // Stats & Logs
244
- {
245
- name: 'bunqueue_get_stats',
246
- description: 'Get overall queue statistics.',
247
- inputSchema: {
248
- type: 'object',
249
- properties: {},
250
- },
251
- },
252
- {
253
- name: 'bunqueue_get_job_logs',
254
- description: 'Get logs for a specific job.',
255
- inputSchema: {
256
- type: 'object',
257
- properties: {
258
- jobId: { type: 'string', description: 'Job ID' },
259
- },
260
- required: ['jobId'],
261
- },
262
- },
263
- {
264
- name: 'bunqueue_add_job_log',
265
- description: 'Add a log entry to a job.',
266
- inputSchema: {
267
- type: 'object',
268
- properties: {
269
- jobId: { type: 'string', description: 'Job ID' },
270
- message: { type: 'string', description: 'Log message' },
271
- level: { type: 'string', enum: ['info', 'warn', 'error'], description: 'Log level' },
272
- },
273
- required: ['jobId', 'message'],
274
- },
275
- },
276
- ];
277
- //# sourceMappingURL=mcpTools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcpTools.js","sourceRoot":"","sources":["../../src/mcp/mcpTools.ts"],"names":[],"mappings":"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"}