Skip to main content

microclaw_engine/
lib.rs

1//! Concrete, channel-independent MicroClaw Agent Engine services.
2//!
3//! This crate is the physical extraction boundary for the provider-neutral loop and its default
4//! services. Product crates translate input/output at their edge and consume this library.
5
6// Some public helpers are consumed only by product crates, so they are intentionally not all
7// reachable from this crate's own entry points.
8#![allow(dead_code)]
9
10mod internal;
11
12pub mod channel {
13    pub use crate::internal::channels::channel::*;
14}
15
16pub mod channel_adapter {
17    pub use crate::internal::channels::channel_adapter::*;
18}
19
20pub mod observability {
21    pub use crate::internal::observability::*;
22}
23
24pub mod storage {
25    pub use crate::internal::storage::*;
26}
27
28pub mod tool_runtime {
29    pub use crate::internal::tool_runtime::*;
30}
31
32pub mod worker {
33    pub use crate::internal::worker::*;
34}
35
36pub mod a2a;
37pub mod acp_subagent;
38pub mod agent_engine;
39pub mod alerts;
40pub mod chat_commands;
41pub mod chat_turn_queue;
42pub mod checkpoint;
43pub mod clawhub;
44pub mod codex_auth;
45pub mod completion_contract;
46pub mod config;
47pub mod config_persistence;
48pub mod context_references;
49pub mod embedding;
50pub mod headless;
51pub mod hooks;
52pub mod http_client;
53pub mod learning_foundry;
54pub mod llm;
55pub mod mcp;
56pub mod memory_backend;
57pub mod memory_service;
58pub mod messages;
59pub mod mood;
60pub mod plugins;
61pub mod prompt_cache;
62pub mod relationship;
63pub mod run_control;
64pub mod schedule_lifecycle;
65pub mod setup;
66pub mod setup_def;
67pub mod skill_audit;
68pub mod skill_review;
69pub mod skills;
70pub mod subdirectory_hints;
71pub mod supervision;
72pub mod title_generator;
73pub mod tool_executor;
74pub mod tool_guardrails;
75pub mod tools;
76pub mod trust_report;
77pub mod turn_recovery;
78pub mod voice;
79
80pub mod channels;
81pub mod runtime;
82
83pub use internal::app::builtin_skills;
84pub use internal::app::logging;
85pub use internal::app::transcribe;
86pub use internal::runtime::{
87    AgentHandle, ControlRequest, ExecutionContext, ExecutionResult, LocalWorker, RemoteWorker,
88    RunController, RunExecutor, RunHandle, Runtime, RuntimeBuildError, RuntimeBuilder,
89    RuntimeStats, Worker, WorkerConnection, WorkerTransport,
90};
91pub use internal::storage::memory;
92pub use internal::worker::{WebSocketWorkerTransport, WorkerHost};
93pub use microclaw_core::error;
94pub use microclaw_core::llm_types;
95
96#[cfg(test)]
97pub mod test_support {
98    use std::sync::{Mutex, MutexGuard, OnceLock};
99
100    pub fn env_lock() -> MutexGuard<'static, ()> {
101        static ENV_LOCK: OnceLock<Mutex<()>> = OnceLock::new();
102        ENV_LOCK
103            .get_or_init(|| Mutex::new(()))
104            .lock()
105            .expect("env lock poisoned")
106    }
107}