diff --git a/gateway/mirror.py b/gateway/mirror.py index c96230e6f2a..71a3d313d32 100644 --- a/gateway/mirror.py +++ b/gateway/mirror.py @@ -64,7 +64,6 @@ def mirror_to_session( "mirror_source": source_label, } - _append_to_jsonl(session_id, mirror_msg) _append_to_sqlite(session_id, mirror_msg) logger.debug("Mirror: wrote to session %s (from %s)", session_id, source_label) @@ -150,15 +149,6 @@ def _find_session_id( return best_entry.get("session_id") -def _append_to_jsonl(session_id: str, message: dict) -> None: - """Append a message to the JSONL transcript file.""" - transcript_path = _SESSIONS_DIR / f"{session_id}.jsonl" - try: - with open(transcript_path, "a", encoding="utf-8") as f: - f.write(json.dumps(message, ensure_ascii=False) + "\n") - except Exception as e: - logger.debug("Mirror JSONL write failed: %s", e) - def _append_to_sqlite(session_id: str, message: dict) -> None: """Append a message to the SQLite session database.""" diff --git a/tests/gateway/test_mirror.py b/tests/gateway/test_mirror.py index 0e42ee1b161..918e0bff6c7 100644 --- a/tests/gateway/test_mirror.py +++ b/tests/gateway/test_mirror.py @@ -8,7 +8,6 @@ import gateway.mirror as mirror_mod from gateway.mirror import ( mirror_to_session, _find_session_id, - _append_to_jsonl, ) @@ -152,33 +151,6 @@ class TestFindSessionId: assert result == "sess_1" -class TestAppendToJsonl: - def test_appends_message(self, tmp_path): - sessions_dir = tmp_path / "sessions" - sessions_dir.mkdir() - - with patch.object(mirror_mod, "_SESSIONS_DIR", sessions_dir): - _append_to_jsonl("sess_1", {"role": "assistant", "content": "Hello"}) - - transcript = sessions_dir / "sess_1.jsonl" - lines = transcript.read_text().strip().splitlines() - assert len(lines) == 1 - msg = json.loads(lines[0]) - assert msg["role"] == "assistant" - assert msg["content"] == "Hello" - - def test_appends_multiple_messages(self, tmp_path): - sessions_dir = tmp_path / "sessions" - sessions_dir.mkdir() - - with patch.object(mirror_mod, "_SESSIONS_DIR", sessions_dir): - _append_to_jsonl("sess_1", {"role": "assistant", "content": "msg1"}) - _append_to_jsonl("sess_1", {"role": "assistant", "content": "msg2"}) - - transcript = sessions_dir / "sess_1.jsonl" - lines = transcript.read_text().strip().splitlines() - assert len(lines) == 2 - class TestMirrorToSession: def test_successful_mirror(self, tmp_path): @@ -192,15 +164,16 @@ class TestMirrorToSession: with patch.object(mirror_mod, "_SESSIONS_DIR", sessions_dir), \ patch.object(mirror_mod, "_SESSIONS_INDEX", index_file), \ - patch("gateway.mirror._append_to_sqlite"): + patch("gateway.mirror._append_to_sqlite") as mock_sqlite: result = mirror_to_session("telegram", "12345", "Hello!", source_label="cli") assert result is True - # Check JSONL was written - transcript = sessions_dir / "sess_abc.jsonl" - assert transcript.exists() - msg = json.loads(transcript.read_text().strip()) + # Check SQLite writer was called with the mirror message + mock_sqlite.assert_called_once() + call_args = mock_sqlite.call_args + assert call_args[0][0] == "sess_abc" + msg = call_args[0][1] assert msg["content"] == "Hello!" assert msg["role"] == "assistant" assert msg["mirror"] is True @@ -222,12 +195,12 @@ class TestMirrorToSession: with patch.object(mirror_mod, "_SESSIONS_DIR", sessions_dir), \ patch.object(mirror_mod, "_SESSIONS_INDEX", index_file), \ - patch("gateway.mirror._append_to_sqlite"): + patch("gateway.mirror._append_to_sqlite") as mock_sqlite: result = mirror_to_session("telegram", "-1001", "Hello topic!", source_label="cron", thread_id="10") assert result is True - assert (sessions_dir / "sess_topic_a.jsonl").exists() - assert not (sessions_dir / "sess_topic_b.jsonl").exists() + mock_sqlite.assert_called_once() + assert mock_sqlite.call_args[0][0] == "sess_topic_a" def test_successful_mirror_uses_user_id_for_group_session(self, tmp_path): sessions_dir, index_file = _setup_sessions(tmp_path, { @@ -245,7 +218,7 @@ class TestMirrorToSession: with patch.object(mirror_mod, "_SESSIONS_DIR", sessions_dir), \ patch.object(mirror_mod, "_SESSIONS_INDEX", index_file), \ - patch("gateway.mirror._append_to_sqlite"): + patch("gateway.mirror._append_to_sqlite") as mock_sqlite: result = mirror_to_session( "telegram", "-1001", @@ -255,8 +228,8 @@ class TestMirrorToSession: ) assert result is True - assert (sessions_dir / "sess_alice.jsonl").exists() - assert not (sessions_dir / "sess_bob.jsonl").exists() + mock_sqlite.assert_called_once() + assert mock_sqlite.call_args[0][0] == "sess_alice" def test_no_matching_session(self, tmp_path): sessions_dir, index_file = _setup_sessions(tmp_path, {})