IPC Handlers
Domain-organized IPC request handlers for main process.
Structure
ipc/
├── handlers.ts # Initialization and registration
├── config.ts # App configuration handlers
├── configValidation.ts # Config input validation/sanitization
├── guards.ts # IPC argument type guards
├── notifications.ts # Notification management
├── projects.ts # Project listing, repository grouping
├── search.ts # Session content search
├── sessions.ts # Session operations, pagination
├── subagents.ts # Subagent detail drill-down
├── utility.ts # Shell operations, file reading
└── validation.ts # Path validation, file mentioning
Handler Pattern
Each domain module exports:
// Setup with services
initialize{Domain}Handlers(services)
// Register with ipcMain
register{Domain}Handlers(ipcMain)
// Cleanup on app quit
remove{Domain}Handlers(ipcMain)
Service Dependencies
initializeIpcHandlers() receives service instances:
ProjectScanner- File system scanningSessionParser- JSONL parsingSubagentResolver- Subagent linkingChunkBuilder- Chunk analysisDataCache- Result caching
Response Pattern
Config handlers use IpcResult<T> wrapper:
return { success: true, data: result };
return { success: false, error: message };
Other handlers return data directly or null on error.
Adding New Handler
- Add to existing domain file or create new file
- Call
initialize{Domain}Handlers()if new domain - Add
register/remove{Domain}Handlersinhandlers.ts - Add channel constant in
preload/constants/ipcChannels.ts - Add method to ElectronAPI in
preload/index.ts - Implement service logic in
src/main/services/