fix(goose): propagate session_id across providers and MCP (#6584)

Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
Adrian Cole
2026-01-22 09:28:56 +09:00
committed by GitHub
parent f3bae7ea7a
commit 67de49abbb
61 changed files with 1457 additions and 616 deletions
+10 -5
View File
@@ -169,7 +169,7 @@ impl GithubCopilotProvider {
})
}
async fn post(&self, payload: &mut Value) -> Result<Response, ProviderError> {
async fn post(&self, session_id: &str, payload: &mut Value) -> Result<Response, ProviderError> {
let (endpoint, token) = self.get_api_info().await?;
let auth = AuthMethod::BearerToken(token);
let mut headers = self.get_github_headers();
@@ -179,7 +179,7 @@ impl GithubCopilotProvider {
let api_client = ApiClient::new(endpoint.clone(), auth)?.with_headers(headers)?;
api_client
.response_post("chat/completions", payload)
.response_post(session_id, "chat/completions", payload)
.await
.map_err(|e| e.into())
}
@@ -411,6 +411,7 @@ impl Provider for GithubCopilotProvider {
)]
async fn complete_with_model(
&self,
session_id: &str,
model_config: &ModelConfig,
system: &str,
messages: &[Message],
@@ -430,7 +431,7 @@ impl Provider for GithubCopilotProvider {
let response = self
.with_retry(|| async {
let mut payload_clone = payload.clone();
self.post(&mut payload_clone).await
self.post(session_id, &mut payload_clone).await
})
.await?;
let response = handle_response_openai_compat(response).await?;
@@ -450,6 +451,7 @@ impl Provider for GithubCopilotProvider {
async fn stream(
&self,
session_id: &str,
system: &str,
messages: &[Message],
tools: &[Tool],
@@ -467,7 +469,7 @@ impl Provider for GithubCopilotProvider {
let response = self
.with_retry(|| async {
let mut payload_clone = payload.clone();
let resp = self.post(&mut payload_clone).await?;
let resp = self.post(session_id, &mut payload_clone).await?;
handle_status_openai_compat(resp).await
})
.await
@@ -478,7 +480,10 @@ impl Provider for GithubCopilotProvider {
stream_openai_compat(response, log)
}
async fn fetch_supported_models(&self) -> Result<Option<Vec<String>>, ProviderError> {
async fn fetch_supported_models(
&self,
_session_id: &str,
) -> Result<Option<Vec<String>>, ProviderError> {
let (endpoint, token) = self.get_api_info().await?;
let url = format!("{}/models", endpoint);