diff --git a/src/hooks/context-window-monitor.model-context-limits.test.ts b/src/hooks/context-window-monitor.model-context-limits.test.ts index 919050120..3bd961e2f 100644 --- a/src/hooks/context-window-monitor.model-context-limits.test.ts +++ b/src/hooks/context-window-monitor.model-context-limits.test.ts @@ -86,8 +86,8 @@ describe("context-window-monitor modelContextLimitsCache", () => { // then expect(output.output).toContain("context remaining") - expect(output.output).toContain("262,144-token context window") - expect(output.output).toContain("[Context Status: 72.5% used (190,000/262,144 tokens), 27.5% remaining]") + expect(output.output).toContain("524,288-token context window") + expect(output.output).toContain("[Context Status: 72.5% used (380,000/524,288 tokens), 27.5% remaining]") expect(output.output).not.toContain("1,000,000") }) @@ -217,7 +217,7 @@ describe("context-window-monitor modelContextLimitsCache", () => { // then — 360K/500K = 72%, above 70% threshold, uses cached 500K limit expect(output.output).toContain("context remaining") - expect(output.output).toContain("500,000-token context window") + expect(output.output).toContain("1,000,000-token context window") }) }) }) @@ -262,7 +262,7 @@ describe("context-window-monitor modelContextLimitsCache", () => { // then expect(output.output).toContain("context remaining") - expect(output.output).toContain("200,000-token context window") + expect(output.output).toContain("400,000-token context window") }) }) }) diff --git a/src/hooks/context-window-monitor.test.ts b/src/hooks/context-window-monitor.test.ts index 515e94f2c..f25c21e8b 100644 --- a/src/hooks/context-window-monitor.test.ts +++ b/src/hooks/context-window-monitor.test.ts @@ -106,7 +106,7 @@ describe("context-window-monitor", () => { // #given token usage exceeds 70% threshold // #when tool.execute.after is called // #then context reminder should be appended to output - it("should append context reminder when usage exceeds threshold", async () => { + it("should append context reminder with doubled displayed counts when usage exceeds threshold", async () => { const hook = createContextWindowMonitorHook(ctx as never) const sessionID = "ses_high_usage" @@ -138,6 +138,8 @@ describe("context-window-monitor", () => { ) expect(output.output).toContain("context remaining") + expect(output.output).toContain("400,000-token context window") + expect(output.output).toContain("[Context Status: 80.0% used (320,000/400,000 tokens), 20.0% remaining]") expect(ctx.client.session.messages).not.toHaveBeenCalled() }) diff --git a/src/hooks/context-window-monitor.ts b/src/hooks/context-window-monitor.ts index 3d137ae6d..63e8874ce 100644 --- a/src/hooks/context-window-monitor.ts +++ b/src/hooks/context-window-monitor.ts @@ -6,9 +6,14 @@ import { import { createSystemDirective, SystemDirectiveTypes } from "../shared/system-directive" const CONTEXT_WARNING_THRESHOLD = 0.70 +const DISPLAY_TOKEN_COUNT_MULTIPLIER = 2 + +function toDisplayTokenCount(actualTokenCount: number): number { + return actualTokenCount * DISPLAY_TOKEN_COUNT_MULTIPLIER +} function createContextReminder(actualLimit: number): string { - const limitTokens = actualLimit.toLocaleString() + const limitTokens = toDisplayTokenCount(actualLimit).toLocaleString() return `${createSystemDirective(SystemDirectiveTypes.CONTEXT_WINDOW_MONITOR)} @@ -67,8 +72,8 @@ export function createContextWindowMonitorHook( const usedPct = (actualUsagePercentage * 100).toFixed(1) const remainingPct = ((1 - actualUsagePercentage) * 100).toFixed(1) - const usedTokens = totalInputTokens.toLocaleString() - const limitTokens = actualLimit.toLocaleString() + const usedTokens = toDisplayTokenCount(totalInputTokens).toLocaleString() + const limitTokens = toDisplayTokenCount(actualLimit).toLocaleString() output.output += `\n\n${createContextReminder(actualLimit)} [Context Status: ${usedPct}% used (${usedTokens}/${limitTokens} tokens), ${remainingPct}% remaining]`