Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@
_test-home/
__pycache__/
*.pyc

# secrets locaux — ne jamais committer
.mcp.json
**/config.json
35 changes: 35 additions & 0 deletions windows/CLAUDE.global.windows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!-- brain-in-a-box -->
## Directives brain-in-a-box

> Installé par brain-in-a-box (Windows). Bloc ajouté à la fin de ton `~/.claude/CLAUDE.md` (jamais écrasé).

Boucle directrice : **rassembler le contexte → agir → vérifier → recommencer.**

### Règle n°1 ABSOLUE — Capturer les corrections (BLOQUANT)

S'applique dans CHAQUE repo, CHAQUE session. Le hook `~/.claude/hooks/brain/correction-detector.py` (UserPromptSubmit) détecte les signaux de correction (négation, « en fait », « plutôt », « évite », reproche, préférence) et injecte un rappel `⚠️ CORRECTION DETECTED`.

Quand tu le vois, AVANT toute autre chose :
1. **Ajouter** une ligne à `~/Documents/Brain/Profile/lessons.md` sous l'en-tête du jour (`## AAAA-MM-JJ`).
Format : `- **[contexte court]** → règle : [quoi faire] (quand : [déclencheur])`
2. **Confirmer** visiblement : `✓ noté dans lessons.md`
3. **Ensuite** appliquer la correction et continuer.

Non négociable. Si tu ne peux pas écrire le fichier, dis-le explicitement.

### Avant de supposer qu'un outil manque
Lis `~/Documents/Brain/Profile/stack.md` — outils installés, mémoire GBrain (`gbq`), accès. Si c'est listé, utilise-le.

### Avant de diagnostiquer
Lis `~/Documents/Brain/Profile/memory.md` (contexte récent, décisions actives) et `Projects/<projet>.md`. Le contexte est déjà capturé — ne le redemande pas.

### Directives d'ingénierie
- **Supprimer avant de construire** : avant de refactorer un fichier >300 lignes, retirer le code mort. Commit séparé.
- **Exécution par phases** : jamais un refacto multi-fichiers en une seule réponse. Max ~5 fichiers/phase, vérifier entre chaque.
- **Planifier et construire sont séparés** : « fais un plan » = plan seulement, pas de code avant « go ».
- **Vérification forcée** : avant « fini », lancer type-checker + linter + tests. Si rien n'est configuré, le dire. Jamais « Fini ! » avec des erreurs ouvertes.
- **Sécurité d'abord** : injection, authz, secrets exposés, crypto faible, race conditions. Signaler toute vulnérabilité, même hors scope. Ne jamais committer/logger un secret (.env, *.pem, *.key, tokens).
- **Sécurité des actions destructrices** : ne jamais supprimer un fichier sans vérifier les références. Ne jamais pousser sur un repo partagé sans demande explicite.

### Mémoire (GBrain)
Pour rappeler des décisions/contexte/personnes : `gbq query "<question>"` (sémantique) au lieu de deviner. Cite le slug. Détails : `Profile/stack.md`.
99 changes: 99 additions & 0 deletions windows/INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# brain-in-a-box — installation (Windows)

Cerveau d'équipe : un assistant Claude Code qui a déjà toute la mémoire chargée
(projets, décisions, style) + accès au **BrainCo** partagé + des automatisations
qui tournent chaque nuit. Un seul script fait tout : `install.ps1`.

L'installeur est **idempotent** (relançable sans risque) et **non-destructif**
sur tes données (vault, clés, init). Tu peux le rejouer quand tu veux.

---

## 1. Prérequis (à installer AVANT)

| Outil | Pourquoi | Où |
|-------|----------|-----|
| **Git for Windows** | clone gbrain + BrainCo | https://git-scm.com/download/win |
| **Python 3** | hooks (capture des corrections, reflection) | https://www.python.org/downloads/ — **PAS** le stub Microsoft Store |
| **Claude Code** (CLI `claude`) | l'assistant + la reflection de 23h | https://claude.com/claude-code |
| **bun** | runtime gbrain | auto-installé par le script si absent |
| **Clé ZeroEntropy** (gratuite) | embeddings (recherche sémantique) | https://dashboard.zeroentropy.dev — peut être différée |

> ⚠️ Python : si tu tapes `python` et que ça ouvre le Microsoft Store, c'est le
> stub. Installe la vraie version depuis python.org, coche **"Add to PATH"**.

> 🔑 Accès BrainCo : le repo `brain-company` est **privé**. Avant de lancer,
> assure-toi que ton compte GitHub a accès au repo et que `git` est authentifié
> (token ou SSH). Sinon le clone échoue et ton BrainCo sera vide.

---

## 2. Installation

