pub mod adapter_bus;
pub mod adapter_convert;
pub mod adapter_provider;
pub mod context;
pub mod convert;
pub mod host_impl;
pub use context::{AutoProcessContext, ProcessProgress, RoutingContext, RoutingResult};
use super::RlmConfig;
use super::RlmResult;
use super::repl::{ReplRuntime, RlmRepl};
use anyhow::Result;
use codetether_rlm::router;
pub struct RlmRouter;
impl RlmRouter {
pub fn should_route(output: &str, ctx: &RoutingContext, config: &RlmConfig) -> RoutingResult {
router::should_route(output, ctx, config)
}
pub fn smart_truncate(
output: &str,
tool_id: &str,
args: &serde_json::Value,
max: usize,
) -> (String, bool, usize) {
router::smart_truncate(output, tool_id, args, max)
}
pub async fn auto_process(
output: &str,
ctx: AutoProcessContext<'_>,
config: &RlmConfig,
) -> Result<RlmResult> {
let mut repl = RlmRepl::new(output.to_string(), ReplRuntime::Rust);
let mut host = host_impl::ReplHost(&mut repl);
let crate_ctx = convert::convert_ctx(ctx);
router::auto_process(output, crate_ctx, config, &mut host).await
}
}