diff --git a/docs/architecture/large-file-analysis.md b/docs/architecture/large-file-analysis.md new file mode 100644 index 000000000..0e8d2617a --- /dev/null +++ b/docs/architecture/large-file-analysis.md @@ -0,0 +1,124 @@ +# Large File Analysis for Refactoring + +This document analyzes TypeScript files over 700 LOC for potential refactoring opportunities. + +## Summary + +| File | LOC | Priority | Recommendation | +|------|-----|----------|----------------| +| memory/manager.ts | 2178 | High | Split by responsibility | +| line/flex-templates.ts | 1507 | Low | Template data, leave as-is | +| agents/bash-tools.exec.ts | 1495 | Medium | Extract validation/sanitization | +| tts/tts.ts | 1473 | Medium | Split by provider | +| infra/exec-approvals.ts | 1267 | Medium | Extract approval strategies | +| cli/update-cli.ts | 1204 | Low | Sequential workflow, ok as-is | +| node-host/runner.ts | 1199 | Medium | Extract message handlers | +| media-understanding/runner.ts | 1118 | Medium | Extract provider adapters | +| config/schema.ts | 987 | Low | Zod schema, ok as-is | + +## Detailed Analysis + +### memory/manager.ts (2178 LOC) - HIGH PRIORITY + +**Current Structure:** +- Single `MemoryIndexManager` class handling everything +- Responsibilities: embedding generation, vector storage, FTS indexing, file watching, search + +**Refactoring Opportunities:** +1. Extract `MemoryEmbeddingService` - embedding generation, batching, caching +2. Extract `MemoryFileWatcher` - chokidar setup, debouncing, dirty tracking +3. Extract `MemoryIndexer` - chunking, indexing, schema management +4. Keep `MemorySearchManager` for search orchestration + +**Benefits:** +- Each module testable in isolation +- Clearer separation of async/sync concerns +- Easier to add new embedding providers + +### agents/bash-tools.exec.ts (1495 LOC) - MEDIUM PRIORITY + +**Current Structure:** +- One large `createExecTool` factory function +- Handles: command parsing, sandboxing, approval, execution, output formatting + +**Refactoring Opportunities:** +1. Extract `CommandSanitizer` - input validation, escaping +2. Extract `SandboxResolver` - sandbox mode detection, policy application +3. Keep execution logic as core + +**Considerations:** +- Highly cohesive as a tool definition +- Breaking apart may reduce readability of the tool's behavior + +### tts/tts.ts (1473 LOC) - MEDIUM PRIORITY + +**Current Structure:** +- Many exported utility functions +- Provider-specific logic mixed together (OpenAI, ElevenLabs, Edge) + +**Refactoring Opportunities:** +1. Extract `tts-openai.ts` - OpenAI-specific synthesis +2. Extract `tts-elevenlabs.ts` - ElevenLabs-specific synthesis +3. Extract `tts-edge.ts` - Edge TTS synthesis +4. Keep `tts.ts` as coordinator with prefs management + +**Benefits:** +- Provider implementations isolated +- Easier to add new TTS providers +- Core prefs/config logic cleaner + +### infra/exec-approvals.ts (1267 LOC) - MEDIUM PRIORITY + +**Current Structure:** +- Approval system for dangerous commands +- Multiple approval strategies and state management + +**Refactoring Opportunities:** +1. Extract approval strategy implementations +2. Extract approval state persistence +3. Keep approval orchestration in main file + +### node-host/runner.ts (1199 LOC) - MEDIUM PRIORITY + +**Current Structure:** +- Node process runner for agent execution +- Message handling, state management, IPC + +**Refactoring Opportunities:** +1. Extract message type handlers +2. Extract state machine logic +3. Keep runner lifecycle in main file + +### media-understanding/runner.ts (1118 LOC) - MEDIUM PRIORITY + +**Current Structure:** +- Media analysis orchestration +- Multiple provider adapters + +**Refactoring Opportunities:** +1. Extract provider-specific adapters +2. Extract result normalization +3. Keep orchestration in main file + +## Files to Leave As-Is + +### line/flex-templates.ts (1507 LOC) +Large but contains static template definitions for LINE Flex messages. No logic to split. + +### cli/update-cli.ts (1204 LOC) +Sequential update workflow. Splitting would reduce readability without improving maintainability. + +### config/schema.ts (987 LOC) +Zod schema definitions. Schemas are declarative and benefit from co-location. + +## Recommended Refactoring Order + +1. **memory/manager.ts** - Highest ROI, complex responsibilities +2. **tts/tts.ts** - Clear provider boundaries +3. **exec-approvals.ts** - Growing complexity with approval strategies +4. **bash-tools.exec.ts** - If validation complexity increases +5. **node-host/runner.ts** - If message handling expands + +## Completed Refactoring + +- **session-utils.ts** (644 LOC) - Split into avatar, agents, store modules ✓