Skip to main content

nika_engine/runtime/
mod.rs

1//! Runtime Module - Workflow execution
2//!
3//! Contains the runtime execution components:
4//! - `runner`: DAG execution with tokio concurrency
5//! - `executor`: Individual task execution (infer, exec, fetch, invoke, agent)
6//!   - Includes decompose: modifier expansion
7//! - `output`: Output format handling and schema validation
8//! - `structured_output`: 5-layer defense system for ~99.99% JSON compliance
9//!   - Layer 0: DynamicSubmitTool injection (executor/verbs.rs + rig_agent_loop)
10//!   - Layers 2-4: Extract+Validate, Retry, LLM Repair (StructuredOutputEngine)
11//! - `submit_tool`: DynamicSubmitTool for provider-native structured output (Layer 0)
12//! - `rig_agent_loop`: Rig-based agentic execution
13//! - `spawn`: Nested agent spawning
14//! - `chat_workflow`: Chat-as-DAG wrapper
15//! - `builtin`: Builtin nika:* tools
16//! - `hitl`: Human-In-The-Loop handler trait
17//! - `context_loader`: Context file loading at workflow start
18//! - `resolver`: Agent and skill resolution
19//! - `boot`: Boot sequence with 6-phase initialization
20//! - `policy`: Security policy enforcement for exec/fetch/tokens
21//! - `security`: Command validation and blocklist
22//! - `artifact_processor`: Task output file persistence
23//! - `limit_tracker`: Agent execution limits tracking
24//! - `partial`: Partial completion checkpointing
25//!
26//! This module represents the "how" - runtime execution.
27//! For static structure, see the `ast` module.
28
29pub mod artifact_processor;
30pub mod boot;
31pub mod builtin;
32pub mod chat_workflow;
33pub mod context;
34pub mod context_loader;
35mod executor;
36pub mod hitl;
37pub mod limit_tracker;
38pub mod output;
39pub mod partial;
40pub mod policy;
41pub mod resolver;
42mod rig_agent_loop;
43mod runner;
44pub mod security;
45mod skill_injector;
46pub mod spawn;
47pub mod structured_output;
48pub mod submit_tool;
49
50// Re-export public types
51pub use builtin::{
52    AssertTool, BuiltinTool, BuiltinToolRouter, EmitTool, LogLevel, LogTool,
53    NikaBuiltinToolAdapter, PromptParams, PromptResponse, PromptTool, RunParams, RunResponse,
54    RunTool,
55};
56pub use chat_workflow::{ChatMessage, ChatWorkflow, Role};
57pub use context::WorkflowMeta;
58pub use context_loader::{load_context, LoadedContext};
59pub use executor::TaskExecutor;
60pub use hitl::{DefaultHitlHandler, HitlError, HitlHandler, HitlRequest, HitlResponse};
61pub use output::make_task_result;
62pub use resolver::{
63    resolve_assets, AgentSource, ResolvedAgent, ResolvedAgents, ResolvedAssets, ResolvedSkills,
64};
65pub use rig_agent_loop::{RigAgentLoop, RigAgentLoopResult, RigAgentStatus};
66pub use runner::Runner;
67pub use skill_injector::SkillInjector;
68pub use spawn::{SpawnAgentParams, SpawnAgentTool};
69
70pub use boot::{
71    BootContext, BootPhase, BootSequence, BootstrapConfig, EditorConfig, PhaseResult, PolicyConfig,
72    ProviderConfig, SessionConfig, ToolsConfig, TraceConfig,
73};
74pub use policy::{PolicyDecision, PolicyEnforcer, TokenBudget};
75
76pub use security::{
77    check_blocklist, check_shell_mode_blocklist, validate_command_string, validate_exec_command,
78    validate_exec_command_with_shell,
79};
80
81pub use artifact_processor::{process_task_artifacts, ArtifactProcessResult};
82
83pub use structured_output::{
84    validate_structured_output, InferCallback, StructuredOutputEngine, StructuredOutputResult,
85};
86
87pub use limit_tracker::LimitTracker;
88
89pub use submit_tool::DynamicSubmitTool;
90
91pub use partial::{PartialCheckpoint, PartialResult, StopReason};