//! RLM protocol plugin: a trajectory-shaped driver that uses lashlang as the
//! persistent REPL. Model prose is projected as trajectory reasoning, fenced
//! `lashlang` is executed, `print` yields observations, and `submit` yields the
//! final value.

mod control_tools;
mod driver;
mod executor;
mod fence_scan;
mod plugin;
mod projection;
mod protocol;
mod rlm_support;
mod stream_mask;

pub use control_tools::continue_as_tool_definition;
pub use driver::{RlmProjectorConfig, build_rlm_preamble};
pub use lashlang::{
    LashlangAbilities, LashlangHostCatalog, LashlangHostEnvironment, LashlangLanguageFeatures,
    NamedDataType, TypeExpr, TypeField, format_type_expr,
};
pub use plugin::{RLM_PROTOCOL_PLUGIN_ID, RlmProtocolPluginConfig, RlmProtocolPluginFactory};
pub use projection::{
    ProjectionRef, ProjectionRegistry, ProjectionResolveError, ProjectionResolver,
    RlmProjectedBindings, RlmProjectedSeedError, RlmToolResultProjector, RlmTurnInputExt,
    rlm_session_projection_extension,
};
pub use projection::{
    RlmHistoryProjection, RlmSeed, decode_rlm_protocol_event, rlm_history_projection,
    rlm_protocol_event, rlm_seed_initial_nodes,
};
pub use protocol::{
    RlmDriver, RlmPromptFeatures, contains_closed_lashlang_fence,
    rlm_execution_section_for_host_environment,
};
pub use rlm_support::format_budget_suffix;
