ryo_executor/lib.rs
1//! RYO Executor - Mutation execution engine
2//!
3//! This crate provides execution control and optimization for mutations:
4//! - Parallel execution with conflict detection
5//! - Workspace management (in-memory working copy)
6//! - Decider (execution strategy)
7//! - Lock/Tick optimization
8//!
9//! # Architecture
10//!
11//! ```text
12//! ┌──────────────────────────────────────────────────────────────┐
13//! │ ryo-executor │
14//! │ ┌──────────────┐ ┌──────────────┐ ┌────────────────────┐ │
15//! │ │ CoreExecutor │ │ Workspace │ │ Decider │ │
16//! │ │ Blueprint │ │ Conflict │ │ Policy / Strategy │ │
17//! │ └──────────────┘ └──────────────┘ └────────────────────┘ │
18//! └──────────────────────────────────────────────────────────────┘
19//! │ │ │
20//! ▼ ▼ ▼
21//! ┌─────────────────┐ ┌──────────────┐
22//! │ ryo-mutations │ │ ryo-source │
23//! └─────────────────┘ └──────────────┘
24//! ```
25
26pub mod decider;
27pub mod engine;
28pub mod executor;
29
30// === Error Types ===
31
32/// Errors that can occur during execution
33#[derive(Debug, thiserror::Error)]
34pub enum Error {
35 #[error("Workspace error: {0}")]
36 Workspace(String),
37
38 #[error("Execution error: {0}")]
39 Execution(String),
40
41 #[error("Parse error: {0}")]
42 Parse(String),
43
44 #[error("IO error: {0}")]
45 Io(#[from] std::io::Error),
46
47 #[error("Graph error: {0}")]
48 Graph(String),
49}
50
51/// Result type for ryo-executor operations
52pub type Result<T> = std::result::Result<T, Error>;
53
54pub use decider::{
55 Action, ActionKind, ActionResult, AgentMode, AgentState, ComposableDecider, Decider,
56 DeciderConfig, DecisionContext, DecisionModifier, MurmurationDecider, ParameterizedDecider,
57 PlainDecider,
58};
59
60#[allow(deprecated)]
61pub use executor::{
62 BlueprintBuilder, BlueprintExecutor, BlueprintResult, Conflict, ConflictKind, CoreExecutor,
63 DependencyGraph, ExecutionContext, Executor, ExecutorError, InsertPosition, ItemKind,
64 MutationSpec, MutationTargetSymbol, ParallelBlueprint, Scope, SelfParam, SpecRelation,
65 SpecRelationKind, SpecResult, StmtInsertPosition, SyncError, VariantKind, Visibility,
66};
67
68// === Engine Module (AST-centric mutation execution) ===
69pub use engine::{
70 collect_affected_ids, multi_file_dumper, single_file_dumper, ASTMutationContext,
71 ASTMutationEngine, ASTRegApply, ExecutionResult, ModificationType, MutationEvent, SourceDumper,
72 SourceGenerator,
73};