Instruction file imported from krovomi/WorkPilot-AI (
.github/instructions/electron-main.instructions.md). Copyright stays with the author.
Electron Main Process — Instructions
Stack
- Electron + TypeScript, build via electron-vite.
- IPC handlers organisés par domaine dans
apps/frontend/src/main/ipc-handlers/. - Services métier au niveau racine du dossier
main/(un fichier par service). - Terminal multi-PTY via
node-pty(terminal/).
Règles
- Tout handler IPC est défini par
ipcMain.handle(channel, ...)dansipc-handlers/et exposé côté preload viaapps/frontend/src/preload/api/. - Channels nommés via constantes de
apps/frontend/src/shared/constants/ipc.tsouipc-namespaces.ts. Jamais de string littéral. - Tout type de réponse IPC est dans
apps/frontend/src/shared/types/ipc.ts. - Logs via
app-logger.ts— pas deconsole.logen prod. - Lecture de fichiers projet : passer par
fs-utils.ts(sandboxing). - Aucune exécution shell sans validation (
security.tscôté backend). - Hot-reload via
electron-vite; les services doivent être idempotents au reload.
Sections clés (gros services)
| Fichier | Rôle |
|---|---|
agent-manager.ts |
Lifecycle des agents (start/stop/status) |
terminal-manager.ts |
Sessions PTY multi-terminal |
task-state-manager.ts |
Source de vérité tâches côté main |
file-watcher.ts |
chokidar wrappers |
ipc-setup.ts |
Bootstrap de tous les handlers IPC |
Token-saving
- Beaucoup de fichiers > 500 lignes. Préférer
grepciblé. - Voir
apps/frontend/AGENTS.mdpour la cartographie complète.
Anti-patterns
- Importer du code
renderer/dansmain/— interdit (Electron isolation). - Modifier le filesystem hors
fs-utils.tsouworktree-paths.ts. - Créer un handler IPC sans le déclarer dans
ipc-namespaces.ts.