Files
sasecodingagent-project/TODOLIST.md
2026-04-07 12:25:12 +02:00

13 KiB
Raw Permalink Blame History

SaseAgent v1 - TODO

0. Décisions fondatrices

  • Choisir SQLite pour la v1
  • Valider la structure en workspace Rust
  • Valider le découpage initial des crates
  • Définir les contraintes de code globales
  • Ajouter les règles de code au README.md racine
  • Ajouter docs/coding_rules.md
  • Définir les rôles providers v1
  • Définir les outils v1 autorisés
  • Définir les policies minimales de sécurité

1. Workspace et structure Rust

  • Créer le workspace sasecodingagent-project
  • Ajouter la crate binaire sca-app
  • Ajouter la crate lib sca-core
  • Ajouter la crate lib sca-infra
  • Ajouter la crate lib sca-ia
  • Ajouter la crate sca-tests
  • Définir proprement les dépendances entre crates
  • Mettre en place un Cargo.toml workspace propre
  • Ajouter une configuration de build commune
  • Ajouter les dépendances de base (tokio, tracing, serde, etc.)
  • Ajouter clippy.toml
  • Ajouter rustfmt.toml
  • Ajouter les scripts de contrôle qualité
  • Formaliser la politique dexport public via src/lib.rs
  • Vérifier que chaque crate exporte son API publique via mod + pub use
  • Interdire les fuites dAPI publiques accidentelles
  • Nettoyer les dépendances bannies si encore présentes dans les Cargo.toml

2. Règles de code et qualité

2.1 Contraintes globales

  • Interdire ?
  • Interdire unwrap / expect
  • Imposer lerror handling explicite
  • Bannir thiserror
  • Bannir anyhow
  • Interdire mod.rs
  • Rendre tracing obligatoire
  • Activer #![deny(unreachable_pub)]
  • Activer #![warn(missing_docs)]
  • Documenter les hard constraints dans le README.md
  • Documenter les règles détaillées dans docs/coding_rules.md
  • Définir la stratégie “single error type or minimal error types”
  • Définir la convention de spans tracing
  • Définir la convention de structured fields tracing
  • Définir la convention de logs derreurs
  • Définir la convention de nommage des erreurs par crate

2.2 Contrôles automatiques

  • Ajouter un script pour détecter ?
  • Ajouter un script pour détecter unwrap / expect
  • Ajouter un script pour détecter thiserror / anyhow
  • Ajouter un script pour détecter mod.rs
  • Ajouter un script pour contrôler les exports publics basiques
  • Ajouter un script global run_quality_checks.sh
  • Rendre tous les scripts exécutables dans le dépôt
  • Vérifier les scripts sur Linux
  • Ajouter cargo fmt --all --check au flux qualité
  • Ajouter cargo clippy --workspace --all-targets --all-features -- -D warnings
  • Ajouter cargo check --workspace
  • Ajouter plus tard une CI pour exécuter les checks automatiquement

3. Core domain

3.1 Types métier

  • Définir Project
  • Définir Task
  • Définir TaskDependency
  • Définir Iteration
  • Définir ActionLog
  • Définir KnowledgeEntry
  • Définir KnowledgeChunk
  • Définir Provider
  • Définir ProviderBinding
  • Définir PolicyProfile
  • Définir ContextProfile

3.2 Enums métier

  • Définir TaskStatus
  • Définir IterationStatus
  • Définir ActionKind
  • Définir KnowledgeKind
  • Définir ProviderKind
  • Définir ProviderRole
  • Définir ToolKind

3.3 Payloads structurés

  • Définir ThinkingRequest
  • Définir ThinkingResult
  • Définir ToolCall
  • Définir ToolResult
  • Définir ProviderRequest
  • Définir ProviderResponse
  • Définir ContextAssembly
  • Définir CommandSpec
  • Définir CommandResult

3.4 Erreurs

  • Définir les erreurs métier globales ou par domaine
  • Définir une stratégie derreurs cohérente entre crates
  • Définir les erreurs publiques minimales par crate
  • Définir la convention de conversion / propagation manuelle des erreurs

4. Stockage SQLite

4.1 Schéma

  • Définir les tables SQLite
  • Définir les index nécessaires
  • Définir la stratégie dévolution du schéma

