diff --git a/packages/server/src/services/generation/prose-guardian-settings.ts b/packages/server/src/services/generation/prose-guardian-settings.ts index 161a1dac4b..d1a8be680f 100644 --- a/packages/server/src/services/generation/prose-guardian-settings.ts +++ b/packages/server/src/services/generation/prose-guardian-settings.ts @@ -135,7 +135,40 @@ function getRewritePromptLabel(agentType: string): string { function buildMergedRewritePrompt(agents: ResolvedAgent[]): string { const agentBlocks = agents.flatMap((agent) => { const label = getRewritePromptLabel(agent.type); - return [`<${label}>`, `Agent: ${agent.name}`, agent.promptTemplate, ``, ``]; + const parts = [`<${label}>`, `Agent: ${agent.name}`]; + + // Include promptTemplate if non-empty + if (agent.promptTemplate) { + parts.push(agent.promptTemplate); + } + + // For prose-guardian, include settings-based rules (banned, avoid, prefer) + if (agent.type === "prose-guardian") { + const settings = agent.settings as Record; + const rules: string[] = []; + + const banned = typeof settings.banned === "string" ? settings.banned : null; + if (banned) { + rules.push(`BANNED WORDS/PHRASES: ${banned}`); + } + + const avoid = typeof settings.avoid === "string" ? settings.avoid : null; + if (avoid) { + rules.push(`AVOID: ${avoid}`); + } + + const prefer = typeof settings.prefer === "string" ? settings.prefer : null; + if (prefer) { + rules.push(`PREFER: ${prefer}`); + } + + if (rules.length > 0) { + parts.push(rules.join("\n")); + } + } + + parts.push(``, ``); + return parts; }); return [