fix: create CLAUDE.md from template when registering groups via IPC
The registerGroup() function in index.ts creates the group folder and logs subdirectory but never copies the global CLAUDE.md template. Agents in newly registered groups start without identity or instructions until the container is manually fixed. Copy groups/global/CLAUDE.md into the new group folder on registration, substituting the assistant name if it differs from the default. Closes #1391
This commit is contained in:
20
src/index.ts
20
src/index.ts
@@ -5,6 +5,7 @@ import { OneCLI } from '@onecli-sh/sdk';
|
||||
|
||||
import {
|
||||
ASSISTANT_NAME,
|
||||
GROUPS_DIR,
|
||||
IDLE_TIMEOUT,
|
||||
ONECLI_URL,
|
||||
POLL_INTERVAL,
|
||||
@@ -133,6 +134,25 @@ function registerGroup(jid: string, group: RegisteredGroup): void {
|
||||
// Create group folder
|
||||
fs.mkdirSync(path.join(groupDir, 'logs'), { recursive: true });
|
||||
|
||||
// Copy CLAUDE.md template into the new group folder so agents have
|
||||
// identity and instructions from the first run. (Fixes #1391)
|
||||
const groupMdFile = path.join(groupDir, 'CLAUDE.md');
|
||||
if (!fs.existsSync(groupMdFile)) {
|
||||
const templateFile = path.join(GROUPS_DIR, 'global', 'CLAUDE.md');
|
||||
if (fs.existsSync(templateFile)) {
|
||||
let content = fs.readFileSync(templateFile, 'utf-8');
|
||||
if (ASSISTANT_NAME !== 'Andy') {
|
||||
content = content.replace(/^# Andy$/m, `# ${ASSISTANT_NAME}`);
|
||||
content = content.replace(
|
||||
/You are Andy/g,
|
||||
`You are ${ASSISTANT_NAME}`,
|
||||
);
|
||||
}
|
||||
fs.writeFileSync(groupMdFile, content);
|
||||
logger.info({ folder: group.folder }, 'Created CLAUDE.md from template');
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure a corresponding OneCLI agent exists (best-effort, non-blocking)
|
||||
ensureOneCLIAgent(jid, group);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user