diff --git a/.gitignore b/.gitignore index 271ae32..2be012b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ dist *.log .env .maia -llm_avis.md diff --git a/README.md b/README.md index a3d89df..1cbb1be 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Il n'y a plus de notion de mode ni d'extensions : un seul agent, MAIA. | --- | --- | | `/help` | aide (commandes, skills) | | `/model` | recharge la liste des modèles LiteLLM et change de modèle (conversation conservée) | -| `/clear` | efface la conversation courante | +| `/clear` | supprime le contexte de la session et recharge `MAIA.md` / `CLAUDE.md` et les skills, comme au démarrage (la session garde son nom) | | `/rename ` · `/load [nom]` · `/new` | sessions (voir plus bas) | | `/exit` (ou Ctrl+D) | quitte (la session est sauvegardée) | | `!commande` · `@fichier` · `§skill` | commande shell, fichier injecté, skill (voir plus bas) | @@ -144,7 +144,7 @@ Au lancement, `./.maia` et `./.maia/.sessions` sont créés dans le dossier d'ex - **Nom par défaut** : `session_{date}_{heure}_{minutes}_{secondes}` (ex. `session_2026-10-13_01_04_05`). - `/rename ` : renomme la session courante ; ce nom sera utilisé à la sauvegarde. - `/load` : sans argument, liste les sessions enregistrées (sélection) ; `/load ` recharge cette session (le modèle courant est conservé). -- `/new` : nouvelle session, nouveau contexte ; l'utilisateur est averti que la session quittée est sauvegardée (sous son nom). +- `/new` : nouvelle session, nouveau contexte (`MAIA.md` / `CLAUDE.md` et skills rechargés) ; l'utilisateur est averti que la session quittée est sauvegardée (sous son nom). Chaque session est un fichier JSON : elle peut contenir des extraits de fichiers ou de sorties de commandes. `.maia/` est ajouté au `.gitignore`. @@ -246,3 +246,4 @@ Journal des évolutions, dans l'ordre : 15. **Badges `@inkjs/ui`** : `INFO`, `WARN`, `FAIL` (texte d'erreur `#DC8ADD`) et `ASK` devant les questions. 16. **Suppression des modes et des extensions** : un seul agent MAIA (`packages/agent`), contexte de départ `MAIA.md` sinon `CLAUDE.md` (message `INFO`, ou `WARN` si aucun). 17. **Outil `CurrentModel`** : indique au modèle quel LLM est utilisé dans la session. +18. **`/clear`** : supprime le contexte et recharge `MAIA.md` / `CLAUDE.md` (et les skills) comme au démarrage ; `/new` fait de même. diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 8cde081..9e12e3c 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -289,8 +289,12 @@ async function run(ui: InkUI, flags: { model?: string }): Promise { continue; } announceLeaving(); - session.messages.length = 0; - session.pendingContext.length = 0; + try { + session = await startSession(modelSpec); // contexte (MAIA.md / CLAUDE.md) et skills rechargés + } catch (err) { + ui.error(`Nouvelle session impossible : ${(err as Error).message}`); + continue; + } sessions.startNew(); ui.info(`Nouvelle session : ${sessions.name} (nouveau contexte)`); continue; @@ -352,9 +356,14 @@ async function run(ui: InkUI, flags: { model?: string }): Promise { continue; } if (name === "clear") { - session.messages.length = 0; - session.pendingContext.length = 0; - ui.info("Conversation réinitialisée"); + // Contexte supprimé et agent réinitialisé : MAIA.md / CLAUDE.md et les skills sont rechargés + // comme au démarrage (la session garde son nom ; ce qui est effacé n'est pas sauvegardé). + try { + session = await startSession(modelSpec); + ui.info("Contexte supprimé : nouvelle conversation"); + } catch (err) { + ui.error(`Réinitialisation impossible : ${(err as Error).message}`); + } continue; } if (name === "model") {