use std::fs;
use std::path::{Path, PathBuf};
use anyhow::{Context, Result, bail};
use base64::Engine as _;
use serde_json::{Map, Value, json};
use uuid::Uuid;
use super::BridgeState;
use super::helpers::{
OptionalTextUpdate, normalize_name, optional_string, resolve_optional_text_update,
};
use super::render::build_thread_render_snapshot;
use super::timeline::{
normalize_thread, timeline_entries_from_events, timeline_entries_from_thread,
};
use crate::bridge_protocol::{
ArchiveThreadRequest, InterruptTurnRequest, ListThreadsRequest, ReadThreadRequest,
RespondPendingRequestRequest, ResumeThreadRequest, SendTurnInputItem, SendTurnRequest,
StageInputImageRequest, StagedInputImage, StartThreadRequest, UnarchiveThreadRequest,
UpdateThreadRequest,
};
use crate::config::expand_path;
use crate::directory::{canonicalize_directory, directory_contains, normalize_absolute_directory};
mod operations;
mod reads;
mod request_payloads;
#[cfg(test)]
mod tests;
mod thread_response;
mod turn_inputs;
#[cfg(test)]
pub(crate) use turn_inputs::build_turn_input_items;