4.2 Migrations

  • Créer les migrations initiales
  • Ajouter la table projects
  • Ajouter la table tasks
  • Ajouter la table task_dependencies
  • Ajouter la table iterations
  • Ajouter la table action_logs
  • Ajouter la table knowledge_entries
  • Ajouter la table knowledge_chunks
  • Ajouter la table providers
  • Ajouter la table provider_bindings
  • Ajouter la table policy_profiles
  • Ajouter la table context_profiles

4.3 Repositories

  • Implémenter le repository projects
  • Implémenter le repository tasks
  • Implémenter le repository iterations
  • Implémenter le repository action_logs
  • Implémenter le repository knowledge_entries
  • Implémenter le repository knowledge_chunks
  • Implémenter le repository providers
  • Implémenter le repository provider_bindings
  • Implémenter le repository policy_profiles
  • Implémenter le repository context_profiles

5. Policies et sécurité

5.1 Fichiers

  • Implémenter la résolution sécurisée des chemins
  • Interdire les sorties hors workspace
  • Gérer les chemins relatifs
  • Définir la policy symlink

5.2 Outils

  • Définir ToolPolicy
  • Définir quels outils sont autorisés par défaut
  • Définir les restrictions par projet

5.3 Commandes

  • Définir CommandPolicy
  • Définir la whitelist initiale des programmes
  • Définir les timeouts
  • Définir les limites stdout/stderr
  • Définir les variables denvironnement autorisées

5.4 Providers

  • Définir ProviderPolicy
  • Définir quels providers sont autorisés par rôle
  • Définir les contraintes de routage minimales

6. Tools v1

6.1 Navigation

  • Implémenter ls
  • Implémenter tree
  • Implémenter pwd_workspace
  • Implémenter stat_path

6.2 Lecture

  • Implémenter read_file
  • Implémenter read_file_range
  • Implémenter read_multiple_files

6.3 Création / écriture

  • Implémenter create_dir
  • Implémenter create_file
  • Implémenter write_file
  • Implémenter append_file

6.4 Recherche

  • Implémenter search_text
  • Implémenter search_regex
  • Implémenter search_glob

6.5 Modification

  • Implémenter search_and_replace
  • Implémenter replace_range
  • Implémenter insert_before
  • Implémenter insert_after

6.6 Diff

  • Implémenter diff_view
  • Implémenter compare_text_versions

6.7 Git

  • Implémenter git_status
  • Implémenter git_branch
  • Implémenter git_log
  • Implémenter git_show
  • Implémenter git_diff

6.8 Commandes

  • Implémenter run_command
  • Ajouter timeout et capture de sortie
  • Ajouter audit des commandes

6.9 Interaction

  • Implémenter chat_with_user
  • Implémenter add_user_note

7. Providers et routing

7.1 Abstraction provider

  • Définir linterface provider
  • Définir les capacités supportées
  • Définir les types de requêtes/réponses unifiés

7.2 Providers v1

  • Implémenter ollama_chat
  • Implémenter ollama_embed
  • Implémenter local_regex_search
  • Implémenter local_lexical_search

7.3 Registre

  • Implémenter le registre providers
  • Ajouter le chargement depuis le stockage
  • Ajouter la résolution par id
  • Ajouter la résolution par rôle
  • Ajouter un fallback simple

7.4 Bindings

  • Ajouter les bindings par projet
  • Ajouter les overrides par tâche
  • Ajouter les overrides par itération

7.5 Routing

  • Implémenter le routeur de providers
  • Définir la stratégie de sélection v1
  • Définir la stratégie de fallback v1

8. Knowledge base / RAG

8.1 Modèle

  • Définir KnowledgeSource
  • Définir les types de sources
  • Définir les métadonnées de chunking

8.2 Ingestion

  • Implémenter lingestion depuis un répertoire local
  • Implémenter lingestion depuis un dépôt git local
  • Filtrer les fichiers non pertinents
  • Gérer les fichiers binaires
  • Gérer les tailles limites

8.3 Chunking

  • Implémenter le chunking v1
  • Ajouter overlap simple
  • Stocker les offsets / lignes si possible

8.4 Embeddings

  • Générer les embeddings via Ollama
  • Stocker les embeddings
  • Définir un pipeline de réindexation

