swarm-engine-core 0.1.6

Core types and orchestration for SwarmEngine
Documentation
//! # SwarmEngine Core
//!
//! A general-purpose foundation for high-throughput, low-latency agent swarm processing.
//!
//! ## Design Philosophy
//!
//! - Game engine-like architecture, specialized for agent swarms
//! - Tick-driven execution (10ms intervals) for stable operation
//! - Long-running support (24+ hours)
//! - Zero-copy, lock-free design
//!
//! ## Core Concepts
//!
//! ### Two-Tier Memory Model
//!
//! - **SharedState**: Read-only shared region accessed by all workers
//! - **WorkerStates**: Per-worker persistent state (optimized for parallel access)
//!
//! ### Tick Lifecycle
//!
//! ```text
//! Tick N
//! ├─ 1. Collect Async Results
//! ├─ 2. Read Phase (Scheduler)
//! ├─ 3. Execute Phase (Workers)
//! ├─ 4. Merge Phase
//! ├─ 5. Tick++
//! └─ 6. Wait for next tick
//! ```
//!
//! ## SwarmApp
//!
//! `SwarmApp` is an integrated application container providing:
//!
//! - **Unified Runtime**: Easy-to-use interface wrapping the Orchestrator
//! - **External Control**: Control from outside via `tick()` / `inject_state()` etc.
//! - **Hierarchical Hook System**: 4-layer intervention at Tick / Manager / Worker / Action
//! - **Effect System**: Declarative expression of hook side effects
//! - **Extensions**: Bevy-style dynamic resource management
//!
//! ```ignore
//! use swarm_engine_core::app::prelude::*;
//!
//! let app = SwarmApp::<()>::builder()
//!     .config(AppConfig::default())
//!     .workers(workers)
//!     .tick_hook(LoggingTickHook::new())
//!     .build(runtime.handle().clone())?;
//!
//! let outcome = app.run();
//! ```

pub mod actions;
pub mod agent;
pub mod analysis;
// pub mod app;  // TODO: Orchestrator 安定後に再統合
pub mod async_task;
pub mod config;
pub mod context;
pub mod debug;
pub mod environment;
pub mod error;
pub mod events;
pub mod exploration;
pub mod extensions;
pub mod learn;
pub mod online_stats;
pub mod orchestrator;
pub mod pipeline;
pub mod snapshot;
pub mod state;
pub mod telemetry;
pub mod types;
pub mod util;
pub mod validation;

/// Prelude - commonly used types for convenient import
pub mod prelude {
    pub use crate::actions::{
        ActionDef, ActionGroup, ActionValidationError, ActionsConfig, ParamDef,
    };
    pub use crate::agent::{
        BatchDecisionRequest, DecisionResponse, Guidance, ManagementDecision, ManagementStrategy,
        ManagerAgent, ManagerId, Priority, ScheduledAction, TaskContext, WorkResult, WorkerAgent,
        WorkerDecisionRequest,
    };
    pub use crate::async_task::{AsyncTask, AsyncTaskResult, AsyncTaskSystem, TaskStatus};
    pub use crate::config::{GlobalConfig, PathResolver};
    pub use crate::environment::{DefaultEnvironment, Environment, EnvironmentBox};
    pub use crate::error::SwarmError;
    pub use crate::events::{
        create_action_event_publisher, ActionContext, ActionEvent, ActionEventBuilder,
        ActionEventId, ActionEventPublisher, ActionEventResult, JsonlWriter,
    };
    pub use crate::extensions::Extensions;
    pub use crate::online_stats::{
        ActionStats, DumpableStats, GlobalStats, StatsSubscriber, SwarmStats,
    };
    pub use crate::orchestrator::{Orchestrator, OrchestratorBuilder, SwarmConfig, SwarmResult};
    pub use crate::snapshot::{
        CompactFormatter, ConsoleFormatter, JsonFormatter, SnapshotFormatter, SnapshotOutput,
    };
    pub use crate::state::{
        ActionResultSnapshot, Escalation, EscalationReason, ManagerPhaseSnapshot, SharedState,
        SwarmState, TickSnapshot, WorkResultSnapshot, WorkerResultSnapshot, WorkerState,
        WorkerStates,
    };
    pub use crate::types::{
        Action, ActionParams, ActionResult, AgentId, GroupId, SwarmTask, TaskId, WorkerId,
    };

    // Debug
    pub use crate::debug::{DebugSnapshot, Dumpable, StderrDumpSubscriber, TickDumper};

    // Pipeline
    pub use crate::pipeline::{
        DebounceTransform, EventSink, EventSource, EventTransform, LearningSink,
        LocalFileWatcherSource, PassthroughTransform, Pipeline, WatchEvent,
    };

    // Validation
    pub use crate::validation::{
        Absolute, Improvement, NoRegression, ValidationResult, ValidationStrategy, Validator,
    };
}