MCPcopy Create free account
hub / github.com/GCWing/BitFun / terminal_execute

Function terminal_execute

src/apps/desktop/src/api/terminal_api.rs:672–730  ·  view source on GitHub ↗
(
    request: ExecuteCommandRequest,
    state: State<'_, TerminalState>,
)

Source from the content-addressed store, hash-verified

670
671#[tauri::command]
672pub async fn terminal_execute(
673 request: ExecuteCommandRequest,
674 state: State<'_, TerminalState>,
675) -> Result<ExecuteCommandResponse, String> {
676 if is_remote_session(&request.session_id).await {
677 if let Some(remote_manager) = get_remote_workspace_manager() {
678 let terminal_manager = remote_manager
679 .get_terminal_manager()
680 .await
681 .ok_or("Remote terminal manager not available")?;
682 let session = terminal_manager
683 .get_session(&request.session_id)
684 .await
685 .ok_or("Remote session not found")?;
686 let ssh_manager = remote_manager
687 .get_ssh_manager()
688 .await
689 .ok_or("SSH manager not available")?;
690 let (stdout, stderr, exit_code) = ssh_manager
691 .execute_command(&session.connection_id, &request.command)
692 .await
693 .map_err(|e| format!("Failed to execute remote command: {}", e))?;
694
695 return Ok(ExecuteCommandResponse {
696 command: request.command,
697 command_id: format!(
698 "remote-cmd-{}",
699 std::time::SystemTime::now()
700 .duration_since(std::time::UNIX_EPOCH)
701 .unwrap_or_default()
702 .as_millis()
703 ),
704 output: if stderr.is_empty() {
705 stdout
706 } else {
707 format!("{}\n{}", stdout, stderr)
708 },
709 exit_code: Some(exit_code),
710 completion_reason: "completed".to_string(),
711 });
712 }
713 }
714
715 let api = state.get_or_init_api().await?;
716
717 let core_request = CoreExecuteCommandRequest {
718 session_id: request.session_id,
719 command: request.command,
720 timeout_ms: request.timeout_ms,
721 prevent_history: request.prevent_history,
722 };
723
724 let result = api
725 .execute_command(core_request)
726 .await
727 .map_err(|e| format!("Failed to execute command: {}", e))?;
728
729 Ok(ExecuteCommandResponse::from(result))

Callers

nothing calls this directly

Calls 8

is_remote_sessionFunction · 0.85
get_terminal_managerMethod · 0.80
get_ssh_managerMethod · 0.80
get_or_init_apiMethod · 0.80
get_sessionMethod · 0.45
execute_commandMethod · 0.45
is_emptyMethod · 0.45

Tested by

no test coverage detected