# OpenRunner API Documentation
## Running OpenScript
- `run(script: &str, options: ScriptOptions) -> Result<ExecResult>`
- `run_file(path: impl Into<PathBuf>, options: ScriptOptions) -> Result<ExecResult>`
- `spawn(script: &str, options: ScriptOptions) -> Result<Child>`
- `spawn_file(path: impl Into<PathBuf>, options: ScriptOptions) -> Result<Child>`
## ScriptOptions
- `openscript_path`: Option<PathBuf>
- `working_directory`: Option<PathBuf>
- `env_vars`: HashMap<String, String>
- `args`: Vec<String>
- `stdin`: IoOptions (Inherit, Pipe, Null)
- `stdout`: IoOptions
- `stderr`: IoOptions
- `timeout`: Option<Duration>
- `exit_on_error`: bool
- `print_commands`: bool
- `ai_enabled`: bool
- `clear_env`: bool
## ExecResult
- `exit_code: i32`
- `stdout: String`
- `stderr: String`
- `duration: Duration`
- `timed_out: bool`
## Macros
- `run_script!`, `spawn_script!`, `run_file_script!`