From 1a334598eaa3922043bfef95fdc9ff607116bcc4 Mon Sep 17 00:00:00 2001 From: Jeff Xun <452914639@qq.com> Date: Sat, 14 Mar 2026 14:33:02 +0800 Subject: [PATCH] fix: set world-writable permissions on cluster log dir and files (#203) --- lib/cluster/execute.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/cluster/execute.js b/lib/cluster/execute.js index 00550966..d1a0afc0 100644 --- a/lib/cluster/execute.js +++ b/lib/cluster/execute.js @@ -243,12 +243,17 @@ export async function runClusterRole(roleData, payload, trigger) { const logDir = path.join(dataDir, logRelPath); env.push(`LOG_DIR=${logRelPath}`); fs.mkdirSync(logDir, { recursive: true }); + fs.chmodSync(logDir, 0o777); fs.writeFileSync(path.join(logDir, 'system-prompt.md'), systemPrompt || '', 'utf8'); + fs.chmodSync(path.join(logDir, 'system-prompt.md'), 0o666); fs.writeFileSync(path.join(logDir, 'user-prompt.md'), prompt || '', 'utf8'); + fs.chmodSync(path.join(logDir, 'user-prompt.md'), 0o666); fs.writeFileSync(path.join(logDir, 'meta.json'), JSON.stringify({ roleName: roleData.roleName || 'Role', startedAt: new Date().toISOString() }), 'utf8'); + fs.chmodSync(path.join(logDir, 'meta.json'), 0o666); if (trigger) { const triggerLog = JSON.stringify({ ...trigger, ...(payload ? { payload } : {}) }, null, 2); fs.writeFileSync(path.join(logDir, 'trigger.json'), triggerLog, 'utf8'); + fs.chmodSync(path.join(logDir, 'trigger.json'), 0o666); } console.log(`[cluster] Launching role ${roleData.roleName} (${containerName})${payload ? ` payload=${JSON.stringify(payload)}` : ''}`);