feat(memory): config embedders (LOT C2) + suggestion contextuelle (LOT C3) + contexte projet partagé
- LOT C2 (§14.5.3) : use cases de configuration des embedders déclaratifs (List/Save/Delete + DescribeEmbedderEngines : modèles ONNX recommandés, environnement local détecté, stratégies compilées). UI EmbedderSettings. - LOT C3 (§14.5.5) : suggestion contextuelle best-effort à l'activation quand la mémoire dépasse le budget de recall sans embedder configuré (event EmbedderSuggested, anti-spam 1×/session, « ne plus demander »). - Contexte projet partagé .ideai/CONTEXT.md (model-agnostic) injecté à tous les agents/profils au lancement, avant la persona. UI ProjectContextPanel. Tests : backend workspace vert (0 échec) ; frontend 306/306. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -4,8 +4,8 @@
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
||||
use domain::ports::GitPort;
|
||||
use domain::ports::GitError;
|
||||
use domain::ports::GitPort;
|
||||
use domain::project::ProjectPath;
|
||||
use infrastructure::Git2Repository;
|
||||
use uuid::Uuid;
|
||||
@ -99,7 +99,12 @@ async fn unstage_after_first_commit_resets_index() {
|
||||
// Modify + stage, then unstage → the change is no longer staged.
|
||||
tmp.write("a.txt", "v2");
|
||||
git.stage(&root, "a.txt").await.unwrap();
|
||||
assert!(git.status(&root).await.unwrap().iter().any(|s| s.path == "a.txt" && s.staged));
|
||||
assert!(git
|
||||
.status(&root)
|
||||
.await
|
||||
.unwrap()
|
||||
.iter()
|
||||
.any(|s| s.path == "a.txt" && s.staged));
|
||||
|
||||
git.unstage(&root, "a.txt").await.unwrap();
|
||||
let st = git.status(&root).await.unwrap();
|
||||
|
||||
Reference in New Issue
Block a user