//! # IdeA — Infrastructure layer //! //! Concrete **adapters** implementing the domain ports (ARCHITECTURE §5). All //! real-world I/O (`tokio::fs`, broadcast channels, system clock, UUIDs) lives //! here, never in `domain` or `application`. //! //! L1 shipped the DI/event-relay adapters: [`LocalFileSystem`], //! [`TokioBroadcastEventBus`], [`SystemClock`], [`UuidGenerator`]. L2 adds the //! project persistence adapter [`FsProjectStore`]. L3 adds the local PTY adapter //! [`PortablePtyAdapter`]. Git/remote/template adapters arrive in later lots. #![forbid(unsafe_code)] #![warn(missing_docs)] pub mod assistant; pub mod background_task; pub mod clock; pub mod conversation; pub mod conversation_log; pub mod eventbus; pub mod fileguard; pub mod fs; pub mod git; pub mod id; pub mod input; pub mod inspector; pub mod issues; pub mod mailbox; pub mod model_server; pub mod orchestrator; pub mod pair_attempt_limiter; pub mod permission; pub mod process; pub mod pty; pub mod ratelimit; pub mod remote; pub mod runtime; pub mod sandbox; pub mod scheduler; pub mod session; pub mod sprints; pub mod store; pub mod timeparse; pub use assistant::{FsAssistantContextStore, TicketAssistantEnvironmentPreparer}; pub use background_task::{ bounded_tail, start_background_ready_inbox_bridge, tail_cap_bytes, BackgroundCompletionSink, BackgroundCompletionSinkError, BackgroundCompletionSinkOutcome, BackgroundReadyInboxBridgeHandle, BackgroundTaskReadyToDeliver, BoundedTail, CommandBackgroundRunner, }; pub use clock::SystemClock; pub use conversation::InMemoryConversationRegistry; pub use conversation_log::{ FsConversationLog, FsHandoffStore, FsProviderSessionStore, HeuristicHandoffSummarizer, TURN_LINE_MAX_CHARS, WINDOW, }; pub use eventbus::TokioBroadcastEventBus; pub use fileguard::RwFileGuard; pub use fs::LocalFileSystem; pub use git::Git2Repository; pub use id::UuidGenerator; pub use input::{MediatedInbox, MillisClock, SystemMillisClock}; pub use inspector::{ transcript_activity_token, ClaudeTranscriptInspector, ClaudeTranscriptTurnWatcher, }; pub use issues::{FsIssueNumberAllocator, FsIssueStore}; pub use mailbox::InMemoryMailbox; pub use model_server::{ FsModelServerRegistry, HfModelArtifactDownloader, HttpOpenAiCompatibleProbe, LlamaCppRuntime, LocalManagedProcess, }; pub use orchestrator::mcp::{ McpServer, MemoryTransport, StdioTransport, TicketToolError, TicketToolProvider, ToolPolicyRegistry, }; pub use orchestrator::{ process_request_file, FsOrchestratorWatcher, OrchestratorResponse, OrchestratorWatchHandle, REQUESTS_SUBDIR, }; pub use pair_attempt_limiter::InMemoryPairAttemptLimiter; pub use permission::{ClaudePermissionProjector, CodexPermissionProjector}; pub use process::LocalProcessSpawner; pub use pty::PortablePtyAdapter; pub use ratelimit::RateLimitParser; pub use remote::{remote_host, LocalHost}; pub use runtime::CliAgentRuntime; #[cfg(target_os = "linux")] pub use sandbox::LandlockSandbox; pub use sandbox::{default_enforcer, NoopSandbox}; pub use scheduler::TokioScheduler; pub use session::{ClaudeSdkSession, CodexExecSession, FakeCli, StructuredSessionFactory}; pub use sprints::FsSprintStore; #[cfg(feature = "vector-onnx")] pub use store::OnnxEmbedder; #[cfg(feature = "vector-http")] pub use store::{detect_ollama, HttpEmbedder, DEFAULT_LOCAL_EMBED_ENDPOINT}; pub use store::{ embedder_from_profile, index_token_size, onnx_model_is_cached, should_use_vector, AdaptiveMemoryRecall, BackgroundTaskReconcileReport, EmbedderEnvProbe, FsBackgroundTaskStore, FsDeviceSessionStore, FsEmbedderProfileStore, FsEmbedderPromptStore, FsLiveStateStore, FsMemoryStore, FsPermissionStore, FsProfileStore, FsProjectStore, FsSkillStore, FsTemplateStore, FsWindowStateStore, HashEmbedder, IdeaiContextStore, NaiveMemoryRecall, OnnxModelInfo, StubEmbedder, VectorMemoryRecall, DEFAULT_OLLAMA_BASE_URL, ONNX_CACHE_SUBDIR, RECOMMENDED_ONNX_MODELS, VECTOR_HTTP_ENABLED, VECTOR_ONNX_ENABLED, };