/**
* Generate Implementation - Create implementation code from definition
*/
import { ToolDefinition } from '@conveniencepro/ctp-core';
import { renderTemplate } from '../utils/template-engine.js';
import { toCamelCase, toPascalCase, toKebabCase } from '../utils/string-utils.js';
import { generateOutputFields } from '../utils/ai-analyzer.js';
interface GenerateImplementationArgs {
definition: ToolDefinition;
executionMode?: 'client' | 'server' | 'both';
}
export async function generateImplementation(args: GenerateImplementationArgs) {
const { definition, executionMode = 'client' } = args;
const outputFields = generateOutputFields(definition.category);
const templateData = {
...definition,
outputFields,
camelCaseName: toCamelCase(definition.name),
pascalCaseName: toPascalCase(definition.name),
kebabCaseName: toKebabCase(definition.name),
};
const implementationCode = renderTemplate('client-implementation', templateData);
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: true,
implementation: {
code: implementationCode,
executionMode,
filename: `${templateData.kebabCaseName}.ts`,
},
}, null, 2),
},
],
};
}