* fix(sessions): include target session in session events * chore(release): stamp v0.51.430 (Release OQ) for #4221 --------- Co-authored-by: Dennis Soong <dso2ng@gmail.com> Co-authored-by: nesquena-hermes <agent@nesquena-hermes>
32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
"""Regression coverage: WebUI session rename writes through to state.db (#3225).
|
|
|
|
The /api/session/rename handler must call _sync_session_title_to_insights(s),
|
|
just like the sibling /api/session/title/regenerate handler does, so a rename
|
|
propagates the new title to the agent's state.db. Without it the TUI and CLI
|
|
keep showing the stale name. Static source-text assertion that mirrors
|
|
test_regenerate_endpoint_syncs_title_to_state_db_when_enabled.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
ROUTES_PY = (ROOT / "api" / "routes.py").read_text(encoding="utf-8")
|
|
|
|
|
|
def test_rename_endpoint_syncs_title_to_state_db():
|
|
start_idx = ROUTES_PY.index('"/api/session/rename"')
|
|
end_idx = ROUTES_PY.index('"/api/session/title/regenerate"', start_idx)
|
|
block = ROUTES_PY[start_idx:end_idx]
|
|
assert "_sync_session_title_to_insights(s)" in block, (
|
|
"rename handler must call _sync_session_title_to_insights(s) so the "
|
|
"new title reaches state.db, matching the regenerate handler"
|
|
)
|
|
assert 'publish_session_list_changed(\n "session_rename",' in block
|
|
# Sync must run BEFORE the list-changed publish, matching the regenerate
|
|
# handler, so SSE subscribers refresh after state.db holds the new title.
|
|
sync_idx = block.index("_sync_session_title_to_insights(s)")
|
|
publish_idx = block.index('publish_session_list_changed(\n "session_rename",')
|
|
assert sync_idx < publish_idx, (
|
|
"rename must sync to state.db before publishing the list-changed event"
|
|
)
|