Live Stream: skip stale compression recovery fallback
Treat a cleared session-level compression_recovery payload as authoritative so old message metadata cannot intercept a later generic continuation after a successful new turn. Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
82a5e92524
commit
a83ffae4ac
2 files changed
+17
No files matched your search
@@ -440,6 +440,9 @@ function _activeCompressionRecoveryPayload(){
|
||||
if(!S||!S.session) return null;
|
||||
const recovery=S.session.compression_recovery;
|
||||
if(recovery&&typeof recovery==='object'&&String(recovery.terminal_state||'')==='compression_exhausted') return recovery;
|
||||
// A cleared session-level recovery payload is authoritative. Only scan
|
||||
// message metadata for older sessions that never exposed this field.
|
||||
if(Object.prototype.hasOwnProperty.call(S.session,'compression_recovery')) return null;
|
||||
const messages=Array.isArray(S.messages)?S.messages:[];
|
||||
for(let i=messages.length-1;i>=0;i--){
|
||||
const msg=messages[i];
|
||||
|
||||
@@ -296,3 +296,17 @@ def test_compression_recovery_ui_wires_card_action_and_send_intercept():
|
||||
assert "function shouldInterceptCompressionRecoveryContinuation" in ui
|
||||
assert "shouldInterceptCompressionRecoveryContinuation(text,S.pendingFiles)" in messages
|
||||
assert "_compressionRecovery:recovery||undefined" in messages
|
||||
|
||||
|
||||
def test_compression_recovery_ui_skips_message_fallback_after_session_clear():
|
||||
ui = (ROOT / "static/ui.js").read_text(encoding="utf-8")
|
||||
start = ui.index("function _activeCompressionRecoveryPayload(){")
|
||||
end = ui.index("function isGenericCompressionContinuationIntent", start)
|
||||
body = ui[start:end]
|
||||
|
||||
session_guard = "Object.prototype.hasOwnProperty.call(S.session,'compression_recovery')"
|
||||
message_scan = "const messages=Array.isArray(S.messages)?S.messages:[]"
|
||||
|
||||
assert session_guard in body
|
||||
assert message_scan in body
|
||||
assert body.index(session_guard) < body.index(message_scan)
|
||||
Reference in new issue
Block a user