fix: Address PR review feedback - fix stale resume IDs, update model description, remove duplicate test, revert gitignore

This commit is contained in:
Hannes Rudolph 2025-10-16 14:24:56 -06:00
parent c6b7681622
commit e118846aa5
4 changed files with 17 additions and 43 deletions

1
.gitignore vendored
View file

@ -49,7 +49,6 @@ logs
# Qdrant
qdrant_storage/
# Architect plans
plans/

View file

@ -57,7 +57,7 @@ export const openAiNativeModels = {
inputPrice: 15.0,
outputPrice: 120.0,
description:
"GPT-5 Pro: a slow, reasoning-focused model built to tackle tough problems. Requests can take several minutes to finish. Responses API only; no streaming, so it may appear stuck until the reply is ready.",
"GPT-5 Pro: A slow, reasoning-focused model for complex problems. Uses background mode with resilient streaming - requests may take several minutes with automatic recovery if connection drops.",
supportsVerbosity: true,
supportsTemperature: false,
backgroundMode: true,

View file

@ -58,6 +58,9 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
private currentRequestIsBackground?: boolean
// Cutoff sequence for filtering stale events during resume
private resumeCutoffSequence?: number
// Per-request tracking to prevent stale resume attempts
private currentRequestResponseId?: string
private currentRequestSequenceNumber?: number
// Event types handled by the shared event processor to avoid duplication
private readonly coreHandledEventTypes = new Set<string>([
@ -357,12 +360,15 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
// Annotate if this request uses background mode (used for status chunks)
this.currentRequestIsBackground = !!requestBody?.background
// Reset per-request tracking to prevent stale values from previous requests
this.currentRequestResponseId = undefined
this.currentRequestSequenceNumber = undefined
const canAttemptResume = () =>
this.currentRequestIsBackground &&
(this.options.openAiNativeBackgroundAutoResume ?? true) &&
!!this.lastResponseId &&
typeof this.lastSequenceNumber === "number"
!!this.currentRequestResponseId &&
typeof this.currentRequestSequenceNumber === "number"
try {
// Use the official SDK
@ -395,8 +401,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
// Stream dropped mid-flight; attempt resume for background requests
if (canAttemptResume()) {
for await (const chunk of this.attemptResumeOrPoll(
this.lastResponseId!,
this.lastSequenceNumber!,
this.currentRequestResponseId!,
this.currentRequestSequenceNumber!,
model,
)) {
yield chunk
@ -420,8 +426,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
}
if (canAttemptResume()) {
for await (const chunk of this.attemptResumeOrPoll(
this.lastResponseId!,
this.lastSequenceNumber!,
this.currentRequestResponseId!,
this.currentRequestSequenceNumber!,
model,
)) {
yield chunk
@ -684,6 +690,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
// Record sequence number for cursor tracking
if (typeof parsed?.sequence_number === "number") {
this.lastSequenceNumber = parsed.sequence_number
// Also track for per-request resume capability
this.currentRequestSequenceNumber = parsed.sequence_number
}
// Capture resolved service tier if present
@ -1384,6 +1392,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
// Record sequence number for cursor tracking
if (typeof event?.sequence_number === "number") {
this.lastSequenceNumber = event.sequence_number
// Also track for per-request resume capability
this.currentRequestSequenceNumber = event.sequence_number
}
// Map lifecycle events to status chunks

View file

@ -1,35 +0,0 @@
import { labelForBackgroundStatus } from "@src/utils/backgroundStatus"
describe("labelForBackgroundStatus()", () => {
it("maps queued", () => {
expect(labelForBackgroundStatus("queued")).toBe("API Request: background mode (queued)…")
})
it("maps in_progress", () => {
expect(labelForBackgroundStatus("in_progress")).toBe("API Request: background mode (in progress)…")
})
it("maps reconnecting", () => {
expect(labelForBackgroundStatus("reconnecting")).toBe("API Request: background mode (reconnecting…)")
})
it("maps polling", () => {
expect(labelForBackgroundStatus("polling")).toBe("API Request: background mode (polling…)")
})
it("maps completed", () => {
expect(labelForBackgroundStatus("completed")).toBe("API Request: background mode (completed)")
})
it("maps failed", () => {
expect(labelForBackgroundStatus("failed")).toBe("API Request: background mode (failed)")
})
it("maps canceled", () => {
expect(labelForBackgroundStatus("canceled")).toBe("API Request: background mode (canceled)")
})
it("maps undefined to generic label", () => {
expect(labelForBackgroundStatus(undefined)).toBe("API Request: background mode")
})
})