(directory: string, conflicts: ConflictResult["conflicts"])
| 109 | } |
| 110 | |
| 111 | export function fixConflicts(directory: string, conflicts: ConflictResult["conflicts"]): string[] { |
| 112 | const actions: string[] = []; |
| 113 | let updatedCompaction = false; |
| 114 | let removedDcpPlugin = false; |
| 115 | let disabledOmoHooks = false; |
| 116 | |
| 117 | if (conflicts.compactionAuto || conflicts.compactionPrune || conflicts.dcpPlugin) { |
| 118 | for (const configPath of collectOpenCodeConfigPaths(directory)) { |
| 119 | const config = readConfig(configPath); |
| 120 | if (!config) { |
| 121 | continue; |
| 122 | } |
| 123 | |
| 124 | let changed = false; |
| 125 | |
| 126 | if (conflicts.compactionAuto || conflicts.compactionPrune) { |
| 127 | const compaction = isRecord(config.compaction) ? config.compaction : {}; |
| 128 | |
| 129 | if (compaction.auto !== false) { |
| 130 | compaction.auto = false; |
| 131 | changed = true; |
| 132 | updatedCompaction = true; |
| 133 | } |
| 134 | |
| 135 | if (compaction.prune !== false) { |
| 136 | compaction.prune = false; |
| 137 | changed = true; |
| 138 | updatedCompaction = true; |
| 139 | } |
| 140 | |
| 141 | config.compaction = compaction; |
| 142 | } |
| 143 | |
| 144 | if (conflicts.dcpPlugin) { |
| 145 | const plugins = Array.isArray(config.plugin) ? config.plugin : []; |
| 146 | const filtered = filterDcpPluginEntries(plugins); |
| 147 | |
| 148 | if (filtered.removed) { |
| 149 | config.plugin = filtered.plugins; |
| 150 | changed = true; |
| 151 | removedDcpPlugin = true; |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | if (changed) { |
| 156 | writeConfig(configPath, config); |
| 157 | } |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | if ( |
| 162 | conflicts.omoContextWindowMonitor || |
| 163 | conflicts.omoPreemptiveCompaction || |
| 164 | conflicts.omoAnthropicRecovery |
| 165 | ) { |
| 166 | const hooksToDisable = new Set<string>(); |
| 167 | if (conflicts.omoContextWindowMonitor) { |
| 168 | hooksToDisable.add("context-window-monitor"); |
no test coverage detected