Kantin-Petit
26debf2fe0
feat: API HTTP authentifiée (chat + review) (v0.20.0)
...
registerApi : login rate-limité → JWT, puis Bearer obligatoire sur
/api/chat, /api/review (+approve/refuse), /api/state. CORS restreint +
rate-limit. Réutilise ChatService + ReviewService. API activée seulement
si auth configurée (apiAuth). 65 tests (5 via inject), 0 vuln.
Palier de risque : privilégié (surface exposée) — montée seulement si
auth présente ; non exposée tant que .env non renseigné.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 02:13:03 +02:00
Kantin-Petit
e322ed1167
feat: auth surface exposée + ChatService partagé (v0.19.0)
...
Auth login fort : mot de passe scrypt + TOTP 2FA (otplib) + JWT HS256
(jose), login tout-ou-rien sans indice. ChatService factorise le tour
d'agent pour toutes les surfaces (Telegram refactoré). 60 tests, 0 vuln.
Palier de risque : reversible (logique d'auth ; surface API câblée en v0.20).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 02:06:32 +02:00
Kantin-Petit
db96c4a25e
feat: hook 1ère exéc provisoire + scheduler digest/J-1 + config webhook (v0.17.0)
...
ALERT_WEBHOOK_URL (secret) → HttpAlertSender sinon NullAlertSender.
Gatekeeper émet onFirstProvisionalExec (1ère exéc PROVISOIRE) et route
onBlockedAttempt vers une alerte. Scheduler quotidien digest + rappel J-1,
câblé Phase 2 + arrêt propre. 53 tests verts.
Palier de risque : reversible.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:52:59 +02:00
Kantin-Petit
0a2eb203ee
feat: module alertes (sender fail-soft + builders digest/J-1) (v0.16.0)
...
AlertEvent sans secret ; HttpAlertSender (POST webhook n8n, best-effort)
+ NullAlertSender ; buildDailyDigest / selectExpiringSoon purs. 6 tests.
Rattrape l'entrée CHANGELOG 0.15.1 omise.
Palier de risque : reversible.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:50:18 +02:00
Kantin-Petit
a193b4e912
feat: cron expiration + commandes de review owner (v0.13.0)
...
ReviewService (approuver/refuser/lister) + cron horaire PROVISOIRE→BLOQUÉ.
Commandes Telegram owner /pending /approve /refuse hors boucle agent (le
LLM ne peut pas décider de la review). Câblage Phase 2 : routage
commande/agent, cron démarré + arrêt propre. 45 tests verts.
Palier de risque : reversible (contrôle humain ; n'exécute aucune mutation).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:32:18 +02:00
Kantin-Petit
93d93bef0e
feat: gatekeeper service + gate de phase (v0.11.0)
...
Gatekeeper vérifie le statut d'asset avant chaque exécution : privilégié
inconnu → BLOQUÉ (aucun sursis) refusé jusqu'à review + hook d'alerte ;
approuvé → exécutable. Lecture seule autorisée sans asset. Gate de phase
CHLOVA_PHASE (défaut 1, fail-safe) ; assertReadOnlyPhase phase-aware. 7
nouveaux tests.
Palier de risque : reversible (logique de contrôle, n'exécute aucune mutation).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:27:35 +02:00
Kantin-Petit
56e948c976
feat: AssetRepository SQLite + cycle need-review persistant (v0.10.0)
...
Table assets sur node:sqlite (Node 24, zéro dep native) : CRUD,
listByStatus, incrementExec, setRiskTier anti-escalade, expireProvisional
(cron PROVISOIRE→BLOQUÉ). 6 tests. Bump Node 24 (sqlite stable), Dockerfile
24.13 + copie tsconfig.build.json. 0 vuln.
Palier de risque : reversible (persistance d'état, aucune mutation d'infra).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:24:35 +02:00
Kantin-Petit
1cce8c9db6
test: gatekeeper + readonly-filter + config, interfaces need-review (v0.9.0)
...
Fin Phase 1. 22 tests verts : barrière readonly-filter (fail-safe),
ReadOnlyGuard, paliers de risque + sursis, invariant anti-escalade,
config fail-closed + masquage secrets. Interfaces du cycle need-review
posées pour la Phase 2 (Asset, canExecute) sans câblage runtime. Split
tsconfig typecheck/build.
Palier de risque : reversible.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-23 01:18:02 +02:00