8.5 Recherche

  • Implémenter la recherche lexicale
  • Implémenter la recherche vectorielle
  • Implémenter kb_search
  • Définir le format des résultats
  • Ajouter un merge lexical + vectoriel simple

8.6 Édition

  • Implémenter kb_add_entry
  • Implémenter kb_update_entry
  • Implémenter kb_disable_entry
  • Implémenter kb_reindex_source

9. Thinking et construction du contexte

9.1 Thinking

  • Implémenter ThinkingRequest
  • Implémenter ThinkingResult
  • Définir les intentions v1
  • Implémenter le premier thinking_stage

9.2 Context builder

  • Définir ContextProfile
  • Construire le contexte système
  • Construire le contexte projet
  • Construire le contexte tâche / itération
  • Construire la mémoire de travail
  • Ajouter les résultats KB
  • Ajouter les dernières actions
  • Ajouter un budget / compaction

9.3 Liens tâches / actions / providers

  • Lier une tâche à des rôles providers
  • Lier une itération à des overrides providers
  • Lier une action à un provider effectivement utilisé
  • Historiser quel provider a servi à quelle action

10. Orchestrateur

10.1 Iteration manager

  • Ouvrir une itération
  • Reprendre une itération
  • Clôturer une itération
  • Marquer une itération en échec
  • Résumer une itération

10.2 Action dispatcher

  • Dispatcher les actions outils
  • Dispatcher les actions providers
  • Persister toutes les actions
  • Normaliser les résultats

10.3 Task progression

  • Calculer létat de progression dune tâche
  • Gérer les dépendances
  • Marquer une tâche Done
  • Marquer une tâche Blocked
  • Déterminer la prochaine tâche exécutable

10.4 Boucle dexécution

  • Implémenter la boucle ditération
  • Définir les conditions darrêt
  • Ajouter les limites de sécurité
  • Gérer les erreurs et reprises partielles

11. API / chat

11.1 Projets

  • Créer un projet
  • Lister les projets
  • Lire un projet
  • Mettre à jour un projet

11.2 Tâches

  • Créer une tâche
  • Lister les tâches
  • Lire une tâche
  • Mettre à jour le statut
  • Définir les dépendances
  • Définir les provider bindings

11.3 Itérations

  • Démarrer une itération
  • Reprendre une itération
  • Arrêter une itération
  • Afficher lhistorique ditération

11.4 Chat

  • Envoyer un message utilisateur
  • Recevoir une réponse agent
  • Déclencher une itération depuis le chat

11.5 KB

  • Ajouter une entrée KB
  • Modifier une entrée KB
  • Rechercher dans la KB
  • Lancer une ingestion
  • Lancer une réindexation

11.6 Providers

  • Ajouter un provider
  • Lister les providers
  • Vérifier la santé dun provider
  • Associer un provider à un rôle

11.7 Logs / diagnostics

  • Lister les actions récentes
  • Lister les erreurs récentes
  • Lire la sortie de la dernière commande
  • Lire les derniers diffs

12. Reprise et stabilisation

12.1 Résumés

  • Générer un résumé de fin ditération
  • Générer un résumé de tâche
  • Conserver les décisions darchitecture

12.2 Reprise

  • Recharger la mémoire de travail
  • Réinjecter le bon contexte
  • Reprendre une tâche sur plusieurs sessions

12.3 Audit

  • Journaliser tous les appels outils
  • Journaliser toutes les commandes
  • Journaliser tous les providers appelés
  • Journaliser les échecs

12.4 Tests

  • Ajouter des tests unitaires domaine
  • Ajouter des tests de stockage SQLite
  • Ajouter des tests tools fichiers
  • Ajouter des tests commandes
  • Ajouter des tests providers
  • Ajouter des tests KB
  • Ajouter des tests ditération
  • Ajouter des tests de reprise

13. V1 Definition of Done

  • Un projet peut être créé avec un workspace
  • Une tâche peut être créée et liée à un projet
  • Une itération peut être lancée sur une tâche
  • Le thinking stage produit un plan structuré
  • Le routeur choisit un provider adapté
  • Le contexte est construit dynamiquement
  • Les tools fichiers/recherche/diff fonctionnent
  • run_command fonctionne avec policy
  • La KB est éditable et interrogeable
  • Toutes les actions sont persistées
  • Une tâche peut être reprise plus tard
  • Les actions, erreurs et diffs sont consultables