Skip to main content

substrate_core/
lib.rs

1//! # substrate-core
2//!
3//! The hexagonal **core**: pure domain contracts and the port traits that
4//! adapters implement. This crate depends on nothing but `serde`,
5//! `serde_json`, `thiserror`, `uuid`, and `async-trait` (required to express
6//! async port traits). It MUST NOT depend on any adapter crate
7//! (`engine-*`, `transport-*`, `store-*`, `driver-*`, `*-adapter`); this is
8//! enforced by `crates/arch-test`.
9#![forbid(unsafe_code)]
10#![warn(missing_docs)]
11
12pub mod claim_port;
13pub mod cloud_dispatch_port;
14pub mod domain;
15pub mod error;
16pub mod event_store_port;
17pub mod mailbox_port;
18pub mod memory_port;
19pub mod ports;
20pub mod process_port;
21pub mod routing_port;
22pub mod schedule_port;
23pub mod skill_port;
24pub mod tiers;
25pub mod trace;
26pub mod watcher_port;
27pub mod workflow_port;
28
29pub use claim_port::{ClaimPort, WorkItem, WorkItemState};
30pub use cloud_dispatch_port::{CloudDispatchPort, CloudResult, CloudTaskHandle, CloudTaskStatus};
31pub use error::{Result, SubstrateError};
32pub use event_store_port::{
33    replay, replay_task_state, EventEnvelope, EventStorePort, Projection, TaskLifecycleEvent,
34    TaskLifecycleProjection, TaskProjectionState,
35};
36pub use mailbox_port::MailboxStore;
37pub use memory_port::{MemoryEntry, MemoryPort};
38pub use process_port::{ProcessHandle, ProcessPort, ProcessSpawnSpec, ProcessState};
39pub use routing_port::{
40    CircuitBreaker, CircuitBreakerConfig, CircuitState, FallbackEntry, RoutingPoolState,
41    RoutingSelector, RoutingStrategy, RoutingSuperset, RoutingTarget, SupersetRoutingDecision,
42    TargetHealth,
43};
44pub use schedule_port::{ScheduleInstant, SchedulePort, ScheduleTrigger, Weekday};
45pub use skill_port::{
46    validate_json_schema, SkillDescriptor, SkillHandler, SkillPort, ToolRegistry,
47};
48pub use tiers::{
49    Tier, TierSpec, HEAVY_MODEL, HEAVY_REASONING_EFFORT, MAIN_MODEL, MAIN_REASONING_EFFORT,
50    WORKER_MODEL, WORKER_REASONING_EFFORT,
51};
52pub use trace::{TaskCompleted, TaskFailed, TaskRegistered, TracePort};
53pub use watcher_port::{WatchEvent, WatchEventKind, WatchHandle, WatcherPort};
54pub use workflow_port::{Workflow, WorkflowEdge, WorkflowNode, WorkflowPort};