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

Method chat

crates/opencode-provider/src/github_copilot.rs:476–510  ·  view source on GitHub ↗
(&self, request: ChatRequest)

Source from the content-addressed store, hash-verified

474 }
475
476 async fn chat(&self, request: ChatRequest) -> Result<ChatResponse, ProviderError> {
477 if select_copilot_route(&request.model) == CopilotRoute::Responses {
478 let response_model = self.responses_model(&request.model);
479 let options = self.responses_generate_options(&request);
480 let request_for_primary = request.clone();
481 let model_for_log = request.model.clone();
482 return resolve_with_fallback(
483 async move {
484 response_model
485 .do_generate(options)
486 .await
487 .map(|result| Self::responses_chat_response(&request_for_primary, result))
488 },
489 move |err| async move {
490 if get_custom_fetch_proxy("github-copilot").is_some() {
491 tracing::warn!(
492 model = %model_for_log,
493 error = %err,
494 "Copilot responses generate failed while custom fetch proxy is active; skipping legacy fallback"
495 );
496 return Err(err);
497 }
498 tracing::warn!(
499 model = %model_for_log,
500 error = %err,
501 "Copilot responses generate failed, falling back to chat completions"
502 );
503 self.chat_legacy(request).await
504 },
505 )
506 .await;
507 }
508
509 self.chat_legacy(request).await
510 }
511
512 async fn chat_stream(&self, request: ChatRequest) -> Result<StreamResult, ProviderError> {
513 if select_copilot_route(&request.model) == CopilotRoute::Responses {

Callers

nothing calls this directly

Calls 8

select_copilot_routeFunction · 0.85
get_custom_fetch_proxyFunction · 0.85
do_generateMethod · 0.80
resolve_with_fallbackFunction · 0.70
responses_modelMethod · 0.45
cloneMethod · 0.45
chat_legacyMethod · 0.45

Tested by

no test coverage detected