//! RLM protocol plugin: a trajectory-shaped driver that uses lashlang as the
//! persistent REPL. Provider reasoning is stored as trajectory reasoning,
//! paired `<lashlang>` blocks are executed, `print` yields observations, and
//! `finish` yields the final value.

mod cell_scan;
mod control_tools;
mod driver;
mod executor;
mod plugin;
mod projection;
mod protocol;
mod rlm_support;
pub mod scenario_contracts;
mod stream_mask;
mod tool_catalog;

pub use control_tools::continue_as_tool_definition;
pub use driver::{RlmProjectorConfig, build_rlm_preamble};
pub use lash_lashlang_runtime::{
    LashlangAbilities, LashlangHostCatalog, LashlangHostEnvironment, LashlangLanguageFeatures,
};
pub use lashlang::{NamedDataType, TypeExpr, TypeField, format_type_expr};
pub use plugin::{
    LashlangCompileSurface, LashlangCompileSurfaceRequest, LashlangModuleCompileError,
    LashlangModuleCompileRequest, ModuleCompileOutput, RLM_PROTOCOL_PLUGIN_ID,
    RlmProtocolPluginConfig, RlmProtocolPluginFactory, rlm_lashlang_surface, rlm_protocol_config,
};
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_lashlang_cell,
    rlm_execution_section_for_host_environment,
};
pub use rlm_support::format_budget_suffix;
