🎉 initial commit

This commit is contained in:
2026-02-20 14:17:34 +10:00
commit e21d1c7b58
33 changed files with 8207 additions and 0 deletions

36
src/main/ipcHandlers.ts Normal file
View File

@@ -0,0 +1,36 @@
import { ipcMain } from 'electron'
import { listDraftFiles, readMarkdownFile, writeMarkdownFile } from './fileSystem'
import { streamMessage } from './aiService'
import type { AIPayload } from '../renderer/types/editor'
export function registerIpcHandlers(): void {
ipcMain.handle('fs:listFiles', async () => {
return await listDraftFiles()
})
ipcMain.handle('fs:readFile', async (_event, filePath: string) => {
return await readMarkdownFile(filePath)
})
ipcMain.handle('fs:writeFile', async (_event, filePath: string, content: string) => {
await writeMarkdownFile(filePath, content)
})
ipcMain.handle('ai:streamMessage', async (event, payload: AIPayload) => {
try {
await streamMessage(payload, (chunk: string) => {
if (!event.sender.isDestroyed()) {
event.sender.send('ai:chunk', chunk)
}
})
if (!event.sender.isDestroyed()) {
event.sender.send('ai:done')
}
} catch (err) {
const message = err instanceof Error ? err.message : String(err)
if (!event.sender.isDestroyed()) {
event.sender.send('ai:error', message)
}
}
})
}