Skip to main content

Crate substrate_core

Crate substrate_core 

Source
Expand description

§substrate-core

The hexagonal core: pure domain contracts and the port traits that adapters implement. This crate depends on nothing but serde, serde_json, thiserror, uuid, and async-trait (required to express async port traits). It MUST NOT depend on any adapter crate (engine-*, transport-*, store-*, driver-*, *-adapter); this is enforced by crates/arch-test.

Re-exports§

pub use claim_port::ClaimPort;
pub use claim_port::WorkItem;
pub use claim_port::WorkItemState;
pub use cloud_dispatch_port::CloudDispatchPort;
pub use cloud_dispatch_port::CloudResult;
pub use cloud_dispatch_port::CloudTaskHandle;
pub use cloud_dispatch_port::CloudTaskStatus;
pub use error::Result;
pub use error::SubstrateError;
pub use event_store_port::replay;
pub use event_store_port::replay_task_state;
pub use event_store_port::EventEnvelope;
pub use event_store_port::EventStorePort;
pub use event_store_port::Projection;
pub use event_store_port::TaskLifecycleEvent;
pub use event_store_port::TaskLifecycleProjection;
pub use event_store_port::TaskProjectionState;
pub use mailbox_port::MailboxStore;
pub use memory_port::MemoryEntry;
pub use memory_port::MemoryPort;
pub use process_port::ProcessHandle;
pub use process_port::ProcessPort;
pub use process_port::ProcessSpawnSpec;
pub use process_port::ProcessState;
pub use routing_port::CircuitBreaker;
pub use routing_port::CircuitBreakerConfig;
pub use routing_port::CircuitState;
pub use routing_port::FallbackEntry;
pub use routing_port::RoutingPoolState;
pub use routing_port::RoutingSelector;
pub use routing_port::RoutingStrategy;
pub use routing_port::RoutingSuperset;
pub use routing_port::RoutingTarget;
pub use routing_port::SupersetRoutingDecision;
pub use routing_port::TargetHealth;
pub use schedule_port::ScheduleInstant;
pub use schedule_port::SchedulePort;
pub use schedule_port::ScheduleTrigger;
pub use schedule_port::Weekday;
pub use skill_port::validate_json_schema;
pub use skill_port::SkillDescriptor;
pub use skill_port::SkillHandler;
pub use skill_port::SkillPort;
pub use skill_port::ToolRegistry;
pub use tiers::Tier;
pub use tiers::TierSpec;
pub use tiers::HEAVY_MODEL;
pub use tiers::HEAVY_REASONING_EFFORT;
pub use tiers::MAIN_MODEL;
pub use tiers::MAIN_REASONING_EFFORT;
pub use tiers::WORKER_MODEL;
pub use tiers::WORKER_REASONING_EFFORT;
pub use trace::TaskCompleted;
pub use trace::TaskFailed;
pub use trace::TaskRegistered;
pub use trace::TracePort;
pub use watcher_port::WatchEvent;
pub use watcher_port::WatchEventKind;
pub use watcher_port::WatchHandle;
pub use watcher_port::WatcherPort;
pub use workflow_port::Workflow;
pub use workflow_port::WorkflowEdge;
pub use workflow_port::WorkflowNode;
pub use workflow_port::WorkflowPort;

Modules§

claim_port
ClaimPort — atomic work-queue with fuzzy near-duplicate detection.
cloud_dispatch_port
CloudDispatchPort — submit remote cloud-agent tasks and harvest PR results.
domain
Pure domain model: entities, value objects, and the task lifecycle FSM.
error
The single error type crossing every port boundary.
event_store_port
EventStorePort — append-only per-aggregate event log with global ordering.
mailbox_port
MailboxStore port — durable mailbox and tasklist backed by a concrete store.
memory_port
MemoryPort — two-tier agent memory (recent ring + persistent history).
ports
The five port traits — the only seams adapters may implement.
process_port
ProcessPort — cross-platform managed subprocess spawn/monitor/kill.
routing_port
Routing superset — load-balancing strategies, circuit breakers, weighted fallback.
schedule_port
SchedulePort — cron/interval/daily/weekly triggers with next_run.
skill_port
SkillPort + ToolRegistry — named invokable capabilities with typed schemas.
tiers
Tiered model dispatch definitions.
trace
Cross-cutting trace port: the trait lives in core so the application layer can emit events without knowing which backend receives them.
watcher_port
WatcherPort — debounced filesystem watch events.
workflow_port
WorkflowPort — DAG orchestration over dependent tasks.