* fix(session): compact completed native vision results * streaming: guard image-part compaction against unhashable part.type (isinstance str) + regression test [maintainer fix on @sjungwon03 #6315] * docs(changelog): stamp #6315 completed-image tool-result compaction --------- Co-authored-by: sjungwon03 <sjungwon03@gmail.com> Co-authored-by: nesquena-hermes <agent@nesquena-hermes>
44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
from pathlib import Path
|
|
|
|
from api.streaming import _compact_for_echo_compare
|
|
|
|
|
|
def test_streaming_initializes_one_run_journal_writer_per_stream():
|
|
src = Path("api/streaming.py").read_text(encoding="utf-8")
|
|
register_idx = src.index("register_active_run(")
|
|
writer_idx = src.index("RunJournalWriter(session_id, stream_id)", register_idx)
|
|
cancel_idx = src.index("cancel_event = threading.Event()", writer_idx)
|
|
|
|
assert "from api.run_journal import RunJournalWriter" in src
|
|
assert register_idx < writer_idx < cancel_idx
|
|
|
|
|
|
def test_streaming_journals_sse_events_before_queue_delivery():
|
|
src = Path("api/streaming.py").read_text(encoding="utf-8")
|
|
put_idx = src.index("def put(event, data):")
|
|
journal_idx = src.index("run_journal.append_sse_event(event, data)", put_idx)
|
|
queue_idx = src.index("q.put_nowait(queue_item)", put_idx)
|
|
block = src[put_idx:queue_idx]
|
|
|
|
assert put_idx < journal_idx < queue_idx
|
|
assert "Failed to append run journal event" in block
|
|
assert "queue_item = (event, data, event_id) if event_id and hasattr(q, \"subscribe_with_snapshot\") else (event, data)" in block
|
|
|
|
|
|
|
|
def test_streaming_compacts_all_successful_agent_result_writebacks():
|
|
src = Path("api/streaming.py").read_text(encoding="utf-8")
|
|
run_src = src[src.index("def _run_agent_streaming("):]
|
|
|
|
# Normal completion plus both credential self-heal retry-success paths must
|
|
# each compact after committing their own result shape. The retries use
|
|
# different local variable names, so guard the durable invariant itself.
|
|
assert run_src.count("_compact_session_image_parts_for_persistence(s)") == 3
|
|
|
|
|
|
def test_visible_process_echo_compare_ignores_all_whitespace():
|
|
token_text = "先把 issue 4249 拉下来\n\n先看正文和评论"
|
|
interim_text = "先把 issue 4249 拉下来先看正文和评论"
|
|
|
|
assert _compact_for_echo_compare(token_text) == _compact_for_echo_compare(interim_text)
|