bunqueue 2.5.0 → 2.5.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/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,11 +3,12 @@
|
|
|
3
3
|
* MCP Tools - Dead Letter Queue Operations
|
|
4
4
|
*/
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
6
7
|
export function registerDlqTools(server, backend) {
|
|
7
8
|
server.tool('bunqueue_get_dlq', 'Get Dead Letter Queue entries for a queue. Shows jobs that permanently failed.', {
|
|
8
9
|
queue: z.string().describe('Queue name'),
|
|
9
10
|
limit: z.number().optional().describe('Max entries to return (default: 20)'),
|
|
10
|
-
}, async ({ queue, limit }) => {
|
|
11
|
+
}, withErrorHandler(async ({ queue, limit }) => {
|
|
11
12
|
const jobs = await backend.getDlq(queue, limit ?? 20);
|
|
12
13
|
return {
|
|
13
14
|
content: [
|
|
@@ -17,41 +18,41 @@ export function registerDlqTools(server, backend) {
|
|
|
17
18
|
},
|
|
18
19
|
],
|
|
19
20
|
};
|
|
20
|
-
});
|
|
21
|
+
}));
|
|
21
22
|
server.tool('bunqueue_retry_dlq', 'Retry jobs from the Dead Letter Queue. Moves them back to waiting state.', {
|
|
22
23
|
queue: z.string().describe('Queue name'),
|
|
23
24
|
jobId: z.string().optional().describe('Specific job ID to retry (omit to retry all)'),
|
|
24
|
-
}, async ({ queue, jobId }) => {
|
|
25
|
+
}, withErrorHandler(async ({ queue, jobId }) => {
|
|
25
26
|
const retried = await backend.retryDlq(queue, jobId);
|
|
26
27
|
return {
|
|
27
28
|
content: [
|
|
28
29
|
{ type: 'text', text: JSON.stringify({ success: true, queue, retried }) },
|
|
29
30
|
],
|
|
30
31
|
};
|
|
31
|
-
});
|
|
32
|
+
}));
|
|
32
33
|
server.tool('bunqueue_purge_dlq', 'Remove all entries from the Dead Letter Queue permanently.', {
|
|
33
34
|
queue: z.string().describe('Queue name'),
|
|
34
|
-
}, async ({ queue }) => {
|
|
35
|
+
}, withErrorHandler(async ({ queue }) => {
|
|
35
36
|
const purged = await backend.purgeDlq(queue);
|
|
36
37
|
return {
|
|
37
38
|
content: [
|
|
38
39
|
{ type: 'text', text: JSON.stringify({ success: true, queue, purged }) },
|
|
39
40
|
],
|
|
40
41
|
};
|
|
41
|
-
});
|
|
42
|
+
}));
|
|
42
43
|
server.tool('bunqueue_retry_completed', 'Retry completed jobs - move them back to waiting state for reprocessing.', {
|
|
43
44
|
queue: z.string().describe('Queue name'),
|
|
44
45
|
jobId: z
|
|
45
46
|
.string()
|
|
46
47
|
.optional()
|
|
47
48
|
.describe('Specific job ID to retry (omit to retry all completed)'),
|
|
48
|
-
}, async ({ queue, jobId }) => {
|
|
49
|
+
}, withErrorHandler(async ({ queue, jobId }) => {
|
|
49
50
|
const retried = await backend.retryCompleted(queue, jobId);
|
|
50
51
|
return {
|
|
51
52
|
content: [
|
|
52
53
|
{ type: 'text', text: JSON.stringify({ success: true, queue, retried }) },
|
|
53
54
|
],
|
|
54
55
|
};
|
|
55
|
-
});
|
|
56
|
+
}));
|
|
56
57
|
}
|
|
57
58
|
//# sourceMappingURL=dlqTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dlqTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/dlqTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"dlqTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/dlqTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAmB;IACrE,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gFAAgF,EAChF;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KAC7E,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACnE;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,0EAA0E,EAC1E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KACtF,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;aACnF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,4DAA4D,EAC5D;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;KACzC,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;aAClF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,0EAA0E,EAC1E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxC,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wDAAwD,CAAC;KACtE,EACD,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;aACnF;SACF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobMgmtTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/jobMgmtTools.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":"jobMgmtTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/jobMgmtTools.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,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QAwF1E"}
|
|
@@ -4,57 +4,59 @@
|
|
|
4
4
|
* Update data, change priority, delay, discard
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
7
8
|
export function registerJobMgmtTools(server, backend) {
|
|
8
9
|
server.tool('bunqueue_update_job_data', 'Update the payload data of a job.', {
|
|
9
10
|
jobId: z.string().describe('Job ID'),
|
|
10
11
|
data: z.record(z.string(), z.unknown()).describe('New job payload data'),
|
|
11
|
-
}, async ({ jobId, data }) => {
|
|
12
|
+
}, withErrorHandler(async ({ jobId, data }) => {
|
|
12
13
|
const success = await backend.updateJobData(jobId, data);
|
|
13
14
|
return { content: [{ type: 'text', text: JSON.stringify({ success, jobId }) }] };
|
|
14
|
-
});
|
|
15
|
+
}));
|
|
15
16
|
server.tool('bunqueue_change_job_priority', 'Change the priority of a waiting job. Higher priority = processed first.', {
|
|
16
17
|
jobId: z.string().describe('Job ID'),
|
|
17
18
|
priority: z.number().describe('New priority value'),
|
|
18
|
-
}, async ({ jobId, priority }) => {
|
|
19
|
+
}, withErrorHandler(async ({ jobId, priority }) => {
|
|
19
20
|
const success = await backend.changeJobPriority(jobId, priority);
|
|
20
21
|
return {
|
|
21
22
|
content: [{ type: 'text', text: JSON.stringify({ success, jobId, priority }) }],
|
|
22
23
|
};
|
|
23
|
-
});
|
|
24
|
+
}));
|
|
24
25
|
server.tool('bunqueue_move_to_delayed', 'Move a job to delayed state with a specific delay in milliseconds.', {
|
|
25
26
|
jobId: z.string().describe('Job ID'),
|
|
26
27
|
delay: z.number().min(0).describe('Delay in milliseconds'),
|
|
27
|
-
}, async ({ jobId, delay }) => {
|
|
28
|
+
}, withErrorHandler(async ({ jobId, delay }) => {
|
|
28
29
|
const success = await backend.moveToDelayed(jobId, delay);
|
|
29
30
|
return {
|
|
30
31
|
content: [{ type: 'text', text: JSON.stringify({ success, jobId, delay }) }],
|
|
31
32
|
};
|
|
32
|
-
});
|
|
33
|
+
}));
|
|
33
34
|
server.tool('bunqueue_discard_job', 'Discard a job permanently, removing it from the queue.', {
|
|
34
35
|
jobId: z.string().describe('Job ID to discard'),
|
|
35
|
-
}, async ({ jobId }) => {
|
|
36
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
36
37
|
const success = await backend.discardJob(jobId);
|
|
37
38
|
return { content: [{ type: 'text', text: JSON.stringify({ success, jobId }) }] };
|
|
38
|
-
});
|
|
39
|
+
}));
|
|
39
40
|
server.tool('bunqueue_get_progress', 'Get the progress and progress message of a job.', {
|
|
40
41
|
jobId: z.string().describe('Job ID'),
|
|
41
|
-
}, async ({ jobId }) => {
|
|
42
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
42
43
|
const result = await backend.getProgress(jobId);
|
|
43
44
|
if (!result) {
|
|
44
45
|
return {
|
|
45
46
|
content: [{ type: 'text', text: JSON.stringify({ error: 'Job not found' }) }],
|
|
47
|
+
isError: true,
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
50
|
return { content: [{ type: 'text', text: JSON.stringify({ jobId, ...result }) }] };
|
|
49
|
-
});
|
|
51
|
+
}));
|
|
50
52
|
server.tool('bunqueue_change_delay', 'Change the delay of a delayed job.', {
|
|
51
53
|
jobId: z.string().describe('Job ID'),
|
|
52
54
|
delay: z.number().min(0).describe('New delay in milliseconds'),
|
|
53
|
-
}, async ({ jobId, delay }) => {
|
|
55
|
+
}, withErrorHandler(async ({ jobId, delay }) => {
|
|
54
56
|
const success = await backend.changeDelay(jobId, delay);
|
|
55
57
|
return {
|
|
56
58
|
content: [{ type: 'text', text: JSON.stringify({ success, jobId, delay }) }],
|
|
57
59
|
};
|
|
58
|
-
});
|
|
60
|
+
}));
|
|
59
61
|
}
|
|
60
62
|
//# sourceMappingURL=jobMgmtTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobMgmtTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/jobMgmtTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"jobMgmtTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/jobMgmtTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/jobTools.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":"jobTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/jobTools.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,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QA6KtE"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Add, get, cancel, promote jobs
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
+
import { withErrorHandler } from './withErrorHandler';
|
|
7
8
|
export function registerJobTools(server, backend) {
|
|
8
9
|
server.tool('bunqueue_add_job', 'Add a job to a queue. Returns the job ID.', {
|
|
9
10
|
queue: z.string().describe('Queue name'),
|
|
@@ -12,10 +13,10 @@ export function registerJobTools(server, backend) {
|
|
|
12
13
|
priority: z.number().optional().describe('Priority (higher = processed first)'),
|
|
13
14
|
delay: z.number().optional().describe('Delay in milliseconds before processing'),
|
|
14
15
|
attempts: z.number().optional().describe('Max retry attempts (default: 3)'),
|
|
15
|
-
}, async ({ queue, name, data, priority, delay, attempts }) => {
|
|
16
|
+
}, withErrorHandler(async ({ queue, name, data, priority, delay, attempts }) => {
|
|
16
17
|
const result = await backend.addJob(queue, name, data, { priority, delay, attempts });
|
|
17
18
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
18
|
-
});
|
|
19
|
+
}));
|
|
19
20
|
server.tool('bunqueue_add_jobs_bulk', 'Add multiple jobs to a queue in a single operation.', {
|
|
20
21
|
queue: z.string().describe('Queue name'),
|
|
21
22
|
jobs: z
|
|
@@ -26,60 +27,61 @@ export function registerJobTools(server, backend) {
|
|
|
26
27
|
delay: z.number().optional(),
|
|
27
28
|
}))
|
|
28
29
|
.describe('Array of jobs to add'),
|
|
29
|
-
}, async ({ queue, jobs }) => {
|
|
30
|
+
}, withErrorHandler(async ({ queue, jobs }) => {
|
|
30
31
|
const result = await backend.addJobsBulk(queue, jobs);
|
|
31
32
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
32
|
-
});
|
|
33
|
+
}));
|
|
33
34
|
server.tool('bunqueue_get_job', 'Get a job by ID. Returns job details including state, progress, and data.', {
|
|
34
35
|
jobId: z.string().describe('Job ID'),
|
|
35
|
-
}, async ({ jobId }) => {
|
|
36
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
36
37
|
const job = await backend.getJob(jobId);
|
|
37
38
|
if (!job) {
|
|
38
39
|
return {
|
|
39
40
|
content: [{ type: 'text', text: JSON.stringify({ error: 'Job not found' }) }],
|
|
41
|
+
isError: true,
|
|
40
42
|
};
|
|
41
43
|
}
|
|
42
44
|
return { content: [{ type: 'text', text: JSON.stringify(job, null, 2) }] };
|
|
43
|
-
});
|
|
45
|
+
}));
|
|
44
46
|
server.tool('bunqueue_get_job_state', 'Get the current state of a job (waiting, delayed, active, completed, failed).', {
|
|
45
47
|
jobId: z.string().describe('Job ID'),
|
|
46
|
-
}, async ({ jobId }) => {
|
|
48
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
47
49
|
const state = await backend.getJobState(jobId);
|
|
48
50
|
return { content: [{ type: 'text', text: JSON.stringify({ jobId, state }) }] };
|
|
49
|
-
});
|
|
51
|
+
}));
|
|
50
52
|
server.tool('bunqueue_get_job_result', 'Get the result of a completed job.', {
|
|
51
53
|
jobId: z.string().describe('Job ID'),
|
|
52
|
-
}, async ({ jobId }) => {
|
|
54
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
53
55
|
const result = await backend.getJobResult(jobId);
|
|
54
56
|
return {
|
|
55
57
|
content: [{ type: 'text', text: JSON.stringify({ jobId, result }, null, 2) }],
|
|
56
58
|
};
|
|
57
|
-
});
|
|
59
|
+
}));
|
|
58
60
|
server.tool('bunqueue_cancel_job', 'Cancel a waiting or delayed job.', {
|
|
59
61
|
jobId: z.string().describe('Job ID to cancel'),
|
|
60
|
-
}, async ({ jobId }) => {
|
|
62
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
61
63
|
const success = await backend.cancelJob(jobId);
|
|
62
64
|
return { content: [{ type: 'text', text: JSON.stringify({ success, jobId }) }] };
|
|
63
|
-
});
|
|
65
|
+
}));
|
|
64
66
|
server.tool('bunqueue_promote_job', 'Promote a delayed job to waiting state for immediate processing.', {
|
|
65
67
|
jobId: z.string().describe('Job ID to promote'),
|
|
66
|
-
}, async ({ jobId }) => {
|
|
68
|
+
}, withErrorHandler(async ({ jobId }) => {
|
|
67
69
|
const success = await backend.promoteJob(jobId);
|
|
68
70
|
return { content: [{ type: 'text', text: JSON.stringify({ success, jobId }) }] };
|
|
69
|
-
});
|
|
71
|
+
}));
|
|
70
72
|
server.tool('bunqueue_update_progress', 'Update job progress (0-100).', {
|
|
71
73
|
jobId: z.string().describe('Job ID'),
|
|
72
74
|
progress: z.number().min(0).max(100).describe('Progress value (0-100)'),
|
|
73
75
|
message: z.string().optional().describe('Optional progress message'),
|
|
74
|
-
}, async ({ jobId, progress, message }) => {
|
|
76
|
+
}, withErrorHandler(async ({ jobId, progress, message }) => {
|
|
75
77
|
const success = await backend.updateProgress(jobId, progress, message);
|
|
76
78
|
return {
|
|
77
79
|
content: [{ type: 'text', text: JSON.stringify({ success, jobId, progress }) }],
|
|
78
80
|
};
|
|
79
|
-
});
|
|
81
|
+
}));
|
|
80
82
|
server.tool('bunqueue_get_children_values', 'Get return values from all child jobs of a parent job. Used with FlowProducer workflows.', {
|
|
81
83
|
parentJobId: z.string().describe('Parent job ID'),
|
|
82
|
-
}, async ({ parentJobId }) => {
|
|
84
|
+
}, withErrorHandler(async ({ parentJobId }) => {
|
|
83
85
|
const values = await backend.getChildrenValues(parentJobId);
|
|
84
86
|
return {
|
|
85
87
|
content: [
|
|
@@ -89,24 +91,25 @@ export function registerJobTools(server, backend) {
|
|
|
89
91
|
},
|
|
90
92
|
],
|
|
91
93
|
};
|
|
92
|
-
});
|
|
94
|
+
}));
|
|
93
95
|
server.tool('bunqueue_get_job_by_custom_id', 'Look up a job by its custom ID (set via jobId option during creation).', {
|
|
94
96
|
customId: z.string().describe('Custom job ID'),
|
|
95
|
-
}, async ({ customId }) => {
|
|
97
|
+
}, withErrorHandler(async ({ customId }) => {
|
|
96
98
|
const job = await backend.getJobByCustomId(customId);
|
|
97
99
|
if (!job) {
|
|
98
100
|
return {
|
|
99
101
|
content: [{ type: 'text', text: JSON.stringify({ error: 'Job not found' }) }],
|
|
102
|
+
isError: true,
|
|
100
103
|
};
|
|
101
104
|
}
|
|
102
105
|
return { content: [{ type: 'text', text: JSON.stringify(job, null, 2) }] };
|
|
103
|
-
});
|
|
106
|
+
}));
|
|
104
107
|
server.tool('bunqueue_wait_for_job', 'Wait for a job to complete within a timeout. Returns true if completed, false if timed out.', {
|
|
105
108
|
jobId: z.string().describe('Job ID to wait for'),
|
|
106
109
|
timeoutMs: z.number().min(100).max(30000).describe('Maximum wait time in milliseconds'),
|
|
107
|
-
}, async ({ jobId, timeoutMs }) => {
|
|
110
|
+
}, withErrorHandler(async ({ jobId, timeoutMs }) => {
|
|
108
111
|
const completed = await backend.waitForJobCompletion(jobId, timeoutMs);
|
|
109
112
|
return { content: [{ type: 'text', text: JSON.stringify({ jobId, completed }) }] };
|
|
110
|
-
});
|
|
113
|
+
}));
|
|
111
114
|
}
|
|
112
115
|
//# sourceMappingURL=jobTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/jobTools.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"jobTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/jobTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitoringTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/monitoringTools.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":"monitoringTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/monitoringTools.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,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,QAsJ7E"}
|
|
@@ -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
|