From 106dca20fef667ef4605528d51c2b9968731242a Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sun, 23 Aug 2026 23:54:25 +0200 Subject: daemon/api: Remove `add_history` This request is a footgun, as it will leave commands that never return (e.g. `shutdown`, `exit`, etc.) unrecorded. --- crates/daemon/src/api/history.rs | 32 +++----------------------------- crates/turtle/proto/history.proto | 7 ------- crates/turtle/src/client/mod.rs | 24 ------------------------ 3 files changed, 3 insertions(+), 60 deletions(-) diff --git a/crates/daemon/src/api/history.rs b/crates/daemon/src/api/history.rs index 2229e5b1..afd823b1 100644 --- a/crates/daemon/src/api/history.rs +++ b/crates/daemon/src/api/history.rs @@ -4,7 +4,7 @@ use dashmap::DashMap; use eyre::Result; use time::OffsetDateTime; use tokio_stream::Stream; -use tonic::{IntoRequest, Request, Response, Status}; +use tonic::{Request, Response, Status}; use tracing::{Level, instrument}; use crate::{ @@ -20,8 +20,8 @@ use turtle_api::{ generated::{ DAEMON_PROTOCOL_VERSION, history::{ - AddHistoryRequest, EndHistoryReply, EndHistoryRequest, HistoryEntry, HistoryEventKind, - HistoryReply, HistoryRequest, StartHistoryReply, StartHistoryRequest, TailHistoryReply, + EndHistoryReply, EndHistoryRequest, HistoryEntry, HistoryEventKind, HistoryReply, + HistoryRequest, StartHistoryReply, StartHistoryRequest, TailHistoryReply, TailHistoryRequest, history_server::{History as HistorySvc, HistoryServer}, }, @@ -104,32 +104,6 @@ impl HistorySvc for HistoryService { Ok(Response::new(HistoryReply { entries })) } - #[instrument(skip_all, level = Level::INFO)] - async fn add_history( - &self, - request: Request, - ) -> Result, Status> { - let req = request.into_inner(); - let start_req = req.start.expect("is some"); - - let start_response = self - .start_history(start_req.into_request()) - .await? - .into_inner(); - let end_responnse = self - .end_history( - EndHistoryRequest { - id: start_response.id, - exit: req.exit, - duration: req.duration, - } - .into_request(), - ) - .await?; - - Ok(end_responnse) - } - #[instrument(skip_all, level = Level::INFO)] async fn start_history( &self, diff --git a/crates/turtle/proto/history.proto b/crates/turtle/proto/history.proto index 90fcf55f..c6bdd99b 100644 --- a/crates/turtle/proto/history.proto +++ b/crates/turtle/proto/history.proto @@ -4,7 +4,6 @@ package history; service History { rpc StartHistory(StartHistoryRequest) returns (StartHistoryReply); rpc EndHistory(EndHistoryRequest) returns (EndHistoryReply); - rpc AddHistory(AddHistoryRequest) returns (EndHistoryReply); rpc TailHistory(TailHistoryRequest) returns (stream TailHistoryReply); @@ -12,12 +11,6 @@ service History { rpc History(HistoryRequest) returns (HistoryReply); } -message AddHistoryRequest { - StartHistoryRequest start = 1; - int64 exit = 2; - Duration duration = 3; -} - message StartHistoryRequest { Timestamp timestamp = 1; string command = 2; diff --git a/crates/turtle/src/client/mod.rs b/crates/turtle/src/client/mod.rs index 28289652..531d8597 100644 --- a/crates/turtle/src/client/mod.rs +++ b/crates/turtle/src/client/mod.rs @@ -7,7 +7,6 @@ use hyper_util::rt::TokioIo; use tokio::net::UnixStream; -use crate::generated::history::AddHistoryRequest; use crate::generated::{ self, DAEMON_PROTOCOL_VERSION, control::{ @@ -235,29 +234,6 @@ impl HistoryClient { Ok(self.client.end_history(req).await?.into_inner()) } - pub async fn add_history( - &mut self, - h: History, - duration: std::time::Duration, - exit: i64, - ) -> Result { - let req = AddHistoryRequest { - start: Some(StartHistoryRequest { - timestamp: time_to_proto_timestamp(h.timestamp), - command: h.command, - cwd: h.cwd, - session: h.session, - hostname: h.hostname, - author: h.author, - intent: h.intent, - }), - exit, - duration: std_to_proto_duration(duration), - }; - - Ok(self.client.add_history(req).await?.into_inner()) - } - pub async fn history(&mut self, range: Option) -> Result> { let req = HistoryRequest { range: range.map(|r| generated::history::Range { -- cgit v1.3.1