Skip to content

Commit e6ac9ab

Browse files
committed
fix(reasoning): request OpenAI reasoning summaries on the managed path
Managed gpt-5.x runs carry providerID "openai" (post-rebrand), but the options() gate enabling reasoningSummary:"auto" + reasoning encrypted content only fired for providerID "synsci". So the managed path never asked OpenAI for a summary: the Responses API still emitted reasoning *items* (reasoning-start/end fired, empty reasoning parts got created) but zero reasoning_summary_text.delta events — every reasoning part persisted with empty text and the UI showed a blank "thinking" block. Detect the managed path by the Atlas proxy baseURL (.../api/llm/proxy/…) in the provider options and request summaries there too. Genuine BYOK (no proxy baseURL) is untouched, so an unverified org never gets an unexpected summary request. Verified against the live proxy: a managed Responses stream returns ~83-99 summary deltas with real reasoning text; the transform now sets reasoningSummary/include for managed + legacy synsci and nothing for BYOK.
1 parent 1e77b9f commit e6ac9ab

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

backend/cli/src/provider/transform.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,16 @@ export namespace ProviderTransform {
778778
result["textVerbosity"] = "low"
779779
}
780780

781-
if (input.model.providerID.startsWith("synsci")) {
781+
// Managed OpenAI models carry providerID "openai" (post-rebrand), not
782+
// "synsci" — but they route through the Atlas proxy baseURL. Reasoning
783+
// summaries + encrypted content have to be requested on that path too,
784+
// otherwise gpt-5.x streams reasoning *items* (start/end fire) with zero
785+
// summary deltas, so every reasoning part lands empty and the UI shows a
786+
// blank "thinking" block. Genuine BYOK (no proxy baseURL) is left alone,
787+
// so an unverified org never gets an unexpected summary request.
788+
const managedBaseURL = input.providerOptions?.["baseURL"]
789+
const viaManagedProxy = typeof managedBaseURL === "string" && managedBaseURL.includes("/api/llm/proxy/")
790+
if (input.model.providerID.startsWith("synsci") || viaManagedProxy) {
782791
result["promptCacheKey"] = input.sessionID
783792
result["include"] = ["reasoning.encrypted_content"]
784793
result["reasoningSummary"] = "auto"

0 commit comments

Comments
 (0)