Files
IdeA/crates/application/src/project/mod.rs
Blomios 785e9935fd 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>
2026-06-09 09:24:51 +02:00

32 lines
1.4 KiB
Rust

//! Project life-cycle use cases (ARCHITECTURE §6, L2).
//!
//! Each use case is a struct carrying its ports as `Arc<dyn Port>` and exposing
//! a single `execute(input) -> Result<output, AppError>` method
//! (**Single Responsibility**). They talk **only** to the domain ports, never to
//! concrete adapters; the composition root injects the implementations.
//!
//! - [`CreateProject`] — validate the root, create `.ideai/project.json`,
//! register the project, publish [`domain::DomainEvent::ProjectCreated`].
//! - [`OpenProject`] — load a project and its `.ideai/project.json` meta (plus,
//! tolerantly, the agent manifest if present).
//! - [`CloseProject`] / [`CloseTab`] — persist state and release resources
//! (no PTYs yet in L2).
//! - [`ListProjects`] — list known projects from the registry.
mod close;
mod context;
mod create;
pub(crate) mod meta;
mod open;
pub use close::{CloseProject, CloseProjectInput, CloseProjectOutput, CloseTab, CloseTabInput};
pub use context::{
project_context_path, ReadProjectContext, ReadProjectContextInput, ReadProjectContextOutput,
UpdateProjectContext, UpdateProjectContextInput, PROJECT_CONTEXT_FILE,
};
pub use create::{CreateProject, CreateProjectInput, CreateProjectOutput};
pub use meta::ProjectMeta;
pub use open::{
ListProjects, ListProjectsOutput, OpenProject, OpenProjectInput, OpenProjectOutput,
};