@@ -571,6 +571,7 @@ function estimatePostUsageTrailingBytes(lines: string[]): number {
571571type TranscriptTokenEstimate = {
572572 promptTokens : number ;
573573 outputTokens ?: number ;
574+ transcriptByteSize ?: number ;
574575 transcriptBytesTokens ?: number ;
575576} ;
576577
@@ -620,6 +621,7 @@ async function estimatePromptTokensFromSessionTranscript(params: {
620621 return {
621622 promptTokens : Math . ceil ( promptTokens ) ,
622623 outputTokens : Math . ceil ( outputTokens ) ,
624+ transcriptByteSize : snapshot . byteSize ,
623625 transcriptBytesTokens,
624626 } ;
625627 }
@@ -648,6 +650,7 @@ async function estimatePromptTokensFromSessionTranscript(params: {
648650 typeof outputTokens === "number" && Number . isFinite ( outputTokens ) && outputTokens > 0
649651 ? Math . ceil ( outputTokens )
650652 : undefined ,
653+ transcriptByteSize : snapshot . byteSize ,
651654 transcriptBytesTokens,
652655 } ;
653656 }
@@ -657,6 +660,7 @@ async function estimatePromptTokensFromSessionTranscript(params: {
657660 }
658661 return {
659662 promptTokens : Math . ceil ( estimatedTokens ) ,
663+ transcriptByteSize : snapshot . byteSize ,
660664 transcriptBytesTokens,
661665 } ;
662666 } catch {
@@ -740,29 +744,11 @@ export async function runPreflightCompactionIfNeeded(params: {
740744 typeof persistedTotalTokens === "number" &&
741745 Number . isFinite ( persistedTotalTokens ) &&
742746 persistedTotalTokens > 0 ;
743- const maxActiveTranscriptBytes = resolveMaxActiveTranscriptBytes ( params . cfg ) ;
744- const shouldCheckActiveTranscriptBytes = typeof maxActiveTranscriptBytes === "number" ;
745- const transcriptSizeSnapshot = shouldCheckActiveTranscriptBytes
746- ? await readSessionLogSnapshot ( {
747- sessionId : entry . sessionId ,
748- sessionEntry :
749- entry . sessionFile || ! params . followupRun . run . sessionFile
750- ? entry
751- : { ...entry , sessionFile : params . followupRun . run . sessionFile } ,
752- sessionKey : params . sessionKey ?? params . followupRun . run . sessionKey ,
753- opts : { storePath : params . storePath } ,
754- includeByteSize : true ,
755- includeUsage : false ,
756- } )
757- : undefined ;
758- const activeTranscriptBytes = transcriptSizeSnapshot ?. byteSize ;
759- const shouldCompactByTranscriptBytes =
760- typeof activeTranscriptBytes === "number" &&
761- typeof maxActiveTranscriptBytes === "number" &&
762- activeTranscriptBytes >= maxActiveTranscriptBytes ;
763747 const promptTokenEstimate = estimatePromptTokensForMemoryFlush (
764748 params . promptForEstimate ?? params . followupRun . prompt ,
765749 ) ;
750+ const maxActiveTranscriptBytes = resolveMaxActiveTranscriptBytes ( params . cfg ) ;
751+ const shouldCheckActiveTranscriptBytes = typeof maxActiveTranscriptBytes === "number" ;
766752 const transcriptUsageTokens =
767753 typeof freshPersistedTokens === "number"
768754 ? undefined
@@ -773,6 +759,26 @@ export async function runPreflightCompactionIfNeeded(params: {
773759 sessionFile : entry . sessionFile ?? params . followupRun . run . sessionFile ,
774760 storePath : params . storePath ,
775761 } ) ;
762+ const transcriptSizeSnapshot =
763+ shouldCheckActiveTranscriptBytes && transcriptUsageTokens ?. transcriptByteSize === undefined
764+ ? await readSessionLogSnapshot ( {
765+ sessionId : entry . sessionId ,
766+ sessionEntry :
767+ entry . sessionFile || ! params . followupRun . run . sessionFile
768+ ? entry
769+ : { ...entry , sessionFile : params . followupRun . run . sessionFile } ,
770+ sessionKey : params . sessionKey ?? params . followupRun . run . sessionKey ,
771+ opts : { storePath : params . storePath } ,
772+ includeByteSize : true ,
773+ includeUsage : false ,
774+ } )
775+ : undefined ;
776+ const activeTranscriptBytes =
777+ transcriptUsageTokens ?. transcriptByteSize ?? transcriptSizeSnapshot ?. byteSize ;
778+ const shouldCompactByTranscriptBytes =
779+ typeof activeTranscriptBytes === "number" &&
780+ typeof maxActiveTranscriptBytes === "number" &&
781+ activeTranscriptBytes >= maxActiveTranscriptBytes ;
776782 const stalePersistedPromptTokens = hasPersistedTotalTokens
777783 ? Math . floor ( persistedTotalTokens )
778784 : undefined ;
0 commit comments