Terraphim Agent Session Search - Architecture Document
Version: 1.1.0 Status: Implemented Created: 2025-12-03 Updated: 2025-12-04
Overview
This document describes the technical architecture for the Session Search and Robot Mode features in terraphim-agent. The architecture extends existing Terraphim components while introducing new modules for session management and AI-friendly interfaces.
System Context
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β External Systems β
βββββββββββββββ¬ββββββββββββββ¬ββββββββββββββ¬ββββββββββββββ¬ββββββββββββββββββββββ€
β Claude Code β Cursor β Aider β Cline β Other Agents β
β (JSONL) β (SQLite) β (Markdown) β (JSON) β β
ββββββββ¬βββββββ΄βββββββ¬βββββββ΄βββββββ¬βββββββ΄βββββββ¬βββββββ΄βββββββββββ¬βββββββββββ
β β β β β
βββββββββββββββ΄βββββββ¬βββββββ΄ββββββββββββββ΄ββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β terraphim-agent β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Session Connectors β β
β β βββββββββββββ βββββββββββββ βββββββββββββ βββββββββββββ β β
β β β Claude β β Cursor β β Aider β β Cline β β β
β β β Connector β β Connector β β Connector β β Connector β β β
β β βββββββ¬ββββββ βββββββ¬ββββββ βββββββ¬ββββββ βββββββ¬ββββββ β β
β ββββββββββΌββββββββββββββΌββββββββββββββΌββββββββββββββΌβββββββββββββββββββ β
β βββββββββββββββ΄βββββββ¬βββββββ΄ββββββββββββββ β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Session Service β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββββββ β β
β β β Import β β Index β β Enrichment β β β
β β β Engine ββββ (Tantivy) ββββ (Knowledge Graph) β β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Command Layer β β
β β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββββββββββ β β
β β β Forgiving CLI β β Robot Mode β β Self-Documentation β β β
β β β Parser β β Formatter β β API β β β
β β βββββββββββββββββ βββββββββββββββββ βββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Existing Terraphim Core β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββββββ β β
β β β terraphim_ β β terraphim_ β β terraphim_ β β β
β β β automata β β rolegraph β β service β β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββModule Architecture
Implementation Status
The architecture has been implemented using a feature-gated approach with terraphim-session-analyzer (CLA) integrated as a git subtree. This allows terraphim_sessions to work standalone while gaining enhanced capabilities when CLA is enabled.
New Modules
crates/
βββ terraphim-session-analyzer/ # ADDED: Git subtree integration
β βββ src/
β β βββ lib.rs # Core CLA exports
β β βββ parser.rs # Claude JSONL parsing
β β βββ session.rs # Session entry types
β β βββ connectors/ # ADDED: Multi-agent connectors
β β βββ mod.rs # Connector trait + registry
β β βββ claude.rs # Claude Code connector
β β βββ cursor.rs # Cursor SQLite connector
β
βββ terraphim_agent/ # ENHANCED
β βββ src/
β β βββ main.rs # --robot, --format flags
β β βββ repl/
β β β βββ mod.rs
β β β βββ commands.rs # +SessionsSubcommand
β β β βββ handler.rs # +handle_sessions()
β β βββ robot/ # Robot mode module
β β β βββ mod.rs
β β β βββ output.rs # JSON formatters
β β β βββ schema.rs # Response schemas
β β β βββ docs.rs # Self-documentation
β β βββ forgiving/ # Forgiving CLI
β β βββ mod.rs
β β βββ parser.rs # Edit-distance parser
β β βββ suggestions.rs # Command suggestions
β
βββ terraphim_sessions/ # NEW CRATE - Feature-gated
β βββ Cargo.toml # Feature definitions
β βββ src/
β β βββ lib.rs # Conditional module exports
β β βββ model.rs # Session, Message, ContentBlock
β β βββ connector/ # Connector infrastructure
β β β βββ mod.rs # SessionConnector trait
β β β βββ native.rs # NativeClaudeConnector (no CLA)
β β βββ service.rs # SessionService facade
β β βββ cla/ # #[cfg(feature = "terraphim-session-analyzer")]
β β βββ mod.rs # CLA integration layer
β β βββ connector.rs # ClaClaudeConnector, ClaCursorConnectorFeature Gate Configuration
# crates/terraphim_sessions/Cargo.toml
[features]
default = []
terraphim-session-analyzer = ["dep:terraphim-session-analyzer"]
cla-full = ["terraphim-session-analyzer", "terraphim-session-analyzer/connectors"]
enrichment = ["terraphim_automata", "terraphim_rolegraph"]
full = ["cla-full", "enrichment"]| Feature | Enables | Use Case |
|---------|---------|----------|
| (none) | NativeClaudeConnector only | Minimal JSONL parsing |
| terraphim-session-analyzer | CLA core + Claude connector | Full Claude analysis |
| cla-full | CLA + Cursor SQLite | Multi-agent support |
| enrichment | Knowledge graph integration | Concept detection |
| full | Everything | Production deployment |
Component Details
1. Forgiving CLI Parser
Location: crates/terraphim_agent/src/forgiving/
Purpose: Parse commands with typo tolerance and flexibility.
/// Forgiving command parser with edit-distance correction
2. Robot Mode Output
Location: crates/terraphim_agent/src/robot/
Purpose: Structured, machine-readable output for AI agents.
/// Robot mode output configuration
/// Standard response envelope
/// Exit codes
3. Self-Documentation API
Location: crates/terraphim_agent/src/robot/docs.rs
/// Self-documentation for AI agents
4. Session Connectors
Location: crates/terraphim_sessions/src/connector/
/// Trait for session source connectors
/// Claude Code connector implementation
5. Session Index (Tantivy)
Location: crates/terraphim_sessions/src/index/
use ;
/// Session search index using Tantivy
6. Knowledge Graph Enrichment
Location: crates/terraphim_sessions/src/enrichment/
use ;
use RoleGraph;
/// Enriches sessions with knowledge graph concepts
Data Flow
Import Flow
βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Source ββββββΆβ Connector ββββββΆβ Parser ββββββΆβ Session β
β Files β β (detect) β β (normalize) β β Model β
βββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββ¬βββββββ
β
βββββββββββββββ βββββββββββββββ β
β Index βββββββ Enricher ββββββββββββββ
β (Tantivy) β β (concepts) β
βββββββββββββββ βββββββββββββββSearch Flow
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Query ββββββΆβ Forgiving ββββββΆβ Query β
β Input β β Parser β β Expansion β
βββββββββββββββ βββββββββββββββ ββββββββ¬βββββββ
β
βββββββββββββββ β
β Tantivy ββββββββββββββ
β Search β
ββββββββ¬βββββββ
β
βββββββββββββββ ββββββββΌβββββββ βββββββββββββββ
β Robot βββββββ Result βββββββ Concept β
β Output β β Formatter β β Expansion β
βββββββββββββββ βββββββββββββββ βββββββββββββββIntegration with Existing Components
terraphim_automata Integration
// Use existing fuzzy search for forgiving CLI
use fuzzy_autocomplete_search_jaro_winkler;
// Use existing concept extraction for enrichment
use ;terraphim_service Integration
// Sessions integrate with existing search
terraphim_config Integration
// Session configuration in role config
Error Handling
Testing Strategy
Unit Tests
Integration Tests
async Performance Considerations
Index Performance
- Batch writes: Commit after every 1000 documents
- Reader reload: Use
reader.reload()for real-time search - Segment merging: Configure merge policy for read-heavy workload
Memory Management
- Streaming import: Process files in chunks, not all at once
- Index caching: Keep hot segments in memory
- Result pagination: Default limit of 10, max of 100
Startup Optimization
- Lazy loading: Don't load index until first search
- Background indexing: Import new sessions async
- Warm-up queries: Pre-warm common searches
Security Considerations
Data Privacy
- All data stored locally
- No network calls for session data
- File permissions respected
Secret Detection
lazy_static! Future Extensions
Phase 2+ Considerations
- Semantic Search: Add embedding support alongside BM25
- Cross-Machine Sync: Optional encrypted sync
- Session Replay: Interactive session playback
- Analytics Dashboard: TUI-based analytics view
Plugin Architecture
/// Plugin trait for custom connectors
/// Dynamic connector loading