diff --git a/src/agent/api/mod.rs b/src/agent/api/mod.rs index c7151c3..6c8c77b 100644 --- a/src/agent/api/mod.rs +++ b/src/agent/api/mod.rs @@ -309,7 +309,7 @@ pub(crate) struct SseReader { } impl SseReader { - pub fn new(ui_tx: &UiSender) -> Self { + pub(crate) fn new(ui_tx: &UiSender) -> Self { Self { line_buf: String::new(), chunk_timeout: Duration::from_secs(120), @@ -343,7 +343,7 @@ impl SseReader { /// Read the next SSE event from the response stream. /// Returns Ok(Some(value)) for each parsed data line, /// Ok(None) when the stream ends or [DONE] is received. - pub async fn next_event( + pub(crate) async fn next_event( &mut self, response: &mut reqwest::Response, ) -> Result> { diff --git a/src/agent/api/openai.rs b/src/agent/api/openai.rs index 257e18a..4d263e8 100644 --- a/src/agent/api/openai.rs +++ b/src/agent/api/openai.rs @@ -15,7 +15,7 @@ use super::StreamEvent; /// Stream SSE events from an OpenAI-compatible endpoint, sending /// parsed StreamEvents through the channel. The caller (runner) /// handles routing to the UI. -pub async fn stream_events( +pub(super) async fn stream_events( client: &Client, base_url: &str, api_key: &str, diff --git a/src/agent/tools/control.rs b/src/agent/tools/control.rs index 914865a..01da464 100644 --- a/src/agent/tools/control.rs +++ b/src/agent/tools/control.rs @@ -9,7 +9,7 @@ use anyhow::{Context, Result}; use super::ToolOutput; use crate::agent::types::ToolDef; -pub fn pause(_args: &serde_json::Value) -> Result { +pub(super) fn pause(_args: &serde_json::Value) -> Result { Ok(ToolOutput { text: "Pausing autonomous behavior. Only user input will wake you.".to_string(), is_yield: true, @@ -19,7 +19,7 @@ pub fn pause(_args: &serde_json::Value) -> Result { }) } -pub fn switch_model(args: &serde_json::Value) -> Result { +pub(super) fn switch_model(args: &serde_json::Value) -> Result { let model = args .get("model") .and_then(|v| v.as_str()) @@ -36,7 +36,7 @@ pub fn switch_model(args: &serde_json::Value) -> Result { }) } -pub fn yield_to_user(args: &serde_json::Value) -> Result { +pub(super) fn yield_to_user(args: &serde_json::Value) -> Result { let msg = args .get("message") .and_then(|v| v.as_str()) @@ -50,7 +50,7 @@ pub fn yield_to_user(args: &serde_json::Value) -> Result { }) } -pub fn definitions() -> Vec { +pub(super) fn definitions() -> Vec { vec![ ToolDef::new( "switch_model", diff --git a/src/agent/tools/vision.rs b/src/agent/tools/vision.rs index 83938c1..bc523d5 100644 --- a/src/agent/tools/vision.rs +++ b/src/agent/tools/vision.rs @@ -21,7 +21,7 @@ struct Args { fn default_lines() -> usize { 50 } -pub fn definition() -> ToolDef { +pub(super) fn definition() -> ToolDef { ToolDef::new( "view_image", "View an image file or capture a tmux pane screenshot. \ @@ -49,7 +49,7 @@ pub fn definition() -> ToolDef { } /// View an image file or capture a tmux pane. -pub fn view_image(args: &serde_json::Value) -> Result { +pub(super) fn view_image(args: &serde_json::Value) -> Result { let a: Args = serde_json::from_value(args.clone()) .context("invalid view_image arguments")?; diff --git a/src/hippocampus/neuro/rewrite.rs b/src/hippocampus/neuro/rewrite.rs index 5a7d01a..054c345 100644 --- a/src/hippocampus/neuro/rewrite.rs +++ b/src/hippocampus/neuro/rewrite.rs @@ -65,7 +65,7 @@ pub fn differentiate_hub(store: &Store, hub_key: &str) -> Option> } /// Like differentiate_hub but uses a pre-built graph. -pub fn differentiate_hub_with_graph(store: &Store, hub_key: &str, graph: &Graph) -> Option> { +fn differentiate_hub_with_graph(store: &Store, hub_key: &str, graph: &Graph) -> Option> { let degree = graph.degree(hub_key); // Only differentiate actual hubs diff --git a/src/hippocampus/store/parse.rs b/src/hippocampus/store/parse.rs index d3310ea..b172a57 100644 --- a/src/hippocampus/store/parse.rs +++ b/src/hippocampus/store/parse.rs @@ -23,7 +23,7 @@ pub struct MemoryUnit { pub source_ref: Option, } -pub fn classify_filename(filename: &str) -> NodeType { +pub(super) fn classify_filename(filename: &str) -> NodeType { let bare = filename.strip_suffix(".md").unwrap_or(filename); if bare.starts_with("daily-") { NodeType::EpisodicDaily } else if bare.starts_with("weekly-") { NodeType::EpisodicWeekly } @@ -147,7 +147,7 @@ fn extract_md_links(content: &str, re: &Regex, source_file: &str) -> Vec .collect() } -pub fn normalize_link(target: &str, source_file: &str) -> String { +fn normalize_link(target: &str, source_file: &str) -> String { let source_bare = source_file.strip_suffix(".md").unwrap_or(source_file); if target.starts_with('#') { diff --git a/src/hippocampus/store/types.rs b/src/hippocampus/store/types.rs index ff5ca54..2c46437 100644 --- a/src/hippocampus/store/types.rs +++ b/src/hippocampus/store/types.rs @@ -434,7 +434,7 @@ pub struct GapRecord { } /// Per-node agent visit index: node_key → (agent_type → last_visit_timestamp) -pub type VisitIndex = HashMap>; +pub(super) type VisitIndex = HashMap>; // The full in-memory store #[derive(Default, Serialize, Deserialize)] @@ -557,7 +557,7 @@ capnp_message!(AgentVisit, skip: [], ); -pub fn new_visit(node_uuid: [u8; 16], node_key: &str, agent: &str, outcome: &str) -> AgentVisit { +pub(super) fn new_visit(node_uuid: [u8; 16], node_key: &str, agent: &str, outcome: &str) -> AgentVisit { AgentVisit { node_uuid, node_key: node_key.to_string(), @@ -588,7 +588,7 @@ capnp_message!(TranscriptSegment, skip: [], ); -pub fn new_transcript_segment(transcript_id: &str, segment_index: u32, agent: &str) -> TranscriptSegment { +pub(super) fn new_transcript_segment(transcript_id: &str, segment_index: u32, agent: &str) -> TranscriptSegment { TranscriptSegment { transcript_id: transcript_id.to_string(), segment_index,