From a4a4798b4deed085021149e45e20c5e014ee4de5 Mon Sep 17 00:00:00 2001 From: main Date: Mon, 23 Mar 2026 18:00:13 -0400 Subject: Remove consult turn limits --- crates/phone-opus/src/mcp/catalog.rs | 5 ----- crates/phone-opus/src/mcp/service.rs | 30 ------------------------------ 2 files changed, 35 deletions(-) (limited to 'crates/phone-opus/src') diff --git a/crates/phone-opus/src/mcp/catalog.rs b/crates/phone-opus/src/mcp/catalog.rs index 839c477..f3f0925 100644 --- a/crates/phone-opus/src/mcp/catalog.rs +++ b/crates/phone-opus/src/mcp/catalog.rs @@ -102,11 +102,6 @@ fn tool_schema(name: &str) -> Value { "type": "string", "description": "Optional working directory for the Claude Code session. Relative paths resolve against the MCP host working directory." }, - "max_turns": { - "type": "integer", - "minimum": 1, - "description": "Optional maximum number of Claude agent turns before stopping." - }, "session_id": { "type": "string", "description": "Optional Claude session handle returned by a previous consult call. When set, phone_opus resumes that conversation instead of starting a fresh one." diff --git a/crates/phone-opus/src/mcp/service.rs b/crates/phone-opus/src/mcp/service.rs index bd9b31f..9fc1134 100644 --- a/crates/phone-opus/src/mcp/service.rs +++ b/crates/phone-opus/src/mcp/service.rs @@ -122,7 +122,6 @@ impl WorkerService { struct ConsultArgs { prompt: String, cwd: Option, - max_turns: Option, session_id: Option, background: Option, } @@ -141,7 +140,6 @@ struct ConsultJobsArgs { struct ConsultRequest { prompt: PromptText, cwd: WorkingDirectory, - max_turns: Option, session: Option, mode: ConsultMode, } @@ -151,7 +149,6 @@ impl ConsultRequest { Ok(Self { prompt: PromptText::parse(args.prompt)?, cwd: WorkingDirectory::resolve(args.cwd)?, - max_turns: args.max_turns.map(TurnLimit::parse).transpose()?, session: args.session_id.map(SessionHandle::parse).transpose()?, mode: ConsultMode::from_background(args.background), }) @@ -177,7 +174,6 @@ impl ConsultRequest { BackgroundConsultRequest { prompt: self.prompt.as_str().to_owned(), cwd: self.cwd.display(), - max_turns: self.max_turns.map(TurnLimit::get), session_id: self.requested_session_id(), } } @@ -269,22 +265,6 @@ impl WorkingDirectory { } } -#[derive(Debug, Clone, Copy)] -struct TurnLimit(u64); - -impl TurnLimit { - fn parse(raw: u64) -> Result { - if raw == 0 { - return Err(ConsultRequestError::InvalidTurnLimit); - } - Ok(Self(raw)) - } - - fn get(self) -> u64 { - self.0 - } -} - #[derive(Debug, Clone)] struct SessionHandle(Uuid); @@ -304,7 +284,6 @@ impl SessionHandle { struct BackgroundConsultRequest { prompt: String, cwd: String, - max_turns: Option, session_id: Option, } @@ -313,7 +292,6 @@ impl BackgroundConsultRequest { ConsultRequest::parse(ConsultArgs { prompt: self.prompt, cwd: Some(self.cwd), - max_turns: self.max_turns, session_id: self.session_id, background: Some(false), }) @@ -459,7 +437,6 @@ impl BackgroundConsultJobRecord { "finished_unix_ms": self.finished_unix_ms, "runner_pid": self.runner_pid, "cwd": self.request.cwd, - "max_turns": self.request.max_turns, "requested_session_id": self.request.session_id, "prompt_prefix_injected": self.prompt_prefix_injected, }) @@ -476,8 +453,6 @@ enum ConsultRequestError { Canonicalize { path: String, source: io::Error }, #[error("working directory `{0}` is not a directory")] NotDirectory(String), - #[error("max_turns must be greater than zero")] - InvalidTurnLimit, #[error("session_id must be a valid UUID, got `{0}`")] InvalidSessionHandle(String), #[error("job_id must be a valid UUID, got `{0}`")] @@ -866,7 +841,6 @@ fn submit_background_consult( "prompt": request.prompt.as_str(), "effective_prompt": request.prompt.rendered(), "cwd": request.cwd.display(), - "max_turns": request.max_turns.map(TurnLimit::get), "follow_up_tools": ["consult_job", "consult_jobs"], }); fallback_detailed_tool_output( @@ -1118,9 +1092,6 @@ fn invoke_claude(request: &ConsultRequest) -> Result