Files
INFRAESTRUCTURA/AGENTS.md

100 lines
4.6 KiB
Markdown

# 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 <id>
# Resumen
python scripts\infra_changelog.py estado
```
El protocolo `re` de cada equipo lee este fichero (paso 4b), avisa de lo pendiente y lo **aplica automáticamente** con `instalar_global.ps1` antes de continuar.
## 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, el `re` detectará automáticamente los cambios transferibles
> pendientes y los **aplicará de inmediato** ejecutando `instalar_global.ps1` y marcándolos
> como aplicados antes de continuar con la sesión.