fix(goose): only send agent-session-id when a session exists (#6657)
Signed-off-by: Adrian Cole <adrian@tetrate.io>
This commit is contained in:
@@ -7,6 +7,7 @@ use crate::providers::errors::ProviderError;
|
||||
use crate::providers::formats::openai_responses::responses_api_to_streaming_message;
|
||||
use crate::providers::retry::ProviderRetry;
|
||||
use crate::providers::utils::handle_status_openai_compat;
|
||||
use crate::session_context::SESSION_ID_HEADER;
|
||||
use anyhow::{anyhow, Result};
|
||||
use async_stream::try_stream;
|
||||
use async_trait::async_trait;
|
||||
@@ -16,6 +17,7 @@ use chrono::{DateTime, Utc};
|
||||
use futures::{StreamExt, TryStreamExt};
|
||||
use jsonwebtoken::jwk::JwkSet;
|
||||
use jsonwebtoken::{decode, decode_header, DecodingKey, Validation};
|
||||
use reqwest::header::{HeaderName, HeaderValue};
|
||||
use rmcp::model::{RawContent, Role, Tool};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{json, Value};
|
||||
@@ -789,7 +791,11 @@ impl ChatGptCodexProvider {
|
||||
})
|
||||
}
|
||||
|
||||
async fn post_streaming(&self, payload: &Value) -> Result<reqwest::Response, ProviderError> {
|
||||
async fn post_streaming(
|
||||
&self,
|
||||
session_id: Option<&str>,
|
||||
payload: &Value,
|
||||
) -> Result<reqwest::Response, ProviderError> {
|
||||
let token_data = self
|
||||
.auth_provider
|
||||
.get_valid_token()
|
||||
@@ -805,6 +811,14 @@ impl ChatGptCodexProvider {
|
||||
);
|
||||
}
|
||||
|
||||
if let Some(session_id) = session_id.filter(|id| !id.is_empty()) {
|
||||
headers.insert(
|
||||
HeaderName::from_static(SESSION_ID_HEADER),
|
||||
HeaderValue::from_str(session_id)
|
||||
.map_err(|e| ProviderError::ExecutionError(e.to_string()))?,
|
||||
);
|
||||
}
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
let response = client
|
||||
.post(format!("{}/responses", CODEX_API_ENDPOINT))
|
||||
@@ -856,7 +870,7 @@ impl Provider for ChatGptCodexProvider {
|
||||
)]
|
||||
async fn complete_with_model(
|
||||
&self,
|
||||
_session_id: &str,
|
||||
session_id: Option<&str>,
|
||||
model_config: &ModelConfig,
|
||||
system: &str,
|
||||
messages: &[Message],
|
||||
@@ -870,7 +884,7 @@ impl Provider for ChatGptCodexProvider {
|
||||
let response = self
|
||||
.with_retry(|| async {
|
||||
let payload_clone = payload.clone();
|
||||
self.post_streaming(&payload_clone).await
|
||||
self.post_streaming(session_id, &payload_clone).await
|
||||
})
|
||||
.await?;
|
||||
|
||||
@@ -914,7 +928,7 @@ impl Provider for ChatGptCodexProvider {
|
||||
|
||||
async fn stream(
|
||||
&self,
|
||||
_session_id: &str,
|
||||
session_id: &str,
|
||||
system: &str,
|
||||
messages: &[Message],
|
||||
tools: &[Tool],
|
||||
@@ -926,7 +940,7 @@ impl Provider for ChatGptCodexProvider {
|
||||
let response = self
|
||||
.with_retry(|| async {
|
||||
let payload_clone = payload.clone();
|
||||
self.post_streaming(&payload_clone).await
|
||||
self.post_streaming(Some(session_id), &payload_clone).await
|
||||
})
|
||||
.await?;
|
||||
|
||||
@@ -953,10 +967,7 @@ impl Provider for ChatGptCodexProvider {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn fetch_supported_models(
|
||||
&self,
|
||||
_session_id: &str,
|
||||
) -> Result<Option<Vec<String>>, ProviderError> {
|
||||
async fn fetch_supported_models(&self) -> Result<Option<Vec<String>>, ProviderError> {
|
||||
Ok(Some(
|
||||
CHATGPT_CODEX_KNOWN_MODELS
|
||||
.iter()
|
||||
|
||||
Reference in New Issue
Block a user