mycoder
Version:
A command line tool using agent that can do arbitrary tasks, including coding tasks
61 lines • 2.46 kB
JavaScript
import { getTools } from 'mycoder-agent';
function formatSchema(schema) {
let output = '';
if (schema.properties) {
for (const [paramName, param] of Object.entries(schema.properties)) {
const required = schema.required?.includes(paramName)
? ''
: ' (optional)';
const description = param.description || '';
output += `${paramName}${required}: ${description}\n`;
if (param.type) {
output += ` Type: ${param.type}\n`;
}
if (param.maxLength) {
output += ` Max Length: ${param.maxLength}\n`;
}
if (param.additionalProperties) {
output += ` Additional Properties: ${JSON.stringify(param.additionalProperties)}\n`;
}
}
}
return output;
}
export const command = {
command: 'tools',
describe: 'List all available tools and their capabilities',
handler: () => {
try {
const tools = getTools();
console.log('Available Tools:\n');
for (const tool of tools) {
// Tool name and description
console.log(`${tool.name}`);
console.log('-'.repeat(tool.name.length));
console.log(`Description: ${tool.description}\n`);
// Parameters section
console.log('Parameters:');
// Use parametersJsonSchema if available, otherwise convert from ZodSchema
const parametersSchema = tool.parametersJsonSchema || tool.parameters;
console.log(formatSchema(parametersSchema));
// Returns section
console.log('Returns:');
if (tool.returns) {
// Use returnsJsonSchema if available, otherwise convert from ZodSchema
const returnsSchema = tool.returnsJsonSchema || tool.returns;
console.log(formatSchema(returnsSchema));
}
else {
console.log(' Type: any');
console.log(' Description: Tool execution result or error\n');
}
console.log(); // Add spacing between tools
}
}
catch (error) {
console.error('Error listing tools:', error);
process.exit(1);
}
},
};
//# sourceMappingURL=tools.js.map