previous-draft/collectors/__init__.py
Comment 1, line 1
previous-draft/collectors/init.py:1
# -*- coding: utf-8 -*-Comment 2, line 2
previous-draft/collectors/init.py:2
"""Collector framework.
To add a tool, create xxx.py here and register a collect(ctx) generator with@collector("tool-name"). The framework discovers and schedules it automatically.Remove a tool by deleting its file, or yield nothing from collect() and recordthe skip reason by setting ctx.skip_reason before returning."""Comment 3, line 18
previous-draft/collectors/init.py:18
# Epoch seconds.Comment 4, line 21
previous-draft/collectors/init.py:21
# Uncached input tokens.Comment 5, line 29
previous-draft/collectors/init.py:29
Comment 6, line 31
previous-draft/collectors/init.py:31
# The collector may record a skip/failure reason.Comment 7, line 38
previous-draft/collectors/init.py:38
"""Register a collector with signature collect(ctx) -> Iterable[Event]."""Comment 8, line 46
previous-draft/collectors/init.py:46
"""Yield complete new lines incrementally and update offsets (append-only JSONL).
Read a newly seen file from offset zero for initial historical backfill; subsequent reads consume only appended bytes. Restart from the beginning after truncation/rotation. refresh=True ignores offsets and rescans everything. """Comment 9, line 72
previous-draft/collectors/init.py:72
# No complete line yet; wait for the next read.Comment 10, line 86
previous-draft/collectors/init.py:86
"""Extract a line model field quickly without JSON parsing for current-model tracking."""Comment 11, line 92
previous-draft/collectors/init.py:92
"""Stable request deduplication ID."""