diff --git a/src/services/worker/agents/ResponseProcessor.ts b/src/services/worker/agents/ResponseProcessor.ts index 78c7cf62..48cf0809 100644 --- a/src/services/worker/agents/ResponseProcessor.ts +++ b/src/services/worker/agents/ResponseProcessor.ts @@ -16,6 +16,8 @@ import { parseObservations, parseSummary, type ParsedObservation, type ParsedSum import { updateCursorContextForProject } from '../../integrations/CursorHooksInstaller.js'; import { updateFolderClaudeMdFiles } from '../../../utils/claude-md-utils.js'; import { getWorkerPort } from '../../../shared/worker-utils.js'; +import { SettingsDefaultsManager } from '../../../shared/SettingsDefaultsManager.js'; +import { USER_SETTINGS_PATH } from '../../../shared/paths.js'; import type { ActiveSession } from '../../worker-types.js'; import type { DatabaseManager } from '../DatabaseManager.js'; import type { SessionManager } from '../SessionManager.js'; @@ -215,21 +217,27 @@ async function syncAndBroadcastObservations( // Update folder CLAUDE.md files for touched folders (fire-and-forget) // This runs per-observation batch to ensure folders are updated as work happens - const allFilePaths: string[] = []; - for (const obs of observations) { - allFilePaths.push(...(obs.files_modified || [])); - allFilePaths.push(...(obs.files_read || [])); - } + // Only runs if CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED is true (default: false) + const settings = SettingsDefaultsManager.loadFromFile(USER_SETTINGS_PATH); + const folderClaudeMdEnabled = settings.CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED === 'true'; - if (allFilePaths.length > 0) { - updateFolderClaudeMdFiles( - allFilePaths, - session.project, - getWorkerPort(), - projectRoot - ).catch(error => { - logger.warn('FOLDER_INDEX', 'CLAUDE.md update failed (non-critical)', { project: session.project }, error as Error); - }); + if (folderClaudeMdEnabled) { + const allFilePaths: string[] = []; + for (const obs of observations) { + allFilePaths.push(...(obs.files_modified || [])); + allFilePaths.push(...(obs.files_read || [])); + } + + if (allFilePaths.length > 0) { + updateFolderClaudeMdFiles( + allFilePaths, + session.project, + getWorkerPort(), + projectRoot + ).catch(error => { + logger.warn('FOLDER_INDEX', 'CLAUDE.md update failed (non-critical)', { project: session.project }, error as Error); + }); + } } } diff --git a/src/shared/SettingsDefaultsManager.ts b/src/shared/SettingsDefaultsManager.ts index a5c8571e..b2c6b524 100644 --- a/src/shared/SettingsDefaultsManager.ts +++ b/src/shared/SettingsDefaultsManager.ts @@ -51,6 +51,7 @@ export interface SettingsDefaults { // Feature Toggles CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: string; CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: string; + CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED: string; } export class SettingsDefaultsManager { @@ -96,6 +97,7 @@ export class SettingsDefaultsManager { // Feature Toggles CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY: 'true', CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE: 'false', + CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED: 'false', }; /**