Overview
The chat tools module provides a set of AI-powered functions that enable the GIMA chatbot to:- Query backend APIs for assets, maintenance records, inventory, and reports
- Generate maintenance checklists using AI
- Create professional activity summaries
- Create work orders through conversational interface
app/lib/ai/tools/chat-tools.ts and use the Vercel AI SDK’s tool() function.
Constants
MAX_ITEMS_PER_RESPONSE
llama-3.1-8b-instant (6000 TPM).
MAX_DESCRIPTION_LENGTH
Asset Catalog Tools
consultar_activos
Queries and searches registered assets by name, code, status, or location. Description: “Consulta, lista o busca activos/equipos registrados por nombre, código, estado o ubicación.”Parameters
Asset status:
operativo, mantenimiento, fuera_servicio, bajaSearch term for asset name or code
Asset type in free text (e.g., “bomba”, “compresor”, “mobiliario”)
Page number for pagination
Returns
Example
Maintenance Tools
consultar_mantenimientos
Queries maintenance orders by status, type, and priority. Description: “Consulta órdenes de mantenimiento. Úsala cuando pregunten por mantenimientos pendientes, en progreso, historial o por tipo.”Parameters
Order status:
pendiente, en_progreso, completado, canceladoMaintenance type:
preventivo, correctivo, predictivoPriority level:
baja, media, altaPage number for pagination
Returns
consultar_calendario
Queries scheduled maintenance calendar entries. Description: “Consulta el calendario de mantenimientos programados, próximos o agenda.”Parameters
Page number for pagination
Returns
consultar_reportes
Queries maintenance reports, failures, incidents, or registered problems. Description: “Consulta reportes de mantenimiento, fallos, incidencias o problemas registrados.”Parameters
Report priority:
baja, media, altaReport status:
abierto, asignado, en_progreso, resuelto, cerradoPage number for pagination
Returns
Inventory Tools
consultar_inventario
Searches spare parts in inventory by name or available stock. Description: “Busca repuestos en el inventario por nombre o stock disponible. Para bajo stock usa bajo_stock:true.”Parameters
Search term for spare part name
Filter for low stock items
Page number for pagination
Returns
consultar_proveedores
Lists registered suppliers and their supply contacts. Description: “Lista los proveedores registrados y sus contactos de suministro.”Parameters
No parameters required.Returns
AI Generation Tools
generar_checklist
Generates an AI-powered maintenance checklist for an asset and task type. Description: “Genera un checklist de mantenimiento con IA para un activo y tipo de tarea.”Parameters
Asset type. Accepts canonical values or aliases:Canonical values:
unidad-hvac, caldera, bomba, compresor, generador, panel-electrico, transportador, grua, montacargas, otroAliases: hvac, ac, electrico, split, boiler, pump, etc.Defaults to otro if not provided or invalid.Maintenance task type:
preventivo, correctivo, predictivoCustom instructions for checklist generation
Returns
Asset Type Normalization
The tool automatically normalizes asset type aliases to canonical values:chat-tools.ts:83-120 for the complete alias mapping.
Example
generar_resumen_actividad
Generates a professional AI-powered summary of activity notes. Description: “Genera un resumen profesional de notas de actividad con IA. Úsala para resumir actividades técnicas o crear informes de trabajo.”Parameters
Activity notes to summarize. Minimum 1 character (normalized internally).Short inputs (< 10 chars) are automatically prefixed with “Actividad reportada:” to meet validation requirements.
Asset type (same as
generar_checklist). Defaults to otro.Task type:
preventivo, correctivo, predictivoSummary style:
ejecutivo, tecnico, narrativoAccepts English aliases: formal → ejecutivo, technical → tecnico, brief → narrativoDetail level:
alto, medio, bajoAccepts English aliases: high → alto, medium → medio, low → bajoReturns
Example
Action Tools
crear_orden_trabajo
Creates a work order in GIMA (client-side tool). Description: “Crea una orden de trabajo en GIMA. SOLO cuando el usuario lo pida explícitamente.”This is a client-side tool without an
execute function. The client renders an OrderApprovalCard component to confirm the order before submission.Parameters
Equipment identifier or description
Work order description (max 500 characters, auto-truncated)
Priority level:
baja, media, altaLocation name in free text format (NOT a numeric ID)
Error Handling
All tools use thesafeExecute() wrapper that provides consistent error handling:
Error Response Format
Error Types
User authentication failed. Suggests reloading and logging in again.
Backend service took too long to respond.
Backend API returned an error.
Helper Functions
truncate()
Truncates strings to the specified limit (default 120 characters) to reduce token usage.normalizeAssetType()
Normalizes asset type variations to canonical values.chat-tools.ts:122-143.
normalizePaginatedResponse()
Normalizes Laravel paginated responses to a consistent format.- API Resource Collection:
{ data[], links, meta } - Simple Paginator:
{ data[], current_page, total, ... } - Internal wrapper:
{ items[], pagination }
safeEnum()
Creates an optional Zod enum that silences invalid values instead of throwing errors.Tool Usage Patterns
Single Call Rule
All tool descriptions emphasize: “Una sola llamada es suficiente; NO repitas esta tool en el mismo turno.” This prevents the AI from making redundant calls in multi-step scenarios.Pagination Handling
Tools return anote field when results are truncated:
Token Budget Management
- Item limiting: Max 15 items per response (
MAX_ITEMS_PER_RESPONSE) - Description truncation: Max 120 characters (
MAX_DESCRIPTION_LENGTH) - Field filtering: Only essential fields are returned