Context
Follow-up from #922. The dev-mode /analysis/activity prototype currently sends only total tracked duration plus the top 20 applications to a single-pass LLM. Because that model has no ActivityWatch tools, the compact context needs to carry enough structure for a useful answer without sending raw personal event data.
Proposed context shape
Build on the existing canonical-query / aggregation seam and include:
- active time after AFK filtering, plus tracked-vs-active coverage
- top applications with duration, share, and distinct-title count
- top browser domains with duration and share (when browser URL data exists)
- category rollups using the user's ActivityWatch categorization rules
- daily distribution (per-day active time) and focus fragmentation signals such as app switches / longest sustained block
- explicit date range, host(s), timezone, and truncation/coverage notes
Keep each section bounded and inspectable in the UI before generation. Derive statistics locally; do not send raw titles or URLs by default.
Acceptance criteria
This should be a follow-up, not scope-creep in #922.
Context
Follow-up from #922. The dev-mode
/analysis/activityprototype currently sends only total tracked duration plus the top 20 applications to a single-pass LLM. Because that model has no ActivityWatch tools, the compact context needs to carry enough structure for a useful answer without sending raw personal event data.Proposed context shape
Build on the existing canonical-query / aggregation seam and include:
Keep each section bounded and inspectable in the UI before generation. Derive statistics locally; do not send raw titles or URLs by default.
Acceptance criteria
This should be a follow-up, not scope-creep in #922.