@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
package/README.md CHANGED
@@ -69,7 +69,7 @@ Este servidor MCP maneja datos públicos de la API de Compra Ágil de Mercado P
69
69
  ## ⚡ Características Clave
70
70
  * **Modernizado para SDK v1.12+:** Carga declarativa y robusta de herramientas, recursos y prompts bajo los nuevos estándares del protocolo.
71
71
  * **Carga de Entorno Autónoma:** El servidor detecta y carga de forma automática y manual el archivo `.env` del directorio de trabajo al iniciarse, facilitando la conexión en clientes MCP de escritorio sin necesidad de configurar variables de sistema globales.
72
- * **Lector de Documentación Integrado (Recursos):** Exposición nativa de guías, normativas y manuales en PDF (dentro de la carpeta `docs/`) como recursos del protocolo MCP (`compra-agil://documentacion/{filename}`). El servidor extrae el texto del PDF de manera local y lo inyecta en el LLM bajo demanda.
72
+ * **Lector de Documentación Integrado (Recursos):** Exposición nativa de guías, normativas y manuales en PDF (dentro de la carpeta `docs/`) como recursos del protocolo MCP (`compra-agil://documentacion/{filename}`). El servidor extrae el texto del PDF de manera local y lo inyecta en el LLM bajo demanda. ⚠ **Solo si clonas este repositorio** — ver [nota sobre la instalación por npm](#-la-documentación-no-viaja-en-el-paquete-de-npm).
73
73
  * **Filtrado Inteligente Anti-Ruido:** Filtros locales en la herramienta `buscar_compras_agiles` (`palabras_clave_requeridas` y `palabras_clave_excluidas`) para afinar búsquedas amplias de la API y remover ofertas irrelevantes.
74
74
  * **Paginación Inteligente y Monitoreo Completo:** La herramienta de cambios recientes admite navegación de páginas (`numero_pagina`), y el demonio de monitoreo periódico procesa de forma recursiva todas las páginas de resultados (`client.buscarTodo()`) para evitar pérdidas de alertas.
75
75
  * **Integración del Detalle de OC:** Resuelve de forma dinámica el código alfanumérico o ID numérico de las Órdenes de Compra utilizando la API legada de Mercado Público.
@@ -78,7 +78,7 @@ Este servidor MCP maneja datos públicos de la API de Compra Ágil de Mercado P
78
78
  * **Rate Limiting Local:** Throttle proactivo que espacia las solicitudes bajo un máximo por minuto **antes** de enviarlas, además de reaccionar al error 429 para evitar la inhabilitación temporal del ticket. El estado de cuota persiste entre reinicios, y ante un 429 se honra el header `Retry-After` con espera creciente en vez de bloquear hasta el día siguiente: la cuota es un *token bucket* que se recarga solo (verificado: la API respondió con normalidad 13 min después de un 429).
79
79
  * **Caché de respuestas:** Las consultas repetidas se sirven desde disco sin gastar cuota (15 min para detalles, 5 min para búsquedas). Es lo que hace viable el flujo completo de análisis: repetir `generar_borrador_cotizacion` pasó de 6 consultas y 11 s a **0 consultas y 41 ms**. El ticket nunca entra en la caché.
80
80
  * **Informes imprimibles:** Genera documentos HTML autocontenidos con diseño de impresión real (`@page`, saltos controlados, cabeceras de tabla repetidas) en formatos **Carta, Oficio y A4**.
81
- * **Logs Nativos en el Protocolo:** Inyección de la notificación `sendLoggingMessage` de MCP para registrar y depurar la actividad del servidor directamente dentro de la interfaz del cliente.
81
+ * **Logs Nativos en el Protocolo:** El servidor declara la capacidad `logging` y emite `notifications/message`, así que la actividad se puede seguir y depurar desde la propia interfaz del cliente. El cliente puede ajustar el detalle con `logging/setLevel`. Como esos logs llegan al contexto del modelo, **todo lo enviado pasa antes por la redacción de credenciales** — incluido el endpoint legado de Órdenes de Compra, que lleva el ticket en la URL y se emite como `ticket=[REDACTED]`.
82
82
  * **Manejo Seguro de Documentos (UUID):** Evita errores de tipo `Authentication parameters missing` al tratar con archivos adjuntos protegidos de Compra Ágil (UUIDs) redirigiendo al usuario a la ficha pública del buscador (`https://buscador.mercadopublico.cl/ficha?code={codigo}`) en lugar de entregar enlaces de descarga directa inaccesibles.
83
83
 
84
84
  ---
@@ -341,16 +341,17 @@ const resources = await client.listResources();
341
341
  | `obtener_detalle_compra` | Detalle exhaustivo de una cotización: descripción, ítems y cotizaciones recibidas (confidenciales hasta el estado *Cerrada*). |
342
342
  | `monitorear_cambios_recientes` | Sincronización reactiva e incremental por ventana de cambios, con soporte para paginación. Dos modos excluyentes: **relativo** (`minutos`, máx 1440 / 24 h) o **absoluto** (`cambio_desde`/`cambio_hasta` en ISO-8601, sin techo de 24 h) para resincronizar un período arbitrario. |
343
343
  | `verificar_orden_compra` | Informa si un proceso tiene OC emitida. **No consulta la API por su cuenta** (gastaba cuota para responder siempre "no puedo saberlo"): reutiliza el detalle si ya está en caché e indica cómo confirmarlo en la ficha pública — ver [Limitaciones](#-limitaciones-conocidas-de-la-api). |
344
- | `obtener_detalle_orden_compra` | Consulta detallada del desglose de productos y facturación de una OC utilizando su código alfanumérico o ID numérico. |
345
- | `obtener_estadisticas_uso` | Retorna las estadísticas del limitador de solicitudes local (`requestsToday`, `isLimited`) para optimizar el consumo de la cuota del ticket. |
346
- | `verificar_ticket` | Comprueba que el ticket configurado funcione contra la API real **sin revelar su valor** (solo muestra `••••1234`). Primer diagnóstico recomendado. |
347
- | `obtener_enlace_documento` | Genera el link público y oficial de descarga de un archivo adjunto del proceso de Mercado Público. |
348
- | `descargar_y_leer_documento` | Descarga y extrae el texto plano de un documento adjunto en PDF del proceso de compra de forma remota, permitiendo realizar búsquedas de palabras clave. |
349
- | `consultar_documentos_locales` | Busca y extrae fragmentos coincidentes dentro de los archivos PDF/TXT/MD de ayuda de Compra Ágil guardados en la carpeta local `docs/`. |
344
+ | `obtener_detalle_orden_compra` | Desglose de productos y facturación de una OC. ⚠ **El código debe venir de otra fuente** (la OC que te emitieron, un correo, la ficha pública): consulta la API legada de Órdenes de Compra, y la de Compra Ágil no entrega códigos de OC. |
345
+ | `obtener_estadisticas_uso` | Cuántas consultas lleva esta instalación en el día UTC y si ya recibió un 429. ⚠ Es un **conteo local**, no el saldo del ticket: la API no publica cuánta cuota queda. Persiste entre reinicios. |
346
+ | `verificar_ticket` | Comprueba que el ticket configurado funcione contra la API real **sin revelar su valor** (solo muestra `••••1234`). Primer diagnóstico recomendado. |
347
+ | `verificar_hora_oficial` | Contrasta el reloj de esta máquina con la hora oficial de Chile (`ntp.shoa.cl`, del SHOA). Importa porque `horas_restantes` y el puntaje de urgencia se calculan restando la hora local: un reloj desviado los falsea aunque los datos sean correctos. No consume cuota de Mercado Público. |
348
+ | `obtener_enlace_documento` | Entrega el enlace a la **ficha pública** del proceso, que es donde el adjunto sí es accesible (en un navegador). El enlace heredado de descarga directa se ofrece advirtiendo que hoy responde 404. |
349
+ | `descargar_y_leer_documento` | ⚠ **Hoy no puede descargar los adjuntos de Compra Ágil**: el portal dejó de servirlos por enlace directo (404 verificado) y en la ficha el archivo lo genera JavaScript, sin URL que pedir. Para IDs numéricos responde de inmediato con el enlace a la ficha, sin gastar el intento. Los UUID sí se intentan. |
350
+ | `consultar_documentos_locales` | Busca dentro de los PDF/TXT/MD de `docs/`. Admite **preguntas en lenguaje natural** ("¿qué multas me pueden aplicar?"), no solo palabras sueltas: descompone la consulta en términos, ignora acentos y palabras vacías, y ordena por densidad de coincidencias. ⚠ Requiere una carpeta `docs/` con contenido: **no viene en el paquete de npm** (ver [nota](#-la-documentación-no-viaja-en-el-paquete-de-npm)). |
350
351
  | `analizar_precios_mercado` | Analiza la distribución de precios **cotizados** por la competencia en procesos similares (mín/p25/mediana/promedio/máx) y sugiere un precio competitivo. Advierte cuando la muestra es demasiado dispersa. ⚠ Analiza precios cotizados, **no adjudicados** — ver [Limitaciones](#-limitaciones-conocidas-de-la-api). |
351
352
  | `auditar_compras_desiertas` | Analiza por qué una convocatoria quedó desierta, cruzando su presupuesto y plazo contra los precios que el mercado cotizó en procesos del mismo rubro. Reporta el motivo oficial de deserción. |
352
353
  | `generar_borrador_cotizacion` | Auto-completa propuestas JSON de cotización bajo el esquema oficial, calculando impuestos (19% IVA) y redactando la carta de presentación. Marca explícitamente los campos placeholder. |
353
- | `radar_oportunidades_calientes` | Califica y ordena convocatorias publicadas según un score ponderado (Hot Score) de competencia (sin oferentes), urgencia, presupuesto y simplicidad. Auto-pagina. |
354
+ | `radar_oportunidades_calientes` | Califica y ordena convocatorias publicadas con un score ponderado (Hot Score, máx 115) de competencia, urgencia de cierre, presupuesto, simplicidad y **segundo llamado**. Cada resultado trae el desglose de factores y el campo `llamado`. Auto-pagina. |
354
355
  | `generar_informe` | Genera un **informe profesional imprimible** (HTML autocontenido, diseño A4/Carta/Oficio) y devuelve la ruta del archivo. Ver [Informes](#-informes-imprimibles). |
355
356
 
356
357
  ### Recursos Disponibles (Resources)
@@ -361,7 +362,21 @@ const resources = await client.listResources();
361
362
  | `compra-agil://estados` | `application/json` | Estados de la API con su comportamiento **real verificado**: marca cuáles funcionan (`publicada`, `cerrada`, `desierta`, `cancelada`) y cuáles no (`proveedor_seleccionado` devuelve 0; `oc_emitida` da HTTP 400), pese a estar ambos documentados oficialmente. |
362
363
  | `compra-agil://glosario` | `application/json` | Glosario de acrónimos del dominio de ChileCompra para contextualización semántica de la IA. |
363
364
  | `compra-agil://compras/{codigo}` | `application/json` | Recurso dinámico que resuelve el objeto JSON puro devuelto por la API v2 de una Compra Ágil usando su código único. |
364
- | `compra-agil://documentacion/{filename}` | `text/plain` | Recurso dinámico que lee y extrae todo el contenido de texto de un PDF/TXT/MD local en la carpeta `docs/` en tiempo real. |
365
+ | `compra-agil://documentacion/{filename}` | `text/plain` | Recurso dinámico que lee y extrae todo el contenido de texto de un PDF/TXT/MD local en la carpeta `docs/` en tiempo real. ⚠ Requiere clonar el repositorio — ver la nota siguiente. |
366
+
367
+ #### ⚠️ La documentación no viaja en el paquete de npm
368
+
369
+ El paquete publicado incluye únicamente `dist/` (declarado en `files` de `package.json`), porque las guías en PDF de ChileCompra pesan **12 MB** frente a los ~110 KB del servidor. En consecuencia, **si lo instalas con `npx` o `npm install` en lugar de clonar el repositorio**:
370
+
371
+ * Verás **3 recursos en vez de 13**: `regiones`, `estados` y `glosario`, que están definidos en código. Los diez de `compra-agil://documentacion/…` no existirán.
372
+ * `consultar_documentos_locales` informará que la carpeta `docs/` está vacía, apuntando a tu directorio de trabajo.
373
+
374
+ Ninguna de las 15 herramientas que consultan la API se ve afectada: la limitación alcanza solo a la documentación local.
375
+
376
+ **Si quieres esa documentación**, tienes dos caminos:
377
+
378
+ 1. **Clonar el repositorio** en lugar de instalar desde npm — la carpeta `docs/` viene incluida.
379
+ 2. **Poner tus propios documentos**: crea una carpeta `docs/` en el directorio donde corres el servidor y guarda ahí los PDF, TXT o MD que te interesen. Se expondrán igual como recursos y `consultar_documentos_locales` los buscará. Sirve para tus propias bases técnicas, normativa interna o cualquier material de referencia.
365
380
 
366
381
  ### Prompts Disponibles
367
382
 
@@ -372,7 +387,7 @@ const resources = await client.listResources();
372
387
 
373
388
  ## ⚠️ Limitaciones conocidas de la API
374
389
 
375
- Estos hallazgos fueron **verificados empíricamente** contra el servicio real de Mercado Público (julio 2026, 45 procesos y 52 cotizaciones inspeccionados). La [Guía oficial API Compra Ágil v2](docs/api/) documenta un comportamiento distinto en cada uno de estos puntos.
390
+ Estos hallazgos fueron **verificados empíricamente** contra el servicio real de Mercado Público (julio 2026, 45 procesos y 52 cotizaciones inspeccionados; **re-confirmados en septiembre de 2026** junto a una auditoría de las 15 herramientas). La [Guía oficial API Compra Ágil v2](docs/api/) documenta un comportamiento distinto en cada uno de estos puntos.
376
391
 
377
392
  ### 🔴 La API no publica adjudicaciones
378
393
 
@@ -386,7 +401,7 @@ Estos hallazgos fueron **verificados empíricamente** contra el servicio real de
386
401
 
387
402
  En la muestra, `proveedor_seleccionado` valió `0` en el **100 %** de las cotizaciones y **ningún** proceso traía `id_orden_compra`.
388
403
 
389
- **Consecuencia práctica:** no es posible saber qué oferta ganó ni obtener precios adjudicados. `analizar_precios_mercado` se apoya en precios **cotizados**, que sí son señal de mercado real. `verificar_orden_compra` reportará "sin OC" casi siempre — lo que **no prueba** que la OC no exista, solo que la API no la publica.
404
+ **Consecuencia práctica:** no es posible saber qué oferta ganó ni obtener precios adjudicados. `analizar_precios_mercado` se apoya en precios **cotizados**, que sí son señal de mercado real. `verificar_orden_compra` **ya no consulta la API por su cuenta**: gastaba cuota para responder siempre "no puedo saberlo". Reutiliza el detalle si ya está en caché y, en cualquier caso, indica cómo confirmarlo en la ficha pública. Un "sin OC" **no prueba** que la OC no exista, solo que la API no la publica.
390
405
 
391
406
  ### 📊 Dónde viven los precios
392
407
 
@@ -394,11 +409,30 @@ Solo los procesos **`desierta`** publican sus cotizaciones (medido: `desierta` 5
394
409
 
395
410
  Casi todas esas cotizaciones están declaradas *inadmisibles* — es justamente lo que dejó desierto al proceso. **Se incluyen igualmente** en las estadísticas: un precio ofertado es señal de mercado aunque le hayan rechazado el papeleo, y los motivos reales observados son mayoritariamente formales (*"no cumple con garantía"*, *"no cuenta con giro acorde"*), no de precio. La herramienta reporta los motivos para que puedas ponderarlos.
396
411
 
412
+ ### 📎 Los adjuntos no se pueden descargar por programa
413
+
414
+ | La documentación dice | La realidad medida (septiembre 2026) |
415
+ | :--- | :--- |
416
+ | `documentos[].id` es un `string (UUID)` | La API devuelve **enteros** (observados `1855508`, `1854909`) |
417
+ | Los adjuntos se descargan por su ID | El endpoint heredado responde **404** para todos los adjuntos de Compra Ágil |
418
+ | — | En la ficha pública el enlace es un `<a>` con `href` vacío: la descarga la dispara **JavaScript**, sin URL que un programa pueda pedir |
419
+
420
+ Las **cotizaciones nunca expusieron adjuntos**: el array `documentos[]` existe solo a nivel del proceso, no dentro de `proveedores_cotizando[]`.
421
+
422
+ **Consecuencia práctica:** si un llamado dice *"ver características en adjunto"*, esas especificaciones solo se pueden leer abriendo la ficha en un navegador. Las herramientas de documentos llevan ahí directamente en vez de fallar.
423
+
424
+ ### ⏱️ El 429 no es una cuota diaria: es un balde que se recarga
425
+
426
+ La guía se contradice a sí misma. Su §4 dice esperar *"hasta el inicio del siguiente día calendario"*, pero su §7 manda esperar el header **`Retry-After`** y el glosario define la cuota como un **token bucket** que *"se recarga automáticamente"*. **La medición respalda lo segundo: tras un 429, la API volvió a responder con normalidad 13 minutos después.**
427
+
428
+ Por eso este servidor **no bloquea hasta el día siguiente**: honra `Retry-After` y, si no viene, aplica una espera creciente (15 → 30 → 60 → 120 min) que la primera consulta exitosa reinicia. Si recibes un 429, reintenta en unos minutos antes de suponer que agotaste el día.
429
+
397
430
  ### 🐌 Otras restricciones medidas
398
431
 
399
432
  * **Las consultas sin filtros devuelven HTTP 500.** Hay que enviar al menos un filtro.
400
433
  * **`tamano_pagina` mínimo es 10** (valores `1` y `5` devuelven HTTP 400).
401
- * **La API es lenta:** entre 1 y 14 segundos por consulta según el tamaño de página.
434
+ * **La API es lenta, y empeoró.** Medido el 8 de septiembre de 2026 sobre nueve consultas: búsqueda simple **10-12 s**, búsqueda con texto **13-17 s**, y detalle de un proceso **21-25 s**, con **HTTP 504 intermitentes** en el detalle (1 de cada 3 en esa muestra). La pasarela corta a los ~30 s, así que las consultas grandes fallan enteras. Las herramientas de análisis piden sus detalles en paralelo y la caché evita repetirlos, pero conviene mantener `limite_analisis` bajo: cada unidad es una llamada de detalle más, y cada una puede caerse.
435
+ * **El segundo llamado es poco frecuente:** 6% de los procesos cerrados/desiertos y 0,5% de los activos.
402
436
 
403
437
  ---
404
438
 
@@ -233,6 +233,13 @@ export declare class CompraAgilClient {
233
233
  private readonly ticket;
234
234
  private readonly rateLimiter;
235
235
  private readonly cache;
236
+ /**
237
+ * Compartido por todas las herramientas: lo que una aprende sobre el estado
238
+ * del servicio le sirve a la siguiente. Si `analizar_precios_mercado` acaba
239
+ * de chocar con una tanda de 504, `auditar_compras_desiertas` no debería
240
+ * volver a intentarlo con el paralelismo máximo.
241
+ */
242
+ private readonly concurrencia;
236
243
  /**
237
244
  * @param opciones.persistir Rutas en disco para la cuota y la caché.
238
245
  *
@@ -251,6 +258,28 @@ export declare class CompraAgilClient {
251
258
  * Realiza un GET autenticado a la API.
252
259
  */
253
260
  private request;
261
+ /**
262
+ * Pide varios detalles a la vez, con concurrencia adaptativa.
263
+ *
264
+ * Sustituye al `Promise.all(...map(...catch))` que cada herramienta de
265
+ * análisis tenía por su cuenta. La diferencia no es solo quitar duplicación:
266
+ * al pasar por un único limitador compartido, la saturación que detecta una
267
+ * herramienta protege a las siguientes, y el paralelismo baja a mitad de
268
+ * tanda si los primeros detalles ya vienen con 504.
269
+ *
270
+ * Devuelve un arreglo del mismo largo y orden que `codigos`, con `null` donde
271
+ * la consulta falló — que es como las herramientas ya cuentan sus fallos para
272
+ * distinguir "la API no respondió" de "no había datos".
273
+ */
274
+ detallesEnParalelo(codigos: string[]): Promise<Array<CompraAgilDetalle | null>>;
275
+ /** Estado del limitador de concurrencia, para diagnóstico. */
276
+ getConcurrenciaStats(): {
277
+ limiteActual: number;
278
+ minimo: number;
279
+ maximo: number;
280
+ tandas: number;
281
+ congestiones: number;
282
+ };
254
283
  /**
255
284
  * Devuelve el detalle SOLO si ya está en caché; nunca sale a la red.
256
285
  *
@@ -1 +1 @@
1
- {"version":3,"file":"compra-agil-client.d.ts","sourceRoot":"","sources":["../../src/api/compra-agil-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compra-agil-client.d.ts","sourceRoot":"","sources":["../../src/api/compra-agil-client.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { logger } from '../utils/logger.js';
10
10
  import { handleApiResponse, CompraAgilApiError } from '../utils/error-handler.js';
11
11
  import { RateLimiter, RUTA_ESTADO_POR_DEFECTO } from '../utils/rate-limiter.js';
12
12
  import { ResponseCache } from '../utils/cache.js';
13
+ import { LimitadorConcurrencia } from '../utils/concurrencia.js';
13
14
  import path from 'path';
14
15
  import { registrarSecreto } from '../utils/redact.js';
15
16
  // ─── Cliente ────────────────────────────────────────────────────────
@@ -30,6 +31,13 @@ export class CompraAgilClient {
30
31
  ticket;
31
32
  rateLimiter;
32
33
  cache;
34
+ /**
35
+ * Compartido por todas las herramientas: lo que una aprende sobre el estado
36
+ * del servicio le sirve a la siguiente. Si `analizar_precios_mercado` acaba
37
+ * de chocar con una tanda de 504, `auditar_compras_desiertas` no debería
38
+ * volver a intentarlo con el paralelismo máximo.
39
+ */
40
+ concurrencia;
33
41
  /**
34
42
  * @param opciones.persistir Rutas en disco para la cuota y la caché.
35
43
  *
@@ -49,6 +57,7 @@ export class CompraAgilClient {
49
57
  // que reiniciar el servidor no debe borrar la memoria de un 429.
50
58
  this.rateLimiter = new RateLimiter(15, persistir ? RUTA_ESTADO_POR_DEFECTO : null);
51
59
  this.cache = new ResponseCache({ rutaEstado: persistir ? RUTA_CACHE_POR_DEFECTO : null });
60
+ this.concurrencia = new LimitadorConcurrencia({ maximo: 5 });
52
61
  // El cliente se auto-protege: cualquier consumidor (servidor MCP, daemon,
53
62
  // scripts, tests) queda cubierto sin tener que acordarse de registrarlo.
54
63
  registrarSecreto(ticket);
@@ -116,6 +125,32 @@ export class CompraAgilClient {
116
125
  this.cache.guardar(claveCache, payload, ttl);
117
126
  return payload;
118
127
  }
128
+ /**
129
+ * Pide varios detalles a la vez, con concurrencia adaptativa.
130
+ *
131
+ * Sustituye al `Promise.all(...map(...catch))` que cada herramienta de
132
+ * análisis tenía por su cuenta. La diferencia no es solo quitar duplicación:
133
+ * al pasar por un único limitador compartido, la saturación que detecta una
134
+ * herramienta protege a las siguientes, y el paralelismo baja a mitad de
135
+ * tanda si los primeros detalles ya vienen con 504.
136
+ *
137
+ * Devuelve un arreglo del mismo largo y orden que `codigos`, con `null` donde
138
+ * la consulta falló — que es como las herramientas ya cuentan sus fallos para
139
+ * distinguir "la API no respondió" de "no había datos".
140
+ */
141
+ async detallesEnParalelo(codigos) {
142
+ const resultados = await this.concurrencia.ejecutar(codigos.map((codigo) => () => this.detalle(codigo)));
143
+ const fallidos = resultados.filter((r) => r === null).length;
144
+ if (fallidos > 0) {
145
+ logger.warn(`Detalles en paralelo: ${fallidos} de ${codigos.length} fallaron ` +
146
+ `(concurrencia actual: ${this.concurrencia.limiteActual}).`);
147
+ }
148
+ return resultados;
149
+ }
150
+ /** Estado del limitador de concurrencia, para diagnóstico. */
151
+ getConcurrenciaStats() {
152
+ return this.concurrencia.estadisticas();
153
+ }
119
154
  /**
120
155
  * Devuelve el detalle SOLO si ya está en caché; nunca sale a la red.
121
156
  *
@@ -1 +1 @@
1
- {"version":3,"file":"compra-agil-client.js","sourceRoot":"","sources":["../../src/api/compra-agil-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compra-agil-client.js","sourceRoot":"","sources":["../../src/api/compra-agil-client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ import { registerGenerarBorrador } from './tools/generar-borrador.js';
33
33
  import { registerRadarOportunidades } from './tools/radar-oportunidades.js';
34
34
  import { registerGenerarInforme } from './tools/generar-informe.js';
35
35
  import { registerVerificarTicket } from './tools/verificar-ticket.js';
36
+ import { registerVerificarHora } from './tools/verificar-hora.js';
36
37
  // Resources
37
38
  import { registerRegionesResource } from './resources/regiones.js';
38
39
  import { registerEstadosResource } from './resources/estados.js';
@@ -66,6 +67,17 @@ async function main() {
66
67
  const server = new McpServer({
67
68
  name: 'mcp-compra-agil',
68
69
  version: PKG_VERSION,
70
+ }, {
71
+ // ⚠ SIN ESTA DECLARACIÓN LOS LOGS NUNCA LLEGAN AL CLIENTE. El servidor
72
+ // llamaba a `sendLoggingMessage()` desde utils/logger.ts, pero no
73
+ // declaraba la capacidad `logging`, así que el SDK rechazaba cada envío
74
+ // y el `.catch()` del logger se lo tragaba en silencio. Verificado en
75
+ // auditoría (8 de septiembre de 2026): el servidor anunciaba solo
76
+ // `tools, resources, prompts`, `logging/setLevel` respondía "Method not
77
+ // found" y llegaban 0 notificaciones pese a LOG_LEVEL=debug. La
78
+ // característica que el README anuncia como "Logs Nativos en el
79
+ // Protocolo" nunca había funcionado.
80
+ capabilities: { logging: {} },
69
81
  });
70
82
  // 3. Registrar herramientas (Tools)
71
83
  registerBuscarCompras(server, client);
@@ -81,12 +93,19 @@ async function main() {
81
93
  registerRadarOportunidades(server, client);
82
94
  registerGenerarInforme(server, client);
83
95
  registerVerificarTicket(server, client);
96
+ registerVerificarHora(server);
97
+ // ⚠ Lista mantenida a mano, y por eso frágil: al agregar
98
+ // `verificar_hora_oficial` esto seguía diciendo 15. Es solo un log —la
99
+ // fuente autoritativa es `tools/list` del propio servidor— pero si vuelve a
100
+ // desincronizarse, lo correcto es derivarla del servidor y no volver a
101
+ // parcharla.
84
102
  const TOOL_NAMES = [
85
103
  'buscar_compras_agiles', 'obtener_detalle_compra', 'monitorear_cambios_recientes',
86
104
  'verificar_orden_compra', 'obtener_estadisticas_uso', 'obtener_detalle_orden_compra',
87
105
  'obtener_enlace_documento', 'descargar_y_leer_documento', 'consultar_documentos_locales',
88
106
  'analizar_precios_mercado', 'auditar_compras_desiertas', 'generar_borrador_cotizacion',
89
107
  'radar_oportunidades_calientes', 'generar_informe', 'verificar_ticket',
108
+ 'verificar_hora_oficial',
90
109
  ];
91
110
  logger.info(`${TOOL_NAMES.length} herramientas registradas: ${TOOL_NAMES.join(', ')}`);
92
111
  // 4. Registrar recursos (Resources)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export interface RadarInformeData {
32
32
  /** Tamaño de papel del informe. Por defecto Carta. */
33
33
  formato?: FormatoPapel;
34
34
  }
35
- /** Clasifica el hot score en un tono semántico. Máximo teórico: 105 pts. */
35
+ /** Clasifica el hot score en un tono semántico. Máximo teórico: 115 pts. */
36
36
  export declare function tonoScore(score: number): {
37
37
  tono: TonoBadge;
38
38
  glosa: string;
@@ -8,7 +8,7 @@ import { renderDocumento } from '../render.js';
8
8
  import { portada, kpiRow, tabla, badge, callout, barChartSVG, pieDoc, esc, } from '../components.js';
9
9
  import { clp, numero, fecha, fechaLarga, horasRestantes } from '../format.js';
10
10
  import { TOKENS, PAPEL, FORMATO_POR_DEFECTO } from '../theme.js';
11
- /** Clasifica el hot score en un tono semántico. Máximo teórico: 105 pts. */
11
+ /** Clasifica el hot score en un tono semántico. Máximo teórico: 115 pts. */
12
12
  export function tonoScore(score) {
13
13
  if (score >= 80)
14
14
  return { tono: 'critico', glosa: 'Muy caliente' };
@@ -157,7 +157,7 @@ ${fichas ? `<h2>Oportunidades destacadas</h2>${fichas}` : ''}
157
157
 
158
158
  ${ops.length > 0 ? `<h2>Listado completo</h2>${tablaOps}` : ''}
159
159
 
160
- ${callout('Cómo se calcula la puntuación', `<p style="margin:0">Fórmula ponderada sobre 105 puntos: baja competencia (hasta 50 pts) + urgencia de cierre (hasta 30 pts) + tamaño de presupuesto (hasta 20 pts) + ausencia de bases adjuntas (5 pts). Una puntuación alta indica un proceso con pocos oferentes, cierre próximo y monto atractivo.</p>`)}
160
+ ${callout('Cómo se calcula la puntuación', `<p style="margin:0">Fórmula ponderada sobre 115 puntos: baja competencia (hasta 50 pts) + urgencia de cierre (hasta 30 pts) + tamaño de presupuesto (hasta 20 pts) + ausencia de bases adjuntas (5 pts) + segundo llamado (10 pts). Una puntuación alta indica un proceso con pocos oferentes, cierre próximo y monto atractivo. El segundo llamado suma porque el comprador vuelve con urgencia tras no lograr adjudicar, pero no implica menos competencia: esa la mide el primer factor.</p>`)}
161
161
 
162
162
  ${pieDoc(`Informe generado automáticamente por mcp-compra-agil el ${fecha(data.generadoEn.toISOString())} a partir de datos públicos de la API Compra Ágil v2 de Mercado Público (ChileCompra). Los datos reflejan el estado al momento de la consulta y pueden variar. · Formato de impresión: ${PAPEL[formato].glosa}`)}
163
163
  `.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"radar-oportunidades.js","sourceRoot":"","sources":["../../../src/reports/templates/radar-oportunidades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radar-oportunidades.js","sourceRoot":"","sources":["../../../src/reports/templates/radar-oportunidades.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"glosario.d.ts","sourceRoot":"","sources":["../../src/resources/glosario.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6DpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBhE"}
1
+ {"version":3,"file":"glosario.d.ts","sourceRoot":"","sources":["../../src/resources/glosario.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiEpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBhE"}
@@ -55,11 +55,15 @@ const GLOSARIO = [
55
55
  },
56
56
  {
57
57
  termino: '429 Too Many Requests',
58
- definicion: 'Código HTTP que indica que se superó el límite de solicitudes permitidas por día. La cuota se restablece al inicio del siguiente día calendario UTC.',
58
+ definicion: 'Código HTTP que indica que se agotaron temporalmente los tokens de cuota. NO implica esperar al día siguiente: verificado contra la API real (septiembre 2026), el servicio volvió a responder con normalidad 13 minutos después de un 429. La §4 de la guía oficial dice que el límite es por día calendario, pero su §7 y su glosario describen un token bucket que se recarga solo — y es esto último lo que hace el servicio. Reintenta en unos minutos antes de suponer que agotaste el día.',
59
+ },
60
+ {
61
+ termino: 'Token Bucket',
62
+ definicion: 'Algoritmo de control de tasa: un "balde" de fichas se consume con cada solicitud y se recarga automáticamente con el tiempo. Es el modelo que sigue la cuota de esta API, por eso un 429 se supera esperando minutos y no horas. Las ráfagas son lo que lo vacía: las herramientas de análisis, que hacen varias consultas seguidas, son las que más lo agotan.',
59
63
  },
60
64
  {
61
65
  termino: 'Retry-After',
62
- definicion: 'Header HTTP que indica cuántos segundos esperar antes de volver a intentar una solicitud rechazada por exceso de cuota.',
66
+ definicion: 'Header HTTP que indica cuántos segundos esperar antes de volver a intentar una solicitud rechazada por exceso de cuota. Este servidor lo honra cuando la API lo envía; si no viene, aplica una espera creciente (15 → 30 → 60 → 120 min) que se reinicia con la primera consulta exitosa.',
63
67
  },
64
68
  ];
65
69
  export function registerGlosarioResource(server) {
@@ -1 +1 @@
1
- {"version":3,"file":"glosario.js","sourceRoot":"","sources":["../../src/resources/glosario.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,QAAQ,GAAG;IACf;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,2HAA2H;KACxI;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,6IAA6I;KAC1J;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,yFAAyF;KACtG;IACD;QACE,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,8JAA8J;KAC3K;IACD;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,yIAAyI;KACtJ;IACD;QACE,OAAO,EAAE,sBAAsB;QAC/B,UAAU,EAAE,mGAAmG;KAChH;IACD;QACE,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,mJAAmJ;KAChK;IACD;QACE,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,wHAAwH;KACrI;IACD;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,+DAA+D;KAC5E;IACD;QACE,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,6HAA6H;KAC1I;IACD;QACE,OAAO,EAAE,4BAA4B;QACrC,UAAU,EAAE,wLAAwL;KACrM;IACD;QACE,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,6IAA6I;KAC1J;IACD;QACE,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,sJAAsJ;KACnK;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,yHAAyH;KACtI;CACF,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,gBAAgB,CACrB,UAAU,EACV,wBAAwB,EACxB;QACE,WAAW,EAAE,oLAAoL;QACjM,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,wBAAwB;gBAC7B,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"glosario.js","sourceRoot":"","sources":["../../src/resources/glosario.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,QAAQ,GAAG;IACf;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,2HAA2H;KACxI;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,6IAA6I;KAC1J;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,yFAAyF;KACtG;IACD;QACE,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,8JAA8J;KAC3K;IACD;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,yIAAyI;KACtJ;IACD;QACE,OAAO,EAAE,sBAAsB;QAC/B,UAAU,EAAE,mGAAmG;KAChH;IACD;QACE,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,mJAAmJ;KAChK;IACD;QACE,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,wHAAwH;KACrI;IACD;QACE,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,+DAA+D;KAC5E;IACD;QACE,OAAO,EAAE,UAAU;QACnB,UAAU,EAAE,6HAA6H;KAC1I;IACD;QACE,OAAO,EAAE,4BAA4B;QACrC,UAAU,EAAE,wLAAwL;KACrM;IACD;QACE,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,6IAA6I;KAC1J;IACD;QACE,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,meAAme;KAChf;IACD;QACE,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,iWAAiW;KAC9W;IACD;QACE,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,2RAA2R;KACxS;CACF,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,gBAAgB,CACrB,UAAU,EACV,wBAAwB,EACxB;QACE,WAAW,EAAE,oLAAoL;QACjM,QAAQ,EAAE,kBAAkB;KAC7B,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,wBAAwB;gBAC7B,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -10,6 +10,7 @@ import path from 'path';
10
10
  import { loadEnvManual } from '../utils/env-loader.js';
11
11
  import { CompraAgilClient } from '../api/compra-agil-client.js';
12
12
  import { safeError, registrarSecreto } from '../utils/redact.js';
13
+ import { enHoraDeChile } from '../utils/fechas.js';
13
14
  // Inicializar entorno
14
15
  loadEnvManual();
15
16
  const TICKET = process.env.COMPRA_AGIL_TICKET;
@@ -95,7 +96,16 @@ async function runCheck() {
95
96
  continue;
96
97
  alertedCodes.add(item.codigo);
97
98
  alertCount++;
98
- const alertMsg = `[${new Date().toISOString()}] [ALERTA] Código: ${item.codigo} | Presupuesto: $${item.montos.monto_disponible_clp.toLocaleString('es-CL')} CLP | Cierre: ${item.fechas.fecha_cierre} | Institución: ${item.institucion.organismo_comprador} | Coincidencia: "${matchedKeyword}" | Nombre: ${item.nombre.trim()}\n`;
99
+ // El cierre se informa en hora de Chile además del valor crudo: la API
100
+ // no declara zona horaria en ese campo y se interpreta como UTC, así
101
+ // que leer el crudo como hora local haría creer que quedan tres horas
102
+ // más de las reales. En una alerta cuyo propósito es avisar a tiempo,
103
+ // esa confusión sería justamente el fallo que se quiere evitar.
104
+ const cierreChile = enHoraDeChile(item.fechas.fecha_cierre);
105
+ const cierreTexto = cierreChile
106
+ ? `${cierreChile} (hora de Chile; la API entrega "${item.fechas.fecha_cierre}" sin zona horaria)`
107
+ : String(item.fechas.fecha_cierre);
108
+ const alertMsg = `[${new Date().toISOString()}] [ALERTA] Código: ${item.codigo} | Presupuesto: $${item.montos.monto_disponible_clp.toLocaleString('es-CL')} CLP | Cierre: ${cierreTexto} | Institución: ${item.institucion.organismo_comprador} | Coincidencia: "${matchedKeyword}" | Nombre: ${item.nombre.trim()}\n`;
99
109
  // Escribir en alerts.log
100
110
  fs.appendFileSync(ALERTS_LOG_PATH, alertMsg, 'utf8');
101
111
  // Mostrar alerta en consola
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/services/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/services/monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analizar-precios-mercado.d.ts","sourceRoot":"","sources":["../../src/tools/analizar-precios-mercado.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AA2BhE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA6LhG"}
1
+ {"version":3,"file":"analizar-precios-mercado.d.ts","sourceRoot":"","sources":["../../src/tools/analizar-precios-mercado.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AA2BhE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA0PhG"}