@@ -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 (
0 commit comments