mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 13:21:25 +00:00
fix(compaction): pass model through runtime for safeguard summaries (#17864)
* fix(compaction): pass model through runtime to fix ctx.model undefined Fixes #3479 Root cause: extensionRunner.initialize() is never called in compact.ts workflow, leaving ctx.model undefined. Compaction safeguard checks ctx.model and returns fallback summary immediately without attempting LLM summarization. Changes: 1. Pass model through compaction safeguard runtime registry (same pattern as maxHistoryShare) 2. Fall back to runtime.model when ctx.model is undefined 3. Add once-per-session warning when both models are missing (prevents log spam) 4. Add regression test for runtime.model fallback This follows the established runtime registry pattern rather than attempting to call extensionRunner.initialize() (which is SDK-internal and not meant for direct access). Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * test: add comprehensive tests for compaction-safeguard model fallback Add integration tests to verify the model fallback behavior: - Test runtime.model fallback when ctx.model is undefined (compact.ts workflow) - Test fallback summary when both ctx.model and runtime.model are undefined - Test contextWindowTokens runtime storage/retrieval - Test combined runtime values (maxHistoryShare + contextWindowTokens + model) These tests verify the fix for issue #3479 where compaction fails due to ctx.model being undefined in the compact.ts workflow. The runtime registry pattern allows model to be passed when extensionRunner.initialize() is not called, ensuring summarization works in all code paths. Related: PR #17864 * fix(test): adapt compaction-safeguard tests to upstream type changes - Add baseUrl to Model mock objects (now required by Model<Api>) - Add explicit Model<Api> annotation to prevent provider string widening - Cast modelRegistry mock through unknown (ModelRegistry expanded) - Use non-null assertion for compactionHandler (TypeScript strict) - Type compaction result explicitly Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Compaction: add changelog credit for model fallback fix * Update CHANGELOG.md * Update CHANGELOG.md --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
This commit is contained in:
@@ -81,6 +81,7 @@ export function buildEmbeddedExtensionFactories(params: {
|
||||
setCompactionSafeguardRuntime(params.sessionManager, {
|
||||
maxHistoryShare: compactionCfg?.maxHistoryShare,
|
||||
contextWindowTokens: contextWindowInfo.tokens,
|
||||
model: params.model,
|
||||
});
|
||||
factories.push(compactionSafeguardExtension);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user