@ssolis-ti/mcp-compra-agil 1.0.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +111 -23
  2. package/dist/api/compra-agil-client.d.ts +37 -2
  3. package/dist/api/compra-agil-client.d.ts.map +1 -1
  4. package/dist/api/compra-agil-client.js +76 -5
  5. package/dist/api/compra-agil-client.js.map +1 -1
  6. package/dist/index.js +32 -8
  7. package/dist/index.js.map +1 -1
  8. package/dist/reports/components.d.ts +59 -0
  9. package/dist/reports/components.d.ts.map +1 -0
  10. package/dist/reports/components.js +125 -0
  11. package/dist/reports/components.js.map +1 -0
  12. package/dist/reports/export.d.ts +27 -0
  13. package/dist/reports/export.d.ts.map +1 -0
  14. package/dist/reports/export.js +47 -0
  15. package/dist/reports/export.js.map +1 -0
  16. package/dist/reports/format.d.ts +24 -0
  17. package/dist/reports/format.d.ts.map +1 -0
  18. package/dist/reports/format.js +74 -0
  19. package/dist/reports/format.js.map +1 -0
  20. package/dist/reports/render.d.ts +18 -0
  21. package/dist/reports/render.d.ts.map +1 -0
  22. package/dist/reports/render.js +30 -0
  23. package/dist/reports/render.js.map +1 -0
  24. package/dist/reports/templates/radar-oportunidades.d.ts +41 -0
  25. package/dist/reports/templates/radar-oportunidades.d.ts.map +1 -0
  26. package/dist/reports/templates/radar-oportunidades.js +170 -0
  27. package/dist/reports/templates/radar-oportunidades.js.map +1 -0
  28. package/dist/reports/theme.d.ts +83 -0
  29. package/dist/reports/theme.d.ts.map +1 -0
  30. package/dist/reports/theme.js +284 -0
  31. package/dist/reports/theme.js.map +1 -0
  32. package/dist/resources/compras-template.d.ts.map +1 -1
  33. package/dist/resources/compras-template.js +2 -1
  34. package/dist/resources/compras-template.js.map +1 -1
  35. package/dist/resources/documentacion.d.ts.map +1 -1
  36. package/dist/resources/documentacion.js +5 -36
  37. package/dist/resources/documentacion.js.map +1 -1
  38. package/dist/resources/estados.d.ts.map +1 -1
  39. package/dist/resources/estados.js +24 -10
  40. package/dist/resources/estados.js.map +1 -1
  41. package/dist/services/monitor.js +38 -3
  42. package/dist/services/monitor.js.map +1 -1
  43. package/dist/tools/analizar-precios-mercado.d.ts +21 -0
  44. package/dist/tools/analizar-precios-mercado.d.ts.map +1 -0
  45. package/dist/tools/analizar-precios-mercado.js +217 -0
  46. package/dist/tools/analizar-precios-mercado.js.map +1 -0
  47. package/dist/tools/auditar-desiertas.d.ts.map +1 -1
  48. package/dist/tools/auditar-desiertas.js +66 -48
  49. package/dist/tools/auditar-desiertas.js.map +1 -1
  50. package/dist/tools/buscar-compras.d.ts.map +1 -1
  51. package/dist/tools/buscar-compras.js +2 -1
  52. package/dist/tools/buscar-compras.js.map +1 -1
  53. package/dist/tools/detalle-compra.d.ts.map +1 -1
  54. package/dist/tools/detalle-compra.js +6 -5
  55. package/dist/tools/detalle-compra.js.map +1 -1
  56. package/dist/tools/detalle-oc.js +6 -6
  57. package/dist/tools/detalle-oc.js.map +1 -1
  58. package/dist/tools/documentos.d.ts.map +1 -1
  59. package/dist/tools/documentos.js +75 -81
  60. package/dist/tools/documentos.js.map +1 -1
  61. package/dist/tools/estadisticas-uso.d.ts.map +1 -1
  62. package/dist/tools/estadisticas-uso.js +12 -2
  63. package/dist/tools/estadisticas-uso.js.map +1 -1
  64. package/dist/tools/generar-borrador.d.ts +25 -1
  65. package/dist/tools/generar-borrador.d.ts.map +1 -1
  66. package/dist/tools/generar-borrador.js +111 -82
  67. package/dist/tools/generar-borrador.js.map +1 -1
  68. package/dist/tools/generar-informe.d.ts +13 -0
  69. package/dist/tools/generar-informe.d.ts.map +1 -0
  70. package/dist/tools/generar-informe.js +111 -0
  71. package/dist/tools/generar-informe.js.map +1 -0
  72. package/dist/tools/monitorear-cambios.d.ts +32 -2
  73. package/dist/tools/monitorear-cambios.d.ts.map +1 -1
  74. package/dist/tools/monitorear-cambios.js +79 -10
  75. package/dist/tools/monitorear-cambios.js.map +1 -1
  76. package/dist/tools/radar-oportunidades.d.ts +42 -1
  77. package/dist/tools/radar-oportunidades.d.ts.map +1 -1
  78. package/dist/tools/radar-oportunidades.js +123 -103
  79. package/dist/tools/radar-oportunidades.js.map +1 -1
  80. package/dist/tools/recomendar-precio.d.ts +13 -0
  81. package/dist/tools/recomendar-precio.d.ts.map +1 -1
  82. package/dist/tools/recomendar-precio.js +53 -57
  83. package/dist/tools/recomendar-precio.js.map +1 -1
  84. package/dist/tools/verificar-oc.d.ts.map +1 -1
  85. package/dist/tools/verificar-oc.js +36 -8
  86. package/dist/tools/verificar-oc.js.map +1 -1
  87. package/dist/tools/verificar-ticket.d.ts +13 -0
  88. package/dist/tools/verificar-ticket.d.ts.map +1 -0
  89. package/dist/tools/verificar-ticket.js +79 -0
  90. package/dist/tools/verificar-ticket.js.map +1 -0
  91. package/dist/utils/cache.d.ts +53 -0
  92. package/dist/utils/cache.d.ts.map +1 -0
  93. package/dist/utils/cache.js +131 -0
  94. package/dist/utils/cache.js.map +1 -0
  95. package/dist/utils/doc-search.d.ts +52 -0
  96. package/dist/utils/doc-search.d.ts.map +1 -0
  97. package/dist/utils/doc-search.js +97 -0
  98. package/dist/utils/doc-search.js.map +1 -0
  99. package/dist/utils/docs-locator.d.ts +41 -0
  100. package/dist/utils/docs-locator.d.ts.map +1 -0
  101. package/dist/utils/docs-locator.js +82 -0
  102. package/dist/utils/docs-locator.js.map +1 -0
  103. package/dist/utils/error-handler.d.ts.map +1 -1
  104. package/dist/utils/error-handler.js +8 -7
  105. package/dist/utils/error-handler.js.map +1 -1
  106. package/dist/utils/logger.d.ts.map +1 -1
  107. package/dist/utils/logger.js +9 -6
  108. package/dist/utils/logger.js.map +1 -1
  109. package/dist/utils/quotation.d.ts +71 -0
  110. package/dist/utils/quotation.d.ts.map +1 -0
  111. package/dist/utils/quotation.js +140 -0
  112. package/dist/utils/quotation.js.map +1 -0
  113. package/dist/utils/rate-limiter.d.ts +44 -2
  114. package/dist/utils/rate-limiter.d.ts.map +1 -1
  115. package/dist/utils/rate-limiter.js +125 -13
  116. package/dist/utils/rate-limiter.js.map +1 -1
  117. package/dist/utils/redact.d.ts +48 -0
  118. package/dist/utils/redact.d.ts.map +1 -0
  119. package/dist/utils/redact.js +100 -0
  120. package/dist/utils/redact.js.map +1 -0
  121. package/package.json +55 -53
