Skip to content

Commit ac388fb

Browse files
funmerlinVACInc
andcommitted
fix(openai): honor default responses compaction threshold
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
1 parent 1f4a358 commit ac388fb

2 files changed

Lines changed: 57 additions & 2 deletions

File tree

src/auto-reply/reply/agent-runner-memory.test.ts

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1027,7 +1027,6 @@ describe("runMemoryFlushIfNeeded", () => {
10271027
models: {
10281028
"openai/gpt-5.5": {
10291029
params: {
1030-
responsesServerCompaction: true,
10311030
responsesCompactThreshold: 200_000,
10321031
},
10331032
},
@@ -1109,6 +1108,59 @@ describe("runMemoryFlushIfNeeded", () => {
11091108
expect(compactCall.currentTokenCount).toBe(201_000);
11101109
});
11111110

1111+
it("uses the local preflight threshold when OpenAI server compaction is explicitly disabled", async () => {
1112+
registerMemoryFlushPlanResolverForTest(() => ({
1113+
softThresholdTokens: 4_000,
1114+
forceFlushTranscriptBytes: 1_000_000_000,
1115+
reserveTokensFloor: 60_000,
1116+
prompt: "Pre-compaction memory flush.\nNO_REPLY",
1117+
systemPrompt: "Write memory to memory/YYYY-MM-DD.md.",
1118+
relativePath: "memory/2023-11-14.md",
1119+
}));
1120+
const sessionEntry: SessionEntry = {
1121+
sessionId: "session",
1122+
updatedAt: Date.now(),
1123+
totalTokens: 161_077,
1124+
totalTokensFresh: true,
1125+
agentRuntimeOverride: "pi",
1126+
};
1127+
1128+
await runPreflightCompactionIfNeeded({
1129+
cfg: {
1130+
agents: {
1131+
defaults: {
1132+
models: {
1133+
"openai/gpt-5.5": {
1134+
params: {
1135+
responsesServerCompaction: false,
1136+
responsesCompactThreshold: 200_000,
1137+
},
1138+
},
1139+
},
1140+
compaction: { memoryFlush: {} },
1141+
},
1142+
},
1143+
} as never,
1144+
followupRun: createTestFollowupRun({
1145+
provider: "openai",
1146+
model: "gpt-5.5",
1147+
sessionId: "session",
1148+
sessionKey: "main",
1149+
}),
1150+
defaultModel: "gpt-5.5",
1151+
agentCfgContextTokens: 220_000,
1152+
sessionEntry,
1153+
sessionStore: { main: sessionEntry },
1154+
sessionKey: "main",
1155+
storePath: path.join(rootDir, "sessions.json"),
1156+
isHeartbeat: false,
1157+
replyOperation: createReplyOperation(),
1158+
});
1159+
1160+
const compactCall = requireCompactEmbeddedPiSessionCall();
1161+
expect(compactCall.currentTokenCount).toBe(161_077);
1162+
});
1163+
11121164
it("uses the active run sessionFile when the session entry has no transcript path", async () => {
11131165
const sessionFile = path.join(rootDir, "active-run-session.jsonl");
11141166
await fs.writeFile(

src/auto-reply/reply/memory-flush.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ export function resolveResponsesServerCompactionThreshold(params: {
8888
asRecord(params.cfg?.agents?.defaults?.params),
8989
asRecord(modelConfig?.params),
9090
];
91-
if (resolveBooleanParam(sources, "responsesServerCompaction") !== true) {
91+
const serverCompaction = resolveBooleanParam(sources, "responsesServerCompaction");
92+
const serverCompactionEnabled =
93+
provider === "openai" ? serverCompaction !== false : serverCompaction === true;
94+
if (!serverCompactionEnabled) {
9295
return undefined;
9396
}
9497
return resolvePositiveIntegerParam(sources, "responsesCompactThreshold");

0 commit comments

Comments
 (0)