pub(crate) mod answer;
mod boundary;
mod group;
mod knowledge;
mod thinking;
pub(crate) use super::transcript::{BlockKind, Transcript};
pub(crate) use boundary::apply_boundary_event;
pub(crate) use group::{buffer_tool_event, flush_tool_buffer, is_group_member, tool_call_detail};
use saya_agent::AgentEvent;
pub(crate) fn apply_event(transcript: &mut Transcript, event: AgentEvent, show_thinking: bool) {
if is_group_member(&event) {
if let Some(other) = buffer_tool_event(transcript, event) {
apply_boundary_event(transcript, other, show_thinking);
}
return;
}
if matches!(event, AgentEvent::TurnStarted) {
flush_tool_buffer(transcript);
transcript.mark_attempt();
return;
}
if matches!(event, AgentEvent::TurnReset) {
if transcript.rollback_attempt() {
return;
}
transcript.discard_tool_buffer();
} else {
flush_tool_buffer(transcript);
}
apply_boundary_event(transcript, event, show_thinking);
}
#[cfg(test)]
#[path = "answer_chapter_tests.rs"]
mod answer_chapter_tests;
#[cfg(test)]
#[path = "answer_tests.rs"]
mod answer_tests;
#[cfg(test)]
#[path = "attempt_tests.rs"]
mod attempt_tests;
#[cfg(test)]
#[path = "group_collapse_tests.rs"]
mod group_collapse_tests;
#[cfg(test)]
#[path = "group_limits_tests.rs"]
mod group_limits_tests;
#[cfg(test)]
#[path = "group_live_tests.rs"]
mod group_live_tests;
#[cfg(test)]
#[path = "group_mark_tests.rs"]
mod group_mark_tests;
#[cfg(test)]
#[path = "knowledge_learning_disabled_tests.rs"]
mod knowledge_learning_disabled_tests;
#[cfg(test)]
#[path = "knowledge_override_tests.rs"]
mod knowledge_override_tests;
#[cfg(test)]
#[path = "knowledge_supplied_tests.rs"]
mod knowledge_supplied_tests;
#[cfg(test)]
#[path = "reasoning_tests.rs"]
mod reasoning_tests;