Enhance CodexExecutor with compact URL support

This commit is contained in:
decolua
2026-04-14 10:18:27 +07:00
parent 6a6e2fcd77
commit 4bff21cb80
2 changed files with 44 additions and 0 deletions

View File

@@ -87,10 +87,17 @@ export class CodexExecutor extends BaseExecutor {
return headers;
}
buildUrl(model, stream, urlIndex = 0, credentials = null) {
const base = super.buildUrl(model, stream, urlIndex, credentials);
return this._isCompact ? `${base}/compact` : base;
}
/**
* Transform request before sending - inject default instructions if missing
*/
transformRequest(model, body, stream, credentials) {
this._isCompact = !!body._compact;
delete body._compact;
// Resolve conversation-stable session_id from input history + machineId
this._currentSessionId = resolveConversationSessionId(body.input, cachedMachineId);
// Convert string input to array format (Codex API requires input as array)

View File

@@ -0,0 +1,37 @@
import { handleChat } from "@/sse/handlers/chat.js";
import { initTranslators } from "open-sse/translator/index.js";
let initialized = false;
async function ensureInitialized() {
if (!initialized) {
await initTranslators();
initialized = true;
}
}
export async function OPTIONS() {
return new Response(null, {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
"Access-Control-Allow-Headers": "*"
}
});
}
/**
* POST /v1/responses/compact - Compact conversation context
* Reuses the same handleChat pipeline, signals compact via body._compact
*/
export async function POST(request) {
await ensureInitialized();
const body = await request.json();
body._compact = true;
const newRequest = new Request(request.url, {
method: "POST",
headers: request.headers,
body: JSON.stringify(body)
});
return await handleChat(newRequest);
}