# AGENTS.md — Repo INFRAESTRUCTURA (infraestructura compartida Prolongo) > Repo hermano de `biblioteca_negocio_prolongo`. Aquí vive **todo lo que hace > funcionar** los equipos (sobremesa, portátil, VPS): watchers, automatizaciones, > plugins, configuración de servicios y el **changelog global**. > > **Regla 31**: si algo sirve para "hacer funcionar" o automatizar la > infraestructura → este repo. Si es "conocer el negocio" o memoria → biblioteca. ## Estructura | Ruta | Qué es | |------|--------| | `changelog_infra.json` | Fuente de verdad del changelog global (por equipo) | | `CHANGELOG_INFRA.md` | Versión legible (generada; no editar a mano) | | `AGENTS.md` | Este fichero: reglas del repo de infraestructura | | `estado/` | Estado y memoria de infraestructura (ver abajo) | | `estado/ESTADO_DIARIO.md` | Diario de cambios de infraestructura | | `estado/pendientes_infra.json` | Pendientes propios de infraestructura | | `estado/telegram_mensajes.log` | Log del watcher de Telegram (runtime, gitignored) | | `estado/recordatorios_msgbox.json` | Recordatorios locales del message box | | `estado/telegram_tracked_users.json` | Config del watcher (contactos vigilados, etc.) | | `scripts/infra_changelog.py` | Añadir / consultar / marcar cambios del changelog | | `scripts/infra_paths.py` | Resolución de rutas compartidas (INFRAESTRUCTURA ↔ biblioteca) | | `scripts/instalar_global.ps1` | Instalador global del equipo (OmniRoute + OpenCode + watchers) | | `scripts/instalar_watchers.ps1` | Registra las tareas programadas de los watchers | | `scripts/telegram_watcher.py` | Watcher de Telegram (chats → `estado/telegram_mensajes.log`) | | `scripts/recordatorios_msgbox.py` | Recordatorios con message box de Windows | | `scripts/recordatorio.cmd` | Comando corto `recordatorio` (listar/done/add/test/sync) | | `omniroute/` | Vigilante y autostart de OmniRoute | | `opencode/` | Plugin global de OpenCode | | `vps/` | Configuración de servicios del VPS (Gitea, etc.) | ## Reglas del repo 1. **Solo se versiona infraestructura.** Nada de conocimiento de negocio. 2. Todo cambio de infraestructura se **anota en el changelog** (abajo) con `transferible: si|no` para que el otro equipo sepa si debe replicarlo. 3. **Nunca** guardar secretos/tokens en el repo (van a `.env` o variables de usuario; `.gitignore` ya cubre lo típico). 4. Los watchers se ejecutan como **tareas programadas** al iniciar sesión; si se caen, relanzarlos a mano y, si hace falta, reinstalar con `scripts/instalar_watchers.ps1`. 5. Este repo está registrado en **Engram** (proyecto `INFRAESTRUCTURA`), **Gitea** (`jjminguez/INFRAESTRUCTURA`) y **Obsidian** (`03-IT/`). ## Watchers Los watchers viven en `scripts/` y su estado en `estado/`: ```powershell # Instalar/reinstalar tareas programadas (AtLogOn + reinicio si falla) powershell -ExecutionPolicy Bypass -File scripts\instalar_watchers.ps1 # Verificar que corren Get-CimInstance Win32_Process -Filter "Name='python.exe'" | Where-Object { $_.CommandLine -match 'telegram_watcher|recordatorios_msgbox' } ``` `telegram_watcher.py` y `recordatorios_msgbox.py` resuelven las rutas con `scripts/infra_paths.py`: - Estado → `INFRAESTRUCTURA/estado/` - Datos de negocio (`pendientes.json`) y módulos aún compartidos (`idd_channel`, `netatmo_tool`, `alarma_twilio`) → repo `biblioteca_negocio_prolongo` (hermano; override con `BIBLIOTECA_REPO`). ## Changelog global (sobremesa ↔ portátil ↔ VPS) ```powershell # Añadir un cambio (detecta el equipo automáticamente) python scripts\infra_changelog.py add --titulo "..." --categoria watchers --transferible si --detalle "..." # Ver qué falta replicar en ESTE equipo python scripts\infra_changelog.py pendientes # Marcar como aplicado aquí python scripts\infra_changelog.py aplicado # Resumen python scripts\infra_changelog.py estado ``` El protocolo `re` de cada equipo lee este fichero (paso 4b) y avisa de lo pendiente. ## Instalación en un equipo nuevo (p. ej. el portátil) ```powershell git clone https://git.v-encore-lab.com/jjminguez/INFRAESTRUCTURA.git cd INFRAESTRUCTURA powershell -ExecutionPolicy Bypass -File scripts\instalar_global.ps1 ``` Prerrequisitos: Python en el PATH; Node.js + `npm i -g omniroute` para OmniRoute. Copiar además `~/.omniroute` (credenciales), `~/.config/opencode/opencode.jsonc` y `~/.telegram-agent` (sesión de Telegram) desde el otro equipo. > Al arrancar el portátil por primera vez, el `re` avisará de los cambios > transferibles pendientes (incluida esta migración de watchers) y se aplican con > `instalar_global.ps1`.