diff --git a/apps/server/src/services/agent-service.ts b/apps/server/src/services/agent-service.ts index 102e6241..77dbb98c 100644 --- a/apps/server/src/services/agent-service.ts +++ b/apps/server/src/services/agent-service.ts @@ -76,7 +76,6 @@ export class AgentService { private metadataFile: string; private events: EventEmitter; private settingsService: SettingsService | null = null; - private agentSystemPrompt: string | null = null; constructor(dataDir: string, events: EventEmitter, settingsService?: SettingsService) { this.stateDir = path.join(dataDir, 'agent-sessions'); @@ -784,12 +783,9 @@ export class AgentService { } private async getSystemPrompt(): Promise { - // Load from settings if not already cached - if (!this.agentSystemPrompt) { - const prompts = await getPromptCustomization(this.settingsService, '[AgentService]'); - this.agentSystemPrompt = prompts.agent.systemPrompt; - } - return this.agentSystemPrompt; + // Load from settings (no caching - allows hot reload of custom prompts) + const prompts = await getPromptCustomization(this.settingsService, '[AgentService]'); + return prompts.agent.systemPrompt; } private generateId(): string { diff --git a/apps/server/src/services/auto-mode-service.ts b/apps/server/src/services/auto-mode-service.ts index a7414541..91723cfa 100644 --- a/apps/server/src/services/auto-mode-service.ts +++ b/apps/server/src/services/auto-mode-service.ts @@ -200,7 +200,6 @@ export class AutoModeService { private config: AutoModeConfig | null = null; private pendingApprovals = new Map(); private settingsService: SettingsService | null = null; - private planningPrompts: Record | null = null; constructor(events: EventEmitter, settingsService?: SettingsService) { this.events = events; @@ -1602,23 +1601,6 @@ Format your response as a structured markdown document.`; return firstLine.substring(0, 57) + '...'; } - /** - * Load planning prompts from settings - */ - private async loadPlanningPrompts(): Promise { - if (this.planningPrompts) { - return; // Already loaded - } - - const prompts = await getPromptCustomization(this.settingsService, '[AutoMode]'); - this.planningPrompts = { - lite: prompts.autoMode.planningLite, - lite_with_approval: prompts.autoMode.planningLiteWithApproval, - spec: prompts.autoMode.planningSpec, - full: prompts.autoMode.planningFull, - }; - } - /** * Get the planning prompt prefix based on feature's planning mode */ @@ -1629,8 +1611,14 @@ Format your response as a structured markdown document.`; return ''; // No planning phase } - // Load prompts if not already loaded - await this.loadPlanningPrompts(); + // Load prompts from settings (no caching - allows hot reload of custom prompts) + const prompts = await getPromptCustomization(this.settingsService, '[AutoMode]'); + const planningPrompts = { + lite: prompts.autoMode.planningLite, + lite_with_approval: prompts.autoMode.planningLiteWithApproval, + spec: prompts.autoMode.planningSpec, + full: prompts.autoMode.planningFull, + }; // For lite mode, use the approval variant if requirePlanApproval is true let promptKey: string = mode; @@ -1638,7 +1626,7 @@ Format your response as a structured markdown document.`; promptKey = 'lite_with_approval'; } - const planningPrompt = this.planningPrompts![promptKey]; + const planningPrompt = planningPrompts[promptKey]; if (!planningPrompt) { return ''; }