@@ -1,13 +1,17 @@
1
1
  import { z } from 'zod';
2
2
  import { CompraAgilApiError } from '../utils/error-handler.js';
3
3
  import { logger } from '../utils/logger.js';
4
+ import { esAdmisible, extraerMontoNeto } from '../utils/quotation.js';
5
+ import { safeError } from '../utils/redact.js';
4
6
  const TOOL_NAME = 'auditar_compras_desiertas';
5
- const TOOL_DESCRIPTION = `Audita un proceso de Compra Ágil que haya quedado "desierto" (sin ofertas) para identificar los motivos (plazo ajustado, presupuesto bajo, requisitos restrictivos) comparándolo con procesos exitosos similares en el mercado.
6
- Admite ingresar el código de la compra o un término de búsqueda para encontrar un proceso desierto reciente.`;
7
+ const TOOL_DESCRIPTION = `Audita un proceso de Compra Ágil que haya quedado "desierto" para identificar por qué falló (plazo ajustado, presupuesto bajo, requisitos restrictivos), comparándolo con los precios que el mercado cotizó en procesos similares.
8
+ Admite el código de la compra o un término de búsqueda para encontrar un proceso desierto reciente.
9
+ NOTA: la comparación se hace contra precios COTIZADOS por proveedores en procesos del mismo rubro, no contra precios adjudicados: la API de Mercado Público no expone qué oferta ganó (verificado empíricamente).
10
+ También reporta el motivo oficial de deserción y las cotizaciones declaradas inadmisibles, que suelen explicar el fracaso mejor que el precio.`;
7
11
  const inputSchema = {
8
12
  codigo_compra: z.string().optional().describe('Código de la Compra Ágil desierta para auditar (ej: "1057539-228-COT26"). Opcional si se especifica "q".'),
9
13
  q: z.string().optional().describe('Término de búsqueda de producto/servicio para encontrar y auditar un proceso desierto reciente (ej: "resmas papel"). Opcional.'),
10
- limite_analisis: z.number().min(1).max(8).default(5).optional().describe('Cantidad de procesos históricos exitosos con los que comparar (1-8, default 5) para no agotar la cuota de la API.'),
14
+ limite_analisis: z.number().min(1).max(8).default(3).optional().describe('Cantidad de procesos históricos exitosos con los que comparar (1-8, default 3) para no agotar la cuota de la API.'),
11
15
  };
