feat: 升级至 v0.3.14 — 移除 AGENTS.md/USERS.md + 内置提示词统一管理 + 时间感知 + 工具管理滚动
This commit is contained in:
@@ -1078,7 +1078,7 @@ export function registerAllIPCHandlers(
|
||||
valid: true,
|
||||
path: resolvedPath,
|
||||
exists: false,
|
||||
missingFiles: ['SOUL.md', 'AGENTS.md', 'MEMORY.md', 'USERS.md'],
|
||||
missingFiles: ['SOUL.md', 'MEMORY.md'],
|
||||
isNewWorkspace: true,
|
||||
reason: '目录不存在,将在切换后自动创建',
|
||||
};
|
||||
@@ -1094,8 +1094,8 @@ export function registerAllIPCHandlers(
|
||||
return { valid: false, reason: '无法访问路径' };
|
||||
}
|
||||
|
||||
// 校验 3: 检测 4 个必需文件状态
|
||||
const requiredFiles = ['SOUL.md', 'AGENTS.md', 'MEMORY.md', 'USERS.md'];
|
||||
// 校验 3: 检测 2 个必需文件状态(SOUL.md + MEMORY.md)
|
||||
const requiredFiles = ['SOUL.md', 'MEMORY.md'];
|
||||
const missingFiles: string[] = [];
|
||||
for (const f of requiredFiles) {
|
||||
if (!existsSync(join(resolvedPath, f))) missingFiles.push(f);
|
||||
@@ -1136,8 +1136,8 @@ export function registerAllIPCHandlers(
|
||||
const failed: Array<{ file: string; error: string }> = [];
|
||||
|
||||
for (const fileName of files) {
|
||||
// 仅允许继承白名单文件(防止路径遍历)
|
||||
if (!['SOUL.md', 'AGENTS.md', 'USERS.md'].includes(fileName)) {
|
||||
// 仅允许继承白名单文件(防止路径遍历)— v0.3.14: 仅 SOUL.md
|
||||
if (!['SOUL.md'].includes(fileName)) {
|
||||
failed.push({ file: fileName, error: '不在继承白名单中' });
|
||||
continue;
|
||||
}
|
||||
@@ -1159,13 +1159,13 @@ export function registerAllIPCHandlers(
|
||||
return { success: true, inherited, failed };
|
||||
});
|
||||
|
||||
// 获取当前工作空间详情:路径 + 4 个核心文件状态 + 自动目录状态
|
||||
// 获取当前工作空间详情:路径 + 2 个核心文件状态 + 自动目录状态
|
||||
ipcMain.handle('workspace:getInfo', async () => {
|
||||
const { existsSync, statSync, readFileSync, readdirSync } = await import('fs');
|
||||
const workspacePath = workspaceService.getPath();
|
||||
const files = workspaceService.reload(); // 同步外部可能的手动修改
|
||||
|
||||
const REQUIRED = ['SOUL.md', 'AGENTS.md', 'MEMORY.md', 'USERS.md'] as const;
|
||||
const REQUIRED = ['SOUL.md', 'MEMORY.md'] as const;
|
||||
const AUTO_DIRS = ['logs', 'traces', '.metona'] as const;
|
||||
|
||||
const fileInfos = REQUIRED.map((name) => {
|
||||
@@ -1187,8 +1187,8 @@ export function registerAllIPCHandlers(
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
// 文件内容映射:SOUL.md → files.soul, AGENTS.md → files.agents 等
|
||||
const contentKey = name.toLowerCase().replace('.md', '') as 'soul' | 'agents' | 'memory' | 'users';
|
||||
// 文件内容映射:SOUL.md → files.soul, MEMORY.md → files.memory
|
||||
const contentKey = name.toLowerCase().replace('.md', '') as 'soul' | 'memory';
|
||||
return {
|
||||
name,
|
||||
path: filePath,
|
||||
|
||||
Reference in New Issue
Block a user