/**
* MCP Tool: List Outputs
*/
import { StorageManager } from '../storage/manager.js';
export class ListOutputsTool {
constructor(storageManager) {
this.storageManager = storageManager;
}
/**
* List previously generated solver outputs
* @param {Object} params
* @returns {Promise<Object>}
*/
async execute(params) {
try {
const { limit = 20, sort_by = 'date' } = params;
// Validate parameters
if (limit < 1 || limit > 1000) {
return {
success: false,
error: 'limit must be between 1 and 1000',
error_type: 'VALIDATION_ERROR'
};
}
if (!['date', 'size'].includes(sort_by)) {
return {
success: false,
error: 'sort_by must be "date" or "size"',
error_type: 'VALIDATION_ERROR'
};
}
const outputs = await this.storageManager.listOutputs(limit, sort_by);
return {
success: true,
outputs: outputs,
count: outputs.length
};
} catch (error) {
return {
success: false,
error: error.message,
error_type: 'EXECUTION_ERROR'
};
}
}
}
/**
* Create the MCP tool definition
* @returns {Object}
*/
export function createListOutputsTool() {
return {
name: 'list_outputs',
description: 'List previously generated solver output files.',
inputSchema: {
type: 'object',
properties: {
limit: {
type: 'integer',
description: 'Maximum number of results to return (default: 20, max: 1000)'
},
sort_by: {
type: 'string',
enum: ['date', 'size'],
description: 'Sort by "date" (newest first) or "size" (largest first). Default: "date"'
}
}
}
};
}
export default ListOutputsTool;