Skip to content

Commit e7d7dfc

Browse files
fix(session_peek): restore quick_session_info parity with monolith
1 parent 942fb0a commit e7d7dfc

2 files changed

Lines changed: 5 additions & 13 deletions

File tree

utils/jsonl_parser.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
normalize_content as _normalize_content,
1616
strip_system_tags as _strip_system_tags,
1717
)
18+
from utils.session_peek import quick_session_info
1819
from utils.tool_dispatch import _TOOL_RESULT_DISPATCH, _parse_tool_result
1920
from utils.validation import validate_session_dict
2021

@@ -37,14 +38,6 @@
3738
]
3839

3940

40-
def __getattr__(name: str) -> Any:
41-
if name == "quick_session_info":
42-
from utils.session_peek import quick_session_info
43-
44-
return quick_session_info
45-
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
46-
47-
4841
def parse_session(filepath: str) -> SessionDict:
4942
"""Main entry point. Reads every line from a .jsonl file and builds up
5043
a session dict with messages, metadata (tokens, models, tool counts),

utils/session_peek.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from models.session import QuickSessionInfoDict
77
from utils.jsonl_helpers import entry_message, extract_text, first_title_line
88

9-
_TAIL_READ_MIN_BYTES = 10 * 1024
9+
_TAIL_READ_MIN_BYTES = 10000
1010
_MAX_HEAD_LINES = 80
1111

1212

@@ -15,8 +15,8 @@ def quick_session_info(filepath: str) -> QuickSessionInfoDict:
1515
without fully parsing all messages. Much faster than parse_session() for
1616
large files.
1717
18-
Strategy: files over 10 KiB cap the head scan at 80 lines for title, then
19-
tail-read for last_timestamp; smaller files are scanned fully in pass 1."""
18+
Strategy: read at most the first 80 lines for title, then tail-read the end
19+
of files larger than 10_000 bytes for last_timestamp."""
2020
title = None
2121
first_ts = None
2222
last_ts = None
@@ -27,8 +27,7 @@ def quick_session_info(filepath: str) -> QuickSessionInfoDict:
2727
lines_read = 0
2828
for line in f:
2929
lines_read += 1
30-
# Large files use pass-2 tail read for last_timestamp; cap head scan only then.
31-
if file_size > _TAIL_READ_MIN_BYTES and lines_read > _MAX_HEAD_LINES:
30+
if lines_read > _MAX_HEAD_LINES:
3231
break
3332
line = line.strip()
3433
if not line:

0 commit comments

Comments
 (0)