From c38eac7a90ce14b6f8c509bf437c560eb15c6dc0 Mon Sep 17 00:00:00 2001 From: Yeachan-Heo Date: Wed, 1 Apr 2026 05:58:00 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20hook-pipeline=20progress=20=E2=80=94=20?= =?UTF-8?q?tests=20passing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rust/crates/rusty-claude-cli/src/main.rs | 38 +++++++++++++----------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index d1b1e18..692fd5d 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -1096,20 +1096,34 @@ impl LiveCli { ) } - fn run_turn(&mut self, input: &str) -> Result<(), Box> { - let session = self.runtime.session().clone(); + fn prepare_turn_runtime( + &self, + emit_output: bool, + ) -> Result< + ( + ConversationRuntime, + HookAbortMonitor, + ), + Box, + > { let hook_abort_signal = runtime::HookAbortSignal::new(); - let mut runtime = build_runtime( - session, + let runtime = build_runtime( + self.runtime.session().clone(), self.model.clone(), self.system_prompt.clone(), true, - true, + emit_output, self.allowed_tools.clone(), self.permission_mode, )? .with_hook_abort_signal(hook_abort_signal.clone()); let hook_abort_monitor = HookAbortMonitor::spawn(hook_abort_signal); + + Ok((runtime, hook_abort_monitor)) + } + + fn run_turn(&mut self, input: &str) -> Result<(), Box> { + let (mut runtime, hook_abort_monitor) = self.prepare_turn_runtime(true)?; let mut spinner = Spinner::new(); let mut stdout = io::stdout(); spinner.tick( @@ -1155,19 +1169,7 @@ impl LiveCli { } fn run_prompt_json(&mut self, input: &str) -> Result<(), Box> { - let session = self.runtime.session().clone(); - let hook_abort_signal = runtime::HookAbortSignal::new(); - let mut runtime = build_runtime( - session, - self.model.clone(), - self.system_prompt.clone(), - true, - false, - self.allowed_tools.clone(), - self.permission_mode, - )? - .with_hook_abort_signal(hook_abort_signal.clone()); - let hook_abort_monitor = HookAbortMonitor::spawn(hook_abort_signal); + let (mut runtime, hook_abort_monitor) = self.prepare_turn_runtime(false)?; let mut permission_prompter = CliPermissionPrompter::new(self.permission_mode); let result = runtime.run_turn(input, Some(&mut permission_prompter)); hook_abort_monitor.stop();