pub mod engine;
pub mod functions;
pub mod region_hook;
pub mod sandbox;
pub mod tool;
pub mod types;
pub fn harden(engine: &mut rhai::Engine, max_operations: u64) {
engine.set_max_operations(max_operations);
engine.set_max_string_size(1_000_000);
engine.set_max_array_size(10_000);
engine.set_max_map_size(10_000);
engine.set_max_call_levels(64);
engine.set_max_expr_depths(128, 128);
engine.disable_symbol("eval");
engine.set_module_resolver(rhai::module_resolvers::DummyModuleResolver::new());
engine.on_print(|_| {});
engine.on_debug(|_, _, _| {});
}
pub use engine::ScriptEngine;
pub use sandbox::SandboxConfig;
pub use tool::{
ParamSpec, ScriptHost, ScriptToolMeta, ScriptToolSet, SkippedTool,
execute as execute_script_tool,
};
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug)]
pub enum Error {
#[error("Script execution failed: {0}")]
ExecutionFailed(String),
#[error("Script compilation failed: {0}")]
CompilationFailed(String),
#[error("Script validation failed: {0}")]
ValidationFailed(String),
#[error("Rhai error: {0}")]
RhaiError(#[from] Box<rhai::EvalAltResult>),
#[error("Core error: {0}")]
CoreError(#[from] leviath_core::Error),
}