diff --git a/src/loop/core.ts b/src/loop/core.ts index a8e873b..4f50098 100644 --- a/src/loop/core.ts +++ b/src/loop/core.ts @@ -28,6 +28,8 @@ export interface LoopCtx { core: CompressionCore; config: Config; messages: CoreMessage[]; + /** View handed to applyCompression (see RewriteCtx.compressMessages). */ + compressMessages?: CoreMessage[]; session: Session; log: (msg: string) => void; proxyUrl?: string; diff --git a/src/server.ts b/src/server.ts index b40842e..00065c1 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1649,7 +1649,7 @@ async function forward( const adapter = pickAdapter(prepared.protocol, parsedReq, textProtocol, prepared.responsesProjection, prepared.anthropicSystem); const loop = runCompressLoop( streamToRead, - { core, config, messages: prepared.processedMessages.length > 0 ? prepared.processedMessages : prepared.originalMessages, session: prepared.session, log: ctx.log, proxyUrl, protocol: prepared.protocol, textProtocol, debug: opts.debug, nudge: prepared.nudge }, + { core, config, messages: prepared.processedMessages.length > 0 ? prepared.processedMessages : prepared.originalMessages, compressMessages: prepared.originalMessages, session: prepared.session, log: ctx.log, proxyUrl, protocol: prepared.protocol, textProtocol, debug: opts.debug, nudge: prepared.nudge }, parsedReq, { url: upstreamUrl, headers: reqHeaders }, adapter, diff --git a/src/stream.ts b/src/stream.ts index 770722c..3b40aa8 100644 --- a/src/stream.ts +++ b/src/stream.ts @@ -8,6 +8,10 @@ export type RewriteCtx = { core: CompressionCore; config: Config; messages: CoreMessage[]; + /** View handed to applyCompression. Defaults to `messages`; hosts whose + * `messages` view has pruned/hidden content (so block anchors can't + * resolve) pass the unpruned log here (billion-context-pi#195). */ + compressMessages?: CoreMessage[]; session: Session; log: (msg: string) => void; debug?: boolean; @@ -227,7 +231,7 @@ export function applyRanges(ranges: ReturnType, ctx: try { const res = ctx.core.applyCompression({ ranges, - messages: ctx.messages, + messages: ctx.compressMessages ?? ctx.messages, state: ctx.session.state, config: ctx.config, });