12
16
  export function registerAuditarDesiertas(server, client) {
13
17
  server.registerTool(TOOL_NAME, {
@@ -70,13 +74,16 @@ export function registerAuditarDesiertas(server, client) {
70
74
  keyword = targetDetail.nombre;
71
75
  }
72
76
  }
73
- // 3. Buscar procesos similares exitosos (proveedor_seleccionado)
74
- logger.info(`auditar_compras_desiertas: Buscando procesos exitosos similares para "${keyword}"`);
75
- const limit = args.limite_analisis || 5;
77
+ // 3. Buscar procesos comparables del mismo rubro que publiquen cotizaciones.
78
+ // Solo `desierta`: medido contra la API real, es el único estado que las
79
+ // expone (desierta 5/8 procesos con precios; cerrada 0/8).
80
+ // `proveedor_seleccionado` devuelve 0 resultados.
81
+ logger.info(`auditar_compras_desiertas: Buscando procesos comparables para "${keyword}"`);
82
+ const limit = args.limite_analisis || 3;
76
83
  const searchResponse = await client.buscar({
77
84
  q: keyword,
78
- estado: 'proveedor_seleccionado',
79
- tamano_pagina: 10, // API v2 requiere mínimo 10
85
+ estado: 'desierta',
86
+ tamano_pagina: 50, // el mínimo de la API es 10; 50 maximiza el material por consulta
80
87
  numero_pagina: 1,
81
88
  });
82
89
  const successDurations = [];
@@ -84,41 +91,51 @@ export function registerAuditarDesiertas(server, client) {
84
91
  const processedCases = [];
85
92
  const itemsToProcess = (searchResponse.items || []).slice(0, limit);
86
93
  if (itemsToProcess.length > 0) {
87
- logger.info(`auditar_compras_desiertas: Analizando detalles de ${itemsToProcess.length} procesos exitosos`);
94
+ logger.info(`auditar_compras_desiertas: Analizando detalles de ${itemsToProcess.length} procesos comparables`);
88
95
  for (const item of itemsToProcess) {
89
96
  try {
90
97
  const detail = await client.detalle(item.codigo);
91
- const winner = detail.proveedores_cotizando?.find(prov => {
92
- if (prov.proveedor_seleccionado === true || prov.proveedor_seleccionado === 1)
93
- return true;
94
- if (prov.seleccion && prov.seleccion.proveedor_seleccionado === true)
95
- return true;
96
- return false;
97
- });
98
- if (winner) {
99
- const totalNeto = winner.valor_neto || winner.monto_total || 0;
100
- let successDuration = 0;
101
- if (detail.fechas?.fecha_cierre && detail.fechas?.fecha_publicacion) {
102
- const start = new Date(detail.fechas.fecha_publicacion).getTime();
103
- const end = new Date(detail.fechas.fecha_cierre).getTime();
104
- successDuration = Math.round(((end - start) / (1000 * 60 * 60 * 24)) * 10) / 10;
105
- successDurations.push(successDuration);
106
- }
107
- if (totalNeto > 0) {
108
- successPrices.push(totalNeto);
109
- }
110
- processedCases.push({
111
- codigo: item.codigo,
112
- institucion: item.institucion?.organismo_comprador || 'Desconocido',
113
- monto_adjudicado: totalNeto,
114
- duracion_dias: successDuration,
115
- fecha_cierre: item.fechas?.fecha_cierre,
116
- ganador: winner.razon_social || 'Desconocido',
117
- });
98
+ // Se recolectan TODAS las cotizaciones del proceso, incluidas las
99
+ // declaradas inadmisibles: en los procesos desiertos casi todas lo son
100
+ // (por eso quedaron desiertos) y filtrarlas dejaba la muestra vacía.
101
+ // El precio ofertado sigue siendo señal de mercado.
102
+ // Antes se buscaba solo al adjudicado, pero la API nunca marca un
103
+ // ganador (verificado), así que ese camino no encontraba nada.
104
+ const cotizaciones = detail.proveedores_cotizando ?? [];
105
+ if (cotizaciones.length === 0)
106
+ continue;
107
+ const inadmisibles = cotizaciones.filter((c) => !esAdmisible(c)).length;
108
+ const netos = cotizaciones
109
+ .map((c) => extraerMontoNeto(c))
110
+ .filter((n) => n !== null);
111
+ if (netos.length === 0)
112
+ continue;
113
+ // Referencia por proceso: la cotización más económica — es el precio
114
+ // al que ese mercado estuvo dispuesto a atender la necesidad.
115
+ const menorNeto = Math.min(...netos);
116
+ successPrices.push(menorNeto);
117
+ let successDuration = 0;
118
+ if (detail.fechas?.fecha_cierre && detail.fechas?.fecha_publicacion) {
119
+ const start = new Date(detail.fechas.fecha_publicacion).getTime();
120
+ const end = new Date(detail.fechas.fecha_cierre).getTime();
121
+ successDuration = Math.round(((end - start) / (1000 * 60 * 60 * 24)) * 10) / 10;
122
+ successDurations.push(successDuration);
118
123
  }
124
+ processedCases.push({
125
+ codigo: item.codigo,
126
+ estado: detail.estado?.glosa,
127
+ institucion: item.institucion?.organismo_comprador || 'Desconocido',
128
+ cotizaciones_recibidas: cotizaciones.length,
129
+ cotizaciones_inadmisibles: inadmisibles,
130
+ menor_monto_cotizado: menorNeto,
131
+ mayor_monto_cotizado: Math.max(...netos),
132
+ duracion_dias: successDuration,
133
+ fecha_cierre: item.fechas?.fecha_cierre,
134
+ motivo_desierta: detail.motivos?.motivo_desierta ?? null,
135
+ });
119
136
  }
120
137
  catch (detailError) {
121
- logger.warn(`auditar_compras_desiertas: Error al consultar detalle de exitoso ${item.codigo}: ${String(detailError)}`);
138
+ logger.warn(`auditar_compras_desiertas: Error al consultar detalle de ${item.codigo}: ${safeError(detailError)}`);
122
139
  }
123
140
  }
124
141
  }
@@ -173,14 +190,14 @@ export function registerAuditarDesiertas(server, client) {
173
190
  const recomendaciones = [];
174
191
  if (analisis_critico.presupuesto_insuficiente) {
175
192
  if (targetBudget > 0) {
176
- recomendaciones.push(`Aumentar el presupuesto disponible. El presupuesto actual de $${targetBudget.toLocaleString('es-CL')} es un ${Math.abs(analisis_critico.diferencia_presupuesto_porcentaje)}% inferior al promedio de adjudicación histórico ($${avgPrice.toLocaleString('es-CL')}). Se sugiere incrementarlo a al menos $${Math.round(avgPrice * 1.05).toLocaleString('es-CL')}.`);
193
+ recomendaciones.push(`Aumentar el presupuesto disponible. El presupuesto actual de $${targetBudget.toLocaleString('es-CL')} es un ${Math.abs(analisis_critico.diferencia_presupuesto_porcentaje)}% inferior al promedio de lo que el mercado cotizó en procesos similares ($${avgPrice.toLocaleString('es-CL')}). Se sugiere incrementarlo a al menos $${Math.round(avgPrice * 1.05).toLocaleString('es-CL')}.`);
177
194
  }
178
195
  else {
179
- recomendaciones.push(`Especificar o incrementar el presupuesto estimado. El promedio histórico adjudicado para productos similares es de $${avgPrice.toLocaleString('es-CL')}.`);
196
+ recomendaciones.push(`Especificar o incrementar el presupuesto estimado. El promedio de lo cotizado por el mercado para productos similares es de $${avgPrice.toLocaleString('es-CL')}.`);
180
197
  }
181
198
  }
182
199
  if (analisis_critico.plazo_insuficiente) {
183
- recomendaciones.push(`Extender el plazo de postulación. El proceso actual ofreció un plazo de ${targetDuration} días (cierre y publicación), mientras que los procesos exitosos de mercado promedian ${avgDuration} días. Se recomienda extender el plazo a un mínimo de 3 a 5 días hábiles.`);
200
+ recomendaciones.push(`Extender el plazo de postulación. El proceso actual ofreció ${targetDuration} días entre publicación y cierre, mientras que los procesos comparables promedian ${avgDuration} días. Se recomienda extender el plazo a un mínimo de 3 a 5 días hábiles.`);
184
201
  }
185
202
  if (analisis_critico.requisitos_complejos) {
186
203
  recomendaciones.push(`Flexibilizar los requisitos ambientales/sociales exigidos. Aunque promueven buenas prácticas, en procesos rápidos de bajo monto pueden asustar o inhabilitar a microempresas locales si implican adjuntar certificados complejos.`);
@@ -205,13 +222,13 @@ export function registerAuditarDesiertas(server, client) {
205
222
  },
206
223
  busqueda_comparativa: {
207
224
  termino_clave: keyword,
208
- casos_exitosos_encontrados: successPrices.length,
209
- estadisticas_precios_exitosos: successPrices.length > 0 ? {
210
- minimo_adjudicado: minPrice,
211
- maximo_adjudicado: maxPrice,
212
- promedio_adjudicado: avgPrice,
225
+ procesos_comparables_con_cotizaciones: successPrices.length,
226
+ estadisticas_montos_cotizados: successPrices.length > 0 ? {
227
+ minimo_cotizado: minPrice,
228
+ maximo_cotizado: maxPrice,
229
+ promedio_cotizado: avgPrice,
213
230
  } : null,
214
- estadisticas_duracion_exitosa: successDurations.length > 0 ? {
231
+ estadisticas_duracion: successDurations.length > 0 ? {
215
232
  minimo_dias: minDuration,
216
233
  maximo_dias: maxDuration,
217
234
  promedio_dias: avgDuration,
@@ -219,7 +236,8 @@ export function registerAuditarDesiertas(server, client) {
219
236
  },
220
237
  analisis_de_brechas: analisis_critico,
221
238
  recomendaciones_de_optimizacion: recomendaciones,
222
- casos_exitosos_analizados: processedCases,
239
+ procesos_comparables_analizados: processedCases,
240
+ _nota_metodologica: 'La comparación usa el MENOR monto cotizado de cada proceso similar (cerrado o desierto), no montos adjudicados: la API de Mercado Público no expone qué oferta ganó. Revisa también "motivo_desierta": muchas deserciones se explican por incumplimientos formales (garantías, certificados) y no por precio.',
223
241
  };
224
242
  return {
225
243
  content: [{
@@ -231,7 +249,7 @@ export function registerAuditarDesiertas(server, client) {
231
249
  catch (error) {
232
250
  const message = error instanceof CompraAgilApiError
233
251
  ? error.actionableMessage
234
- : `Error inesperado al auditar compra desierta: ${String(error)}`;
252
+ : `Error inesperado al auditar compra desierta: ${safeError(error)}`;
235
253
  return {
236
254
  content: [{ type: 'text', text: message }],
237
255
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"auditar-desiertas.js","sourceRoot":"","sources":["../../src/tools/auditar-desiertas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auditar-desiertas.js","sourceRoot":"","sources":["../../src/tools/auditar-desiertas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAE9C,MAAM,gBAAgB,GAAG;;;+IAGsH,CAAC;AAEhJ,MAAM,WAAW,GAAG;IAClB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0GAA0G,CAAC;IACzJ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gIAAgI,CAAC;IACnK,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mHAAmH,CAAC;CAC9L,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAwB;IAClF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;YAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,8EAA8E;YAC9E,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,uEAAuE,OAAO,GAAG,CAAC,CAAC;gBAC/F,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;oBAC1C,CAAC,EAAE,OAAO;oBACV,MAAM,EAAE,UAAU;oBAClB,aAAa,EAAE,EAAE,EAAE,4BAA4B;oBAC/C,aAAa,EAAE,CAAC;iBACjB,CAAC,CAAC;gBAEH,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjE,OAAO;wBACL,OAAO,EAAE,CAAC;gCACR,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,+EAA+E,OAAO,sFAAsF;6BACnL,CAAC;qBACH,CAAC;gBACJ,CAAC;gBACD,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/C,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2HAA2H;yBAClI,CAAC;oBACF,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,uDAAuD;YACvD,MAAM,CAAC,IAAI,CAAC,uEAAuE,UAAU,EAAE,CAAC,CAAC;YACjG,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAEtD,+CAA+C;YAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC;YACvD,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,oBAAoB,IAAI,YAAY,CAAC,WAAW,EAAE,gBAAgB,IAAI,CAAC,CAAC;YAEvH,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;gBAChF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjE,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACjF,CAAC;YAED,IAAI,YAAY,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACnD,CAAC;YAED,4DAA4D;YAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,YAAY,CAAC,qBAAqB,IAAI,YAAY,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxF,OAAO,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,4EAA4E;YAC5E,8DAA8D;YAC9D,qDAAqD;YACrD,MAAM,CAAC,IAAI,CAAC,kEAAkE,OAAO,GAAG,CAAC,CAAC;YAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;YACxC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;gBACzC,CAAC,EAAE,OAAO;gBACV,MAAM,EAAE,UAAU;gBAClB,aAAa,EAAE,EAAE,EAAE,kEAAkE;gBACrF,aAAa,EAAE,CAAC;aACjB,CAAC,CAAC;YAEH,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,cAAc,GAAU,EAAE,CAAC;YACjC,MAAM,cAAc,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAEpE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,qDAAqD,cAAc,CAAC,MAAM,uBAAuB,CAAC,CAAC;gBAC/G,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAClC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAEjD,kEAAkE;wBAClE,uEAAuE;wBACvE,qEAAqE;wBACrE,oDAAoD;wBACpD,kEAAkE;wBAClE,+DAA+D;wBAC/D,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC;wBACxD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;4BAAE,SAAS;wBACxC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBAExE,MAAM,KAAK,GAAG,YAAY;6BACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;6BAC/B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;wBAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;4BAAE,SAAS;wBAEjC,qEAAqE;wBACrE,8DAA8D;wBAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;wBACrC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAE9B,IAAI,eAAe,GAAG,CAAC,CAAC;wBACxB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;4BACpE,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;4BAClE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;4BAC3D,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;4BAChF,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACzC,CAAC;wBAED,cAAc,CAAC,IAAI,CAAC;4BAClB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK;4BAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,mBAAmB,IAAI,aAAa;4BACnE,sBAAsB,EAAE,YAAY,CAAC,MAAM;4BAC3C,yBAAyB,EAAE,YAAY;4BACvC,oBAAoB,EAAE,SAAS;4BAC/B,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;4BACxC,aAAa,EAAE,eAAe;4BAC9B,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY;4BACvC,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI;yBACzD,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,WAAW,EAAE,CAAC;wBACrB,MAAM,CAAC,IAAI,CAAC,4DAA4D,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACpH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iEAAiE;YACjE,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC;YAC7C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC5B,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACzF,CAAC;YAED,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC;YACtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvC,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAClC,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5D,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAC9G,CAAC;YAED,iCAAiC;YACjC,MAAM,gBAAgB,GAAG;gBACvB,wBAAwB,EAAE,KAAK;gBAC/B,kBAAkB,EAAE,KAAK;gBACzB,oBAAoB,EAAE,KAAK;gBAC3B,iCAAiC,EAAE,CAAC;gBACpC,qBAAqB,EAAE,CAAC;aACzB,CAAC;YAEF,IAAI,YAAY,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACrC,gBAAgB,CAAC,iCAAiC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC9G,IAAI,YAAY,GAAG,QAAQ,IAAI,YAAY,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;oBAC7D,gBAAgB,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBACnD,CAAC;YACH,CAAC;iBAAM,IAAI,YAAY,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC9C,qHAAqH;gBACrH,gBAAgB,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACnD,CAAC;YAED,IAAI,cAAc,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC1C,gBAAgB,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC9F,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;oBAC7D,gBAAgB,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC7C,CAAC;YACH,CAAC;iBAAM,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBACpD,wFAAwF;gBACxF,gBAAgB,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC7C,CAAC;YAED,IACE,YAAY,CAAC,KAAK,EAAE,qCAAqC;gBACzD,YAAY,CAAC,KAAK,EAAE,6CAA6C,EACjE,CAAC;gBACD,gBAAgB,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAC/C,CAAC;YAED,+CAA+C;YAC/C,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,IAAI,gBAAgB,CAAC,wBAAwB,EAAE,CAAC;gBAC9C,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrB,eAAe,CAAC,IAAI,CAClB,iEAAiE,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,8EAA8E,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,2CAA2C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAC3X,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,IAAI,CAClB,gIAAgI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CACpK,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBACxC,eAAe,CAAC,IAAI,CAClB,+DAA+D,cAAc,qFAAqF,WAAW,2EAA2E,CACzP,CAAC;YACJ,CAAC;YAED,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;gBAC1C,eAAe,CAAC,IAAI,CAClB,mOAAmO,CACpO,CAAC;YACJ,CAAC;YAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,eAAe,CAAC,IAAI,CAClB,gSAAgS,CACjS,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,gBAAgB,EAAE;oBAChB,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,iBAAiB;oBACvD,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,aAAa;oBACnD,sBAAsB,EAAE,YAAY;oBACpC,aAAa,EAAE,cAAc;oBAC7B,iBAAiB,EAAE,YAAY,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC/D,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,MAAM,EAAE,CAAC,CAAC,aAAa;qBACxB,CAAC,CAAC,IAAI,EAAE;oBACT,eAAe,EAAE,YAAY,CAAC,OAAO,EAAE,eAAe,IAAI,+BAA+B;iBAC1F;gBACD,oBAAoB,EAAE;oBACpB,aAAa,EAAE,OAAO;oBACtB,qCAAqC,EAAE,aAAa,CAAC,MAAM;oBAC3D,6BAA6B,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACxD,eAAe,EAAE,QAAQ;wBACzB,eAAe,EAAE,QAAQ;wBACzB,iBAAiB,EAAE,QAAQ;qBAC5B,CAAC,CAAC,CAAC,IAAI;oBACR,qBAAqB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACnD,WAAW,EAAE,WAAW;wBACxB,WAAW,EAAE,WAAW;wBACxB,aAAa,EAAE,WAAW;qBAC3B,CAAC,CAAC,CAAC,IAAI;iBACT;gBACD,mBAAmB,EAAE,gBAAgB;gBACrC,+BAA+B,EAAE,eAAe;gBAChD,+BAA+B,EAAE,cAAc;gBAC/C,kBAAkB,EAAE,+SAA+S;aACpU,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;qBACtC,CAAC;aACH,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,kBAAkB;gBACjD,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACzB,CAAC,CAAC,gDAAgD,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gBACnD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"buscar-compras.d.ts","sourceRoot":"","sources":["../../src/tools/buscar-compras.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgDhE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqGvF"}
1
+ {"version":3,"file":"buscar-compras.d.ts","sourceRoot":"","sources":["../../src/tools/buscar-compras.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiDhE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqGvF"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { z } from 'zod';
8
8
  import { CompraAgilApiError } from '../utils/error-handler.js';
9
+ import { safeError } from '../utils/redact.js';
9
10
  const TOOL_NAME = 'buscar_compras_agiles';
10
11
  const TOOL_DESCRIPTION = `Busca procesos de Compra Ágil en Mercado Público de Chile.
11
12
  Permite filtrar por palabras clave, estado del proceso, región geográfica y rango de fechas de publicación.
@@ -110,7 +111,7 @@ export function registerBuscarCompras(server, client) {
110
111
  catch (error) {
111
112
  const message = error instanceof CompraAgilApiError
112
113
  ? error.actionableMessage
113
- : `Error inesperado: ${String(error)}`;
114
+ : `Error inesperado: ${safeError(error)}`;
114
115
  return {
115
116
  content: [{ type: 'text', text: message }],
116
117
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"buscar-compras.js","sourceRoot":"","sources":["../../src/tools/buscar-compras.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buscar-compras.js","sourceRoot":"","sources":["../../src/tools/buscar-compras.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detalle-compra.d.ts","sourceRoot":"","sources":["../../src/tools/detalle-compra.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiBhE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAyGvF"}
1
+ {"version":3,"file":"detalle-compra.d.ts","sourceRoot":"","sources":["../../src/tools/detalle-compra.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAkBhE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAyGvF"}
@@ -6,11 +6,12 @@
6
6
  */
7
7
  import { z } from 'zod';
8
8
  import { CompraAgilApiError } from '../utils/error-handler.js';
9
+ import { safeError } from '../utils/redact.js';
9
10
  const TOOL_NAME = 'obtener_detalle_compra';
10
- const TOOL_DESCRIPTION = `Obtiene el detalle completo de una Compra Ágil específica por su código único.
11
- Incluye: descripción del proceso, productos solicitados con cantidades, proveedores que cotizaron con sus montos,
12
- presupuesto disponible, dirección y plazo de entrega, estado de la Orden de Compra (si fue emitida),
13
- y flags de sostenibilidad (requisitos medioambientales y de impacto social).
11
+ const TOOL_DESCRIPTION = `Obtiene el detalle completo de una Compra Ágil específica por su código único.
12
+ Incluye: descripción del proceso, productos solicitados con cantidades, proveedores que cotizaron con sus montos,
13
+ presupuesto disponible, dirección y plazo de entrega, estado de la Orden de Compra (si fue emitida),
14
+ y flags de sostenibilidad (requisitos medioambientales y de impacto social).
14
15
  NOTA: Las cotizaciones detalladas de los proveedores solo se muestran desde el estado "Cerrada" en segundo llamado en adelante.`;
15
16
  const inputSchema = {
16
17
  codigo: z.string().describe('Código único de la Compra Ágil. Formato: XXXXXX-YYY-COTXX. Ej: "1057539-228-COT26".'),
@@ -108,7 +109,7 @@ export function registerDetalleCompra(server, client) {
108
109
  catch (error) {
109
110
  const message = error instanceof CompraAgilApiError
110
111
  ? error.actionableMessage
111
- : `Error inesperado: ${String(error)}`;
112
+ : `Error inesperado: ${safeError(error)}`;
112
113
  return {
113
114
  content: [{ type: 'text', text: message }],
114
115
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"detalle-compra.js","sourceRoot":"","sources":["../../src/tools/detalle-compra.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detalle-compra.js","sourceRoot":"","sources":["../../src/tools/detalle-compra.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,10 @@
6
6
  */
7
7
  import { z } from 'zod';
8
8
  import { CompraAgilApiError } from '../utils/error-handler.js';
9
+ import { safeError } from '../utils/redact.js';
9
10
  const TOOL_NAME = 'obtener_detalle_orden_compra';
10
- const TOOL_DESCRIPTION = `Obtiene el detalle completo de una Orden de Compra (OC) emitida en Mercado Público de Chile.
11
- Admite tanto el ID numérico (id_orden_compra) como el código alfanumérico externo.
12
- Retorna información sobre montos (neto, impuestos, total), comprador, proveedor adjudicado y el listado de productos/servicios adquiridos.`;
11
+ const TOOL_DESCRIPTION = `Obtiene el detalle completo de una Orden de Compra (OC) emitida en Mercado Público de Chile: montos (neto, impuestos, total), comprador, proveedor adjudicado y listado de productos adquiridos. Admite el ID numérico o el código alfanumérico externo.
12
+ EL CÓDIGO DEBE VENIR DE OTRA FUENTE. Consulta la API legada de Órdenes de Compra, que es independiente de la de Compra Ágil — y esta última NO entrega códigos de OC (verificado: id_orden_compra viene null en el 100% de los procesos). Úsala cuando ya tengas el código por otra vía: la OC que te emitieron como proveedor, un correo de Mercado Público o la ficha pública del proceso. No esperes obtenerlo con las demás herramientas de este servidor.`;
13
13
  const inputSchema = {
14
14
  codigo_oc: z.string().describe('Código alfanumérico (ej: "1057532-156-AG26") o ID numérico (ej: "54909627") de la Orden de Compra.'),
15
15
  };
@@ -53,11 +53,11 @@ export function registerDetalleOC(server, client) {
53
53
  nombre: oc.Proveedor.Nombre,
54
54
  rut: oc.Proveedor.Rut,
55
55
  },
56
- items: oc.Items.Listado.map((item) => ({
56
+ items: (oc.Items?.Listado ?? []).map((item) => ({
57
57
  producto: item.Producto,
58
58
  cantidad: item.Cantidad,
59
59
  precio_neto: item.PrecioNeto,
60
- total_neto: item.TotalLnea,
60
+ total_neto: item.TotalLnea ?? item.TotalLinea ?? null,
61
61
  })),
62
62
  };
63
63
  return {
@@ -70,7 +70,7 @@ export function registerDetalleOC(server, client) {
70
70
  catch (error) {
71
71
  const message = error instanceof CompraAgilApiError
72
72
  ? error.actionableMessage
73
- : `Error inesperado: ${String(error)}`;
73
+ : `Error inesperado: ${safeError(error)}`;
74
74
  return {
75
75
  content: [{ type: 'text', text: message }],
76
76
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"detalle-oc.js","sourceRoot":"","sources":["../../src/tools/detalle-oc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detalle-oc.js","sourceRoot":"","sources":["../../src/tools/detalle-oc.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"documentos.d.ts","sourceRoot":"","sources":["../../src/tools/documentos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0CpE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6Q/D"}
1
+ {"version":3,"file":"documentos.d.ts","sourceRoot":"","sources":["../../src/tools/documentos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUpE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0S/D"}