harn-vm 0.10.46

Async bytecode virtual machine for the Harn programming language
Documentation
use super::*;

#[test]
fn flags_invalid_structured_output_from_failed_tool_update() {
    let events = vec![
        iteration_start(1, "s", 1),
        tool_call(2, "s", "list_checks", json!({"a": 1})),
        env(
            3,
            AgentEvent::ToolCallUpdate {
                session_id: "s".into(),
                tool_call_id: "call_2".into(),
                tool_name: "list_checks".into(),
                status: ToolCallStatus::Failed,
                raw_output: None,
                error: Some("missing required field".into()),
                duration_ms: None,
                execution_duration_ms: None,
                error_category: Some(ToolCallErrorCategory::SchemaValidation),
                mutation_status: crate::agent_events::ToolMutationStatus::Unknown,
                changed_paths: None,
                data: None,
                executor: None,
                parsing: None,
                raw_input: None,
                raw_input_partial: None,
                audit: None,
            },
        ),
        iteration_end(4, "s", 1),
    ];
    let report = audit_transcript(&events, None);
    assert!(report
        .findings
        .iter()
        .any(|finding| finding.category == FindingCategory::InvalidStructuredOutput));
}