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_management;
69pub mod skill_review;
70pub mod skills;
71pub mod subdirectory_hints;
72pub mod supervision;
73pub mod title_generator;
74pub mod tool_executor;
75pub mod tool_guardrails;
76pub mod tools;
77pub mod trust_report;
78pub mod turn_recovery;
79pub mod voice;
80
81pub mod channels;
82pub mod runtime;
83
84pub use internal::app::builtin_skills;
85pub use internal::app::logging;
86pub use internal::app::transcribe;
87pub use internal::runtime::{
88    AgentHandle, ControlRequest, ExecutionContext, ExecutionResult, LocalWorker, RemoteWorker,
89    RemoteWorkerOptions, RunController, RunExecutor, RunHandle, Runtime, RuntimeBuildError,
90    RuntimeBuilder, RuntimeStats, Worker, WorkerConnection, WorkerTransport,
91};
92pub use internal::storage::memory;
93pub use internal::worker::{WebSocketWorkerTransport, WorkerHost};
94pub use microclaw_core::error;
95pub use microclaw_core::llm_types;
96
97#[cfg(test)]
98pub mod test_support {
99    use std::sync::{Mutex, MutexGuard, OnceLock};
100
101    pub fn env_lock() -> MutexGuard<'static, ()> {
102        static ENV_LOCK: OnceLock<Mutex<()>> = OnceLock::new();
103        ENV_LOCK
104            .get_or_init(|| Mutex::new(()))
105            .lock()
106            .expect("env lock poisoned")
107    }
108}