diff --git a/src/workspaces/context-injector.spec.ts b/src/workspaces/context-injector.spec.ts index 52e42f118..f86578f49 100644 --- a/src/workspaces/context-injector.spec.ts +++ b/src/workspaces/context-injector.spec.ts @@ -14,7 +14,7 @@ import { fileURLToPath } from 'node:url'; import { afterEach, beforeEach, describe, expect, it } from 'vitest'; -import { defaultPath } from '@/core/paths.js'; +import { dataPath, defaultPath } from '@/core/paths.js'; import { injectWorkspaceContext } from './context-injector.js'; import type { TemplateMeta } from './template-registry.js'; @@ -74,10 +74,15 @@ describe('injectWorkspaceContext — MCP', () => { }); describe('injectWorkspaceContext — persona', () => { - it('composes persona + separator + template CLAUDE.md into CLAUDE.md and AGENTS.md', async () => { - const persona = await readFile(defaultPath('persona.default.md'), 'utf8'); - const templateMd = await readFile(join(CHAT_FILES, 'CLAUDE.md'), 'utf8'); - const expected = `${persona}\n\n---\n\n${templateMd}`; + it('composes persona + separator + template instruction into CLAUDE.md and AGENTS.md', async () => { + // Mirror the injector's persona precedence: a live data/brain/persona.md + // override wins over the shipped default. + const personaPath = existsSync(dataPath('brain', 'persona.md')) + ? dataPath('brain', 'persona.md') + : defaultPath('persona.default.md'); + const persona = await readFile(personaPath, 'utf8'); + const instruction = await readFile(join(CHAT_FILES, 'instruction.md'), 'utf8'); + const expected = `${persona}\n\n---\n\n${instruction}`; await injectWorkspaceContext({ template: makeTemplate({ injectPersona: true, filesDir: CHAT_FILES }), diff --git a/src/workspaces/context-injector.ts b/src/workspaces/context-injector.ts index 23138732f..de7f55778 100644 --- a/src/workspaces/context-injector.ts +++ b/src/workspaces/context-injector.ts @@ -52,13 +52,16 @@ export async function injectWorkspaceContext(opts: { } if (template.injectPersona) { - // Compose `persona + "\n\n---\n\n" +