aboutsummaryrefslogtreecommitdiffstats
path: root/dist/main/ipc
diff options
context:
space:
mode:
Diffstat (limited to 'dist/main/ipc')
-rw-r--r--dist/main/ipc/handlers.js116
1 files changed, 116 insertions, 0 deletions
diff --git a/dist/main/ipc/handlers.js b/dist/main/ipc/handlers.js
new file mode 100644
index 0000000..c452cee
--- /dev/null
+++ b/dist/main/ipc/handlers.js
@@ -0,0 +1,116 @@
1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3 if (k2 === undefined) k2 = k;
4 var desc = Object.getOwnPropertyDescriptor(m, k);
5 if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6 desc = { enumerable: true, get: function() { return m[k]; } };
7 }
8 Object.defineProperty(o, k2, desc);
9}) : (function(o, m, k, k2) {
10 if (k2 === undefined) k2 = k;
11 o[k2] = m[k];
12}));
13var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14 Object.defineProperty(o, "default", { enumerable: true, value: v });
15}) : function(o, v) {
16 o["default"] = v;
17});
18var __importStar = (this && this.__importStar) || (function () {
19 var ownKeys = function(o) {
20 ownKeys = Object.getOwnPropertyNames || function (o) {
21 var ar = [];
22 for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23 return ar;
24 };
25 return ownKeys(o);
26 };
27 return function (mod) {
28 if (mod && mod.__esModule) return mod;
29 var result = {};
30 if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31 __setModuleDefault(result, mod);
32 return result;
33 };
34})();
35Object.defineProperty(exports, "__esModule", { value: true });
36exports.registerIpcHandlers = registerIpcHandlers;
37const electron_1 = require("electron");
38const projects = __importStar(require("../db/projects"));
39const sessions = __importStar(require("../db/sessions"));
40const claude = __importStar(require("../claude"));
41function registerIpcHandlers(mainWindow) {
42 // Projects
43 electron_1.ipcMain.handle("projects:list", () => projects.listProjects());
44 electron_1.ipcMain.handle("projects:create", (_, name, path) => projects.createProject(name, path));
45 electron_1.ipcMain.handle("projects:delete", (_, id) => projects.deleteProject(id));
46 // Sessions
47 electron_1.ipcMain.handle("sessions:list", (_, projectId) => sessions.listSessions(projectId));
48 electron_1.ipcMain.handle("sessions:create", (_, projectId, name) => sessions.createSession(projectId, name));
49 electron_1.ipcMain.handle("sessions:delete", (_, id) => sessions.deleteSession(id));
50 electron_1.ipcMain.handle("sessions:get", (_, id) => sessions.getSession(id));
51 // Messages
52 electron_1.ipcMain.handle("messages:list", (_, sessionId) => sessions.listMessages(sessionId));
53 // Chat
54 electron_1.ipcMain.handle("chat:send", async (_, sessionId, message) => {
55 const session = sessions.getSession(sessionId);
56 if (!session)
57 throw new Error("Session not found");
58 // Store user message
59 sessions.addMessage(sessionId, "user", message);
60 await claude.sendMessage({
61 session,
62 message,
63 onMessage: (msg) => {
64 // Forward all messages to renderer
65 mainWindow.webContents.send("claude:message", sessionId, msg);
66 // Store assistant text messages
67 if (msg.type === "assistant") {
68 const content = msg.message.content
69 .filter((c) => c.type === "text" && c.text)
70 .map((c) => c.text)
71 .join("\n");
72 if (content) {
73 sessions.addMessage(sessionId, "assistant", content);
74 }
75 }
76 },
77 });
78 });
79 electron_1.ipcMain.handle("chat:interrupt", (_, sessionId) => {
80 claude.interruptSession(sessionId);
81 });
82 // Workflow
83 electron_1.ipcMain.handle("workflow:review", async (_, sessionId) => {
84 const session = sessions.getSession(sessionId);
85 if (!session)
86 throw new Error("Session not found");
87 await claude.triggerReview(session, (msg) => {
88 mainWindow.webContents.send("claude:message", sessionId, msg);
89 });
90 });
91 electron_1.ipcMain.handle("workflow:advance", (_, sessionId) => {
92 const session = sessions.getSession(sessionId);
93 if (!session)
94 throw new Error("Session not found");
95 return claude.advancePhase(session);
96 });
97 electron_1.ipcMain.handle("workflow:setPermissionMode", (_, sessionId, mode) => {
98 sessions.updateSession(sessionId, {
99 permission_mode: mode,
100 });
101 });
102 // Artifacts
103 electron_1.ipcMain.handle("artifact:read", (_, projectPath, filename) => {
104 return claude.readArtifact(projectPath, filename);
105 });
106 electron_1.ipcMain.handle("artifact:write", (_, projectPath, filename, content) => {
107 claude.writeArtifact(projectPath, filename, content);
108 });
109 // Dialogs
110 electron_1.ipcMain.handle("dialog:selectDirectory", async () => {
111 const result = await electron_1.dialog.showOpenDialog(mainWindow, {
112 properties: ["openDirectory"],
113 });
114 return result.canceled ? null : result.filePaths[0];
115 });
116}