diff --git a/app/src/terminal/cli_agent.rs b/app/src/terminal/cli_agent.rs index fc2d34c7b5e..bb45d308325 100644 --- a/app/src/terminal/cli_agent.rs +++ b/app/src/terminal/cli_agent.rs @@ -402,7 +402,8 @@ impl CLIAgent { /// Whether Warp should show its CLI-agent footer for this agent. pub(crate) fn supports_cli_agent_footer(&self) -> bool { - !matches!(self, CLIAgent::WarpTui) + // Kiro's live prompt grows to the terminal bottom, so reserving footer rows can hide its cursor. + !matches!(self, CLIAgent::Kiro | CLIAgent::WarpTui) } /// Returns the brand color for this CLI agent, or `None` for unknown/custom agents. diff --git a/app/src/terminal/cli_agent_tests.rs b/app/src/terminal/cli_agent_tests.rs index 9f4e4b81bb6..f7d6140f4b2 100644 --- a/app/src/terminal/cli_agent_tests.rs +++ b/app/src/terminal/cli_agent_tests.rs @@ -665,6 +665,7 @@ fn test_warp_tui_does_not_match_other_commands() { #[test] fn test_warp_tui_variant_properties() { assert!(CLIAgent::Claude.supports_cli_agent_footer()); + assert!(!CLIAgent::Kiro.supports_cli_agent_footer()); assert_eq!(CLIAgent::WarpTui.command_prefix(), "warp"); assert_eq!( CLIAgent::WarpTui.command_prefixes(), diff --git a/app/src/terminal/view/use_agent_footer/mod_tests.rs b/app/src/terminal/view/use_agent_footer/mod_tests.rs index 6506267731c..cd4dd6921eb 100644 --- a/app/src/terminal/view/use_agent_footer/mod_tests.rs +++ b/app/src/terminal/view/use_agent_footer/mod_tests.rs @@ -393,6 +393,51 @@ fn cli_agent_footer_renders_for_viewer_of_shared_cloud_agent_session() { }) } +#[test] +fn cli_agent_footer_does_not_render_for_kiro_session() { + App::test((), |mut app| async move { + initialize_app_for_terminal_view(&mut app); + + let terminal = add_window_with_terminal(&mut app, None); + + terminal.update(&mut app, |view, ctx| { + simulate_user_started_long_running_command(view); + + CLIAgentSessionsModel::handle(ctx).update(ctx, |sessions, ctx| { + sessions.set_session( + view.id(), + CLIAgentSession { + agent: CLIAgent::Kiro, + status: CLIAgentSessionStatus::InProgress, + session_context: CLIAgentSessionContext::default(), + input_state: CLIAgentInputState::Closed, + listener: None, + plugin_version: None, + remote_host: None, + draft_text: None, + custom_command_prefix: None, + received_rich_notification: false, + should_auto_toggle_input: false, + }, + ctx, + ); + }); + + view.maybe_show_use_agent_footer_in_blocklist(ctx); + + let model = view.model.lock(); + assert!(!view.should_render_use_agent_footer(&model, ctx)); + let active_block_index = model.block_list().active_block_index(); + assert!( + model + .block_list() + .last_non_hidden_rich_content_block_after_block(Some(active_block_index)) + .is_none() + ); + }); + }) +} + #[test] fn cli_agent_footer_does_not_render_for_warp_tui_session() { App::test((), |mut app| async move {