feat(infra): tmp partagé inter-projets géré par IdeA (handles opaques, leases, GC, projection sandbox) — #189 (QA verte)
- Domaine: port ManagedTempStore + modèle (handle opaque, kind Directory/File, état Active/Released, allocation/lease, expiry). - Application: use cases Allocate/Resolve/Release/GcManagedTemp, horodatés via Clock. - Infrastructure: impl FS FsManagedTempStore sous app_data_dir/managed-tmp (root global inter-projets, métadonnées par handle, GC des leases expirés/libérés). - Exposition MCP contrôlée (ManagedTempToolProvider, catalogue) + câblage sandbox: les agents résolvent un handle au lieu d'inventer un path libre. - Tests: application/infrastructure managed_temp.
This commit is contained in:
@ -12,11 +12,12 @@ use std::sync::{Arc, Mutex};
|
||||
|
||||
use backend::BackendCore;
|
||||
use domain::PersistedPluginLayoutWindow;
|
||||
use infrastructure::{TemplateToolProvider, TicketToolProvider};
|
||||
use infrastructure::{ManagedTempToolProvider, TemplateToolProvider, TicketToolProvider};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::chat::ChatBridge;
|
||||
use crate::embedded_server::EmbeddedServerController;
|
||||
use crate::managed_temp::AppManagedTempToolProvider;
|
||||
use crate::pty::PtyBridge;
|
||||
use crate::templates::AppTemplateToolProvider;
|
||||
use crate::tickets::AppTicketToolProvider;
|
||||
@ -90,6 +91,13 @@ impl AppState {
|
||||
update: Arc::clone(&core.update_template),
|
||||
delete: Arc::clone(&core.delete_template),
|
||||
}) as Arc<dyn TemplateToolProvider>);
|
||||
core.managed_temp_tool_binder
|
||||
.bind(Arc::new(AppManagedTempToolProvider {
|
||||
allocate: Arc::clone(&core.allocate_managed_temp),
|
||||
resolve: Arc::clone(&core.resolve_managed_temp),
|
||||
release: Arc::clone(&core.release_managed_temp),
|
||||
gc: Arc::clone(&core.gc_managed_temp),
|
||||
}) as Arc<dyn ManagedTempToolProvider>);
|
||||
|
||||
Self {
|
||||
core,
|
||||
|
||||
Reference in New Issue
Block a user