Commit Graph
85 Commits
Author SHA1 Message Date
bruno 6a6676fc5d feat: phase 2 — sessions export + rétention, init --template (closes #52 #53)
Axe 3 (#52) : templates embarqués dans le binaire (web, python, rust, cli)
- am init --template <stack> génère une config pré-remplie : groupe dev,
  profil par défaut, hooks projet (npm install / uv sync / cargo fetch)
- substitution {project} {dir} au rendu ; --template list pour lister
- fallback détection automatique de stack quand aucun template
- config générée validée (parse YAML + validate) par les tests

Axe 4 (#53) : am sessions export + rétention configurable
- am sessions --export <id> [--output <fichier>] : JSON complet et
  reproductible (métadonnées + commandes history/<id>.jsonl + extrait de
  log 4 Ko + rendu lisible 'readable'), compatible archivage manuel
- settings.sessions_retention_days (défaut 90) : purge au démarrage
  (silencieuse) et am sessions --retention <jours>
- purge limitée à l'index dérivé sessions.json — le journal d'événements
  primaire n'est jamais touché ; EventKind::Prune journalisé (visibilité
  am audit)
- sessions en cours (running) jamais purgées ; erreur claire si id inconnu

REPL : sessions --export/--retention/--output + init --template ; help
specs, tip cheat sheet, config.yaml, README, man pages régénérées.
Version 0.4.7, ROADMAP cochée, 276 tests verts.
2026-08-18 10:08:20 -04:00
bruno d9ffc34156 feat: phase 2 — audit config + update --rollback (closes #63 #64)
Axe 8 (sécurité) :
- am audit : checksums SHA-256 des configs (embarquée, utilisateur,
  locale) stockés dans state.json, croisement avec events.jsonl pour
  dater les changements, détection des modifications manuelles hors de
  am (statut MANUAL), rapport lisible + --json stable (contrat)
- backup automatique avant chaque am update (agent ou --all) : état +
  config utilisateur + répertoires d'installation + shims dans
  <state>/backups/<ts>/ avec manifest.json
- am update --rollback [point] : restaure le dernier backup (ou un id
  précis, préfixe accepté), arrête les agents concernés d'abord,
  événement EventKind::Rollback journalisé
- am update --rollback list : liste les points de restauration
- rétention settings.backups_keep (défaut 5) appliquée après chaque backup
- événements EventKind::Backup / EventKind::Rollback pour l'audit

REPL : commande audit + update --rollback (parse, complétion), help specs,
tip cheat sheet, man pages régénérées (50 pages). Version 0.4.6,
ROADMAP cases cochées, 272 tests verts.
2026-08-18 09:44:16 -04:00
bruno 22bc529818 feat: phase 2 — modèles locaux + catalogue distant + suggest (closes #70 #71 #73 #60 #67 #61)
Axe 11 (modèles) :
- am models : inventaire des runtimes locaux (ollama list --format json,
  llama.cpp .gguf sur disque, LM Studio API locale) avec cache façon
  probe.rs (TTL 30s) et absence de runtime signalée sans erreur fatale
- am run <agent> --model <m> : résolution dans l'inventaire, transmission
  via model_env/model_arg de l'agent (défaut AM_MODEL), tracé en session
- am models --prune : candidats inutilisés depuis settings.models_prune_days
  (défaut 30), :latest toujours protégé, dry-run + confirmation + événement
  EventKind::Model journalisé

Axes 7/9 (catalogue) :
- am catalog update : fetch du catalogue officiel, diff (ajoutés/retirés/
  modifiés), confirmation, enregistrement en include
- am catalog add <url> : validation du format (parse + validate), cache
  catalog-cache.json (TTL 3600s), événement EventKind::Catalog journalisé
- include par URL (http/https/file) dans config.yaml, résolu au chargement
  avec cache + TTL ; override local toujours prioritaire (issue #67)
- am suggest <requête> : réutilise le scoring fuzzy du catalogue, boost par
  usage réel (lancements + durée depuis le journal), top 5 justifié, --json

REPL : commandes models/catalog/suggest (parse, complétion, descriptions),
help specs, tip cheat sheet, man pages régénérées (49 pages, dont 3 nouvelles).
Version bump 0.4.5, ROADMAP cases cochées, 266 tests verts.
2026-08-18 09:06:16 -04:00
bruno 890ad953e5 feat: phase 2 quick wins (#65 #69 #72)
- #65: update policies + per-agent version pinning
  - add settings.update_policy (stable/latest/skip)
  - add AgentDef.pin_version
  - honor both in update_cmd
  - add update_policy tests

- #69: REPL color theme CLI command
  - add am theme [name] (show/switch)
  - persist selected theme to config

- #72: doctor checks local model runtimes
  - verify ollama and llama-server on PATH
  - for ollama, also check server responds (ollama ls)

Version 0.4.4
2026-08-17 22:24:45 -04:00
bruno 98c0b30f68 feat: am tip cheat sheet + readable man pages + REPL completion refresh 2026-08-17 21:50:48 -04:00
bruno 53893f2967 v0.4.3 : persistance du theme actif choisi
release / linux (push) Successful in 13m24s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
- le REPL 'theme <name>' applique ET sauvegarde le theme (settings.theme dans le fichier de config actif, cree s'il manque) via persist_setting
- correction racine : config::merge ignorait settings.theme - la valeur persistee n etait jamais relue au chargement, le theme par defaut etait toujours reapplique apres un redemarrage
- 'am --theme <name>' reste un one-shot ; config set settings.theme <nom> fonctionne egalement
- aides mises a jour (banniere, help theme)
- tests de persistance + relecture au demarrage, man pages regenerees, version 0.4.3
v0.4.3
2026-08-17 15:23:28 -04:00
bruno 91253b79c5 ci : files de gitea-release-action en bloc YAML (retours a la ligne) - l'action splitte sur \n, le bloc plie en une ligne et ne trouvait aucun fichier ('not include valid file' -> rien n'etait uploade)
release / linux (push) Successful in 13m21s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
v0.4.2
2026-08-17 14:38:13 -04:00
bruno 3c8bb93b8a ci : installer nodejs dans le conteneur avant actions/checkout (le post-step checkout exige node, absent de rust:1.94-alpine) - le job linux echouait avec 'exec: node: executable file not found' apres la reussite du pull d'image
release / linux (push) Successful in 13m4s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 14:20:11 -04:00
bruno 363d5e3286 ci : documente l'espace disque requis sur le runner dans le workflow
release / linux (push) Failing after 48s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 14:17:09 -04:00
bruno 4c60ab5bcc docs : methode de build linux musl avec cargo-zigbuild (aarch64 + x86_64) dans RELEASING.md
release / linux (push) Failing after 22s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 13:42:53 -04:00
bruno e24e518846 ci : job linux avec cargo-zigbuild (aarch64 musl) + empreinte disque reduite - rust:1.94-alpine n'a pas de compilateur croise aarch64 (le step aarch64 echouait avec 'aarch64-linux-musl-gcc not found') ; cargo-zigbuild produit x86_64 + aarch64 musl avec zig (~50 Mo) en une seule image ; CARGO_TARGET_DIR=/tmp + CARGO_INCREMENTAL=0 pour ne rien laisser sur le runner ; concurrency cancel-in-progress ; le setup job peut aussi echouer sur disque plein (no space left on device) : nettoyer docker sur l'hote
release / linux (push) Failing after 25s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 13:38:07 -04:00
bruno 2c079b0ccd v0.4.2 : menu de completion Nushell (reedline) + correction des chemins Windows - remplace rustyline par reedline (menu Tab interactif : 1er choix surbrille, Tab navigue, Entree valide, Esc ferme, filtrage en direct, descriptions, couleurs du theme), tokenizer Windows preservant les backslashes pour cd/ls (shell_words mangeait les \), historique history.txt conserve, repli sans terminal, tests + man pages regeneres
release / linux (push) Failing after 24s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 13:08:50 -04:00
bruno e6e85e2a9e ci : release_overwrite + prerequis runner documentes (pull docker.io, secret GITEA_TOKEN)
release / linux (push) Failing after 24s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
v0.4.1
2026-08-17 10:54:36 -04:00
bruno 56732d672b v0.4.1 : Phase 1 complete (17/17) - dashboard TUI (#33), favoris/notes/tags (#39), profils d'environnement (#40), completions dynamiques + man pages (#41), packaging officiel + CI (#42), self-update Gitea, state v3, 212 tests
release / linux (push) Failing after 23s
release / windows (push) Canceled after 0s
release / macos (push) Canceled after 0s
2026-08-17 10:50:13 -04:00
bruno 4f4cd034b2 v0.4.0 : Phase 1 partielle (13/17) - recherche fuzzy, reexecution d'historique, projects+profils, start contextuel, timeline, sessions resume, hooks, watch, secret (keyring), top, report, log --follow v0.4.0 2026-08-17 09:14:48 -04:00
bruno aeca797ae0 Merge pull request 'secret : trousseau OS + injection @secret (issue #36)' (#86) from feat/secrets into main 2026-08-17 09:09:16 -04:00
bruno 354c914c43 secret : trousseau OS (keyring) + injection @secret au start/run (issue #36) - valeurs jamais affichees ni journalisees, mock testable, fallback clair sans trousseau 2026-08-17 09:09:04 -04:00
bruno c57d3a333d Merge pull request 'top + report + log --follow (issues #37 #38)' (#85) from feat/top-report into main 2026-08-17 09:03:58 -04:00
bruno 16926ffb00 top + report + log --follow (issues #37 #38) - top 10 par lancements, digest markdown hebdo/mensuel, suivi du journal en direct 2026-08-17 09:03:44 -04:00
bruno f14b59e63b Merge pull request 'watch : supervision + redémarrage automatique (issue #35)' (#84) from feat/watch into main 2026-08-17 08:58:32 -04:00
bruno 8d93eece1e watch : supervision d'un agent avec redemarrage automatique et backoff (issue #35) - check_once testable, notification desktop, Ctrl-C n'affecte pas l'agent detache 2026-08-17 08:58:19 -04:00
bruno 2a1fcfeed6 Merge pull request 'hooks : on_install/on_start/on_stop/on_update (issue #34)' (#83) from feat/hooks into main 2026-08-17 08:55:49 -04:00
bruno 18784ba9f7 hooks : on_install/on_start/on_stop/on_update globaux (settings.hooks) et par projet (issue #34) - echec non bloquant, dry-run respecte, ordre global puis projet 2026-08-17 08:55:35 -04:00
bruno 3220a323ef Merge pull request 'sessions : am sessions --resume (issue #32)' (#82) from feat/sessions-resume into main 2026-08-17 08:48:45 -04:00
bruno 30cc49de3c sessions : am sessions --resume <id> (issue #32) - relance en arriere-plan avec les arguments et le cwd d'origine, cwd optionnel dans spawn_background, gardes running/repl/erreurs claires 2026-08-17 08:48:30 -04:00
bruno 314583ceee Merge pull request 'timeline : vue chronologique unifiée (issue #31)' (#81) from feat/timeline into main 2026-08-17 08:45:16 -04:00
bruno ed795c522f timeline : vue chronologique unifiee journal + historique REPL (issue #31) - filtres agent/projet/date, limite, parse_since partage 2026-08-17 08:45:03 -04:00
bruno bbc2bb889d roadmap : decoupage des phases 2 (v0.5.0, issues #47 #49-#75) et 3 (v1.0, issues #48 #76-#80) sur Gitea 2026-08-17 08:15:16 -04:00
bruno 904e340cdd Merge pull request 'start contextuel : agent par défaut du projet (issue #30)' (#46) from feat/start-context into main 2026-08-17 08:13:35 -04:00
bruno 5f8b973789 start contextuel : am start sans argument lance l'agent par defaut du projet (issue #30) - resolution pure resolve_start_target, restart identique, REPL sans agent obligatoire 2026-08-17 08:13:19 -04:00
bruno 463fa6b937 Merge pull request 'projects : am projects + profils de projet (issue #29)' (#45) from feat/projects into main 2026-08-17 08:10:57 -04:00
bruno dc7372f277 projects : am projects (agregats par depot depuis le journal) + profils de projet dans la config (issue #29) - agent dominant, sessions, durees, cache projects.json rafraichi par doctor --fix 2026-08-17 08:10:42 -04:00
bruno a23bc6b5ae Merge pull request 'history : réexécution !! !N ^old^new + am history --rerun (issues #27 #28)' (#44) from feat/history-rerun into main 2026-08-17 08:06:16 -04:00
bruno 81c69db17b history : reexecution (issues #27 #28) - expansion !! !N !prefix ^old^new dans le REPL + am history --rerun N avec confirmation (shell ou commande am) 2026-08-17 08:05:58 -04:00
bruno 9e6c8aca08 Merge pull request 'search : recherche fuzzy + suggestions (issue #26)' (#43) from feat/fuzzy-search into main 2026-08-17 08:01:56 -04:00
bruno 4ef89cde72 search : recherche fuzzy avec scoring + suggestions vouliez-vous-dire (issue #26) - sous-chaine, subsequence, tolerance de frappe (Levenshtein), tri par pertinence 2026-08-17 08:01:39 -04:00
bruno 2eaafe6e2a v0.3.0 : picoclaw en binaire 64-bit officiel (sipeed/picoclaw releases) + shims git en .cmd sur Windows (fini le batch renomme en .exe qui donnait Unsupported 16-Bit Application) avec routage via cmd.exe 2026-08-17 07:52:17 -04:00
bruno deeb489b4e v0.3.0 : menu d autocompletion - les barres verticales des menus en colonne unique (ex. completion de theme) prennent la couleur du cadre du theme 2026-08-17 06:55:07 -04:00
bruno fc243d2f21 docs: decoupage Phase 1 (v0.4.0) dans le ROADMAP - 17 issues + epique, milestone v0.4.0 2026-08-16 23:20:07 -04:00
bruno 6ecfa0d21c v0.3.0 : Phase 0 du ROADMAP livree - journal d'evenements, sessions, stats, log, historique structure, am init, quick wins; README et ROADMAP a jour v0.3.0 2026-08-16 22:48:53 -04:00
bruno 3902bbcb37 Merge pull request 'quick wins #9-#13 et #16 : logs, list --sort, config set, alias, dedup, open' (#24) from feat/quick-wins into main 2026-08-16 22:45:27 -04:00
bruno d4a6aeae1d quick wins (issues #9 #10 #11 #12 #13 #16) : am logs (tail+follow), am list --running/--sort, am config set, am alias add/remove/list, dedup historique, am open 2026-08-16 22:45:11 -04:00
bruno 38d0729cb3 Merge pull request 'init + contexte : am init et détection de projet (issue #8)' (#23) from feat/init-context into main 2026-08-16 22:40:15 -04:00
bruno 85d44f9e56 init+contexte : am init genere un agent-manager.yaml selon la stack detectee + contexte projet (git root, branche, stack) attache aux evenements et sessions (issue #8) 2026-08-16 22:40:00 -04:00
bruno 48e85555f7 Merge pull request 'history : historique structuré + am history (issue #7)' (#22) from feat/history into main 2026-08-16 22:35:01 -04:00
bruno c9e2543f50 history : historique structure par session + am history (issue #7) - migration one-shot de history.txt, filtres kind/cwd/search/failed/session, enregistrement REPL avec duree et exit 2026-08-16 22:34:48 -04:00
bruno 9f4a13eae2 Merge pull request 'stats + log : observabilité du journal (issue #6)' (#21) from feat/stats-log into main 2026-08-16 22:30:54 -04:00
bruno 33748bea36 stats+log : am stats (agregats par agent, periodes 7d/30d/90d, barres ASCII) et am log (filtres agent/kind/date, limite) (issue #6) 2026-08-16 22:30:41 -04:00
bruno 19e77fd261 Merge pull request 'sessions : registre central + am sessions (issue #5)' (#20) from feat/sessions into main 2026-08-16 22:22:23 -04:00
bruno 38b7a3a915 sessions : registre des sessions + commande am sessions (issue #5) - lifecycle agent/repl, reconciliation des sessions interrompues, compteur sessions_count, filtres agent/projet/statut, show avec extrait de log 2026-08-16 22:22:09 -04:00