From 519d6b850e07a0387511a8f024dc394250b1a241 Mon Sep 17 00:00:00 2001 From: Clawd Date: Sat, 28 Feb 2026 15:26:02 -0800 Subject: Clear artifacts when creating new session Each new session now starts with empty research.md and plan.md files, preventing stale content from previous sessions appearing. --- dist/main/ipc/handlers.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 dist/main/ipc/handlers.js (limited to 'dist/main/ipc') 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 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.registerIpcHandlers = registerIpcHandlers; +const electron_1 = require("electron"); +const projects = __importStar(require("../db/projects")); +const sessions = __importStar(require("../db/sessions")); +const claude = __importStar(require("../claude")); +function registerIpcHandlers(mainWindow) { + // Projects + electron_1.ipcMain.handle("projects:list", () => projects.listProjects()); + electron_1.ipcMain.handle("projects:create", (_, name, path) => projects.createProject(name, path)); + electron_1.ipcMain.handle("projects:delete", (_, id) => projects.deleteProject(id)); + // Sessions + electron_1.ipcMain.handle("sessions:list", (_, projectId) => sessions.listSessions(projectId)); + electron_1.ipcMain.handle("sessions:create", (_, projectId, name) => sessions.createSession(projectId, name)); + electron_1.ipcMain.handle("sessions:delete", (_, id) => sessions.deleteSession(id)); + electron_1.ipcMain.handle("sessions:get", (_, id) => sessions.getSession(id)); + // Messages + electron_1.ipcMain.handle("messages:list", (_, sessionId) => sessions.listMessages(sessionId)); + // Chat + electron_1.ipcMain.handle("chat:send", async (_, sessionId, message) => { + const session = sessions.getSession(sessionId); + if (!session) + throw new Error("Session not found"); + // Store user message + sessions.addMessage(sessionId, "user", message); + await claude.sendMessage({ + session, + message, + onMessage: (msg) => { + // Forward all messages to renderer + mainWindow.webContents.send("claude:message", sessionId, msg); + // Store assistant text messages + if (msg.type === "assistant") { + const content = msg.message.content + .filter((c) => c.type === "text" && c.text) + .map((c) => c.text) + .join("\n"); + if (content) { + sessions.addMessage(sessionId, "assistant", content); + } + } + }, + }); + }); + electron_1.ipcMain.handle("chat:interrupt", (_, sessionId) => { + claude.interruptSession(sessionId); + }); + // Workflow + electron_1.ipcMain.handle("workflow:review", async (_, sessionId) => { + const session = sessions.getSession(sessionId); + if (!session) + throw new Error("Session not found"); + await claude.triggerReview(session, (msg) => { + mainWindow.webContents.send("claude:message", sessionId, msg); + }); + }); + electron_1.ipcMain.handle("workflow:advance", (_, sessionId) => { + const session = sessions.getSession(sessionId); + if (!session) + throw new Error("Session not found"); + return claude.advancePhase(session); + }); + electron_1.ipcMain.handle("workflow:setPermissionMode", (_, sessionId, mode) => { + sessions.updateSession(sessionId, { + permission_mode: mode, + }); + }); + // Artifacts + electron_1.ipcMain.handle("artifact:read", (_, projectPath, filename) => { + return claude.readArtifact(projectPath, filename); + }); + electron_1.ipcMain.handle("artifact:write", (_, projectPath, filename, content) => { + claude.writeArtifact(projectPath, filename, content); + }); + // Dialogs + electron_1.ipcMain.handle("dialog:selectDirectory", async () => { + const result = await electron_1.dialog.showOpenDialog(mainWindow, { + properties: ["openDirectory"], + }); + return result.canceled ? null : result.filePaths[0]; + }); +} -- cgit v1.2.3