Skip to main content

nexo_driver_loop/
lib.rs

1//! Driver agent loop. See `README.md` and
2//! `docs/src/architecture/driver-subsystem.md` for the architecture.
3
4pub mod acceptance;
5pub mod attempt;
6pub mod compact_store;
7pub mod config;
8pub mod error;
9pub mod evaluators;
10pub mod events;
11pub mod extract_memories;
12pub mod extract_memories_prompt;
13pub mod harness;
14pub mod llm_decider;
15pub mod mcp_config;
16pub mod memory;
17pub mod orchestrator;
18pub mod post_compact_cleanup;
19pub mod proactive;
20pub mod prompt;
21pub mod replay;
22// Socket server uses tokio's Unix-domain primitives — guard
23// the module so Windows builds (which don't ship UnixListener
24// / UnixStream) compile clean. Operators on Windows targeting
25// the daemon's permission-prompt forwarder can either run via
26// WSL or wait for the follow-up that swaps Unix sockets for a
27// named-pipe / TCP-loopback fallback.
28#[cfg(unix)]
29pub mod socket;
30pub mod workspace;
31
32pub use acceptance::{
33    AcceptanceEvaluator, CustomVerifier, CustomVerifierRegistry, DefaultAcceptanceEvaluator,
34    GitClean, NoPathsTouched, NoopAcceptanceEvaluator, ShellResult, ShellRunner,
35};
36pub use config::{
37    AcceptanceConfig, BindingStoreConfig, BindingStoreKind, CompactPolicyConfig, DeciderConfig,
38    DeciderMemoryConfig, DenyShortcutConfig, DriverBinConfig, DriverConfig,
39    EmbeddingProviderConfig, NamespaceConfig, PermissionConfig, ReplayPolicyConfig,
40    WorkspaceConfig, WorkspaceGitConfig,
41};
42pub use error::DriverError;
43#[cfg(feature = "nats")]
44pub use events::NatsEventSink;
45pub use events::{DriverEvent, DriverEventSink, NoopEventSink};
46pub use harness::ClaudeHarness;
47pub use llm_decider::LlmDecider;
48pub use mcp_config::write_mcp_config;
49pub use memory::{DecisionMemory, Namespace, NoopDecisionMemory, SqliteVecDecisionMemory};
50pub use orchestrator::{DriverOrchestrator, DriverOrchestratorBuilder, GoalOutcome};
51pub use prompt::compose_turn_prompt;
52pub use replay::{
53    DefaultReplayPolicy, ReplayContext, ReplayDecision, ReplayOutcomeHint, ReplayPolicy,
54};
55#[cfg(unix)]
56pub use socket::{DriverSocketServer, SocketMessage};
57pub use workspace::{GitWorktreeMode, WorkspaceManager};