From 8b34a79f022f8c7df2521cfad8d59358dd1f464a Mon Sep 17 00:00:00 2001 From: ai-ag2026 Date: Tue, 5 May 2026 22:32:19 +0200 Subject: [PATCH 1/6] fix: preserve imported session lineage visibility --- api/models.py | 9 +- api/routes.py | 23 +++- tests/test_import_cli_session_lineage.py | 34 ++++++ .../test_session_import_cli_fallback_model.py | 112 ++++++++++++++++++ 4 files changed, 173 insertions(+), 5 deletions(-) create mode 100644 tests/test_import_cli_session_lineage.py diff --git a/api/models.py b/api/models.py index 85e8bd82..7d2cccdc 100644 --- a/api/models.py +++ b/api/models.py @@ -1229,9 +1229,13 @@ def import_cli_session( profile=None, created_at=None, updated_at=None, + parent_session_id=None, ): - """Create a new WebUI session populated with CLI messages. - Returns the Session object. + """Create a new WebUI session populated with CLI/agent messages. + + Preserve parent_session_id from state.db so imported continuation segments + keep their lineage in the WebUI store and sidebar instead of reappearing as + detached orphan chats. """ s = Session( session_id=session_id, @@ -1242,6 +1246,7 @@ def import_cli_session( profile=profile, created_at=created_at, updated_at=updated_at, + parent_session_id=parent_session_id, ) s.save(touch_updated_at=False) return s diff --git a/api/routes.py b/api/routes.py index e2139a0c..9a642028 100644 --- a/api/routes.py +++ b/api/routes.py @@ -1270,9 +1270,15 @@ def _merge_cli_sidebar_metadata(ui_session: dict, cli_meta: dict) -> dict: if cli_meta.get("last_message_at") is not None: merged["last_message_at"] = cli_meta["last_message_at"] if cli_meta.get("message_count") is not None: - merged["message_count"] = cli_meta["message_count"] + merged["message_count"] = max( + _numeric_count(merged.get("message_count")), + _numeric_count(cli_meta.get("message_count")), + ) elif cli_meta.get("actual_message_count") is not None: - merged["message_count"] = cli_meta["actual_message_count"] + merged["message_count"] = max( + _numeric_count(merged.get("message_count")), + _numeric_count(cli_meta.get("actual_message_count")), + ) if cli_meta.get("title"): current_title = merged.get("title") @@ -2622,7 +2628,13 @@ def handle_get(handler, parsed) -> bool: _t3 = _time.monotonic() if load_messages: if is_messaging_session and cli_messages: - _all_msgs = cli_messages + sidecar_messages = getattr(s, "messages", []) or [] + # Recovery/aggregate sidecars can intentionally contain a + # longer visible conversation than the single state.db + # segment for this messaging session id. Prefer the longer + # sidecar so repaired WebUI history is not hidden behind the + # canonical per-segment transcript. + _all_msgs = sidecar_messages if len(sidecar_messages) > len(cli_messages) else cli_messages else: _all_msgs = s.messages else: @@ -7661,6 +7673,7 @@ def _handle_session_import_cli(handler, body): "raw_source": existing.raw_source or cli_meta.get("raw_source") or cli_meta.get("source_tag"), "session_source": existing.session_source or cli_meta.get("session_source"), "source_label": existing.source_label or cli_meta.get("source_label"), + "parent_session_id": existing.parent_session_id or cli_meta.get("parent_session_id"), } for attr, value in updates.items(): if getattr(existing, attr, None) != value: @@ -7702,6 +7715,7 @@ def _handle_session_import_cli(handler, body): cli_thread_id = None cli_session_key = None cli_platform = None + cli_parent_session_id = None cli_read_only = False for cs in get_cli_sessions(): if cs["session_id"] == sid: @@ -7720,6 +7734,7 @@ def _handle_session_import_cli(handler, body): cli_thread_id = cs.get("thread_id") cli_session_key = cs.get("session_key") cli_platform = cs.get("platform") + cli_parent_session_id = cs.get("parent_session_id") cli_read_only = bool(cs.get("read_only")) break @@ -7750,6 +7765,7 @@ def _handle_session_import_cli(handler, body): "raw_source": cli_raw_source or cli_source_tag, "session_source": cli_session_source, "source_label": cli_source_label, + "parent_session_id": cli_parent_session_id, "read_only": True, "messages": msgs, "tool_calls": [], @@ -7764,6 +7780,7 @@ def _handle_session_import_cli(handler, body): profile=profile, created_at=created_at, updated_at=updated_at, + parent_session_id=cli_parent_session_id, ) if cron_project_id: s.project_id = cron_project_id diff --git a/tests/test_import_cli_session_lineage.py b/tests/test_import_cli_session_lineage.py new file mode 100644 index 00000000..e9165edc --- /dev/null +++ b/tests/test_import_cli_session_lineage.py @@ -0,0 +1,34 @@ +import json + + +def test_import_cli_session_preserves_parent_session_id(): + from api.models import import_cli_session, SESSION_DIR, Session + + parent_id = 'parent_lineage_001' + child_id = 'child_lineage_001' + + # Ensure clean fixture state for direct model-level import. + for sid in (parent_id, child_id): + try: + (SESSION_DIR / f'{sid}.json').unlink(missing_ok=True) + except Exception: + pass + + session = import_cli_session( + child_id, + 'Child Session', + [{'role': 'user', 'content': 'hello', 'timestamp': 1.0}], + model='test-model', + parent_session_id=parent_id, + created_at=1.0, + updated_at=2.0, + ) + + assert session.parent_session_id == parent_id + + payload = json.loads((SESSION_DIR / f'{child_id}.json').read_text(encoding='utf-8')) + assert payload['parent_session_id'] == parent_id + + loaded = Session.load(child_id) + assert loaded.parent_session_id == parent_id + assert loaded.compact()['parent_session_id'] == parent_id diff --git a/tests/test_session_import_cli_fallback_model.py b/tests/test_session_import_cli_fallback_model.py index c8399033..f47adeb9 100644 --- a/tests/test_session_import_cli_fallback_model.py +++ b/tests/test_session_import_cli_fallback_model.py @@ -90,6 +90,7 @@ def test_session_import_cli_refresh_matches_messages_despite_timestamp_type_diff self.raw_source = "weixin" self.session_source = "messaging" self.source_label = "WeChat" + self.parent_session_id = None def compact(self): return {"session_id": session_id, "title": "Imported"} @@ -141,6 +142,7 @@ def test_session_import_cli_refresh_rejects_prefix_if_non_timing_content_diverge self.session_source = "messaging" self.source_label = "Telegram" self.is_cli_session = True + self.parent_session_id = None def compact(self): return {"session_id": session_id, "title": "Imported"} @@ -169,3 +171,113 @@ def test_session_import_cli_refresh_rejects_prefix_if_non_timing_content_diverge assert response["session"]["messages"] == existing.messages assert existing.messages[0]["content"] == "old-prefix" assert save_calls == [] + + +def test_session_import_cli_preserves_parent_metadata_on_existing_import(monkeypatch): + """Refreshing an already-imported CLI session must persist lineage metadata.""" + import api.routes as routes + + session_id = "existing_parent_lineage_001" + parent_id = "root_parent_lineage_001" + + class FakeSession: + def __init__(self): + self.messages = [{"role": "user", "content": "hello", "timestamp": 1.0}] + self.source_tag = "telegram" + self.raw_source = "telegram" + self.session_source = "messaging" + self.source_label = "Telegram" + self.parent_session_id = None + self.is_cli_session = True + + def compact(self): + return {"session_id": session_id, "title": "Imported", "parent_session_id": self.parent_session_id} + + def save(self, touch_updated_at=False): + save_calls.append(touch_updated_at) + + save_calls = [] + existing = FakeSession() + + monkeypatch.setattr(routes.Session, "load", classmethod(lambda _cls, sid: existing if sid == session_id else None)) + monkeypatch.setattr(routes, "require", lambda body, *keys: None) + monkeypatch.setattr(routes, "j", lambda _handler, payload, status=200, extra_headers=None: payload) + monkeypatch.setattr(routes, "get_cli_session_messages", lambda sid: existing.messages if sid == session_id else []) + monkeypatch.setattr( + routes, + "get_cli_sessions", + lambda: [{ + "session_id": session_id, + "source_tag": "telegram", + "raw_source": "telegram", + "session_source": "messaging", + "source_label": "Telegram", + "parent_session_id": parent_id, + }], + ) + + response = routes._handle_session_import_cli(object(), {"session_id": session_id}) + + assert response["imported"] is False + assert existing.parent_session_id == parent_id + assert response["session"]["parent_session_id"] == parent_id + assert save_calls == [False] + + +def test_read_only_import_payload_includes_parent_session_id(monkeypatch): + """Read-only CLI/session imports should also expose lineage in the payload.""" + import api.routes as routes + + session_id = "readonly_parent_lineage_001" + parent_id = "readonly_root_lineage_001" + messages = [{"role": "user", "content": "hello", "timestamp": 1.0}] + + monkeypatch.setattr(routes.Session, "load", classmethod(lambda _cls, sid: None)) + monkeypatch.setattr(routes, "require", lambda body, *keys: None) + monkeypatch.setattr(routes, "bad", lambda _handler, msg, status=400: {"ok": False, "error": msg, "status": status}) + monkeypatch.setattr(routes, "j", lambda _handler, payload, status=200, extra_headers=None: payload) + monkeypatch.setattr(routes, "get_cli_session_messages", lambda sid: messages if sid == session_id else []) + monkeypatch.setattr( + routes, + "get_cli_sessions", + lambda: [{ + "session_id": session_id, + "title": "Read-only child", + "model": "test-model", + "created_at": 1.0, + "updated_at": 2.0, + "source_tag": "discord", + "raw_source": "discord", + "session_source": "messaging", + "source_label": "Discord", + "parent_session_id": parent_id, + "read_only": True, + }], + ) + + response = routes._handle_session_import_cli(object(), {"session_id": session_id}) + + assert response["imported"] is False + assert response["session"]["parent_session_id"] == parent_id + assert response["session"]["messages"] == messages + + +def test_merge_cli_sidebar_metadata_keeps_larger_sidecar_message_count(): + """Sidebar metadata merge should not shrink repaired aggregate sidecar counts.""" + import api.routes as routes + + merged = routes._merge_cli_sidebar_metadata( + {"session_id": "sid", "message_count": 535, "title": "Recovered"}, + {"session_id": "sid", "message_count": 407, "source_tag": "discord"}, + ) + + assert merged["message_count"] == 535 + + +def test_messaging_session_loader_prefers_longer_sidecar_transcript(): + """Pin the /api/session invariant that repaired sidecars can be longer than state.db segments.""" + handler = _extract_handler("handle_get") + old = "if is_messaging_session and cli_messages:\n _all_msgs = cli_messages" + assert old not in handler + assert "sidecar_messages = getattr(s, \"messages\", []) or []" in handler + assert "len(sidecar_messages) > len(cli_messages)" in handler From dd2bc38473772811053a138f1cd69d3de26c5c75 Mon Sep 17 00:00:00 2001 From: Michael Lam Date: Tue, 5 May 2026 13:42:45 -0700 Subject: [PATCH 2/6] fix: preserve activity count across chat focus changes --- docs/pr-media/1715/activity-focus-reload.png | Bin 0 -> 49304 bytes static/sessions.js | 5 +++- tests/test_regressions.py | 25 ++++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 docs/pr-media/1715/activity-focus-reload.png diff --git a/docs/pr-media/1715/activity-focus-reload.png b/docs/pr-media/1715/activity-focus-reload.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca8f7366288ad80603209a2d0adfa2f4e8f266c GIT binary patch literal 49304 zcmb5WcUV)ww>FAhK|n-6x`^~9(m_B$dhgOjq<2D*8Wk~0m0m)J&^v?xfkZ$+daogb zj+793huq-robQi&p8K5p?SJ;p>}hLe_L}v+YfXM=Ybucv(-9L95s|7WztJTkxdVkgE}DP8vTokVn{vKR^l3!f;5HG_D$DYRvT^fN z3t9=|r_wQTTB<}u?sQj`ijx;*@Rn;EZR_12GP_Sm5%!gDgsaFd#10<>T+}q}Lw;D^ zzd!Q5Ly=O#IkDaSs^{`0(JO%1 zqM+rP(rCIJCO{0L7UStK+h5QD%78odmN-E&_JY$MzolaAgZxlhq>QU8ph@|?Oe3BFJQ2)H3tR)Tn)9cy%T+GXw`d5uHLWr0{EP@t&qkY-8J|MR8WI2P zHvem{0C~FKMOnJ5i34mA7X#@DW05S^h@0V?_TR>IOFW{yq&p73muHY}1_xn&LH0bI z(gXO;5P^&90_{{i@n?(sYqDWH>B9vZzq{fgGEj{brWQasW@Yxy*AGr+>l&BGfw_r!e447kMb zNnu8i)6D+;=92>>Q8r%p!wD!E+gjLtA^2E4XdXc}WSpOAhvwo{HT_k)3wM#a`oZ=FFv!8Y$d z9&{fJQDzno)tol0oob{Yy!KwMwqegVI}6|-hyKcMU=%##6P8x;vfW4&>m?J@w2uQe zl|-&KWVRQ6|6v(;h|PPlhR9N>U{{VL>9q82(>qJMb&d}{Y`^b-*#b-Rb}#NndX)Fq zY#g6RmG~e=Gq$IOX&28VoGu$nEPWG;D3fGGoaV)bt=YFxEoJWUcVmh86cn zi-|*POCW_F6eDFWD{gmI-kkr^sZ+@^GdXftT_1@LoY2zmgNGh`+;9I;(ivP=q(Ax@y7`wdx!4?DJ8ZTy zU@^qEv*>GgY^K2ZMVXXc(Age~+T`3u0a^5}u5oo;f2Iij-RCjBQvBZ^ZMk1Af(%sl zFvsuo4%hgK4JV{MR}0;pR8(xn`!TEHNxF4^MJ~5~V4+l@Y^`n8D<$OPD~>4AG)X`0 zdPDs@*Hj^=v25LWerN=aifMDhO=7!?r^a_|?cQ~wRKb6$&IfKjn$S^zncULd8LP(+ zob-gZ;+VXeg<5Z2B*#-qe>_*_;#j@(8<-SZDNvI($Y|9qt~#O<7e}%E~lRh9(YRB-zjWrQGZ(6VPAYFzM*br zYN5!p%gHW~`u$cZBIKLmtpw)`{Q8KLCnVx!U88S5Il0W`z_LRAr!8jQmu(&UXPkr% z;wrFb#tvhYWZ>hORNu4E&W=z&rs(dc*nt4{eszYO^Wh}Ph99+B1uri@I}D%u#pTGe zN_{I9#lpUy8a~9I1q!~eo@g|df=5N~9aO&2V9GJuYuTVzlPeGSaDH4LArL3`jeI8( zzl5coQbkf1KP-BKrS)(O|1%}Afu)+VF+BQX%G6Nj>%I^ho2;|Qs=L}G#v!tPSIUyUj||A>_+Q7_wBm~XX=-RqyM*cnZCu@+8ER?5imGKVGq{Y7aRvb4s7g{=o##MTE{S~L`m zJ}LXnhn?&Ax*Pi`=V4Jbuf8kk3lkXhDRMN2n};Hljfy&Z>?~C2_8BO`f2m7nSl-_+ z@n!($B1s%~AV@3YFZ7^-$}}#mp?;y3xq|;pcnas&aXm0y9u=+eNkXooIS`I77olGm5!YfM(suecNt=g~ zw{40Hr+l@6c9(ibz_q>oq$sgQ@5jP2o;&BYPjl}ANFrlYl>pic4MwOfIBSk$$Q4|xDenP(`C#{<);KR%kb(! z$9U-U>$O1WplfNNE_xO^KlY~4uLqjTXRG!GD#X$umX|HeG)(oEEr%Y~ot706e**_6 znJ(HFc1V2V8_VZM8WcEaxX~w_r6O&!Ob@+!B37FcR~_G@Zn6gk?d|t9tol)}%)AVF zR26a?b2=VT&)Bny_wVjlO1H62gftjHoZ^a}8&LxGzH25O^VAG<8vcye6>P$M68)hT zMTa(hbK59S89%$FYTYsv1dK0yio?;BQYrBy6x7ClJPA7wQZcsCb&=?>w|C(ckmC4GM)>_tVg>C@(!iTp8a zY9P_88U_8^pH})^YbFlBHWj%1ipIZ3J4G0S2`6tOxu_t5`2yYH|3k#u|gqWF{tHo%K4>?|Xol44=fPWw7l_F&S*sDied(L7uYM zYRs1$tW$JiTHQAc_4&?`T>ic>`K6`G7-fU2Za@)>cfsp4yz$%LUry9IWIW8@E_ug2 zl?r17mX@JAk^xD*$H9S{LGo~OeCD4#12B2~SLo40Qh8eO;~yLa9pWH<;QC_l9lPd> z{^^-LYL_wx`qk3AX@N(wAbT`4@wXpyV1WK_^`Nct+3B>r(biJZ9$#v4D&3XS{G2GE7qs=l;Z}GquRbu=`^Lsq=)2A@;u_&#kbYtR^fs!Lq_2yJD2+nrs#x3< zOBxMNPdk+yqx8qoT94Nf1WmI$8p{|My+zgYaep;BI)|NC*we{%ssnr^E%ov#WLnLS9j zc6E1utxtf{L`1)C5eDw+qPY@~aQ%-Ap}RA_JWFI^k@EZi&PQ^=6jjr%G@{^2i4W{? zy|zjB{*|ID0Vvq`iowCtEG5zJc-o!Ul-L;P658w&4d{w&|8W3xMM6q8MaiWTQ&gls z?I3g5a*x6UQTfoc-G7`x7KJ2$&ai|r>|5y>_oIH$gMal3%h=uhtr{xNeI9n3UHYp& zocce>FYLZ|CzZ~Y4E>ilk^Qvg28a*s7NHUUVH)hc`X41wEezKe-WmQzn&H`2$nPR| z9qI_Utor(u3P5w|k*9xi|Lh3m>tz55KI+}riz{oDI&7I>qJNl-Tp3G}oi_Ii9GV1M z03F_bf3OUQ`YbbQqkDRVpu;+#I%l9io(%lk>O+!yC63U)a=l)jpwS3%

ARVw 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

EiZF9e4Ee+TU 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