{"version":3,"file":"contextPruningSettings.cjs","sources":["../../../src/messages/contextPruningSettings.ts"],"sourcesContent":["/**\n * Default settings for position-based context pruning.\n *\n * These are merged with user-provided overrides so any subset can be customized.\n */\n\nexport interface ContextPruningSettings {\n  /** Whether position-based pruning is enabled. Default: false (opt-in). */\n  enabled: boolean;\n  /** Number of recent assistant turns to protect from pruning. Default: 3 */\n  keepLastAssistants: number;\n  /** Age ratio (0-1) at which soft-trim fires. Default: 0.3 */\n  softTrimRatio: number;\n  /** Age ratio (0-1) at which hard-clear fires. Default: 0.5 */\n  hardClearRatio: number;\n  /** Minimum tool result size (chars) before pruning applies. Default: 50000 */\n  minPrunableToolChars: number;\n  softTrim: {\n    /** Maximum total chars after soft-trim. Default: 4000 */\n    maxChars: number;\n    /** Head portion to keep. Default: 1500 */\n    headChars: number;\n    /** Tail portion to keep. Default: 1500 */\n    tailChars: number;\n  };\n  hardClear: {\n    /** Whether hard-clear is enabled. Default: true */\n    enabled: boolean;\n    /** Placeholder text for hard-cleared content. */\n    placeholder: string;\n  };\n}\n\nexport const DEFAULT_CONTEXT_PRUNING_SETTINGS: ContextPruningSettings = {\n  enabled: false,\n  keepLastAssistants: 3,\n  softTrimRatio: 0.3,\n  hardClearRatio: 0.5,\n  minPrunableToolChars: 50_000,\n  softTrim: {\n    maxChars: 4_000,\n    headChars: 1_500,\n    tailChars: 1_500,\n  },\n  hardClear: {\n    enabled: true,\n    placeholder: '[Old tool result content cleared]',\n  },\n};\n\n/**\n * Merges user-provided partial overrides with the defaults.\n */\nexport function resolveContextPruningSettings(\n  overrides?: Partial<{\n    enabled?: boolean;\n    keepLastAssistants?: number;\n    softTrimRatio?: number;\n    hardClearRatio?: number;\n    minPrunableToolChars?: number;\n    softTrim?: Partial<ContextPruningSettings['softTrim']>;\n    hardClear?: Partial<ContextPruningSettings['hardClear']>;\n  }>\n): ContextPruningSettings {\n  if (!overrides) {\n    return { ...DEFAULT_CONTEXT_PRUNING_SETTINGS };\n  }\n  return {\n    enabled: overrides.enabled ?? DEFAULT_CONTEXT_PRUNING_SETTINGS.enabled,\n    keepLastAssistants:\n      overrides.keepLastAssistants ??\n      DEFAULT_CONTEXT_PRUNING_SETTINGS.keepLastAssistants,\n    softTrimRatio:\n      overrides.softTrimRatio ?? DEFAULT_CONTEXT_PRUNING_SETTINGS.softTrimRatio,\n    hardClearRatio:\n      overrides.hardClearRatio ??\n      DEFAULT_CONTEXT_PRUNING_SETTINGS.hardClearRatio,\n    minPrunableToolChars:\n      overrides.minPrunableToolChars ??\n      DEFAULT_CONTEXT_PRUNING_SETTINGS.minPrunableToolChars,\n    softTrim: {\n      ...DEFAULT_CONTEXT_PRUNING_SETTINGS.softTrim,\n      ...overrides.softTrim,\n    },\n    hardClear: {\n      ...DEFAULT_CONTEXT_PRUNING_SETTINGS.hardClear,\n      ...overrides.hardClear,\n    },\n  };\n}\n"],"names":[],"mappings":";;AAAA;;;;AAIG;AA6BI,MAAM,gCAAgC,GAA2B;AACtE,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,kBAAkB,EAAE,CAAC;AACrB,IAAA,aAAa,EAAE,GAAG;AAClB,IAAA,cAAc,EAAE,GAAG;AACnB,IAAA,oBAAoB,EAAE,MAAM;AAC5B,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,WAAW,EAAE,mCAAmC;AACjD,KAAA;;AAGH;;AAEG;AACG,SAAU,6BAA6B,CAC3C,SAQE,EAAA;IAEF,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,EAAE,GAAG,gCAAgC,EAAE;IAChD;IACA,OAAO;AACL,QAAA,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,gCAAgC,CAAC,OAAO;QACtE,kBAAkB,EAChB,SAAS,CAAC,kBAAkB;AAC5B,YAAA,gCAAgC,CAAC,kBAAkB;AACrD,QAAA,aAAa,EACX,SAAS,CAAC,aAAa,IAAI,gCAAgC,CAAC,aAAa;QAC3E,cAAc,EACZ,SAAS,CAAC,cAAc;AACxB,YAAA,gCAAgC,CAAC,cAAc;QACjD,oBAAoB,EAClB,SAAS,CAAC,oBAAoB;AAC9B,YAAA,gCAAgC,CAAC,oBAAoB;AACvD,QAAA,QAAQ,EAAE;YACR,GAAG,gCAAgC,CAAC,QAAQ;YAC5C,GAAG,SAAS,CAAC,QAAQ;AACtB,SAAA;AACD,QAAA,SAAS,EAAE;YACT,GAAG,gCAAgC,CAAC,SAAS;YAC7C,GAAG,SAAS,CAAC,SAAS;AACvB,SAAA;KACF;AACH;;;;;"}