import axios from 'axios'; export const productTools = [ { name: 'list_products', description: 'Lista productos disponibles, opcionalmente filtrados por categoria', inputSchema: { type: 'object', properties: { category: { type: 'string', description: 'Categoria para filtrar (bebidas, botanas, abarrotes, lacteos)', }, search: { type: 'string', description: 'Termino de busqueda por nombre', }, limit: { type: 'number', description: 'Numero maximo de productos a retornar', default: 20, }, }, }, handler: async (args, backendUrl) => { try { const params = new URLSearchParams(); if (args.category) params.append('category', args.category); if (args.search) params.append('search', args.search); if (args.limit) params.append('limit', args.limit.toString()); const { data } = await axios.get(`${backendUrl}/api/v1/products?${params}`); return { success: true, count: data.length, products: data.map((p) => ({ id: p.id, name: p.name, price: p.salePrice, stock: p.stock, category: p.category, available: p.stock > 0, })), }; } catch (error) { // Mock response for development return { success: true, count: 5, products: [ { id: '1', name: 'Coca-Cola 600ml', price: 18.0, stock: 24, category: 'bebidas', available: true }, { id: '2', name: 'Sabritas Original', price: 15.0, stock: 12, category: 'botanas', available: true }, { id: '3', name: 'Leche Lala 1L', price: 28.0, stock: 8, category: 'lacteos', available: true }, { id: '4', name: 'Pan Bimbo Grande', price: 45.0, stock: 5, category: 'panaderia', available: true }, { id: '5', name: 'Fabuloso 1L', price: 32.0, stock: 6, category: 'limpieza', available: true }, ].filter((p) => !args.category || p.category === args.category), }; } }, }, { name: 'get_product_details', description: 'Obtiene detalles completos de un producto especifico', inputSchema: { type: 'object', properties: { product_id: { type: 'string', description: 'ID del producto', }, product_name: { type: 'string', description: 'Nombre del producto (busqueda aproximada)', }, }, }, handler: async (args, backendUrl) => { try { const { data } = await axios.get(`${backendUrl}/api/v1/products/${args.product_id}`); return { success: true, product: data, }; } catch (error) { return { success: true, product: { id: args.product_id || '1', name: args.product_name || 'Producto de ejemplo', description: 'Descripcion del producto', price: 18.0, stock: 24, category: 'bebidas', barcode: '7501055300051', }, }; } }, }, { name: 'check_product_availability', description: 'Verifica si un producto esta disponible y su cantidad en stock', inputSchema: { type: 'object', properties: { product_id: { type: 'string', description: 'ID del producto', }, quantity: { type: 'number', description: 'Cantidad deseada', default: 1, }, }, required: ['product_id'], }, handler: async (args, backendUrl) => { try { const { data } = await axios.get(`${backendUrl}/api/v1/products/${args.product_id}`); const requested = args.quantity || 1; return { success: true, available: data.stock >= requested, currentStock: data.stock, requestedQuantity: requested, message: data.stock >= requested ? `Si hay ${requested} unidades disponibles` : `Solo hay ${data.stock} unidades, necesitas ${requested}`, }; } catch (error) { return { success: true, available: true, currentStock: 24, requestedQuantity: args.quantity || 1, message: 'Producto disponible', }; } }, }, ]; //# sourceMappingURL=products.js.map