fix: preserve compression recovery source metadata
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
81d5e897e9
commit
6a35d9c674
2 files changed
+32
-2
No files matched your search
@@ -453,6 +453,9 @@ def _state_db_row_to_sidecar(row: dict) -> dict:
|
||||
messages = row.get('messages') if isinstance(row.get('messages'), list) else []
|
||||
last_ts = messages[-1].get('timestamp') if messages and isinstance(messages[-1], dict) else started_at
|
||||
workspace_value = row.get('workspace') or ''
|
||||
compression_recovery = row.get('compression_recovery')
|
||||
if not isinstance(compression_recovery, dict):
|
||||
compression_recovery = {}
|
||||
return {
|
||||
'session_id': row.get('id'),
|
||||
'title': row.get('title') or 'Recovered WebUI Session',
|
||||
@@ -484,8 +487,8 @@ def _state_db_row_to_sidecar(row: dict) -> dict:
|
||||
'context_length': None,
|
||||
'threshold_tokens': None,
|
||||
'last_prompt_tokens': None,
|
||||
'compression_recovery': {},
|
||||
'recommended_recovery_action': None,
|
||||
'compression_recovery': compression_recovery,
|
||||
'recommended_recovery_action': row.get('recommended_recovery_action') or None,
|
||||
'compression_recovery_source_session_id': row.get('compression_recovery_source_session_id') or None,
|
||||
'compression_recovery_action': row.get('compression_recovery_action') or None,
|
||||
'gateway_routing': None,
|
||||
|
||||
@@ -390,6 +390,33 @@ def test_recovery_child_markers_round_trip_through_state_db_sidecar_rebuild(tmp_
|
||||
assert sidecar["compression_recovery_action"] == "start_focused_continuation"
|
||||
|
||||
|
||||
def test_recovery_source_metadata_round_trips_through_state_db_sidecar_rebuild(tmp_path):
|
||||
recovery = {
|
||||
"type": "compression_recovery_required",
|
||||
"terminal_state": "compression_exhausted",
|
||||
"recommended_action": "start_focused_continuation",
|
||||
"source_session_id": "recoverysrc4",
|
||||
}
|
||||
db = WebUIJsonSessionDB(tmp_path)
|
||||
db.write_session(
|
||||
{
|
||||
"session_id": "recoverysrc4",
|
||||
"title": "Exhausted source",
|
||||
"model": "gpt-4o",
|
||||
"started_at": 1700000000,
|
||||
"messages": [{"role": "user", "content": "long task"}],
|
||||
"compression_recovery": recovery,
|
||||
"recommended_recovery_action": "start_focused_continuation",
|
||||
}
|
||||
)
|
||||
row = db.list_sessions()[0]
|
||||
|
||||
sidecar = _state_db_row_to_sidecar({"id": "recoverysrc4", **row, "messages": []})
|
||||
|
||||
assert sidecar["compression_recovery"] == recovery
|
||||
assert sidecar["recommended_recovery_action"] == "start_focused_continuation"
|
||||
|
||||
|
||||
def test_compression_recovery_ui_wires_card_action_and_send_intercept():
|
||||
ui = (ROOT / "static/ui.js").read_text(encoding="utf-8")
|
||||
messages = (ROOT / "static/messages.js").read_text(encoding="utf-8")
|
||||
|
||||
Reference in new issue
Block a user