MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / submit_shell_command

Method submit_shell_command

crates/opencode-tui/src/app/app.rs:2319–2405  ·  view source on GitHub ↗
(&mut self, command: String)

Source from the content-addressed store, hash-verified

2317 }
2318
2319 fn submit_shell_command(&mut self, command: String) -> anyhow::Result<()> {
2320 let command = command.trim().to_string();
2321 if command.is_empty() {
2322 return Ok(());
2323 }
2324
2325 let Some(client) = self.context.get_api_client() else {
2326 eprintln!("API client not initialized");
2327 return Ok(());
2328 };
2329
2330 let user_line = format!("$ {}", command);
2331 let agent = selected_agent(&self.context);
2332 let model = self.selected_model_for_prompt();
2333 let variant = self.context.current_model_variant();
2334
2335 match self.context.current_route() {
2336 Route::Home => {
2337 let optimistic_session_id = self.create_optimistic_session();
2338 let _opt_id = self.append_optimistic_user_message(
2339 &optimistic_session_id,
2340 &user_line,
2341 agent.clone(),
2342 model.clone(),
2343 variant.clone(),
2344 );
2345 self.context.navigate(Route::Session {
2346 session_id: optimistic_session_id.clone(),
2347 });
2348 self.ensure_session_view(&optimistic_session_id);
2349 let _ = self.draw();
2350
2351 let session = match client.create_session(None) {
2352 Ok(session) => session,
2353 Err(err) => {
2354 self.remove_optimistic_session(&optimistic_session_id);
2355 self.context.navigate(Route::Home);
2356 self.active_session_id = None;
2357 self.session_view = None;
2358 self.alert_dialog
2359 .set_message(&format!("Failed to create session:\n{}", err));
2360 self.alert_dialog.open();
2361 return Ok(());
2362 }
2363 };
2364 self.promote_optimistic_session(&optimistic_session_id, &session);
2365 self.context.navigate(Route::Session {
2366 session_id: session.id.clone(),
2367 });
2368 self.ensure_session_view(&session.id);
2369
2370 if let Err(err) = client.execute_shell(&session.id, command.clone(), None) {
2371 self.alert_dialog
2372 .set_message(&format!("Failed to execute shell command:\n{}", err));
2373 self.alert_dialog.open();
2374 return Ok(());
2375 }
2376

Callers 1

submit_promptMethod · 0.80

Calls 15

selected_agentFunction · 0.85
is_emptyMethod · 0.80
get_api_clientMethod · 0.80
current_model_variantMethod · 0.80
current_routeMethod · 0.80
ensure_session_viewMethod · 0.80
drawMethod · 0.80
set_messageMethod · 0.80

Tested by

no test coverage detected