mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
47f78a32eb
* fix(ai): preserve Responses server compaction state Persist opaque Responses compaction items as fenced provider replay state so long stateless sessions can resume authoritative compressed history without exposing it in display or diagnostics. Carry state through worker transcripts and prune replay prefixes without splitting tool pairs. Release note: Preserve long OpenAI Responses sessions across server-side compaction and worker restarts. Related: #95788 * test(ai): align long-context fixtures with CI contracts Make tool-result fixtures type-complete, use the canonical model selector helper, remove unused test-helper exports, and route the paid long-context live probe through the dedicated Gateway profile shard. * test(ai): type mocked Responses terminal events Give the mock SSE event collection an explicit open event shape so terminal response events coexist with output-item events under the root test typecheck. * fix(ai): suppress rejected compaction replay Persist a route-fenced suppression tombstone when encrypted-content recovery rejects a compaction item, so later turns do not retry the same opaque state. Preserve the tombstone through transcript redaction and cover successful fallback followed by the next turn. * fix(ai): keep compaction suppression transport-private Keep the suppression contract local to its sole Responses transport owner and make the regression fixture satisfy root type and lint checks without widening the Plugin SDK surface. * refactor(ai): remove compaction suppression re-export * fix(ai): scope compaction suppression to replay route Keep foreign-route rejection tombstones from hiding the newest compatible Responses compaction while preserving same-route suppression. * fix(ai): harden Responses replay recovery Stage encrypted replay recovery so compaction is only suppressed after an attributable rejection. Preserve terminal ordering and keep provider replay within worker frame budgets without truncating opaque state. * refactor(ai): centralize Responses output indexes Keep normalized output identity tracking in the stream-slot owner, move response failure state to its diagnostic owner, and remove the obsolete replay clone export so exact-head static gates remain shrink-only. * fix(ai): retain idless terminal tool identity Use the canonical empty identity only when a provider supplies neither call nor item id, preventing terminal recovery from duplicating a done-only tool call while preserving stronger identities when available. * fix(sessions): hide provider replay from public events * fix(ai): stage encrypted replay recovery * fix(ai): keep replay attempt kind internal * fix(ai): route Azure through replay recovery Use the shared encrypted-content retry owner for Azure Responses so compaction suppression and prompt-observer variants stay coherent across transports. * fix(ai): harden replay persistence boundaries Fence Azure replay by the resolved request endpoint, drop invalid replay during transcript sanitization, and surface worker-launch replay omissions through the existing redacted diagnostic path.