(tool, ws)
| 1192 | }; |
| 1193 | |
| 1194 | const refreshVisibleFolderForToolResult = (tool, ws) => { |
| 1195 | if (!tool || typeof tool !== 'object') return; |
| 1196 | const result = (tool.result && typeof tool.result === 'object') ? tool.result : null; |
| 1197 | if (!result || !result.ok) return; |
| 1198 | |
| 1199 | const op = String(tool.operation || '').toLowerCase(); |
| 1200 | const mutatingOps = new Set([ |
| 1201 | 'create_file', |
| 1202 | 'create_folder', |
| 1203 | 'delete_files', |
| 1204 | 'copy_files', |
| 1205 | 'move_files', |
| 1206 | 'rename_file', |
| 1207 | 'delete_folder', |
| 1208 | 'move_folder', |
| 1209 | 'move_folders', |
| 1210 | 'save_file_tag' |
| 1211 | ]); |
| 1212 | if (!mutatingOps.has(op)) return; |
| 1213 | |
| 1214 | const activeFolder = getActiveFolder(); |
| 1215 | const activeSourceId = getActiveSourceId(); |
| 1216 | const wsSourceId = normalizeSourceId((ws && typeof ws === 'object') ? ws.sourceId : 'local'); |
| 1217 | if (activeSourceId !== wsSourceId) return; |
| 1218 | |
| 1219 | const isCurrentFolder = (folder) => normalizeFolderPath(folder) === activeFolder; |
| 1220 | let refreshFolder = ''; |
| 1221 | |
| 1222 | if (op === 'create_file' || op === 'delete_files' || op === 'rename_file' || op === 'save_file_tag') { |
| 1223 | if (isCurrentFolder(result.folder || 'root')) { |
| 1224 | refreshFolder = activeFolder; |
| 1225 | } |
| 1226 | } else if (op === 'create_folder') { |
| 1227 | const parent = normalizeFolderPath(result.parent || 'root'); |
| 1228 | if (activeFolder === parent) { |
| 1229 | refreshFolder = activeFolder; |
| 1230 | } |
| 1231 | } else if (op === 'copy_files' || op === 'move_files') { |
| 1232 | const src = normalizeFolderPath(result.source || 'root'); |
| 1233 | const dst = normalizeFolderPath(result.destination || 'root'); |
| 1234 | if (activeFolder === src || activeFolder === dst) { |
| 1235 | refreshFolder = activeFolder; |
| 1236 | } |
| 1237 | } else if (op === 'delete_folder') { |
| 1238 | const deleted = normalizeFolderPath(result.folder || ''); |
| 1239 | if (deleted !== 'root' && (activeFolder === deleted || activeFolder.startsWith(`${deleted}/`))) { |
| 1240 | refreshFolder = parentFolderPath(deleted); |
| 1241 | window.currentFolder = refreshFolder; |
| 1242 | } else if (activeFolder === parentFolderPath(deleted)) { |
| 1243 | refreshFolder = activeFolder; |
| 1244 | } |
| 1245 | } else if (op === 'move_folder' || op === 'move_folders') { |
| 1246 | const source = normalizeFolderPath(result.source || ''); |
| 1247 | const target = normalizeFolderPath(result.target || ''); |
| 1248 | if ( |
| 1249 | source !== 'root' |
| 1250 | && (activeFolder === source || activeFolder.startsWith(`${source}/`)) |
| 1251 | ) { |
no test coverage detected