Skip to main content

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};