feat: 工作空间切换校验 + 初始化检测 + 继承基础设置
新增功能: - workspace:check IPC — 校验路径有效性 + 检测 4 个必需文件状态 - workspace:inheritFiles IPC — 从旧工作空间继承 SOUL/AGENTS/USERS 到新工作空间 - app:restart IPC — 渲染进程触发应用重启(app.relaunch + app.exit) 前端 WorkspaceSettings 改造: - 选择文件夹后立即校验路径(是否存在、是否目录、4 个必需文件状态) - 显示工作空间状态: · 新工作空间 → 提示将自动创建 4 个文件 · 部分文件缺失 → 提示缺失文件将自动创建 · 已有工作空间 → 提示将直接加载现有配置 - 继承选项:当切换到新工作空间时,可勾选继承 SOUL/AGENTS/USERS.md · MEMORY.md 不继承(记忆与工作空间项目上下文绑定) · 继承白名单:仅允许 SOUL.md、AGENTS.md、USERS.md(防路径遍历) - 确认切换按钮 + 取消按钮 - 切换完成后弹出重启确认对话框(立即重启 / 稍后手动重启) 安全考虑: - workspace:inheritFiles 使用文件名白名单,防止路径遍历攻击 - workspace:check 返回 resolvedPath,前端只展示不直接用于文件操作 - app:restart 延迟 200ms 让 IPC 响应先返回
This commit is contained in:
@@ -114,6 +114,14 @@ const metonaAPI = {
|
||||
openExternal: (url: string) => ipcRenderer.invoke('app:openExternal', url),
|
||||
showItemInFolder: (path: string) => ipcRenderer.invoke('app:showItemInFolder', path),
|
||||
selectFolder: (defaultPath?: string) => ipcRenderer.invoke('app:selectFolder', defaultPath),
|
||||
restart: () => ipcRenderer.invoke('app:restart'),
|
||||
},
|
||||
|
||||
// ===== 工作空间管理 =====
|
||||
workspace: {
|
||||
check: (targetPath: string) => ipcRenderer.invoke('workspace:check', targetPath),
|
||||
inheritFiles: (params: { targetPath: string; sourcePath: string; files: string[] }) =>
|
||||
ipcRenderer.invoke('workspace:inheritFiles', params),
|
||||
},
|
||||
|
||||
// ===== 工具管理 =====
|
||||
|
||||
Reference in New Issue
Block a user