Skip to content

WarpParser lacks age-based filtering present in sibling parsers, causing unbounded re-scans #17

Description

@Rahul-s-007

WarpParser.parse_all() (Sensor/adr_sensor/parsers/warp_parser.py) re-reads the entire agent_conversations table and runs a separate SQL JOIN query per conversation on every invocation, with no bound on age or count.

By contrast, ClaudeParser, CursorParser, and ClaudeDesktopParser all implement an explicit 14-day cutoff (max_age_days, documented as "Performance-optimized: Skips [logs] older than 2 weeks by default"). CursorParser is a directly comparable case — also SQLite-backed — and filters conversation IDs by lastUpdatedAt/createdAt before querying details.

Since Warp conversation history grows unboundedly and the sensor is run repeatedly (e.g. via cron/launchd) on end-user machines, this means the amount of work done on every single run grows forever, unlike its sibling parsers. WarpParser is also the only parser with no test coverage in tests/test_parsers.py.

I already have a fix scoped: bring WarpParser in line with CursorParser's existing pattern (age cutoff computed from last_modified_at, filtered before the per-conversation query runs), plus test coverage. Opening this first for visibility — PR to follow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions