@mcptoolshop/claude-guardian 1.1.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 (63) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/HANDBOOK.md +209 -0
  3. package/LICENSE +21 -0
  4. package/README.es.md +185 -0
  5. package/README.fr.md +185 -0
  6. package/README.hi.md +184 -0
  7. package/README.it.md +184 -0
  8. package/README.ja.md +185 -0
  9. package/README.md +184 -0
  10. package/README.pt-BR.md +184 -0
  11. package/README.zh.md +185 -0
  12. package/dist/budget-store.d.ts +33 -0
  13. package/dist/budget-store.js +62 -0
  14. package/dist/budget-store.js.map +1 -0
  15. package/dist/budget.d.ts +52 -0
  16. package/dist/budget.js +136 -0
  17. package/dist/budget.js.map +1 -0
  18. package/dist/cli.d.ts +2 -0
  19. package/dist/cli.js +387 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/defaults.d.ts +51 -0
  22. package/dist/defaults.js +67 -0
  23. package/dist/defaults.js.map +1 -0
  24. package/dist/doctor.d.ts +69 -0
  25. package/dist/doctor.js +294 -0
  26. package/dist/doctor.js.map +1 -0
  27. package/dist/errors.d.ts +21 -0
  28. package/dist/errors.js +46 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/fs-utils.d.ts +23 -0
  31. package/dist/fs-utils.js +184 -0
  32. package/dist/fs-utils.js.map +1 -0
  33. package/dist/handle-count.d.ts +9 -0
  34. package/dist/handle-count.js +68 -0
  35. package/dist/handle-count.js.map +1 -0
  36. package/dist/incident.d.ts +33 -0
  37. package/dist/incident.js +115 -0
  38. package/dist/incident.js.map +1 -0
  39. package/dist/log-manager.d.ts +17 -0
  40. package/dist/log-manager.js +418 -0
  41. package/dist/log-manager.js.map +1 -0
  42. package/dist/mcp-server.d.ts +8 -0
  43. package/dist/mcp-server.js +503 -0
  44. package/dist/mcp-server.js.map +1 -0
  45. package/dist/process-monitor.d.ts +56 -0
  46. package/dist/process-monitor.js +214 -0
  47. package/dist/process-monitor.js.map +1 -0
  48. package/dist/recovery-plan.d.ts +22 -0
  49. package/dist/recovery-plan.js +146 -0
  50. package/dist/recovery-plan.js.map +1 -0
  51. package/dist/state.d.ts +64 -0
  52. package/dist/state.js +140 -0
  53. package/dist/state.js.map +1 -0
  54. package/dist/types.d.ts +64 -0
  55. package/dist/types.js +2 -0
  56. package/dist/types.js.map +1 -0
  57. package/dist/watch-daemon.d.ts +7 -0
  58. package/dist/watch-daemon.js +162 -0
  59. package/dist/watch-daemon.js.map +1 -0
  60. package/dist/watchdog.d.ts +30 -0
  61. package/dist/watchdog.js +225 -0
  62. package/dist/watchdog.js.map +1 -0
  63. package/package.json +50 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.1.0] - 2026-02-27
