-
Notifications
You must be signed in to change notification settings - Fork 0
feat(sessions): bring axon ingest sessions to first-class status #34
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
axon ingest sessions exists and supports Claude, Codex, and Gemini session files, but it's been neglected. It should be one of the most-used features — the ability to instantly search everything you've ever discussed with any AI agent. Get it fully operational.
Current State
What works today:
SessionStateTracker— dedup viaaxon_session_ingest_statePostgres table (tracks mtime + size, skips already-indexed files)- Platform flags:
--claude,--codex,--gemini(all platforms if none specified) --projectfilter for Claude projects- Collection routing:
resolve_collection()→ e.g.claude-sessions,codex-sessions
Problems:
- No structured metadata — chunks store only a source type string, no platform/project/date fields (see issue feat(ingest): show current/total progress in
axon ingest listandaxon status#32 for fix) - No cross-platform search — separate collections per platform means you can't query "all sessions where I asked about async rust" across Claude + Codex + Gemini in one shot
- CLI-only — no web UI surface, buried behind a subcommand most people never run
- Silent about skips — no progress bar showing new vs already-indexed files
- Manual only — no scheduled re-scan; sessions grow but re-indexing requires remembering to run it
- Hardcoded paths — no way to point at a custom export directory
Known Session File Locations
| Platform | Default path |
|---|---|
| Claude Code | ~/.claude/projects/ (JSONL per project) |
| Codex | ~/.codex/ (project dirs) |
| Gemini CLI | ~/.gemini/ (session files) |
What Needs To Happen
1. Unified cross-platform collection
Default: all platforms → "global-sessions" collection
axon query "async rust" --collection global-sessions → searches Claude + Codex + Gemini at once
Per-platform collections still available via --collection claude-sessions etc. for targeted search.
2. Progress output
Discovering session files...
claude 127 files (12 new, 115 skipped — already indexed)
codex 43 files (43 new)
gemini 18 files ( 5 new, 13 skipped)
Indexing 60 new sessions...
[████████████████████░░░░░░░░░░] 42/60 sessions 1,847 chunks embedded
3. Custom session directory flag
axon ingest sessions --sessions-dir ~/exports/claude-sessionsAlso support compressed archives where possible (.json.gz).
4. Scheduled re-indexing
axon refresh sessions --schedule "0 2 * * *" # nightly re-scanOr document a simple cron/hook setup for triggering after each AI session ends.
5. Web UI — Sessions search surface
New /sessions route in the Reboot shell:
- Semantic search bar across all indexed sessions
- Filter by: platform (Claude/Codex/Gemini), project, date range
- Results: session title, platform badge, date, relevant excerpt
- Click → open full session in viewer (rendered markdown)
- Powered by
axon query --collection global-sessions --filter session_platform=claude
6. axon sessions as a top-level command alias
axon sessions # ingest all platforms (same as axon ingest sessions)
axon sessions --claude # Claude only
axon sessions --project axon # filter by project name
axon sessions --since 7d # only files modified in last 7 daysFiles
| File | Action |
|---|---|
crates/ingest/sessions.rs |
Unified global-sessions collection; progress bar with new/skipped counts; --sessions-dir flag |
crates/ingest/sessions/claude.rs |
Structured metadata (session_platform, session_project, session_date, etc.) |
crates/ingest/sessions/codex.rs |
Same |
crates/ingest/sessions/gemini.rs |
Same |
crates/cli/commands/sessions.rs |
--since, --sessions-dir flags; alias surface |
apps/web/app/sessions/ |
New /sessions route — search + filter UI |
docs/ingest/sessions.md |
Full doc: file paths, format details, troubleshooting |
Acceptance Criteria
- Default collection is
global-sessions— one query searches Claude + Codex + Gemini - Progress bar shows new vs skipped file counts per platform
-
--sessions-dir <path>accepted for custom export locations -
axon refresh sessions --schedulesupported for automatic re-indexing -
/sessionsUI route: semantic search with platform/project/date filters + platform badges - Session chunks have structured metadata (platform, project, date, turn count) — see issue feat(ingest): show current/total progress in
axon ingest listandaxon status#32 -
axon sessionsworks as a top-level alias foraxon ingest sessions - Session file paths for all three platforms documented in
docs/ingest/sessions.md -
cargo clippyclean, all tests pass
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request