feat(app): add Electron desktop UI and evolve memory/retrieval layer

Introduce an Electron app with session browser, memory list, and usage
  views (vanilla JS + Vue scaffolding). On the data layer: add content_type
  and is_meta to messages for transcript control-plane filtering, introduce
  FTS5-backed memory recall with safe tokenization, support memory archival
  via forget() through the renamed --attune runtime, and expose anchors on
  memory records.
This commit is contained in:
tommy0103
2026-06-12 22:20:29 +08:00
parent b52f57b538
commit b524339d85
48 changed files with 16538 additions and 97 deletions
+22
View File
@@ -0,0 +1,22 @@
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('obelisk', {
getSessions: (opts) => ipcRenderer.invoke('db:getSessions', opts),
getSessionMessages: (id) => ipcRenderer.invoke('db:getSessionMessages', id),
getSessionToolCalls: (id) => ipcRenderer.invoke('db:getSessionToolCalls', id),
getSessionToolResults: (id) => ipcRenderer.invoke('db:getSessionToolResults', id),
getSessionSubagents: (id) => ipcRenderer.invoke('db:getSessionSubagents', id),
getSessionWorkflows: (id) => ipcRenderer.invoke('db:getSessionWorkflows', id),
getSubagentMessages: (agentId) => ipcRenderer.invoke('db:getSubagentMessages', agentId),
getSubagentToolCalls: (agentId) => ipcRenderer.invoke('db:getSubagentToolCalls', agentId),
getSubagentToolResults: (agentId) => ipcRenderer.invoke('db:getSubagentToolResults', agentId),
getSessionSummaries: (id) => ipcRenderer.invoke('db:getSessionSummaries', id),
getMessageFullText: (uuid) => ipcRenderer.invoke('db:getMessageFullText', uuid),
getMemories: () => ipcRenderer.invoke('db:getMemories'),
readMemoryFile: (path) => ipcRenderer.invoke('db:readMemoryFile', path),
archiveMemory: (id, reason) => ipcRenderer.invoke('db:archiveMemory', id, reason),
restoreMemory: (id) => ipcRenderer.invoke('db:restoreMemory', id),
getProjects: () => ipcRenderer.invoke('db:getProjects'),
getStats: () => ipcRenderer.invoke('db:getStats'),
getUsageStats: () => ipcRenderer.invoke('db:getUsageStats'),
});