@ssolis-ti/mcp-compra-agil 2.3.0 → 2.5.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 (78) hide show
  1. package/README.md +47 -13
  2. package/dist/api/compra-agil-client.d.ts +29 -0
  3. package/dist/api/compra-agil-client.d.ts.map +1 -1
  4. package/dist/api/compra-agil-client.js +35 -0
  5. package/dist/api/compra-agil-client.js.map +1 -1
  6. package/dist/index.js +19 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/reports/templates/radar-oportunidades.d.ts +1 -1
  9. package/dist/reports/templates/radar-oportunidades.js +2 -2
  10. package/dist/reports/templates/radar-oportunidades.js.map +1 -1
  11. package/dist/resources/glosario.d.ts.map +1 -1
  12. package/dist/resources/glosario.js +6 -2
  13. package/dist/resources/glosario.js.map +1 -1
  14. package/dist/services/monitor.js +11 -1
  15. package/dist/services/monitor.js.map +1 -1
  16. package/dist/tools/analizar-precios-mercado.d.ts.map +1 -1
  17. package/dist/tools/analizar-precios-mercado.js +68 -14
  18. package/dist/tools/analizar-precios-mercado.js.map +1 -1
  19. package/dist/tools/auditar-desiertas.d.ts.map +1 -1
  20. package/dist/tools/auditar-desiertas.js +31 -8
  21. package/dist/tools/auditar-desiertas.js.map +1 -1
  22. package/dist/tools/buscar-compras.d.ts.map +1 -1
  23. package/dist/tools/buscar-compras.js +2 -0
  24. package/dist/tools/buscar-compras.js.map +1 -1
  25. package/dist/tools/detalle-compra.d.ts.map +1 -1
  26. package/dist/tools/detalle-compra.js +2 -0
  27. package/dist/tools/detalle-compra.js.map +1 -1
  28. package/dist/tools/detalle-oc.d.ts.map +1 -1
  29. package/dist/tools/detalle-oc.js +2 -0
  30. package/dist/tools/detalle-oc.js.map +1 -1
  31. package/dist/tools/documentos.d.ts.map +1 -1
  32. package/dist/tools/documentos.js +6 -0
  33. package/dist/tools/documentos.js.map +1 -1
  34. package/dist/tools/estadisticas-uso.d.ts.map +1 -1
  35. package/dist/tools/estadisticas-uso.js +2 -0
  36. package/dist/tools/estadisticas-uso.js.map +1 -1
  37. package/dist/tools/generar-borrador.d.ts +1 -1
  38. package/dist/tools/generar-borrador.d.ts.map +1 -1
  39. package/dist/tools/generar-borrador.js +35 -18
  40. package/dist/tools/generar-borrador.js.map +1 -1
  41. package/dist/tools/generar-informe.d.ts.map +1 -1
  42. package/dist/tools/generar-informe.js +5 -1
  43. package/dist/tools/generar-informe.js.map +1 -1
  44. package/dist/tools/monitorear-cambios.d.ts.map +1 -1
  45. package/dist/tools/monitorear-cambios.js +2 -0
  46. package/dist/tools/monitorear-cambios.js.map +1 -1
  47. package/dist/tools/radar-oportunidades.d.ts +9 -1
  48. package/dist/tools/radar-oportunidades.d.ts.map +1 -1
  49. package/dist/tools/radar-oportunidades.js +42 -6
  50. package/dist/tools/radar-oportunidades.js.map +1 -1
  51. package/dist/tools/verificar-hora.d.ts +13 -0
  52. package/dist/tools/verificar-hora.d.ts.map +1 -0
  53. package/dist/tools/verificar-hora.js +71 -0
  54. package/dist/tools/verificar-hora.js.map +1 -0
  55. package/dist/tools/verificar-oc.d.ts.map +1 -1
  56. package/dist/tools/verificar-oc.js +2 -0
  57. package/dist/tools/verificar-oc.js.map +1 -1
  58. package/dist/tools/verificar-ticket.js +1 -1
  59. package/dist/tools/verificar-ticket.js.map +1 -1
  60. package/dist/utils/concurrencia.d.ts +63 -0
  61. package/dist/utils/concurrencia.d.ts.map +1 -0
  62. package/dist/utils/concurrencia.js +122 -0
  63. package/dist/utils/concurrencia.js.map +1 -0
  64. package/dist/utils/error-handler.d.ts.map +1 -1
  65. package/dist/utils/error-handler.js +8 -0
  66. package/dist/utils/error-handler.js.map +1 -1
  67. package/dist/utils/fechas.d.ts +50 -0
  68. package/dist/utils/fechas.d.ts.map +1 -0
  69. package/dist/utils/fechas.js +77 -0
  70. package/dist/utils/fechas.js.map +1 -0
  71. package/dist/utils/logger.d.ts.map +1 -1
  72. package/dist/utils/logger.js +13 -2
  73. package/dist/utils/logger.js.map +1 -1
  74. package/dist/utils/ntp.d.ts +51 -0
  75. package/dist/utils/ntp.d.ts.map +1 -0
  76. package/dist/utils/ntp.js +121 -0
  77. package/dist/utils/ntp.js.map +1 -0
  78. package/package.json +1 -1
@@ -35,6 +35,8 @@ export async function estimarPrecioUnitario(client, detalle, precioPersonalizado
35
35
  }
