Add the admin messages, approval ids as numbers, and two turn events

Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
This commit is contained in:
2026-09-19 00:28:46 -07:00
parent c6395b16f4
commit e8568edf7e
25 changed files with 441 additions and 10 deletions
+34 -2
View File
@@ -1,8 +1,8 @@
//! Tests for the channel messages and the usage record, against byte-exact fixtures. Do not edit.
use proto::{
CallId, DataClass, Envelope, Epoch, ErrorCode, Hash32, LogRecord, Message, SessionId,
Timestamp, ToolCall, Turn, TurnDone, TurnEvent, Usage, WireError,
CallId, DataClass, DenyReason, Envelope, Epoch, ErrorCode, Hash32, LogRecord, Message,
SessionId, Timestamp, ToolCall, Turn, TurnDone, TurnEvent, Usage, WireError,
};
fn fixture(kind: &str, name: &str) -> String {
@@ -92,6 +92,29 @@ fn turn_events() {
}),
),
);
check(
"turn_event_approval_pending.json",
env(
3,
false,
Message::TurnEvent(TurnEvent::ApprovalPending {
approval: 41,
tool: "shell".to_string(),
expires: Timestamp::parse("2026-09-18T08:20:00.000Z").unwrap(),
}),
),
);
check(
"turn_event_tool_denied.json",
env(
3,
false,
Message::TurnEvent(TurnEvent::ToolDenied {
name: "read_file".to_string(),
reason: DenyReason::NoGrant,
}),
),
);
}
#[test]
@@ -165,6 +188,15 @@ fn every_turn_event_kind_round_trips() {
expected: 500,
got: 20,
},
TurnEvent::ApprovalPending {
approval: u64::MAX,
tool: "http_fetch".to_string(),
expires: Timestamp::parse("2026-09-18T08:20:00.000Z").unwrap(),
},
TurnEvent::ToolDenied {
name: "shell".to_string(),
reason: DenyReason::StateUnreadable,
},
];
for event in all {
let text = serde_json::to_string(&event).unwrap();