Skip to main content

clawft_kernel/
lib.rs

1//! WeftOS kernel layer for clawft.
2//!
3//! This crate provides the kernel abstraction layer that sits between
4//! the CLI/API surface and `clawft-core`. It introduces:
5//!
6//! - **Boot sequence** ([`boot::Kernel`]) -- lifecycle management
7//!   wrapping `AppContext` with structured startup/shutdown.
8//! - **Process table** ([`process::ProcessTable`]) -- PID-based
9//!   agent tracking with state machine transitions.
10//! - **Service registry** ([`service::ServiceRegistry`]) -- named
11//!   service lifecycle with health checks.
12//! - **IPC** ([`ipc::KernelIpc`]) -- typed message envelopes over
13//!   the existing `MessageBus`.
14//! - **Capabilities** ([`capability::AgentCapabilities`]) -- permission
15//!   model for agent processes.
16//! - **Health monitoring** ([`health::HealthSystem`]) -- aggregated
17//!   health checks across all services.
18//! - **Console** ([`console`]) -- boot event types and output
19//!   formatting for the interactive kernel terminal.
20//! - **Configuration** ([`config::KernelConfig`]) -- kernel-specific
21//!   settings embedded in the root config.
22//! - **Containers** ([`container::ContainerManager`]) -- sidecar
23//!   container lifecycle and health integration.
24//! - **Applications** ([`app::AppManager`]) -- application manifest
25//!   parsing, validation, and lifecycle state machine.
26//! - **Cluster** ([`cluster::ClusterMembership`]) -- multi-node
27//!   cluster membership, peer tracking, and health.
28//! - **Environments** ([`environment::EnvironmentManager`]) --
29//!   governance-scoped dev/staging/prod environments.
30//! - **Governance** ([`governance::GovernanceEngine`]) -- three-branch
31//!   constitutional governance with effect algebra scoring.
32//! - **Agency** ([`agency::Agency`]) -- agent-first architecture
33//!   with roles, spawn permissions, and agent manifests.
34//!
35//! # Feature Flags
36//!
37//! - `native` (default) -- enables tokio runtime, native file I/O.
38//! - `wasm-sandbox` -- enables WASM tool runner (Phase K3).
39//! - `containers` -- enables container manager (Phase K4).
40//! - `ecc` -- enables ECC cognitive substrate (Phase K3c).
41
42// ── ECC cognitive substrate modules (K3c) ────────────────────────
43#[cfg(feature = "ecc")]
44pub mod artifact_store;
45#[cfg(feature = "ecc")]
46pub mod calibration;
47#[cfg(feature = "ecc")]
48pub mod causal;
49#[cfg(feature = "ecc")]
50pub mod cognitive_tick;
51#[cfg(feature = "ecc")]
52pub mod crossref;
53#[cfg(feature = "ecc")]
54pub mod democritus;
55#[cfg(feature = "ecc")]
56pub mod embedding;
57#[cfg(feature = "ecc")]
58pub mod embedding_onnx;
59#[cfg(feature = "ecc")]
60pub mod hnsw_service;
61#[cfg(feature = "ecc")]
62pub mod impulse;
63#[cfg(feature = "ecc")]
64pub mod persistence;
65#[cfg(feature = "ecc")]
66pub mod weaver;
67
68pub mod a2a;
69pub mod agency;
70pub mod agent_loop;
71pub mod app;
72pub mod boot;
73pub mod capability;
74pub mod cluster;
75pub mod config;
76pub mod console;
77pub mod container;
78pub mod cron;
79#[cfg(feature = "exochain")]
80pub mod chain;
81#[cfg(feature = "exochain")]
82pub mod tree_manager;
83pub mod environment;
84pub mod error;
85#[cfg(feature = "exochain")]
86pub mod gate;
87pub mod governance;
88pub mod health;
89pub mod ipc;
90pub mod process;
91pub mod service;
92pub mod supervisor;
93pub mod topic;
94
95// ── Self-healing & process management modules (08a) ─────────────
96#[cfg(feature = "os-patterns")]
97pub mod monitor;
98#[cfg(feature = "os-patterns")]
99pub mod reconciler;
100#[allow(clippy::new_without_default)]
101pub mod wasm_runner;
102
103// ── Reliable IPC & observability modules (08b) ──────────────────
104#[cfg(feature = "os-patterns")]
105pub mod dead_letter;
106#[cfg(feature = "os-patterns")]
107pub mod reliable_queue;
108#[cfg(feature = "os-patterns")]
109pub mod named_pipe;
110#[cfg(feature = "os-patterns")]
111pub mod metrics;
112#[cfg(feature = "os-patterns")]
113pub mod log_service;
114#[cfg(feature = "os-patterns")]
115pub mod timer;
116
117// ── Content integrity & operational services (08c) ───────────────
118pub mod auth_service;
119pub mod config_service;
120pub mod tree_view;
121
122// ── Mesh networking modules (K6) ──────────────────────────────
123#[cfg(feature = "mesh")]
124pub mod mesh;
125#[cfg(feature = "mesh")]
126pub mod mesh_noise;
127#[cfg(feature = "mesh")]
128pub mod mesh_framing;
129#[cfg(feature = "mesh")]
130pub mod mesh_listener;
131#[cfg(feature = "mesh")]
132pub mod mesh_discovery;
133#[cfg(feature = "mesh")]
134pub mod mesh_bootstrap;
135#[cfg(feature = "mesh")]
136pub mod mesh_ipc;
137#[cfg(feature = "mesh")]
138pub mod mesh_dedup;
139#[cfg(feature = "mesh")]
140pub mod mesh_service;
141#[cfg(feature = "mesh")]
142pub mod mesh_chain;
143#[cfg(feature = "mesh")]
144pub mod mesh_tree;
145#[cfg(feature = "mesh")]
146pub mod mesh_process;
147#[cfg(feature = "mesh")]
148pub mod mesh_service_adv;
149#[cfg(feature = "mesh")]
150pub mod mesh_heartbeat;
151#[cfg(feature = "mesh")]
152pub mod mesh_tcp;
153#[cfg(feature = "mesh")]
154pub mod mesh_ws;
155#[cfg(feature = "mesh")]
156pub mod mesh_mdns;
157#[cfg(feature = "mesh")]
158pub mod mesh_kad;
159#[cfg(feature = "mesh")]
160pub mod mesh_artifact;
161#[cfg(feature = "mesh")]
162pub mod mesh_log;
163#[cfg(feature = "mesh")]
164pub mod mesh_runtime;
165
166// Re-export key types at the crate level for convenience.
167pub use a2a::A2ARouter;
168pub use agency::{
169    Agency, AgentHealth, AgentInterface, AgentManifest, AgentPriority, AgentResources,
170    AgentRestartPolicy, AgentRole, InterfaceProtocol, ResponseMode,
171};
172pub use app::{
173    AgentSpec, AppCapabilities, AppError, AppHooks, AppManager, AppManifest, AppState,
174    InstalledApp, ServiceSpec, ToolSource, ToolSpec,
175};
176pub use boot::{Kernel, KernelState};
177pub use capability::{
178    AgentCapabilities, CapabilityChecker, CapabilityElevationRequest, ElevationResult, IpcScope,
179    ResourceLimits, ResourceType, SandboxPolicy, ToolPermissions,
180};
181#[cfg(feature = "exochain")]
182pub use chain::{
183    AnchorReceipt, ChainAnchor, ChainCheckpoint, ChainEvent, ChainLoggable, ChainManager,
184    ChainStatus, ChainVerifyResult, GovernanceDecisionEvent, IpcDeadLetterEvent, MockAnchor,
185    RestartEvent,
186};
187#[cfg(feature = "ecc")]
188pub use calibration::{EccCalibration, EccCalibrationConfig};
189#[cfg(feature = "ecc")]
190pub use causal::{
191    CausalEdge, CausalEdgeType, CausalGraph, CausalNode, ChangeEvent, ChangePrediction,
192    CouplingPair, SpectralResult,
193};
194#[cfg(feature = "ecc")]
195pub use cognitive_tick::{CognitiveTick, CognitiveTickConfig, CognitiveTickStats};
196#[cfg(feature = "ecc")]
197pub use crossref::{CrossRef, CrossRefStore, CrossRefType, StructureTag, UniversalNodeId};
198#[cfg(feature = "ecc")]
199pub use democritus::{DemocritusConfig, DemocritusLoop, DemocritusTickResult};
200#[cfg(feature = "exochain")]
201pub use gate::{CapabilityGate, GateBackend, GateDecision, GovernanceGate};
202#[cfg(feature = "exochain")]
203pub use tree_manager::{TreeManager, TreeStats};
204pub use clawft_types::config::{ClusterNetworkConfig, KernelConfig};
205pub use cluster::{
206    ClusterConfig, ClusterError, ClusterMembership, NodeId, NodePlatform, NodeState, PeerNode,
207};
208#[cfg(feature = "cluster")]
209pub use cluster::ClusterService;
210pub use config::KernelConfigExt;
211pub use console::{BootEvent, BootLog, BootPhase, KernelEventLog, LogLevel};
212pub use cron::CronService;
213pub use container::{
214    ContainerConfig, ContainerError, ContainerManager, ContainerService, ContainerState,
215    ManagedContainer, PortMapping, RestartPolicy, VolumeMount,
216};
217pub use environment::{
218    AuditLevel, Environment, EnvironmentClass, EnvironmentError, EnvironmentManager,
219    GovernanceBranches, GovernanceScope, LearningMode,
220};
221pub use error::{KernelError, KernelResult};
222pub use governance::{
223    EffectVector, GovernanceBranch, GovernanceDecision, GovernanceEngine, GovernanceRequest,
224    GovernanceResult, GovernanceRule, RuleSeverity,
225};
226pub use health::{HealthStatus, HealthSystem, OverallHealth};
227#[cfg(feature = "ecc")]
228pub use hnsw_service::{HnswSearchResult, HnswService, HnswServiceConfig};
229#[cfg(feature = "ecc")]
230pub use impulse::{ImpulseQueue, ImpulseType};
231#[cfg(feature = "ecc")]
232pub use artifact_store::{ArtifactBackend, ArtifactStore, ArtifactType, StoredArtifact};
233#[cfg(feature = "ecc")]
234pub use persistence::PersistenceConfig;
235#[cfg(feature = "ecc")]
236pub use embedding::{
237    select_embedding_provider, EmbeddingError, EmbeddingProvider, LlmEmbeddingConfig,
238    LlmEmbeddingProvider, MockEmbeddingProvider,
239};
240#[cfg(feature = "ecc")]
241pub use embedding_onnx::{
242    AstEmbeddingProvider, OnnxEmbeddingProvider, RustCodeFeatures, SentenceTransformerProvider,
243    extract_rust_features, preprocess_markdown, split_sentences,
244};
245#[cfg(feature = "ecc")]
246pub use weaver::{
247    ConfidenceGap, ConfidenceReport, DataSource, ExportedModel, IngestResult, MetaDecisionType,
248    MetaLoomEvent, ModelingSession, ModelingSuggestion, StrategyPattern, TickResult,
249    WeaverCommand, WeaverEngine, WeaverError, WeaverKnowledgeBase, WeaverResponse,
250};
251#[cfg(feature = "ecc")]
252pub use cluster::NodeEccCapability;
253pub use ipc::{
254    ExitReason as SignalExitReason, GlobalPid, KernelIpc, KernelMessage, KernelSignal,
255    MessagePayload, MessageTarget, ProcessDown as SignalProcessDown,
256};
257#[cfg(any(feature = "mesh", feature = "exochain"))]
258pub use cluster::NodeIdentity;
259#[cfg(feature = "mesh")]
260pub use mesh::{MeshError, MeshPeer, MeshStream, MeshTransport, TransportListener, WeftHandshake, MAX_MESSAGE_SIZE};
261#[cfg(feature = "mesh")]
262pub use mesh_noise::{EncryptedChannel, NoiseConfig, NoisePattern};
263#[cfg(feature = "mesh")]
264pub use mesh_framing::{FrameType, MeshFrame};
265#[cfg(feature = "mesh")]
266pub use mesh_listener::{JoinRequest, JoinResponse, MeshConnectionPool, PeerInfo};
267#[cfg(feature = "mesh")]
268pub use mesh_discovery::{
269    DiscoveredPeer, DiscoveryBackend, DiscoveryCoordinator, DiscoveryError, DiscoverySource,
270};
271#[cfg(feature = "mesh")]
272pub use mesh_bootstrap::{BootstrapDiscovery, PeerExchangeDiscovery};
273#[cfg(feature = "mesh")]
274pub use mesh_ipc::{MeshIpcEnvelope, MeshIpcError};
275#[cfg(feature = "mesh")]
276pub use mesh_dedup::DedupFilter;
277#[cfg(feature = "mesh")]
278pub use mesh_service::{
279    RemoteServiceEndpoint, ServiceResolutionCache, ServiceResolveRequest, ServiceResolveResponse,
280};
281#[cfg(feature = "mesh")]
282pub use mesh_chain::{
283    ChainBridgeEvent, ChainForkStatus, ChainSyncRequest, ChainSyncResponse, SyncStateDigest,
284};
285#[cfg(feature = "mesh")]
286pub use mesh_tree::{
287    MerkleProof, TreeDiffType, TreeNodeDiff, TreeSyncAction, TreeSyncRequest, TreeSyncResponse,
288};
289#[cfg(feature = "mesh")]
290pub use mesh_process::{
291    ConsensusEntry, ConsensusOp, ConsensusRole, ConsistentHashRing, CrdtGossipState,
292    DistributedProcessTable, MetadataConsensus, ProcessAdvertisement, ProcessStatus,
293    ResourceSummary,
294};
295#[cfg(feature = "mesh")]
296pub use mesh_service_adv::{ClusterServiceRegistry, ServiceAdvertisement};
297#[cfg(feature = "mesh")]
298pub use mesh_heartbeat::{HeartbeatConfig, HeartbeatState, HeartbeatTracker, PeerHeartbeat, PingRequest, PingResponse};
299#[cfg(feature = "mesh")]
300pub use mesh_tcp::TcpTransport;
301#[cfg(feature = "mesh")]
302pub use mesh_ws::WsTransport;
303#[cfg(feature = "mesh")]
304pub use mesh_mdns::{MdnsAnnouncement, MdnsDiscovery, WEFTOS_SERVICE_NAME};
305#[cfg(feature = "mesh")]
306pub use mesh_kad::{
307    DhtEntry, DhtKey, KademliaDiscovery, KademliaTable, NamespacedDhtKey,
308    bucket_index, leading_zeros, xor_distance,
309    K_BUCKET_SIZE, ALPHA, KEY_BITS,
310};
311#[cfg(feature = "mesh")]
312pub use mesh_artifact::{ArtifactAnnouncement, ArtifactExchange, ArtifactRequest, ArtifactResponse};
313#[cfg(feature = "mesh")]
314pub use mesh_log::{LogAggregator, LogQuery as MeshLogQuery, RemoteLogEntry};
315#[cfg(feature = "mesh")]
316pub use mesh_runtime::{DiscoveryState, MeshRuntime, PeerConnection};
317#[cfg(feature = "os-patterns")]
318pub use auth_service::{
319    AuditEntry, AuthService, AuthToken, CredentialGrant, CredentialRequest, CredentialType,
320    HashedCredential, IssuedToken, StoredCredential as AuthStoredCredential,
321};
322#[cfg(feature = "os-patterns")]
323pub use config_service::{ConfigChange, ConfigEntry, ConfigService, ConfigValue, SecretRef};
324pub use tree_view::{AgentTreeView, TreeScope};
325pub use process::{Pid, ProcessEntry, ProcessState, ProcessTable, ResourceUsage};
326pub use service::{
327    McpAdapter, ServiceApi, ServiceAuditLevel, ServiceContract, ServiceEndpoint, ServiceEntry,
328    ServiceInfo, ServiceRegistry, ServiceType, ShellAdapter, SystemService,
329};
330pub use supervisor::{AgentSupervisor, EnclaveConfig, SpawnBackend, SpawnRequest, SpawnResult};
331#[cfg(feature = "os-patterns")]
332pub use supervisor::{
333    RestartBudget, RestartStrategy, RestartTracker,
334    ResourceCheckResult, check_resource_usage,
335};
336#[cfg(feature = "os-patterns")]
337pub use monitor::{ExitReason, MonitorRegistry, ProcessDown, ProcessLink, ProcessMonitor};
338#[cfg(feature = "os-patterns")]
339pub use reconciler::{DesiredAgentState, DriftEvent, ReconciliationController};
340#[cfg(feature = "os-patterns")]
341pub use health::{ProbeConfig, ProbeResult, ProbeState};
342// ── 08b re-exports ──────────────────────────────────────────────
343#[cfg(feature = "os-patterns")]
344pub use dead_letter::{DeadLetter, DeadLetterQueue, DeadLetterReason};
345#[cfg(feature = "os-patterns")]
346pub use reliable_queue::{DeliveryResult, PendingDelivery, ReliableConfig, ReliableQueue};
347#[cfg(feature = "os-patterns")]
348pub use named_pipe::{NamedPipe, NamedPipeRegistry, PipeInfo};
349#[cfg(feature = "os-patterns")]
350pub use metrics::{
351    Histogram, MetricSnapshot, MetricsRegistry,
352    METRIC_MESSAGES_SENT, METRIC_MESSAGES_DELIVERED, METRIC_MESSAGES_DROPPED,
353    METRIC_AGENT_SPAWNS, METRIC_AGENT_CRASHES, METRIC_TOOL_EXECUTIONS,
354    METRIC_ACTIVE_AGENTS, METRIC_ACTIVE_SERVICES, METRIC_CHAIN_LENGTH,
355    METRIC_IPC_LATENCY_MS, METRIC_TOOL_EXECUTION_MS, METRIC_GOVERNANCE_EVAL_MS,
356};
357#[cfg(feature = "os-patterns")]
358pub use log_service::{LogEntry, LogQuery, LogService};
359#[cfg(feature = "os-patterns")]
360pub use timer::{TimerEntry, TimerInfo, TimerService};
361pub use topic::{Subscription, TopicRouter};
362pub use wasm_runner::{
363    AgentInspectTool, AgentListTool, AgentResumeTool, AgentSendTool, AgentSpawnTool,
364    AgentStopTool, AgentSuspendTool, BackendSelection, BuiltinTool, BuiltinToolSpec, Certificate,
365    IpcSendTool, IpcSubscribeTool,
366    CompiledModuleCache, DeployedTool, FsCopyTool, FsCreateDirTool, FsExistsTool, FsGlobTool,
367    FsMoveTool, FsReadDirTool, FsReadFileTool, FsRemoveTool, FsStatTool, FsWriteFileTool,
368    SandboxConfig, SysCronAddTool, SysCronListTool, SysCronRemoveTool, SysEnvGetTool,
369    SysServiceHealthTool, SysServiceListTool, ToolCategory, ToolError, ToolRegistry,
370    ToolSigningAuthority, ToolVersion, WasmError, WasiFsScope, WasmSandboxConfig, WasmTool,
371    ShellPipeline, WasmToolResult, WasmToolRunner, WasmValidation, builtin_tool_catalog,
372    compute_module_hash, verify_tool_signature,
373};
374#[cfg(feature = "exochain")]
375pub use wasm_runner::{
376    SysChainQueryTool, SysChainStatusTool, SysTreeInspectTool, SysTreeReadTool,
377};