companyCreateTool.ts•1.75 kB
import { z } from "zod";
import { companyService } from "../services/companyService.js";
import { CompanySize } from "../types/company.js";
/**
* Esquema de validación para crear empresa
*/
export const createCompanyInputSchema = {
name: z.string().min(1, "El nombre es requerido"),
email: z.string().email("Debe ser un email válido"),
phone: z.string().min(1, "El teléfono es requerido"),
address: z.string().min(1, "La dirección es requerida"),
website: z.string().url("Debe ser una URL válida"),
industry: z.string().min(1, "La industria es requerida"),
size: z.enum(["small", "medium", "large"], {
errorMap: () => ({ message: "El tamaño debe ser uno de: small, medium, large" })
})
};
/**
* Manejador para crear empresas
*/
export async function createCompanyToolHandler(args: any) {
try {
// Convertir el tamaño string al enum correspondiente
const companyData = {
...args,
size: args.size as CompanySize
};
const company = await companyService.createCompany(companyData);
return {
content: [
{
type: "text" as const,
text: `✅ Empresa creada exitosamente:
ID: ${company.id}
Nombre: ${company.name}
Email: ${company.email}
Teléfono: ${company.phone}
Dirección: ${company.address}
Sitio web: ${company.website}
Industria: ${company.industry}
Tamaño: ${company.size}
Creada: ${new Date(company.created_at).toLocaleString()}`
}
]
};
} catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Error desconocido';
return {
content: [
{
type: "text" as const,
text: `❌ Error al crear la empresa: ${errorMessage}`
}
]
};
}
}