Enhance CodexExecutor with compact URL support
This commit is contained in:
@@ -87,10 +87,17 @@ export class CodexExecutor extends BaseExecutor {
|
|||||||
return headers;
|
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
|
* Transform request before sending - inject default instructions if missing
|
||||||
*/
|
*/
|
||||||
transformRequest(model, body, stream, credentials) {
|
transformRequest(model, body, stream, credentials) {
|
||||||
|
this._isCompact = !!body._compact;
|
||||||
|
delete body._compact;
|
||||||
// Resolve conversation-stable session_id from input history + machineId
|
// Resolve conversation-stable session_id from input history + machineId
|
||||||
this._currentSessionId = resolveConversationSessionId(body.input, cachedMachineId);
|
this._currentSessionId = resolveConversationSessionId(body.input, cachedMachineId);
|
||||||
// Convert string input to array format (Codex API requires input as array)
|
// Convert string input to array format (Codex API requires input as array)
|
||||||
|
|||||||
37
src/app/api/v1/responses/compact/route.js
Normal file
37
src/app/api/v1/responses/compact/route.js
Normal 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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user