use super::*;
#[test]
fn local_command_is_delivered_although_its_leaf_is_not() {
let line = r#"{"type":"system","subtype":"local_command","level":"info","uuid":"s1","timestamp":"2026-06-07T05:00:01.000Z","content":"<local-command-stdout>done</local-command-stdout>","isMeta":false}"#;
let rec = parse(line);
assert_eq!(rec.delivery_override(), Some(true));
assert_eq!(rec.promoted_class(), Some(Class::MetaSystem));
assert!(!Class::MetaSystem.llm_visible());
}
#[test]
fn other_system_subtypes_carry_no_override() {
for sub in [
"informational",
"api_error",
"agents_killed",
"scheduled_task_fire",
"model_refusal_fallback",
"turn_duration",
"away_summary",
"stop_hook_summary",
"compact_boundary",
"some_future_subtype",
] {
let line = format!(
r#"{{"type":"system","subtype":"{sub}","uuid":"x","timestamp":"2026-06-07T05:00:01.000Z","content":"x"}}"#
);
assert_eq!(parse(&line).delivery_override(), None, "{sub}");
}
let bare =
r#"{"type":"system","uuid":"z","timestamp":"2026-06-07T05:00:02.000Z","content":"x"}"#;
assert_eq!(parse(bare).delivery_override(), None);
}
#[test]
fn is_virtual_records_are_not_delivered() {
let user = r#"{"type":"user","isVirtual":true,"uuid":"u1","timestamp":"2026-06-07T05:00:03.000Z","message":{"role":"user","content":"typed"}}"#;
assert_eq!(parse(user).delivery_override(), Some(false));
let asst = r#"{"type":"assistant","isVirtual":true,"uuid":"a1","timestamp":"2026-06-07T05:00:04.000Z","message":{"role":"assistant","model":"claude-x","content":[{"type":"text","text":"hi"}]}}"#;
assert_eq!(parse(asst).delivery_override(), Some(false));
let plain = r#"{"type":"user","isVirtual":false,"uuid":"u2","timestamp":"2026-06-07T05:00:05.000Z","message":{"role":"user","content":"typed"}}"#;
assert_eq!(parse(plain).delivery_override(), None);
}
#[test]
fn the_api_error_placeholder_needs_both_the_marker_and_the_sentinel_model() {
let placeholder = r#"{"type":"assistant","isApiErrorMessage":true,"uuid":"a2","timestamp":"2026-06-07T05:00:06.000Z","message":{"role":"assistant","model":"<synthetic>","content":[{"type":"text","text":"API Error: 500"}]}}"#;
assert_eq!(parse(placeholder).delivery_override(), Some(false));
let real_model = r#"{"type":"assistant","isApiErrorMessage":true,"uuid":"a3","timestamp":"2026-06-07T05:00:07.000Z","message":{"role":"assistant","model":"claude-x","content":[{"type":"text","text":"API Error: 500"}]}}"#;
assert_eq!(parse(real_model).delivery_override(), None);
let no_marker = r#"{"type":"assistant","uuid":"a4","timestamp":"2026-06-07T05:00:08.000Z","message":{"role":"assistant","model":"<synthetic>","content":[{"type":"text","text":"x"}]}}"#;
assert_eq!(parse(no_marker).delivery_override(), None);
let user_side = r#"{"type":"user","isApiErrorMessage":true,"uuid":"u3","timestamp":"2026-06-07T05:00:09.000Z","message":{"role":"user","model":"<synthetic>","content":"x"}}"#;
assert_eq!(parse(user_side).delivery_override(), None);
}
#[test]
fn a_local_command_with_a_model_field_still_reads_as_delivered() {
let line = r#"{"type":"system","subtype":"local_command","uuid":"s2","timestamp":"2026-06-07T05:00:10.000Z","content":"echo","isApiErrorMessage":true,"message":{"role":"assistant","model":"<synthetic>"}}"#;
assert_eq!(
parse(line).delivery_override(),
Some(true),
"the system arm returns before the assistant arms are reached"
);
}
#[test]
fn ordinary_records_carry_no_override() {
let human = r#"{"type":"user","uuid":"u4","timestamp":"2026-06-07T05:00:11.000Z","message":{"role":"user","content":"do the thing"}}"#;
assert_eq!(parse(human).delivery_override(), None);
let asst = r#"{"type":"assistant","uuid":"a5","timestamp":"2026-06-07T05:00:12.000Z","message":{"role":"assistant","model":"claude-x","content":[{"type":"text","text":"ok"}]}}"#;
assert_eq!(parse(asst).delivery_override(), None);
let attach = r#"{"type":"attachment","uuid":"t1","attachment":{"type":"file","x":1}}"#;
assert_eq!(parse(attach).delivery_override(), None);
let typeless = r#"{"uuid":"n1","timestamp":"2026-06-07T05:00:13.000Z"}"#;
assert_eq!(parse(typeless).delivery_override(), None);
}