fix: preserve compression recovery child markers in sidecar rebuild
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
8717dcc03b
commit
7425dc3549
3 changed files with 31 additions and 0 deletions
|
|
@ -486,6 +486,8 @@ def _state_db_row_to_sidecar(row: dict) -> dict:
|
|||
'last_prompt_tokens': None,
|
||||
'compression_recovery': {},
|
||||
'recommended_recovery_action': 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,
|
||||
'gateway_routing_history': [],
|
||||
'llm_title_generated': False,
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@ _METADATA_FIELDS = frozenset(
|
|||
"last_prompt_tokens",
|
||||
"compression_recovery",
|
||||
"recommended_recovery_action",
|
||||
"compression_recovery_source_session_id",
|
||||
"compression_recovery_action",
|
||||
"truncation_watermark",
|
||||
"truncation_boundary",
|
||||
"gateway_routing",
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ from api.compression_recovery import (
|
|||
stamp_compression_exhausted_recovery,
|
||||
)
|
||||
from api.models import Session
|
||||
from api.session_recovery import _state_db_row_to_sidecar
|
||||
from api.webui_session_db import WebUIJsonSessionDB
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
|
@ -285,6 +287,31 @@ def test_recovery_metadata_is_persisted_and_exposed_in_compact_session():
|
|||
assert compact["compression_recovery"]["recommended_action"] == "start_focused_continuation"
|
||||
|
||||
|
||||
def test_recovery_child_markers_round_trip_through_state_db_sidecar_rebuild(tmp_path):
|
||||
db = WebUIJsonSessionDB(tmp_path)
|
||||
db.write_session(
|
||||
{
|
||||
"session_id": "recoverychild1",
|
||||
"title": "Focused continuation",
|
||||
"model": "gpt-4o",
|
||||
"started_at": 1700000000,
|
||||
"messages": [],
|
||||
"parent_session_id": "recoverysrc3",
|
||||
"compression_recovery_source_session_id": "recoverysrc3",
|
||||
"compression_recovery_action": "start_focused_continuation",
|
||||
}
|
||||
)
|
||||
row = db.list_sessions()[0]
|
||||
|
||||
assert row["compression_recovery_source_session_id"] == "recoverysrc3"
|
||||
assert row["compression_recovery_action"] == "start_focused_continuation"
|
||||
|
||||
sidecar = _state_db_row_to_sidecar({"id": "recoverychild1", **row, "messages": []})
|
||||
|
||||
assert sidecar["compression_recovery_source_session_id"] == "recoverysrc3"
|
||||
assert sidecar["compression_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")
|
||||
|
|
|
|||
Loading…
Reference in a new issue