use crate::value::VmDictExt;
use std::time::Duration;
use crate::harness::{vm_string, HarnessKind, HarnessMode, VmHarness};
use crate::harness_net::{
self, record_audit, violation_request_value, violation_vm_error, NetPolicyAudit,
NetPolicyDecision, NetPolicyMethodContract, OnViolation,
};
use crate::orchestration::RuntimeEffectState;
use crate::stdlib::io::{
prompt_user_value, read_line_legacy_value, read_line_structured_value, write_stderr,
write_stdout,
};
use crate::value::{ErrorCategory, VmError, VmValue};
use crate::vm::{HarnessMethodFuture, HarnessMethods, Vm};
mod verdict;
use verdict::call_harness_verdict_method;
struct StdHarnessMethods;
impl HarnessMethods for StdHarnessMethods {
fn call<'a>(
&self,
vm: &'a mut Vm,
handle: &'a VmHarness,
method: &'a str,
args: &'a [VmValue],
) -> HarnessMethodFuture<'a> {
call_harness_method(vm, handle, method, args)
}
fn call_sync_fast(
&self,
output: &mut String,
runtime_effects: &mut RuntimeEffectState,
handle: &VmHarness,
method: &str,
args: &[VmValue],
) -> Option<Result<VmValue, VmError>> {
call_harness_method_sync_fast(output, runtime_effects, handle, method, args)
}
}
static STD_HARNESS_METHODS: StdHarnessMethods = StdHarnessMethods;
pub(crate) fn install() {
crate::vm::install_harness_methods(&STD_HARNESS_METHODS);
}
enum NetPolicyOutcome {
Allow,
Deny(VmError),
}
include!("harness_methods/dispatch.rs");
include!("harness_methods/capabilities.rs");
include!("harness_methods/native.rs");
include!("harness_methods/helpers.rs");