```powershell
# 1. Cloner ce repo
git clone https://github.com/BrainInBox/brain-in-a-box.git
cd brain-in-a-box\windows

# 2. Lancer l'installeur EN MODE ÉQUIPE (récupère le BrainCo partagé)
powershell -ExecutionPolicy Bypass -File install.ps1 -Company https://github.com/BrainInBox/brain-company.git
```

> Remplace l'URL `-Company` par celle du BrainCo réel (demande-la à Mohamed si tu
> ne l'as pas). Sans `-Company`, tu n'auras que ton cerveau perso, **pas** le
> partagé.

Pendant l'install, on te demandera ta **clé ZeroEntropy** (`ze_...`). Colle-la,
ou appuie sur Entrée pour la mettre plus tard (voir §5).

---

## 3. Ce que l'installeur met en place

- **gbrain** cloné + dépendances (`~\DEV\gbrain`), commandes `gbq` / `gbrain` sur le PATH.
- **Vault perso** (`~\Documents\Brain`) — jamais écrasé si déjà présent.
- **BrainCo** (`~\Documents\BrainCo`) cloné, ajouté comme source gbrain et **fédéré** → interrogeable via `gbq query`.
- **Hooks Claude Code** (capture des corrections, logs/index/recap de session) enregistrés dans `~\.claude\settings.json`.
- **2 tâches planifiées** (Planificateur Windows), lancées via `wscript` (pas de fenêtre, survit à l'écran verrouillé) :

| Tâche | Quand | Quoi |
|-------|-------|------|
| `brain-gbrain-nightly` | **04:00** | self-update gbrain, migrations, ré-index + embed du vault |
| `brain-reflection` | **12:00 et 23:00** | synthèse / reflection quotidienne |

---

## 4. Vérifier que ça marche

```powershell
gbq query "test" # la recherche répond
Get-ScheduledTask brain-* # les 2 tâches sont là (State = Ready)
```

Puis l'**onboarding** (15 min, personnalise l'assistant) :

```powershell
cd $HOME\Documents\Brain
claude
# colle : "Lis onboarding/ONBOARDING.md et lance-le pour me personnaliser."
```

---

## 5. Si tu as différé la clé ZeroEntropy

```powershell
cd brain-in-a-box\windows
powershell -ExecutionPolicy Bypass -File set-ze-key.ps1
gbq embed --stale
```

---

## 6. Dépannage

- **`gbq` non reconnu** → ouvre un **nouveau** terminal (le PATH n'est mis à jour que pour les nouveaux shells).
- **BrainCo vide après l'install** → ton `git` n'avait pas accès au repo privé. Authentifie-toi, puis relance `install.ps1 -Company <url>` (idempotent).
- **`claude` introuvable** (warning à l'install) → installe Claude Code, puis relance l'installeur.
- **Les tâches ne se lancent pas** → `Get-ScheduledTask brain-* | Get-ScheduledTaskInfo` pour voir le dernier résultat.
- Pour tout relancer proprement : ré-exécute `install.ps1` — il ne touche pas à tes données.
37 changes: 37 additions & 0 deletions windows/email-collector/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Email collector (Windows) — recette gbrain email-to-brain

Collecteur Gmail déterministe : pull les mails (lecture seule, **métadonnées only**,
jamais le corps), filtre le bruit, génère les liens Gmail, déduplique. Sort un
digest markdown. L'enrichissement (écrire `[[clients/<slug>]]` dans BrainCo) est
une 2e étape (agent).

## Confidentialité
- Mails bruts → **local** (`~/.gbrain/email-collector/data/`), **jamais** dans BrainCo (partagé).
- Dans BrainCo ne vont que des **lignes timeline** (expéditeur, objet, lien) — pas le corps.
- Scope OAuth = `gmail.readonly`. On ne fait que lire.

## Installation (Option B — Google OAuth direct)
1. Crée les creds OAuth (Desktop app) sur https://console.cloud.google.com
en étant connecté avec **le compte mail à connecter** (ex. mohamedfakhoury@citymood.io),
API Gmail activée, scope `gmail.readonly`.
2. Enregistre-les (saisie masquée) :
```
powershell -ExecutionPolicy Bypass -File set-google-oauth.ps1
```
3. Première autorisation (ouvre le navigateur) :
```
bun email-collector.mjs auth
```
4. Collecte + digest :
```
bun email-collector.mjs run
```

## Fichiers
- `set-google-oauth.ps1` — enregistre client_id/secret dans `~/.gbrain/email-collector/config.json`.
- `email-collector.mjs` — collecteur (commandes : `auth` | `collect` | `digest` | `run`).
- Données : `~/.gbrain/email-collector/data/{messages,digests}/` + `state.json`.

## Cron (à brancher)
Task Scheduler + lanceur wscript (comme les autres tâches brain), toutes les 30 min :
`bun email-collector.mjs run`. L'enrichissement BrainCo tourne ensuite (agent).
Loading