init project
This commit is contained in:
Vendored
+57
@@ -0,0 +1,57 @@
|
||||
import { z } from 'zod';
|
||||
import { config } from '../../config.js';
|
||||
import { runCommand } from '../../lib/runCommand.js';
|
||||
import { errorResult, jsonResult, toErrorMessage } from '../shared.js';
|
||||
import { requireLaravel } from './requireLaravel.js';
|
||||
export function registerLaravelQueueStatusTool(server) {
|
||||
server.registerTool('laravel_queue_status', {
|
||||
title: 'Laravel Queue Status',
|
||||
description: 'Summarize Laravel queue health via `php artisan queue:failed` (and optionally `queue:batches` when available). Read-only.',
|
||||
inputSchema: {
|
||||
includeBatches: z
|
||||
.boolean()
|
||||
.optional()
|
||||
.default(false)
|
||||
.describe('If true, also run `php artisan queue:batches` when supported.'),
|
||||
},
|
||||
}, async ({ includeBatches }) => {
|
||||
try {
|
||||
const laravel = requireLaravel();
|
||||
const failed = await runCommand('php', ['artisan', 'queue:failed', '--no-interaction'], {
|
||||
cwd: laravel.root,
|
||||
timeoutMs: config.defaultCommandTimeoutMs,
|
||||
});
|
||||
let batches = null;
|
||||
if (includeBatches) {
|
||||
batches = await runCommand('php', ['artisan', 'queue:batches', '--no-interaction'], {
|
||||
cwd: laravel.root,
|
||||
timeoutMs: config.defaultCommandTimeoutMs,
|
||||
});
|
||||
}
|
||||
const failedLines = failed.output
|
||||
.split(/\r?\n/)
|
||||
.map((line) => line.trim())
|
||||
.filter(Boolean);
|
||||
const failedCount = failedLines.filter((line) => /^\d+\s+/.test(line) || /\|/.test(line)).length;
|
||||
return jsonResult({
|
||||
failed: {
|
||||
exitCode: failed.exitCode,
|
||||
failed: failed.failed,
|
||||
approxRows: failedCount,
|
||||
output: failed.output,
|
||||
},
|
||||
batches: batches
|
||||
? {
|
||||
exitCode: batches.exitCode,
|
||||
failed: batches.failed,
|
||||
output: batches.output,
|
||||
}
|
||||
: null,
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
return errorResult(toErrorMessage(error));
|
||||
}
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=queueStatus.js.map
|
||||
Reference in New Issue
Block a user