36
36
  const keyword = detalle.productos_solicitados?.[0]?.nombre || detalle.nombre || '';
37
37
  const precios = [];
38
+ let fallosDetalle = 0;
39
+ let intentosDetalle = 0;
38
40
  if (keyword) {
39
41
  try {
40
42
  logger.info(`generar_borrador_cotizacion: Consultando precios cotizados por el mercado para "${keyword}"`);
@@ -44,25 +46,36 @@ export async function estimarPrecioUnitario(client, detalle, precioPersonalizado
44
46
  const busqueda = await client.buscar({
45
47
  q: keyword,
46
48
  estado: 'desierta',
47
- tamano_pagina: 50,
49
+ // Solo se examinan los primeros 5 resultados (ver el slice más abajo),
50
+ // así que pedir 50 era desperdicio — y provocaba HTTP 504: medido en
51
+ // producción, esta consulta con tamano_pagina=50 agota los ~30 s de la
52
+ // pasarela. Se pide el mínimo que exige la API.
53
+ tamano_pagina: 10,
48
54
  numero_pagina: 1,
49
55
  });
50
- for (const item of (busqueda.items || []).slice(0, 5)) {
51
- try {
52
- const det = await client.detalle(item.codigo);
53
- // Se toman TODAS las cotizaciones, incluidas las inadmisibles: en los
54
- // procesos desiertos casi todas lo son (por eso quedaron desiertos), y
55
- // el precio ofertado sigue siendo señal de mercado. Filtrarlas dejaba
56
- // la muestra vacía. La API nunca marca un ganador, así que la
57
- // referencia es lo que ofertó la competencia.
58
- for (const prov of det.proveedores_cotizando ?? []) {
59
- const unitario = extraerPrecioUnitario(prov, keyword);
60
- if (unitario !== null)
61
- precios.push(unitario);
62
- }
63
- }
64
- catch {
65
- // Un histórico que falla no invalida el resto de la muestra.
56
+ // En paralelo y con concurrencia adaptativa: la API tarda 20-25 s por
57
+ // detalle (medido en septiembre 2026), así que en serie estas cinco
58
+ // consultas bastaban para pasarse del timeout de un cliente MCP. Un
59
+ // histórico que falla llega como `null` y no invalida el resto.
60
+ const detallados = await client.detallesEnParalelo((busqueda.items || []).slice(0, 5).map((item) => item.codigo));
61
+ // Se cuentan los fallos: si todas las consultas de detalle se cayeron,
62
+ // el precio no se estimó "porque no había comparables" sino porque la
63
+ // API no respondió, y el borrador debe decirlo. Confundir ambas cosas
64
+ // llevaría al proveedor a cotizar sobre una premisa falsa.
65
+ fallosDetalle = detallados.filter((d) => d === null).length;
66
+ intentosDetalle = detallados.length;
67
+ for (const det of detallados) {
68
+ if (!det)
69
+ continue;
70
+ // Se toman TODAS las cotizaciones, incluidas las inadmisibles: en los
71
+ // procesos desiertos casi todas lo son (por eso quedaron desiertos), y
72
+ // el precio ofertado sigue siendo señal de mercado. Filtrarlas dejaba
73
+ // la muestra vacía. La API nunca marca un ganador, así que la
74
+ // referencia es lo que ofertó la competencia.
75
+ for (const prov of det.proveedores_cotizando ?? []) {
76
+ const unitario = extraerPrecioUnitario(prov, keyword);
77
+ if (unitario !== null)
78
+ precios.push(unitario);
66
79
  }
67
80
  }
68
81
  }
@@ -85,7 +98,9 @@ export async function estimarPrecioUnitario(client, detalle, precioPersonalizado
85
98
  const cantidadTotal = detalle.productos_solicitados?.reduce((acc, p) => acc + p.cantidad, 0) || 1;
86
99
  return {
87
100
  precio: Math.round((presupuesto * 0.9) / cantidadTotal),
88
- fuente: 'Sugerencia automática: presupuesto del comprador descontado 10% (no hubo cotizaciones de mercado comparables)',
101
+ fuente: intentosDetalle > 0 && fallosDetalle === intentosDetalle
102
+ ? `Sugerencia automática: presupuesto del comprador descontado 10%. ⚠ NO se pudo consultar el mercado — las ${fallosDetalle} consultas de detalle fallaron (la API no respondió). Esto no significa que no existan comparables: reintenta más tarde para obtener un precio de mercado.`
103
+ : `Sugerencia automática: presupuesto del comprador descontado 10% (no se encontraron cotizaciones de mercado comparables${fallosDetalle > 0 ? `; además ${fallosDetalle} de ${intentosDetalle} consultas fallaron` : ''})`,
89
104
  sugerido: true,
90
105
  };
91
106
  }
@@ -108,7 +123,9 @@ const inputSchema = {
108
123
  };
109
124
  export function registerGenerarBorrador(server, client) {
110
125
  server.registerTool(TOOL_NAME, {
126
+ title: "Generar borrador de cotización",
111
127
  description: TOOL_DESCRIPTION,
128
+ annotations: { readOnlyHint: true, openWorldHint: true },
112
129
  inputSchema: inputSchema,
113
130
  }, async (args) => {
114
131
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"generar-borrador.js","sourceRoot":"","sources":["../../src/tools/generar-borrador.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generar-borrador.js","sourceRoot":"","sources":["../../src/tools/generar-borrador.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generar-informe.d.ts","sourceRoot":"","sources":["../../src/tools/generar-informe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoFxF"}
1
+ {"version":3,"file":"generar-informe.d.ts","sourceRoot":"","sources":["../../src/tools/generar-informe.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAiChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4FxF"}
@@ -30,12 +30,16 @@ const inputSchema = {
30
30
  q: z.string().optional().describe('Término de búsqueda para acotar a un rubro o producto (ej: "licencias").'),
31
31
  presupuesto_minimo: z.number().optional().describe('Filtrar procesos con presupuesto disponible mayor o igual a este monto en CLP.'),
32
32
  limite_resultados: z.number().min(1).max(50).default(20).optional().describe('Cantidad máxima de oportunidades a incluir en el informe (1-50, default 20).'),
33
- max_paginas: z.number().min(1).max(10).default(3).optional().describe('Páginas de 50 resultados a escanear (1-10, default 3).'),
33
+ max_paginas: z.number().min(1).max(10).default(3).optional().describe('Páginas de 50 resultados a escanear (1-10, default 3). Cada página es una consulta de 10-17 s (medido en septiembre de 2026); con 3 el informe tarda unos 30-50 s.'),
34
34
  ruta_salida: z.string().optional().describe('Directorio donde guardar el informe. Si se omite, se usa la carpeta "informes/" del directorio de trabajo.'),
35
35
  };
36
36
  export function registerGenerarInforme(server, client) {
37
37
  server.registerTool(TOOL_NAME, {
38
+ title: "Generar informe imprimible",
38
39
  description: TOOL_DESCRIPTION,
40
+ // Único tool con efecto en disco: crea un archivo HTML nuevo por llamada.
41
+ // No destruye nada (solo agrega) y no es idempotente (cada informe lleva su timestamp).
42
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
39
43
  inputSchema: inputSchema,
40
44
  }, async (args) => {
41
45
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"generar-informe.js","sourceRoot":"","sources":["../../src/tools/generar-informe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generar-informe.js","sourceRoot":"","sources":["../../src/tools/generar-informe.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"monitorear-cambios.d.ts","sourceRoot":"","sources":["../../src/tools/monitorear-cambios.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAyChE,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA+CrC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4D3F"}
1
+ {"version":3,"file":"monitorear-cambios.d.ts","sourceRoot":"","sources":["../../src/tools/monitorear-cambios.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAyChE,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,MAAM,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA+CrC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAgE3F"}
@@ -82,7 +82,9 @@ export function resolverVentanaCambios(args) {
82
82
  }
83
83
  export function registerMonitorearCambios(server, client) {
84
84
  server.registerTool(TOOL_NAME, {
85
+ title: "Monitorear cambios recientes",
85
86
  description: TOOL_DESCRIPTION,
87
+ annotations: { readOnlyHint: true, openWorldHint: true },
86
88
  inputSchema: inputSchema,
87
89
  }, async (args) => {
88
90
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"monitorear-cambios.js","sourceRoot":"","sources":["../../src/tools/monitorear-cambios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitorear-cambios.js","sourceRoot":"","sources":["../../src/tools/monitorear-cambios.ts"],"names":[],"mappings":"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"}
@@ -9,13 +9,21 @@ export interface OportunidadRadar {
9
9
  ofertas_recibidas: number;
10
10
  horas_restantes: number;
11
11
  fecha_cierre: string;
12
+ /**
13
+ * El mismo cierre convertido a hora de Chile, para que nadie tenga que
14
+ * hacer la resta. `null` si la fecha no se pudo interpretar.
15
+ */
16
+ fecha_cierre_hora_chile: string | null;
17
+ /** 1 = primer llamado · 2 = segundo llamado (el primero no recibió ofertas válidas). */
18
+ llamado: number;
12
19
  puntuacion_caliente: number;
13
20
  factores_calificacion: string[];
14
21
  }
15
22
  /**
16
23
  * Calcula el "Hot Score" de una oportunidad de forma pura (sin efectos secundarios).
17
24
  * Retorna null si el proceso debe omitirse (ya cerrado o bajo el presupuesto mínimo).
18
- * Ponderación: baja competencia (máx 50) + urgencia (máx 30) + presupuesto (máx 20) + facilidad (máx 5).
25
+ * Ponderación: baja competencia (máx 50) + urgencia (máx 30) + presupuesto (máx 20)
26
+ * + facilidad (máx 5) + segundo llamado (máx 10). Máximo teórico: 115 pts.
19
27
  */
20
28
  export declare function evaluarOportunidad(item: CompraAgilItem, now: number, minBudget?: number): OportunidadRadar | null;
21
29
  export interface RadarParams {
@@ -1 +1 @@
1
- {"version":3,"file":"radar-oportunidades.d.ts","sourceRoot":"","sources":["../../src/tools/radar-oportunidades.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAkBhF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,SAAS,SAAI,GACZ,gBAAgB,GAAG,IAAI,CAyEzB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,MAAmB,GACvB,OAAO,CAAC,UAAU,CAAC,CA6BrB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4C5F"}
1
+ {"version":3,"file":"radar-oportunidades.d.ts","sourceRoot":"","sources":["../../src/tools/radar-oportunidades.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAoBhF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,SAAS,SAAI,GACZ,gBAAgB,GAAG,IAAI,CAqGzB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,MAAmB,GACvB,OAAO,CAAC,UAAU,CAAC,CA6BrB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoD5F"}
@@ -2,29 +2,38 @@ import { z } from 'zod';
2
2
  import { CompraAgilApiError } from '../utils/error-handler.js';
3
3
  import { logger } from '../utils/logger.js';
4
4
  import { safeError } from '../utils/redact.js';
5
+ import { parsearFechaApi, enHoraDeChile, NOTA_ZONA_HORARIA } from '../utils/fechas.js';
5
6
  const TOOL_NAME = 'radar_oportunidades_calientes';
6
7
  const TOOL_DESCRIPTION = `Escanea, califica y clasifica de forma priorizada los procesos de Compra Ágil activos (publicados).
7
- Utiliza una fórmula ponderada (Hot Score) basada en la falta de oferentes, el presupuesto disponible y las horas restantes de cierre para destacar los llamados más convenientes y fáciles de ganar.`;
8
+ Utiliza una fórmula ponderada (Hot Score) basada en la falta de oferentes, el presupuesto disponible, las horas restantes de cierre y si el proceso va en segundo llamado, para destacar los llamados más convenientes y fáciles de ganar.
9
+ Cada resultado incluye "llamado" (1 = primero, 2 = segundo) y el desglose de factores que explican su puntuación.`;
8
10
  const inputSchema = {
9
11
  region: z.string().optional().describe('Código de la región para filtrar (1-16). Ej: "13" para Metropolitana.'),
10
12
  q: z.string().optional().describe('Término de búsqueda opcional para acotar a un rubro o producto específico (ej: "licencias").'),
11
13
  presupuesto_minimo: z.number().optional().describe('Filtrar solo procesos con presupuesto disponible mayor o igual a este monto en CLP.'),
12
14
  limite_resultados: z.number().min(1).max(20).default(10).optional().describe('Cantidad máxima de oportunidades destacadas a retornar (1-20, default 10).'),
13
- max_paginas: z.number().min(1).max(10).default(3).optional().describe('Cuántas páginas de 50 resultados escanear antes de rankear (1-10, default 3 = hasta 150 procesos). Más páginas = más cobertura pero más consumo de cuota.'),
15
+ max_paginas: z.number().min(1).max(10).default(3).optional().describe('Cuántas páginas de 50 resultados escanear antes de rankear (1-10, default 3 = hasta 150 procesos). Cada página es una consulta secuencial de 10-17 s (medido en septiembre de 2026), así que 3 páginas rondan los 30-50 s. Más páginas dan más cobertura, pero cuestan cuota y tiempo de forma lineal.'),
14
16
  };
15
17
  /**
16
18
  * Calcula el "Hot Score" de una oportunidad de forma pura (sin efectos secundarios).
17
19
  * Retorna null si el proceso debe omitirse (ya cerrado o bajo el presupuesto mínimo).
18
- * Ponderación: baja competencia (máx 50) + urgencia (máx 30) + presupuesto (máx 20) + facilidad (máx 5).
20
+ * Ponderación: baja competencia (máx 50) + urgencia (máx 30) + presupuesto (máx 20)
21
+ * + facilidad (máx 5) + segundo llamado (máx 10). Máximo teórico: 115 pts.
19
22
  */
20
23
  export function evaluarOportunidad(item, now, minBudget = 0) {
21
24
  const budget = item.montos?.monto_disponible_clp || item.montos?.monto_disponible || 0;
22
25
  if (budget < minBudget)
23
26
  return null;
27
+ // ⚠ La fecha se interpreta con `parsearFechaApi`, NO con `new Date()`. La API
28
+ // entrega "2026-09-11 12:00" sin zona horaria, y V8 lo leería en la del
29
+ // servidor: medido, el mismo dato daba 15:00Z desplegado en Chile y 12:00Z
30
+ // en UTC. Es decir, `horas_restantes` —y con ella hasta 30 puntos de
31
+ // urgencia— cambiaban según dónde corriera el proceso. Ahora el resultado
32
+ // es el mismo en cualquier parte.
24
33
  let hoursLeft = 0;
25
- if (item.fechas?.fecha_cierre) {
26
- const cierreTime = new Date(item.fechas.fecha_cierre).getTime();
27
- hoursLeft = (cierreTime - now) / (1000 * 60 * 60);
34
+ const cierre = parsearFechaApi(item.fechas?.fecha_cierre);
35
+ if (cierre) {
36
+ hoursLeft = (cierre.getTime() - now) / (1000 * 60 * 60);
28
37
  }
29
38
  if (hoursLeft <= 0)
30
39
  return null;
@@ -80,6 +89,25 @@ export function evaluarOportunidad(item, now, minBudget = 0) {
80
89
  score += 5;
81
90
  factors.push('Sin documentos adjuntos (postulación rápida sin leer bases) (+5 pts)');
82
91
  }
92
+ // Factor 5: Segundo Llamado — Máx 10 pts
93
+ //
94
+ // Un segundo llamado significa que el primero no logró adjudicar. Vale
95
+ // señalarlo por dos razones: el comprador vuelve con más urgencia, y existe
96
+ // un motivo de fracaso concreto que conviene averiguar —si sabes cumplir lo
97
+ // que otros no pudieron, es tu ventaja; si el presupuesto era corto, es una
98
+ // pérdida de tiempo—.
99
+ //
100
+ // ⚠ Lo que NO implica es menos competencia, aunque suene intuitivo. Medido
101
+ // contra la API real: de 200 procesos activos, el único en segundo llamado
102
+ // tenía 11 ofertas. Un primer llamado puede caerse porque todas las ofertas
103
+ // fueron inadmisibles por papeleo, y entonces el segundo atrae a los mismos
104
+ // interesados y más. Por eso el factor puntúa moderado y la competencia
105
+ // real la sigue reportando el Factor 1, que es quien la mide de verdad.
106
+ const llamado = item.convocatoria?.estado_convocatoria ?? 1;
107
+ if (llamado === 2) {
108
+ score += 10;
109
+ factors.push('Segundo llamado: el primero no logró adjudicar, así que el comprador vuelve con urgencia — averigua por qué falló antes de cotizar, ahí está la ventaja o la trampa (+10 pts)');
110
+ }
83
111
  return {
84
112
  codigo: item.codigo,
85
113
  nombre: item.nombre,
@@ -89,6 +117,8 @@ export function evaluarOportunidad(item, now, minBudget = 0) {
89
117
  ofertas_recibidas: bids,
90
118
  horas_restantes: Math.round(hoursLeft * 10) / 10,
91
119
  fecha_cierre: item.fechas?.fecha_cierre,
120
+ fecha_cierre_hora_chile: enHoraDeChile(item.fechas?.fecha_cierre),
121
+ llamado,
92
122
  puntuacion_caliente: score,
93
123
  factores_calificacion: factors,
94
124
  };
@@ -129,7 +159,9 @@ export async function recolectarDatosRadar(client, params, now = Date.now()) {
129
159
  }
130
160
  export function registerRadarOportunidades(server, client) {
131
161
  server.registerTool(TOOL_NAME, {
162
+ title: "Radar de oportunidades",
132
163
  description: TOOL_DESCRIPTION,
164
+ annotations: { readOnlyHint: true, openWorldHint: true },
133
165
  inputSchema: inputSchema,
134
166
  }, async (args) => {
135
167
  try {
@@ -143,6 +175,10 @@ export function registerRadarOportunidades(server, client) {
143
175
  };
144
176
  }
145
177
  const result = {
178
+ // Va primero y en la salida —no en los logs— porque quien decide si
179
+ // alcanza a cotizar necesita leerlo. `horas_restantes` se calcula
180
+ // sobre esta misma interpretación.
181
+ _nota_horaria: NOTA_ZONA_HORARIA,
146
182
  total_oportunidades_analizadas: datos.totalAnalizadas,
147
183
  radar_limite_resultados: datos.limite,
148
184
  oportunidades_calientes: datos.oportunidades,
@@ -1 +1 @@
1
- {"version":3,"file":"radar-oportunidades.js","sourceRoot":"","sources":["../../src/tools/radar-oportunidades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radar-oportunidades.js","sourceRoot":"","sources":["../../src/tools/radar-oportunidades.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,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD,MAAM,gBAAgB,GAAG;;kHAEyF,CAAC;AAEnH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;IAC/G,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;IACjI,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;IACzI,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;IAC1J,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wSAAwS,CAAC;CAChX,CAAC;AAsBF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAoB,EACpB,GAAW,EACX,SAAS,GAAG,CAAC;IAEb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,CAAC,CAAC;IACvF,IAAI,MAAM,GAAG,SAAS;QAAE,OAAO,IAAI,CAAC;IAEpC,8EAA8E;IAC9E,0EAA0E;IAC1E,6EAA6E;IAC7E,uEAAuE;IACvE,4EAA4E;IAC5E,oCAAoC;IACpC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,MAAM,EAAE,CAAC;QACX,SAAS,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEhC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,0CAA0C;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,uBAAuB,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC9D,CAAC;IAED,6CAA6C;IAC7C,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzE,CAAC;SAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QAC3B,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACxE,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC7D,CAAC;IAED,iDAAiD;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACvF,CAAC;IAED,yCAAyC;IACzC,EAAE;IACF,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,sBAAsB;IACtB,EAAE;IACF,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,mBAAmB,IAAI,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,+KAA+K,CAAC,CAAC;IAChM,CAAC;IAED,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,mBAAmB,IAAI,iBAAiB;QACrE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,iBAAiB;QAC5D,sBAAsB,EAAE,MAAM;QAC9B,iBAAiB,EAAE,IAAI;QACvB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,EAAE;QAChD,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY;QACvC,uBAAuB,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QACjE,OAAO;QACP,mBAAmB,EAAE,KAAK;QAC1B,qBAAqB,EAAE,OAAO;KAC/B,CAAC;AACJ,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAwB,EACxB,MAAmB,EACnB,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,6CAA6C,UAAU,kBAAkB,MAAM,CAAC,MAAM,IAAI,OAAO,QAAQ,MAAM,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;IAE7I,sFAAsF;IACtF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;QACpC,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;QAClC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,SAAS;QACxB,aAAa,EAAE,EAAE;KAClB,EAAE,UAAU,CAAC,CAAC;IAEf,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACjD,MAAM,aAAa,GAAuB,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAI,QAAQ;YAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,mDAAmD;IACnD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAC9C,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QAC7C,eAAe,EAAE,aAAa,CAAC,MAAM;QACrC,MAAM;QACN,iBAAiB,EAAE,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,MAAwB;IACpF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,wBAAwB;QAE/B,WAAW,EAAE,gBAAgB;QAE7B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,WAAW,EAAE,WAAW;KACzB,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAEvD,IAAI,KAAK,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,qFAAqF;yBAC5F,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG;gBACb,oEAAoE;gBACpE,kEAAkE;gBAClE,mCAAmC;gBACnC,aAAa,EAAE,iBAAiB;gBAChC,8BAA8B,EAAE,KAAK,CAAC,eAAe;gBACrD,uBAAuB,EAAE,KAAK,CAAC,MAAM;gBACrC,uBAAuB,EAAE,KAAK,CAAC,aAAa;aAC7C,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,+CAA+C,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tool: verificar_hora_oficial
3
+ *
4
+ * Compara el reloj de esta máquina con la hora oficial de Chile, que fija el
5
+ * SHOA (Servicio Hidrográfico y Oceanográfico de la Armada).
6
+ *
7
+ * Existe porque los plazos de este servidor se calculan restando la hora local:
8
+ * si el reloj está desviado, `horas_restantes` y el puntaje de urgencia del
9
+ * radar quedan mal aunque la fecha de la API se interprete perfectamente.
10
+ */
11
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
12
+ export declare function registerVerificarHora(server: McpServer): void;
13
+ //# sourceMappingURL=verificar-hora.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verificar-hora.d.ts","sourceRoot":"","sources":["../../src/tools/verificar-hora.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyD7D"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Tool: verificar_hora_oficial
3
+ *
4
+ * Compara el reloj de esta máquina con la hora oficial de Chile, que fija el
5
+ * SHOA (Servicio Hidrográfico y Oceanográfico de la Armada).
6
+ *
7
+ * Existe porque los plazos de este servidor se calculan restando la hora local:
8
+ * si el reloj está desviado, `horas_restantes` y el puntaje de urgencia del
9
+ * radar quedan mal aunque la fecha de la API se interprete perfectamente.
10
+ */
11
+ import { consultarHoraOficial, interpretarDesfase, SERVIDOR_NTP_CHILE, DESFASE_PREOCUPANTE_MS, } from '../utils/ntp.js';
12
+ import { NOTA_ZONA_HORARIA } from '../utils/fechas.js';
13
+ import { safeError } from '../utils/redact.js';
14
+ const TOOL_NAME = 'verificar_hora_oficial';
15
+ const TOOL_DESCRIPTION = `Compara el reloj de esta máquina con la hora oficial de Chile (${SERVIDOR_NTP_CHILE}, del SHOA).
16
+ Úsala cuando los plazos no cuadren o antes de decidir sobre un cierre ajustado: "horas_restantes" y el puntaje de urgencia del radar se calculan restando la hora local, así que un reloj desviado los falsea aunque los datos de la API sean correctos.
17
+ No consume cuota de la API de Mercado Público. Si la red bloquea el puerto UDP 123 —habitual en redes corporativas— lo informa sin fallar.`;
18
+ export function registerVerificarHora(server) {
19
+ server.registerTool(TOOL_NAME, {
20
+ title: 'Verificar la hora oficial de Chile',
21
+ description: TOOL_DESCRIPTION,
22
+ annotations: { readOnlyHint: true, openWorldHint: true },
23
+ }, async () => {
24
+ try {
25
+ const r = await consultarHoraOficial();
26
+ if (!r.ok) {
27
+ return {
28
+ content: [{
29
+ type: 'text',
30
+ text: JSON.stringify({
31
+ sincronizado: null,
32
+ servidor_consultado: r.servidor,
33
+ motivo: r.motivo,
34
+ que_significa: 'No se pudo comprobar el reloj, lo que NO implica que esté mal: solo que no se pudo verificar. Los plazos siguen calculándose con la hora local de esta máquina.',
35
+ alternativa: 'Compara manualmente el reloj del sistema con https://www.horaoficial.cl (SHOA).',
36
+ }, null, 2),
37
+ }],
38
+ };
39
+ }
40
+ const preocupante = Math.abs(r.desfaseMs) >= DESFASE_PREOCUPANTE_MS;
41
+ return {
42
+ content: [{
43
+ type: 'text',
44
+ text: JSON.stringify({
45
+ sincronizado: !preocupante,
46
+ servidor_consultado: r.servidor,
47
+ hora_oficial_chile_utc: r.horaOficial,
48
+ hora_de_esta_maquina_utc: r.horaLocal,
49
+ desfase_ms: r.desfaseMs,
50
+ demora_consulta_ms: r.demoraMs,
51
+ diagnostico: interpretarDesfase(r.desfaseMs),
52
+ _nota_horaria: NOTA_ZONA_HORARIA,
53
+ }, null, 2),
54
+ }],
55
+ // Un reloj desviado más de un minuto puede costar una licitación:
56
+ // se marca como error para que el modelo no lo pase por alto.
57
+ isError: preocupante,
58
+ };
59
+ }
60
+ catch (error) {
61
+ return {
62
+ content: [{
63
+ type: 'text',
64
+ text: `No se pudo verificar la hora oficial: ${safeError(error)}. Los plazos siguen usando el reloj local de esta máquina.`,
65
+ }],
66
+ isError: true,
67
+ };
68
+ }
69
+ });
70
+ }
71
+ //# sourceMappingURL=verificar-hora.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verificar-hora.js","sourceRoot":"","sources":["../../src/tools/verificar-hora.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,GACrF,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,MAAM,gBAAgB,GAAG,kEAAkE,kBAAkB;;2IAE8B,CAAC;AAE5I,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,oCAAoC;QAC3C,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAEvC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACV,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,YAAY,EAAE,IAAI;gCAClB,mBAAmB,EAAE,CAAC,CAAC,QAAQ;gCAC/B,MAAM,EAAE,CAAC,CAAC,MAAM;gCAChB,aAAa,EAAE,iKAAiK;gCAChL,WAAW,EAAE,iFAAiF;6BAC/F,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,YAAY,EAAE,CAAC,WAAW;4BAC1B,mBAAmB,EAAE,CAAC,CAAC,QAAQ;4BAC/B,sBAAsB,EAAE,CAAC,CAAC,WAAW;4BACrC,wBAAwB,EAAE,CAAC,CAAC,SAAS;4BACrC,UAAU,EAAE,CAAC,CAAC,SAAS;4BACvB,kBAAkB,EAAE,CAAC,CAAC,QAAQ;4BAC9B,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;4BAC5C,aAAa,EAAE,iBAAiB;yBACjC,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ,CAAC;gBACF,kEAAkE;gBAClE,8DAA8D;gBAC9D,OAAO,EAAE,WAAW;aACrB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,yCAAyC,SAAS,CAAC,KAAK,CAAC,4DAA4D;qBAC5H,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verificar-oc.d.ts","sourceRoot":"","sources":["../../src/tools/verificar-oc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAkBhE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA0GrF"}
1
+ {"version":3,"file":"verificar-oc.d.ts","sourceRoot":"","sources":["../../src/tools/verificar-oc.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAkBhE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA8GrF"}
@@ -21,7 +21,9 @@ const inputSchema = {
21
21
  };
22
22
  export function registerVerificarOC(server, client) {
23
23
  server.registerTool(TOOL_NAME, {
24
+ title: "Verificar Orden de Compra",
24
25
  description: TOOL_DESCRIPTION,
26
+ annotations: { readOnlyHint: true, openWorldHint: false },
25
27
  inputSchema: inputSchema,
26
28
  }, async (args) => {
27
29
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"verificar-oc.js","sourceRoot":"","sources":["../../src/tools/verificar-oc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verificar-oc.js","sourceRoot":"","sources":["../../src/tools/verificar-oc.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ const TOOL_DESCRIPTION = `Verifica que el ticket de acceso a la API de Mercado P
14
14
  NUNCA revela el valor del ticket: solo informa si funciona y muestra los últimos 4 caracteres como referencia.
15
15
  Úsala como primer diagnóstico cuando otras herramientas fallen con errores de autenticación.`;
16
16
  export function registerVerificarTicket(server, client) {
17
- server.registerTool(TOOL_NAME, { description: TOOL_DESCRIPTION }, async () => {
17
+ server.registerTool(TOOL_NAME, { title: "Verificar el ticket de acceso", description: TOOL_DESCRIPTION, annotations: { readOnlyHint: true, openWorldHint: true } }, async () => {
18
18
  const referencia = pista(process.env.COMPRA_AGIL_TICKET);
19
19
  if (!process.env.COMPRA_AGIL_TICKET) {
20
20
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"verificar-ticket.js","sourceRoot":"","sources":["../../src/tools/verificar-ticket.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAErC,MAAM,gBAAgB,GAAG;;6FAEoE,CAAC;AAE9F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAwB;IACjF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT,EAAE,WAAW,EAAE,gBAAgB,EAAE,EACjC,KAAK,IAAI,EAAE;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,8BAA8B;4BAC9B,EAAE;4BACF,wFAAwF;4BACxF,4EAA4E;4BAC5E,EAAE;4BACF,6EAA6E;4BAC7E,yCAAyC;yBAC1C,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,yDAAyD;YACzD,EAAE;YACF,yEAAyE;YACzE,0EAA0E;YAC1E,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,8BAA8B;4BAC9B,EAAE;4BACF,uBAAuB,UAAU,EAAE;4BACnC,mDAAmD,IAAI,CAAC,UAAU,CAAC,gBAAgB,gBAAgB;4BACnG,mCAAmC,MAAM,CAAC,iBAAiB,EAAE,CAAC,aAAa,cAAc;4BACzF,EAAE;4BACF,yEAAyE;4BACzE,qEAAqE;yBACtE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,kBAAkB;gBACjD,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACzB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,0DAA0D;4BAC1D,EAAE;4BACF,uBAAuB,UAAU,EAAE;4BACnC,WAAW,OAAO,EAAE;yBACrB,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"verificar-ticket.js","sourceRoot":"","sources":["../../src/tools/verificar-ticket.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAErC,MAAM,gBAAgB,GAAG;;6FAEoE,CAAC;AAE9F,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAwB;IACjF,MAAM,CAAC,YAAY,CACjB,SAAS,EACT,EAAE,KAAK,EAAE,+BAA+B,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EACnI,KAAK,IAAI,EAAE;QACT,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,8BAA8B;4BAC9B,EAAE;4BACF,wFAAwF;4BACxF,4EAA4E;4BAC5E,EAAE;4BACF,6EAA6E;4BAC7E,yCAAyC;yBAC1C,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,yDAAyD;YACzD,EAAE;YACF,yEAAyE;YACzE,0EAA0E;YAC1E,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,8BAA8B;4BAC9B,EAAE;4BACF,uBAAuB,UAAU,EAAE;4BACnC,mDAAmD,IAAI,CAAC,UAAU,CAAC,gBAAgB,gBAAgB;4BACnG,mCAAmC,MAAM,CAAC,iBAAiB,EAAE,CAAC,aAAa,cAAc;4BACzF,EAAE;4BACF,yEAAyE;4BACzE,qEAAqE;yBACtE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,kBAAkB;gBACjD,CAAC,CAAC,KAAK,CAAC,iBAAiB;gBACzB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,0DAA0D;4BAC1D,EAAE;4BACF,uBAAuB,UAAU,EAAE;4BACnC,WAAW,OAAO,EAAE;yBACrB,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Límite de concurrencia adaptativo para las consultas a la API.
3
+ *
4
+ * ⚠ POR QUÉ EXISTE: las herramientas de análisis piden varios detalles a la vez
5
+ * —en serie tardaban más de 105 s y ningún cliente MCP espera tanto—, pero un
6
+ * paralelismo fijo es igual de ingenuo en el otro sentido. Medido en
7
+ * producción el 8 de septiembre de 2026, el endpoint de detalle tardaba 20-25 s
8
+ * y devolvía HTTP 504 en 1 de cada 3 consultas: cuando el servicio está así,
9
+ * insistir con la misma tanda solo produce más 504 y gasta cuota en llamadas
10
+ * condenadas.
11
+ *
12
+ * La política es la de control de congestión de TCP (AIMD): ante una señal de
13
+ * saturación se baja a la mitad de inmediato, y se sube de a uno solo cuando
14
+ * una tanda completa sale limpia. Bajar rápido y subir despacio es lo correcto
15
+ * aquí porque el costo de los errores es asimétrico — un 504 desperdicia 30
16
+ * segundos de espera, mientras que ir un poco lento solo cuesta unos segundos.
17
+ *
18
+ * Lo que NO cuenta como congestión: 400, 404 y demás errores por consulta.
19
+ * Esos hablan del ítem pedido, no del estado del servicio, y reaccionar a
20
+ * ellos bajaría el paralelismo por motivos equivocados. El 429 tampoco: de la
21
+ * cuota se encarga el RateLimiter, que sabe esperar el `Retry-After`.
22
+ */
23
+ export interface OpcionesConcurrencia {
24
+ /** Tareas simultáneas al empezar. */
25
+ inicial?: number;
26
+ /** Nunca se baja de aquí: con 0 no avanzaría nada. */
27
+ minimo?: number;
28
+ /** Techo al recuperarse. */
29
+ maximo?: number;
30
+ }
31
+ /** ¿El fallo habla del servicio saturado o del ítem que se pidió? */
32
+ export declare function esSenalDeCongestion(error: unknown): boolean;
33
+ export declare class LimitadorConcurrencia {
34
+ private limite;
35
+ private readonly minimo;
36
+ private readonly maximo;
37
+ private tandas;
38
+ private congestiones;
39
+ constructor(opciones?: OpcionesConcurrencia);
40
+ get limiteActual(): number;
41
+ estadisticas(): {
42
+ limiteActual: number;
43
+ minimo: number;
44
+ maximo: number;
45
+ tandas: number;
46
+ congestiones: number;
47
+ };
48
+ /** Disminución multiplicativa: a la mitad, en cuanto aparece la primera señal. */
49
+ private reducir;
50
+ /** Aumento aditivo: de a uno, y solo tras una tanda entera sin congestión. */
51
+ private aumentar;
52
+ /**
53
+ * Ejecuta las tareas respetando el límite vigente, que puede bajar A MITAD DE
54
+ * TANDA: si las primeras consultas ya vienen con 504, las que quedan salen con
55
+ * menos paralelismo en vez de repetir el error en bloque.
56
+ *
57
+ * Devuelve un arreglo del mismo largo y en el mismo orden que `tareas`, con
58
+ * `null` en las que fallaron. Nunca lanza: quien llama distingue el fallo por
59
+ * el `null`, que es lo que las herramientas de análisis ya esperan.
60
+ */
61
+ ejecutar<T>(tareas: Array<() => Promise<T>>): Promise<Array<T | null>>;
62
+ }
63
+ //# sourceMappingURL=concurrencia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concurrencia.d.ts","sourceRoot":"","sources":["../../src/utils/concurrencia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM3D;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,YAAY,CAAK;gBAEb,QAAQ,GAAE,oBAAyB;IAM/C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,YAAY,IAAI;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;IAU9G,kFAAkF;IAClF,OAAO,CAAC,OAAO;IASf,8EAA8E;IAC9E,OAAO,CAAC,QAAQ;IAMhB;;;;;;;;OAQG;IACG,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAoC7E"}