diff --git a/.gitignore b/.gitignore index 86cb5bf24..fb3a825b2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ interface/dist/ .idea list/ agents/ + +.claude/ diff --git a/Cargo.lock b/Cargo.lock index cc6dca25d..86576d00e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7782,7 +7782,7 @@ dependencies = [ [[package]] name = "spacebot" -version = "0.1.9" +version = "0.1.10" dependencies = [ "aes-gcm", "anyhow", diff --git a/src/agent/worker.rs b/src/agent/worker.rs index ef1c74bf6..328bad1bc 100644 --- a/src/agent/worker.rs +++ b/src/agent/worker.rs @@ -660,6 +660,7 @@ fn build_worker_recap(messages: &[rig::message::Message]) -> String { } /// Extract the last assistant text message from a history. +#[allow(dead_code)] // may be needed later fn extract_last_assistant_text(history: &[rig::message::Message]) -> Option { for message in history.iter().rev() { if let rig::message::Message::Assistant { content, .. } = message { diff --git a/src/api/agents.rs b/src/api/agents.rs index df981e3ac..ebc97ae22 100644 --- a/src/api/agents.rs +++ b/src/api/agents.rs @@ -213,7 +213,7 @@ pub(super) async fn create_agent( cron: Vec::new(), }; let agent_config = raw_config.resolve(&instance_dir, defaults); - drop(defaults); + let _ = defaults; for dir in [ &agent_config.workspace, @@ -393,13 +393,13 @@ pub(super) async fn create_agent( let deps = deps.clone(); let logger = cortex_logger.clone(); async move { - crate::agent::cortex::spawn_bulletin_loop(deps, logger).await; + let _ = crate::agent::cortex::spawn_bulletin_loop(deps, logger).await; } }); tokio::spawn({ let deps = deps.clone(); async move { - crate::agent::cortex::spawn_association_loop(deps, cortex_logger).await; + let _ = crate::agent::cortex::spawn_association_loop(deps, cortex_logger).await; } }); diff --git a/src/hooks/spacebot.rs b/src/hooks/spacebot.rs index 456f0d217..8061d6bee 100644 --- a/src/hooks/spacebot.rs +++ b/src/hooks/spacebot.rs @@ -113,7 +113,7 @@ where async fn on_completion_response( &self, _prompt: &Message, - response: &CompletionResponse, + _response: &CompletionResponse, ) -> HookAction { // Tool nudging: check if response has tool calls // Note: Rig's CompletionResponse structure varies by model implementation diff --git a/src/llm/model.rs b/src/llm/model.rs index d747db207..181a4dc58 100644 --- a/src/llm/model.rs +++ b/src/llm/model.rs @@ -575,6 +575,7 @@ impl SpacebotModel { /// Generic OpenAI-compatible API call. /// Used by providers that implement the OpenAI chat completions format. + #[allow(dead_code)] // may be needed later async fn call_openai_compatible( &self, request: CompletionRequest, @@ -764,6 +765,7 @@ impl SpacebotModel { } // --- Helpers --- +#[allow(dead_code)] // may be needed later fn normalize_ollama_base_url(configured: Option) -> String { let mut base_url = configured .unwrap_or_else(|| "http://localhost:11434".to_string()) diff --git a/src/memory/lance.rs b/src/memory/lance.rs index 4ce464dbc..d07d9ace4 100644 --- a/src/memory/lance.rs +++ b/src/memory/lance.rs @@ -85,7 +85,7 @@ impl EmbeddingTable { .into()); } - use arrow_array::{FixedSizeListArray, RecordBatch, StringArray}; + use arrow_array::{RecordBatch, StringArray}; let schema = Self::schema(); diff --git a/src/memory/maintenance.rs b/src/memory/maintenance.rs index 2dc378ec9..fbf86e231 100644 --- a/src/memory/maintenance.rs +++ b/src/memory/maintenance.rs @@ -2,8 +2,7 @@ use crate::error::Result; use crate::memory::MemoryStore; -use crate::memory::types::{Memory, MemoryType, RelationType}; -use std::sync::Arc; +use crate::memory::types::MemoryType; /// Maintenance configuration. #[derive(Debug, Clone)] @@ -124,7 +123,7 @@ async fn prune_memories(memory_store: &MemoryStore, config: &MaintenanceConfig) /// Merge near-duplicate memories. async fn merge_similar_memories( - memory_store: &MemoryStore, + _memory_store: &MemoryStore, similarity_threshold: f32, ) -> Result { // For now, this is a placeholder diff --git a/src/memory/store.rs b/src/memory/store.rs index ca6f2cff4..02b2fbfb0 100644 --- a/src/memory/store.rs +++ b/src/memory/store.rs @@ -1,6 +1,6 @@ //! Memory graph storage (SQLite). -use crate::error::{MemoryError, Result}; +use crate::error::Result; use crate::memory::search::SearchSort; use crate::memory::types::{Association, Memory, MemoryType, RelationType}; diff --git a/src/messaging/discord.rs b/src/messaging/discord.rs index c3ebe9e02..be6d535ad 100644 --- a/src/messaging/discord.rs +++ b/src/messaging/discord.rs @@ -8,7 +8,7 @@ use anyhow::Context as _; use arc_swap::ArcSwap; use async_trait::async_trait; use serenity::all::{ - ButtonStyle, ChannelId, ChannelType, ComponentInteraction, Context, CreateActionRow, + ButtonStyle, ChannelId, ChannelType, Context, CreateActionRow, CreateAttachment, CreateButton, CreateEmbed, CreateEmbedFooter, CreateInteractionResponse, CreateInteractionResponseMessage, CreateMessage, CreatePoll, CreatePollAnswer, CreateSelectMenu, CreateSelectMenuKind, CreateSelectMenuOption, CreateThread, EditMessage, diff --git a/src/messaging/slack.rs b/src/messaging/slack.rs index 41b48e4a1..7edad7878 100644 --- a/src/messaging/slack.rs +++ b/src/messaging/slack.rs @@ -672,7 +672,7 @@ impl Messaging for SlackAdapter { // The socket mode listener needs its own client instance — it manages // a persistent WebSocket connection internally and owns that client for // the lifetime of the connection. The shared `self.client` is for REST calls. - let listener_client = Arc::new(SlackClient::new( + let _listener_client = Arc::new(SlackClient::new( SlackClientHyperConnector::new() .context("failed to create slack socket mode connector")?, )); diff --git a/src/messaging/traits.rs b/src/messaging/traits.rs index 56631bfca..1f5e10f00 100644 --- a/src/messaging/traits.rs +++ b/src/messaging/traits.rs @@ -35,8 +35,8 @@ pub trait Messaging: Send + Sync + 'static { /// Send a status update. fn send_status( &self, - message: &InboundMessage, - status: StatusUpdate, + _message: &InboundMessage, + _status: StatusUpdate, ) -> impl std::future::Future> + Send { async { Ok(()) } } @@ -44,8 +44,8 @@ pub trait Messaging: Send + Sync + 'static { /// Broadcast a message. fn broadcast( &self, - target: &str, - response: OutboundResponse, + _target: &str, + _response: OutboundResponse, ) -> impl std::future::Future> + Send { async { Ok(()) } } diff --git a/src/secrets/store.rs b/src/secrets/store.rs index f2a891e7c..aae974429 100644 --- a/src/secrets/store.rs +++ b/src/secrets/store.rs @@ -1,6 +1,5 @@ //! Encrypted credentials storage (AES-256-GCM, redb). -use crate::error::Result; /// Secrets store. pub struct SecretsStore; diff --git a/src/tools/exec.rs b/src/tools/exec.rs index fa39d9f6c..0aef7de91 100644 --- a/src/tools/exec.rs +++ b/src/tools/exec.rs @@ -343,4 +343,3 @@ pub struct ExecResult { pub stderr: String, } -use anyhow::Context as _; diff --git a/src/tools/file.rs b/src/tools/file.rs index b260ca95b..dbe1b6978 100644 --- a/src/tools/file.rs +++ b/src/tools/file.rs @@ -371,4 +371,3 @@ pub async fn file_list(path: impl AsRef) -> crate::error::Result