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:
@ -82,11 +82,7 @@ impl GitPort for FakeGit {
|
||||
self.record(&format!("checkout:{branch}"));
|
||||
Ok(())
|
||||
}
|
||||
async fn log(
|
||||
&self,
|
||||
_r: &ProjectPath,
|
||||
_limit: usize,
|
||||
) -> Result<Vec<GitCommitInfo>, GitError> {
|
||||
async fn log(&self, _r: &ProjectPath, _limit: usize) -> Result<Vec<GitCommitInfo>, GitError> {
|
||||
self.record("log");
|
||||
Ok(Vec::new())
|
||||
}
|
||||
@ -135,7 +131,9 @@ async fn status_passes_through_to_port() {
|
||||
staged: true,
|
||||
}]);
|
||||
let out = GitStatus::new(Arc::new(git.clone()))
|
||||
.execute(GitStatusInput { root: ROOT.to_owned() })
|
||||
.execute(GitStatusInput {
|
||||
root: ROOT.to_owned(),
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(out.entries.len(), 1);
|
||||
@ -229,9 +227,14 @@ async fn checkout_publishes_event() {
|
||||
#[tokio::test]
|
||||
async fn branches_returns_list_and_current() {
|
||||
let git = FakeGit::default();
|
||||
git.set_branches(vec!["main".to_owned(), "dev".to_owned()], Some("main".to_owned()));
|
||||
git.set_branches(
|
||||
vec!["main".to_owned(), "dev".to_owned()],
|
||||
Some("main".to_owned()),
|
||||
);
|
||||
let out = GitBranches::new(Arc::new(git.clone()))
|
||||
.execute(GitBranchesInput { root: ROOT.to_owned() })
|
||||
.execute(GitBranchesInput {
|
||||
root: ROOT.to_owned(),
|
||||
})
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(out.branches, vec!["main", "dev"]);
|
||||
|
||||
Reference in New Issue
Block a user