9
+
10
+ ### Added
11
+ - Stale session cleanup: `preflight --fix` and `guardian_preflight_fix` now detect and remove
12
+ old UUID-named session transcripts (.jsonl, .jsonl.gz) and session directories
13
+ - Configurable retention: sessions older than 3 days are cleaned (1.5 days in aggressive mode)
14
+ - Protected entries: `memory/` and `sessions-index.json` are never touched
15
+ - Scan-time warning: `preflight` reports stale session count and size before fix
16
+ - 6 new tests for session cleanup
17
+
18
+ ## [1.0.0] - 2026-02-27
19
+
20
+ First public release.
21
+
22
+ ### Added
23
+ - `preflight` command — scan and fix Claude log bloat (rotate, gzip, trim)
24
+ - `doctor` command — diagnostics bundle (zip) with system info, log tails, journal
25
+ - `run` command — watchdog with hang/crash detection, optional auto-restart
26
+ - `watch` daemon — continuous 2-second polling, incident tracking, budget enforcement
27
+ - `status` command with `--banner` flag for one-line health summaries
28
+ - `budget` CLI command (show/acquire/release) for concurrency management
29
+ - Composite hang detection (log mtime + CPU activity + grace window)
30
+ - Incident state machine (ok → warn → critical lifecycle)
31
+ - Bundle deduplication (one per incident)
32
+ - Concurrency budget system (cap transitions: ok=4, warn=2, critical=1)
33
+ - Lease-based concurrency control with TTL auto-expiry and 60s hysteresis
34
+ - Handle count signal (Windows/Linux/macOS)
35
+ - Attention channel: synthesized top-level signal (none/info/warn/critical)
36
+ - 8 MCP tools: `guardian_status`, `guardian_preflight_fix`, `guardian_doctor`, `guardian_nudge`, `guardian_budget_get`, `guardian_budget_acquire`, `guardian_budget_release`, `guardian_recovery_plan`
37
+ - `GuardianError` structured error type with code, hint, and cause
38
+ - MCP tools return structured errors (code + hint), never stack traces
39
+ - State/budget file corruption recovery: auto-backup + graceful reset
40
+ - CLI `--debug` flag for full stack traces
41
+ - Consistent CLI exit codes: 0 ok, 1 user error, 2 runtime error
42
+ - `npm run verify` script (test + build + pack)
43
+ - SECURITY.md, HANDBOOK.md, SHIP_GATE.md
44
+ - Landing page via @mcptoolshop/site-theme
45
+ - README translations: ja, zh, es, fr, hi, it, pt-BR
package/HANDBOOK.md ADDED
@@ -0,0 +1,209 @@
1
+ # Claude Guardian Handbook
2
+
3
+ Field manual for operating Claude Guardian. Covers daily use, incident response, budget management, and diagnostics.
4
+
5
+ ## Daily operations
6
+
7
+ ### Start of session
8
+
9
+ ```bash
10
+ claude-guardian status
11
+ ```
12
+
13
+ If `risk=ok` and disk is healthy, you're good. If the daemon isn't running:
14
+
15
+ ```bash
16
+ claude-guardian watch --verbose &
17
+ ```
18
+
19
+ The daemon polls every 2 seconds, tracks hang risk, manages the concurrency budget, and persists state for the MCP server.
20
+
21
+ ### Embed in prompts
22
+
23
+ Add the guardian to your Claude Code MCP config (`~/.claude.json`):
24
+
25
+ ```json
26
+ {
27
+ "mcpServers": {
28
+ "guardian": {
29
+ "command": "npx",
30
+ "args": ["claude-guardian", "mcp"]
31
+ }
32
+ }
33
+ }
34
+ ```
35
+
36
+ Claude can then call `guardian_status` at any time to check health.
37
+
38
+ ### One-line banner
39
+
40
+ ```bash
41
+ claude-guardian status --banner
42
+ ```
43
+
44
+ Output: `[guardian] disk=607GB | logs=150MB | procs=2 | cpu=12% | rss=800MB | quiet=0s | risk=ok`
45
+
46
+ Useful for embedding in shell prompts or session start hooks.
47
+
48
+ ---
49
+
50
+ ## Attention levels
51
+
52
+ Guardian synthesizes all signals into a single attention level. Check it with `guardian_status` (CLI or MCP).
53
+
54
+ ### `attn=NONE` — All clear
55
+
56
+ No action needed. The daemon is monitoring in the background.
57
+
58
+ ### `attn=INFO` — Awareness
59
+
60
+ Something is noteworthy but not urgent. Examples:
61
+ - Budget cap is reduced (recovering from a previous warn/critical)
62
+ - An incident just closed but is still tracked
63
+
64
+ **What to do:** Nothing immediate. Continue working normally.
65
+
66
+ ### `attn=WARN` — Elevated risk
67
+
68
+ Hang risk is elevated, or disk is low. Guardian has detected inactivity or resource pressure.
69
+
70
+ **What to do:**
71
+ 1. Call `guardian_nudge` — it will auto-fix what it can (rotate logs, capture bundles)
72
+ 2. Check `guardian_budget_get` — cap is likely reduced to 2
73
+ 3. Reduce concurrency: fewer parallel tasks, smaller batches
74
+ 4. Monitor with `guardian_status` every few minutes
75
+
76
+ ### `attn=CRITICAL` — Immediate action needed
77
+
78
+ Hang risk is critical. Claude Code may be stuck. No activity for 600+ seconds with low CPU.
79
+
80
+ **What to do:**
81
+ 1. Call `guardian_nudge` — captures a diagnostics bundle if one hasn't been taken
82
+ 2. Call `guardian_recovery_plan` — get exact step-by-step instructions
83
+ 3. Budget cap is reduced to 1 — stop starting new heavy work
84
+ 4. If no recovery in 2 minutes, restart Claude Code manually
85
+ 5. After restart, the budget will recover to cap=4 after 60 seconds of sustained `risk=ok`
86
+
87
+ ---
88
+
89
+ ## Budget and leases
90
+
91
+ The budget system prevents multiple agents or tasks from dogpiling Claude when it's already stressed.
92
+
93
+ ### How it works
94
+
95
+ - **Base cap:** 4 concurrent slots
96
+ - **Warn cap:** 2 slots (when `risk=warn`)
97
+ - **Critical cap:** 1 slot (when `risk=critical`)
98
+ - **Hysteresis:** After risk returns to `ok`, the cap stays reduced for 60 seconds before restoring to base
99
+
100
+ ### Acquire before heavy work
101
+
102
+ ```bash
103
+ claude-guardian budget acquire 1 --ttl 120 --reason "batch-processing"
104
+ ```
105
+
106
+ Or via MCP:
107
+ ```
108
+ guardian_budget_acquire { slots: 1, ttlSeconds: 120, reason: "batch-processing" }
109
+ ```
110
+
111
+ If granted, you get a lease ID. If denied, the cap is full — wait or reduce load.
112
+
113
+ ### Release when done
114
+
115
+ ```bash
116
+ claude-guardian budget release <lease-id>
117
+ ```
118
+
119
+ Or via MCP:
120
+ ```
121
+ guardian_budget_release { leaseId: "<id>" }
122
+ ```
123
+
124
+ Leases auto-expire after their TTL, but releasing early frees slots for others immediately.
125
+
126
+ ### Check budget state
127
+
128
+ ```bash
129
+ claude-guardian budget show
130
+ ```
131
+
132
+ Shows current cap, slots in use, active leases with TTL countdown.
133
+
134
+ ### The contract
135
+
136
+ The budget is **advisory**. Guardian doesn't block or kill anything. The contract is:
137
+ 1. Check `guardian_budget_get` before starting heavy work
138
+ 2. If `slotsAvailable > 0`, call `guardian_budget_acquire`
139
+ 3. If denied, back off — the system is under pressure
140
+ 4. Always release when done
141
+
142
+ Tools and agents that respect this contract prevent cascading failures.
143
+
144
+ ---
145
+
146
+ ## Doctor bundles
147
+
148
+ When something goes wrong, Guardian captures evidence — not guesses.
149
+
150
+ ### Generate a bundle
151
+
152
+ ```bash
153
+ claude-guardian doctor --out ./my-bundle.zip
154
+ ```
155
+
156
+ Or via MCP: `guardian_doctor`
157
+
158
+ ### What's in the bundle
159
+
160
+ | File | Contents |
161
+ |------|----------|
162
+ | `summary.json` | System info, disk, memory, CPU, preflight results |
163
+ | `process.json` | Snapshot of all Claude processes (PID, CPU, memory, handles, uptime) |
164
+ | `timeline.json` | Chronological events (journal entries, incidents, state changes) |
165
+ | `log-tails/*.txt` | Last 500 lines of each Claude log file |
166
+ | `journal.jsonl` | Full guardian action journal |
167
+ | `events.jsonl` | Incident log |
168
+ | `state.json` | Guardian state at time of capture |
169
+
170
+ ### Attach to issues
171
+
172
+ When filing a bug report:
173
+ 1. Run `claude-guardian doctor`
174
+ 2. Note the bundle path in the output
175
+ 3. Attach the `.zip` to your GitHub issue
176
+ 4. The bundle contains no API keys, tokens, or user content — only system metrics, log tails, and guardian's own journal
177
+
178
+ ### Automatic capture
179
+
180
+ The daemon captures bundles automatically when:
181
+ - Risk escalates to `warn` or `critical` (one bundle per incident, deduplicated)
182
+ - The watchdog (`claude-guardian run`) detects a hang or crash
183
+
184
+ Bundle paths are stored in the incident record and shown in `guardian_status`.
185
+
186
+ ---
187
+
188
+ ## Corruption recovery
189
+
190
+ Guardian handles its own file corruption gracefully:
191
+
192
+ - **state.json corrupt:** Backed up to `state.json.corrupt.<timestamp>`, state resets to empty. The daemon rebuilds on next poll.
193
+ - **budget.json corrupt:** Backed up to `budget.json.corrupt.<timestamp>`, budget resets to defaults (cap=4, no leases).
194
+
195
+ If you see `[guardian] WARNING: state.json is corrupt` in your console, the backup is in `~/.claude-guardian/`. The guardian continues operating normally after reset.
196
+
197
+ ---
198
+
199
+ ## Quick reference
200
+
201
+ | Situation | Command |
202
+ |-----------|---------|
203
+ | Start of session | `claude-guardian status` |
204
+ | Background monitoring | `claude-guardian watch` |
205
+ | Fix log bloat | `claude-guardian preflight --fix` |
206
+ | Something is wrong | `claude-guardian doctor` |
207
+ | Check budget | `claude-guardian budget show` |
208
+ | MCP: safe auto-fix | `guardian_nudge` |
209
+ | MCP: what do I do? | `guardian_recovery_plan` |
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 mcp-tool-shop
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.es.md ADDED
@@ -0,0 +1,185 @@
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.md">English</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-guardian/readme.png" width="400" alt="claude-guardian" />
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://github.com/mcp-tool-shop-org/claude-guardian/actions"><img src="https://github.com/mcp-tool-shop-org/claude-guardian/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
11
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License" /></a>
12
+ <a href="https://mcp-tool-shop-org.github.io/claude-guardian/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page" /></a>
13
+ </p>
14
+
15
+ Computadora de vuelo para Claude Code: rotación de registros, supervisión, paquetes de fallos y autoconciencia del MCP.
16
+
17
+ Claude Guardian es una capa de confiabilidad local que mantiene las sesiones de Claude Code en buen estado. Detecta el crecimiento excesivo de los registros, la presión en el disco y las interrupciones antes de que causen problemas, captura evidencia cuando algo sale mal y expone un servidor MCP para que Claude pueda realizar un automonitoreo durante la sesión.
18
+
19
+ ## ¿Qué hace?
20
+
21
+ | Comando | Propósito |
22
+ |---------|---------|
23
+ | `preflight` | Escanea los registros del proyecto Claude, informa sobre directorios/archivos de gran tamaño, opcionalmente corrige automáticamente. |
24
+ | `doctor` | Genera un paquete de diagnóstico (zip) con información del sistema, fragmentos de registros y un registro. |
25
+ | `run -- <cmd>` | Ejecuta cualquier comando con supervisión, crea automáticamente un paquete en caso de fallo/interrupción. |
26
+ | `status` | Comprobación de estado: espacio libre en disco, tamaños de los registros, advertencias. |
27
+ | `watch` | Demonio en segundo plano: monitoreo continuo, seguimiento de incidentes, cumplimiento del presupuesto. |
28
+ | `budget` | Visualiza y gestiona el presupuesto de concurrencia (mostrar/obtener/liberar). |
29
+ | `mcp` | Inicia el servidor MCP (8 herramientas) para el automonitoreo de Claude Code. |
30
+
31
+ ## Instalación
32
+
33
+ ```bash
34
+ npm install -g claude-guardian
35
+ ```
36
+
37
+ O ejecútelo directamente:
38
+
39
+ ```bash
40
+ npx claude-guardian preflight
41
+ ```
42
+
43
+ ## Comienzo rápido
44
+
45
+ ### Verifique su entorno
46
+
47
+ ```bash
48
+ claude-guardian status
49
+ ```
50
+
51
+ ```
52
+ === Claude Guardian Preflight ===
53
+
54
+ Disk free: 607.13GB [OK]
55
+ Claude projects: C:\Users\you\.claude\projects
56
+ Total size: 1057.14MB
57
+
58
+ Project directories (by size):
59
+ my-project: 1020.41MB
60
+
61
+ Issues found:
62
+ [WARNING] Project log dir is 1020.41MB (limit: 200MB)
63
+ [WARNING] File is 33.85MB (limit: 25MB)
64
+
65
+ [guardian] disk=607.13GB | logs=1057.14MB | issues=2
66
+ ```
67
+
68
+ ### Corrige automáticamente el crecimiento excesivo de los registros
69
+
70
+ ```bash
71
+ claude-guardian preflight --fix
72
+ ```
73
+
74
+ Rota los registros antiguos (gzip), recorta los archivos `.jsonl` y `.log` de gran tamaño a sus últimas N líneas. Cada acción se registra en un archivo de registro para facilitar el seguimiento.
75
+
76
+ ### Genera un informe de fallo
77
+
78
+ ```bash
79
+ claude-guardian doctor --out ./bundle.zip
80
+ ```
81
+
82
+ Crea un archivo zip que contiene:
83
+ - `summary.json` — información del sistema, informe de tamaño de archivo, resultados de la verificación inicial.
84
+ - `log-tails/` — las últimas 500 líneas de cada archivo de registro.
85
+ - `journal.jsonl` — cada acción que ha realizado el guardián.
86
+
87
+ ### Ejecute con supervisión
88
+
89
+ ```bash
90
+ claude-guardian run -- claude
91
+ claude-guardian run --auto-restart --hang-timeout 120 -- node server.js
92
+ ```
93
+
94
+ El sistema de supervisión:
95
+ 1. Ejecuta su comando como un proceso secundario.
96
+ 2. Supervisa la salida estándar/error estándar para detectar actividad.
97
+ 3. Si no hay actividad durante `--hang-timeout` segundos, captura un paquete de diagnóstico.
98
+ 4. Si el proceso falla, captura un paquete y, opcionalmente, se reinicia con un intervalo de reintento.
99
+
100
+ ## Servidor MCP (la verdadera clave)
101
+
102
+ Registre el guardián como un servidor MCP local para que Claude pueda realizar un automonitoreo:
103
+
104
+ Agregue lo siguiente a `~/.claude.json`:
105
+
106
+ ```json
107
+ {
108
+ "mcpServers": {
109
+ "guardian": {
110
+ "command": "npx",
111
+ "args": ["claude-guardian", "mcp"]
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ Luego, Claude puede llamar a:
118
+
119
+ | Herramienta | Lo que devuelve |
120
+ |------|----------------|
121
+ | `guardian_status` | Disco, registros, procesos, riesgo de interrupción, presupuesto, nivel de atención. |
122
+ | `guardian_preflight_fix` | Ejecuta la rotación/recorte de registros y devuelve un informe de antes y después. |
123
+ | `guardian_doctor` | Crea un paquete de diagnóstico (zip) y devuelve la ruta y un resumen. |
124
+ | `guardian_nudge` | Corrección automática segura: corrige los registros si están hinchados, captura un paquete si es necesario. |
125
+ | `guardian_budget_get` | Límite de concurrencia actual, espacios utilizados, concesiones activas. |
126
+ | `guardian_budget_acquire` | Solicita espacios de concurrencia (devuelve el ID de la concesión). |
127
+ | `guardian_budget_release` | Libera una concesión cuando hayas terminado con el trabajo intensivo. |
128
+ | `guardian_recovery_plan` | Plan de recuperación paso a paso que indica las herramientas exactas a utilizar. |
129
+
130
+ Esto permite que Claude diga: "La atención es de NIVEL DE ADVERTENCIA. Ejecutando `guardian_nudge`, luego reduciendo la concurrencia".
131
+
132
+ ## Configuración
133
+
134
+ Tres opciones de configuración (todo lo demás está codificado con valores predeterminados razonables):
135
+
136
+ | Bandera | Valor predeterminado | Descripción |
137
+ |------|---------|-------------|
138
+ | `--max-log-mb` | `200` | Tamaño máximo del directorio de registros del proyecto en MB. |
139
+ | `--hang-timeout` | `300` | Segundos de inactividad antes de declarar una interrupción. |
140
+ | `--auto-restart` | `false` | Reiniciar automáticamente en caso de fallo/interrupción. |
141
+
142
+ Además, existe una restricción codificada:
143
+ - **Espacio libre en disco < 5 GB** → el modo agresivo se habilita automáticamente (menor retención, umbrales más bajos).
144
+
145
+ ## Modelo de confianza
146
+
147
+ Claude Guardian es **solo local**. No tiene ningún listener de red, ni telemetría ni dependencia de la nube.
148
+
149
+ **Lo que lee:** `~/.claude/projects/` (archivos de registro, tamaños, tiempos de modificación), lista de procesos (CPU, memoria, tiempo de actividad, recuentos de identificadores para los procesos relacionados con Claude a través de `pidusage`).
150
+
151
+ **Lo que escribe:** `~/.claude-guardian/` (state.json, budget.json, journal.jsonl, paquetes de diagnóstico). Todos los archivos están ubicados en el directorio de inicio del usuario.
152
+
153
+ **¿Qué información recopila en los paquetes?** Información del sistema (sistema operativo, CPU, memoria, disco), fragmentos de archivos de registro (las últimas 500 líneas), instantáneas de procesos y el propio registro de Guardian. No recopila claves de API, tokens, credenciales ni contenido de usuario.
154
+
155
+ **Acciones peligrosas: lo que Guardian NO hará:**
156
+ - Matar procesos o enviar señales (no `SIGKILL`, no `SIGTERM`)
157
+ - Reiniciar Claude Code o cualquier otro proceso
158
+ - Eliminar archivos (la rotación es mediante compresión gzip, el recorte consiste en mantener las últimas N líneas)
159
+ - Realizar solicitudes de red o enviar información a un servidor central
160
+ - Aumentar privilegios o acceder a los datos de otros usuarios.
161
+
162
+ Si alguna vez se añadiera la función de matar procesos o el reinicio automático, estará habilitada mediante una opción explícita, documentada aquí, y estará desactivada de forma predeterminada.
163
+
164
+ ## Principios de diseño
165
+
166
+ - **Evidencia sobre suposiciones** — cada acción genera una entrada en el registro; los paquetes de registro capturan el estado, no conjeturas.
167
+ - **Determinista** — no utiliza aprendizaje automático ni heurísticas más allá de la edad y el tamaño de los archivos. Tabla de decisiones que se puede leer en 60 segundos.
168
+ - **Seguro por defecto** — la rotación es mediante compresión gzip (reversible), el recorte consiste en mantener las últimas N líneas (los datos se conservan), no hay eliminaciones en la versión 1.
169
+ - **Dependencias básicas** — commander, pidusage, archiver, @modelcontextprotocol/sdk. Eso es todo.
170
+
171
+ ## Desarrollo
172
+
173
+ ```bash
174
+ npm install
175
+ npm run build
176
+ npm test
177
+ ```
178
+
179
+ ## Licencia
180
+
181
+ MIT
182
+
183
+ ---
184
+
185
+ Creado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
package/README.fr.md ADDED
@@ -0,0 +1,185 @@
1
+ <p align="center">
2
+ <a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.md">English</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-guardian/readme.png" width="400" alt="claude-guardian" />
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://github.com/mcp-tool-shop-org/claude-guardian/actions"><img src="https://github.com/mcp-tool-shop-org/claude-guardian/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
11
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT License" /></a>
12
+ <a href="https://mcp-tool-shop-org.github.io/claude-guardian/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page" /></a>
13
+ </p>
14
+
15
+ Ordinateur de bord pour Claude Code : rotation des journaux, surveillance, regroupement des erreurs, et auto-évaluation de l'environnement d'exécution (MCP).
16
+
17
+ Claude Guardian est une couche de fiabilité locale qui maintient les sessions Claude Code en bon état. Il détecte les problèmes de taille des journaux, la saturation du disque et les blocages avant qu'ils ne causent des problèmes, enregistre les informations pertinentes en cas de problème, et expose un serveur MCP afin que Claude puisse s'auto-surveiller pendant les sessions.
18
+
19
+ ## Ce qu'il fait
20
+
21
+ | Commande | Fonction |
22
+ |---------|---------|
23
+ | `preflight` | Analyse les journaux du projet Claude, signale les répertoires/fichiers trop volumineux, corrige automatiquement (optionnel). |
24
+ | `doctor` | Génère un ensemble de diagnostics (zip) contenant des informations système, les dernières lignes des journaux et un journal. |
25
+ | `run -- <cmd>` | Exécute n'importe quelle commande avec surveillance, crée automatiquement un regroupement en cas de plantage/blocage. |
26
+ | `status` | Vérification de l'état : espace disque disponible, taille des journaux, avertissements. |
27
+ | `watch` | Démon en arrière-plan : surveillance continue, suivi des incidents, application des limites. |
28
+ | `budget` | Affiche et gère la limite de concurrence (afficher/acquérir/libérer). |
29
+ | `mcp` | Démarre le serveur MCP (8 outils) pour l'auto-surveillance de Claude Code. |
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ npm install -g claude-guardian
35
+ ```
36
+
37
+ Ou exécutez directement :
38
+
39
+ ```bash
40
+ npx claude-guardian preflight
41
+ ```
42
+
43
+ ## Démarrage rapide
44
+
45
+ ### Vérifiez votre environnement
46
+
47
+ ```bash
48
+ claude-guardian status
49
+ ```
50
+
51
+ ```
52
+ === Claude Guardian Preflight ===
53
+
54
+ Disk free: 607.13GB [OK]
55
+ Claude projects: C:\Users\you\.claude\projects
56
+ Total size: 1057.14MB
57
+
58
+ Project directories (by size):
59
+ my-project: 1020.41MB
60
+
61
+ Issues found:
62
+ [WARNING] Project log dir is 1020.41MB (limit: 200MB)
63
+ [WARNING] File is 33.85MB (limit: 25MB)
64
+
65
+ [guardian] disk=607.13GB | logs=1057.14MB | issues=2
66
+ ```
67
+
68
+ ### Corrige automatiquement les problèmes de taille des journaux
69
+
70
+ ```bash
71
+ claude-guardian preflight --fix
72
+ ```
73
+
74
+ Effectue la rotation des anciens journaux (gzip), réduit la taille des fichiers `.jsonl` et `.log` trop volumineux en ne conservant que les N dernières lignes. Chaque action est enregistrée dans un fichier journal pour la traçabilité.
75
+
76
+ ### Génère un rapport de plantage
77
+
78
+ ```bash
79
+ claude-guardian doctor --out ./bundle.zip
80
+ ```
81
+
82
+ Crée un fichier zip contenant :
83
+ - `summary.json` : informations système, rapport de taille des fichiers, résultats de vérification préliminaire.
84
+ - `log-tails/` : les 500 dernières lignes de chaque fichier journal.
85
+ - `journal.jsonl` : toutes les actions effectuées par le système de surveillance.
86
+
87
+ ### Exécute avec surveillance
88
+
89
+ ```bash
90
+ claude-guardian run -- claude
91
+ claude-guardian run --auto-restart --hang-timeout 120 -- node server.js
92
+ ```
93
+
94
+ La surveillance :
95
+ 1. Lance votre commande en tant que processus enfant.
96
+ 2. Surveille la sortie standard (stdout) et la sortie d'erreur (stderr) pour détecter l'activité.
97
+ 3. Si aucune activité pendant `--hang-timeout` secondes, un ensemble de diagnostics est créé.
98
+ 4. Si le processus plante, un ensemble est créé, et il peut être redémarré avec un délai progressif.
99
+
100
+ ## Serveur MCP (la véritable fonctionnalité)
101
+
102
+ Enregistrez le système de surveillance en tant que serveur MCP local afin que Claude puisse s'auto-surveiller :
103
+
104
+ Ajoutez ceci à `~/.claude.json` :
105
+
106
+ ```json
107
+ {
108
+ "mcpServers": {
109
+ "guardian": {
110
+ "command": "npx",
111
+ "args": ["claude-guardian", "mcp"]
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ Ensuite, Claude peut appeler :
118
+
119
+ | Outil | Ce qu'il renvoie |
120
+ |------|----------------|
121
+ | `guardian_status` | Espace disque, journaux, processus, risque de blocage, limite, niveau d'attention. |
122
+ | `guardian_preflight_fix` | Effectue la rotation/réduction des journaux, renvoie un rapport avant/après. |
123
+ | `guardian_doctor` | Crée un ensemble de diagnostics (zip), renvoie le chemin et un résumé. |
124
+ | `guardian_nudge` | Correction automatique sécurisée : corrige les journaux s'ils sont trop volumineux, crée un ensemble si nécessaire. |
125
+ | `guardian_budget_get` | Limite de concurrence actuelle, emplacements utilisés, licences actives. |
126
+ | `guardian_budget_acquire` | Demande des emplacements de concurrence (renvoie l'ID de la licence). |
127
+ | `guardian_budget_release` | Libère une licence une fois le travail intensif terminé. |
128
+ | `guardian_recovery_plan` | Plan de récupération étape par étape, indiquant les outils à utiliser. |
129
+
130
+ Cela permet à Claude de dire : "L'attention est à niveau AVERTISSEMENT. Exécution de `guardian_nudge`, puis réduction de la concurrence."
131
+
132
+ ## Configuration
133
+
134
+ Trois paramètres (tout le reste est codé en dur avec des valeurs par défaut raisonnables) :
135
+
136
+ | Paramètre | Valeur par défaut | Description |
137
+ |------|---------|-------------|
138
+ | `--max-log-mb` | `200` | Taille maximale du répertoire des journaux du projet en Mo. |
139
+ | `--hang-timeout` | `300` | Nombre de secondes d'inactivité avant de déclarer un blocage. |
140
+ | `--auto-restart` | `false` | Redémarrage automatique en cas de plantage/blocage. |
141
+
142
+ Plus une règle de sécurité codée en dur :
143
+ - **Espace disque disponible < 5 Go** → le mode agressif est activé automatiquement (conservation plus courte, seuils plus bas).
144
+
145
+ ## Modèle de confiance
146
+
147
+ Claude Guardian est **local uniquement**. Il n'a pas de listener réseau, de télémétrie ni de dépendance au cloud.
148
+
149
+ **Ce qu'il lit :** `~/.claude/projects/` (fichiers journaux, tailles, dates de modification), liste des processus (utilisation du CPU, mémoire, temps de fonctionnement, nombre de descripteurs pour les processus liés à Claude via `pidusage`).
150
+
151
+ **Ce qu'il écrit :** `~/.claude-guardian/` (state.json, budget.json, journal.jsonl, doctor bundles). Tous les fichiers se trouvent dans le répertoire personnel de l'utilisateur.
152
+
153
+ **Ce qu'il collecte dans les rapports :** Informations système (OS, CPU, mémoire, disque), extraits de fichiers journaux (les 500 dernières lignes), instantanés des processus et le propre journal de Guardian. Aucune clé API, aucun jeton, aucune identifiant, ni aucun contenu utilisateur.
154
+
155
+ **Actions dangereuses — ce que Guardian NE fera PAS :**
156
+ - Terminer des processus ou envoyer des signaux (pas de `SIGKILL`, pas de `SIGTERM`)
157
+ - Redémarrer Claude Code ou tout autre processus
158
+ - Supprimer des fichiers (la rotation se fait par compression gzip, la suppression se limite aux N dernières lignes)
159
+ - Effectuer des requêtes réseau ou contacter un serveur central
160
+ - Accorder des privilèges supérieurs ou accéder aux données d'autres utilisateurs
161
+
162
+ Si la terminaison de processus ou le redémarrage automatique étaient un jour ajoutés, cela se ferait via un indicateur d'activation explicite, documenté ici, et serait désactivé par défaut.
163
+
164
+ ## Principes de conception
165
+
166
+ - **Preuves plutôt que suppositions** — chaque action génère une entrée de journal ; les rapports capturent l'état, et non des conjectures.
167
+ - **Déterministe** — pas d'apprentissage automatique, pas d'heuristiques au-delà de l'âge et de la taille des fichiers. Tableau de décision que vous pouvez lire en 60 secondes.
168
+ - **Sûr par défaut** — la rotation se fait par compression gzip (réversible), la suppression se limite aux N dernières lignes (les données sont préservées), aucune suppression dans la version 1.
169
+ - **Dépendances simples** — commander, pidusage, archiver, @modelcontextprotocol/sdk. C'est tout.
170
+
171
+ ## Développement
172
+
173
+ ```bash
174
+ npm install
175
+ npm run build
176
+ npm test
177
+ ```
178
+
179
+ ## Licence
180
+
181
+ MIT
182
+
183
+ ---
184
+
185
+ Créé par <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>