MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / submit_prompt

Method submit_prompt

crates/opencode-tui/src/app/app.rs:2204–2317  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

2202 }
2203
2204 fn submit_prompt(&mut self) -> anyhow::Result<()> {
2205 let shell_mode = self.prompt.is_shell_mode();
2206 let input = self.prompt.take_input();
2207 if input.trim().is_empty() {
2208 return Ok(());
2209 }
2210
2211 if shell_mode {
2212 return self.submit_shell_command(input);
2213 }
2214
2215 let Some(client) = self.context.get_api_client() else {
2216 eprintln!("API client not initialized");
2217 return Ok(());
2218 };
2219
2220 let agent = selected_agent(&self.context);
2221 let model = self.selected_model_for_prompt();
2222 let variant = self.context.current_model_variant();
2223
2224 match self.context.current_route() {
2225 Route::Home => {
2226 let optimistic_session_id = self.create_optimistic_session();
2227 let opt_id = self.append_optimistic_user_message(
2228 &optimistic_session_id,
2229 &input,
2230 agent.clone(),
2231 model.clone(),
2232 variant.clone(),
2233 );
2234 self.context.navigate(Route::Session {
2235 session_id: optimistic_session_id.clone(),
2236 });
2237 self.ensure_session_view(&optimistic_session_id);
2238 self.set_session_status(&optimistic_session_id, SessionStatus::Running);
2239 self.prompt.set_spinner_task_kind(TaskKind::LlmRequest);
2240 self.prompt.set_spinner_active(true);
2241 // Render immediately so the user sees their message before network I/O.
2242 let _ = self.draw();
2243
2244 let session = match client.create_session(None) {
2245 Ok(session) => session,
2246 Err(err) => {
2247 self.remove_optimistic_session(&optimistic_session_id);
2248 self.context.navigate(Route::Home);
2249 self.active_session_id = None;
2250 self.session_view = None;
2251 self.prompt.set_spinner_active(false);
2252 self.alert_dialog
2253 .set_message(&format!("Failed to create session:\n{}", err));
2254 self.alert_dialog.open();
2255 return Ok(());
2256 }
2257 };
2258 self.promote_optimistic_session(&optimistic_session_id, &session);
2259 self.context.navigate(Route::Session {
2260 session_id: session.id.clone(),
2261 });

Callers 3

handle_eventMethod · 0.80
handle_redoMethod · 0.80

Calls 15

selected_agentFunction · 0.85
is_shell_modeMethod · 0.80
take_inputMethod · 0.80
is_emptyMethod · 0.80
submit_shell_commandMethod · 0.80
get_api_clientMethod · 0.80
current_model_variantMethod · 0.80
current_routeMethod · 0.80
ensure_session_viewMethod · 0.80

Tested by

no test coverage detected