From 637831248bf6b336dc1ff5b3e69a216c6194c977 Mon Sep 17 00:00:00 2001 From: Will Miao Date: Mon, 6 Jul 2026 12:18:17 +0800 Subject: [PATCH] fix(agent): route WS error events through onError instead of dead onComplete branch --- .../components/ContextMenu/BulkContextMenu.js | 37 +++++++++++-------- .../components/ContextMenu/LoraContextMenu.js | 29 +++++++++------ 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/static/js/components/ContextMenu/BulkContextMenu.js b/static/js/components/ContextMenu/BulkContextMenu.js index 4b7b8652..c9a04a25 100644 --- a/static/js/components/ContextMenu/BulkContextMenu.js +++ b/static/js/components/ContextMenu/BulkContextMenu.js @@ -391,6 +391,15 @@ export class BulkContextMenu extends BaseContextMenu { `Enriching metadata for ${modelPaths.length} models...` ); + function cleanupCallbacks() { + const pIdx = agentManager.progressCallbacks.indexOf(onProgress); + if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); + const cIdx = agentManager.completeCallbacks.indexOf(onComplete); + if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + const eIdx = agentManager.errorCallbacks.indexOf(onError); + if (eIdx >= 0) agentManager.errorCallbacks.splice(eIdx, 1); + } + const onProgress = (data) => { if (data.status === 'processing' && data.current_path && data.updated_data && Object.keys(data.updated_data).length > 0) { if (state.virtualScroller?.updateSingleItem) { @@ -404,10 +413,7 @@ export class BulkContextMenu extends BaseContextMenu { agentManager.onProgress(onProgress); const onComplete = (data) => { - const pIdx = agentManager.progressCallbacks.indexOf(onProgress); - if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); - const cIdx = agentManager.completeCallbacks.indexOf(onComplete); - if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + cleanupCallbacks(); if (data.status === 'completed') { progressUI.complete(data.summary || 'Enrich complete'); @@ -416,24 +422,25 @@ export class BulkContextMenu extends BaseContextMenu { { summary: data.summary || 'Done' }, 'success' ); - } else if (data.status === 'error') { - state.loadingManager.hide(); - showToast( - 'toast.agent.enrichFailed', - { error: data.error || 'Unknown error' }, - 'error' - ); } }; agentManager.onComplete(onComplete); + const onError = (data) => { + cleanupCallbacks(); + state.loadingManager.hide(); + showToast( + 'toast.agent.enrichFailed', + { error: data.error || 'Unknown error' }, + 'error' + ); + }; + agentManager.onError(onError); + try { await agentManager.executeSkill('enrich_hf_metadata', modelPaths); } catch (error) { - const pIdx = agentManager.progressCallbacks.indexOf(onProgress); - if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); - const cIdx = agentManager.completeCallbacks.indexOf(onComplete); - if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + cleanupCallbacks(); state.loadingManager.hide(); showToast( 'toast.agent.enrichFailed', diff --git a/static/js/components/ContextMenu/LoraContextMenu.js b/static/js/components/ContextMenu/LoraContextMenu.js index cf3632b9..b0ede697 100644 --- a/static/js/components/ContextMenu/LoraContextMenu.js +++ b/static/js/components/ContextMenu/LoraContextMenu.js @@ -99,6 +99,15 @@ export class LoraContextMenu extends BaseContextMenu { 'Enriching metadata with AI...' ); + function cleanupCallbacks() { + const pIdx = agentManager.progressCallbacks.indexOf(onProgress); + if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); + const cIdx = agentManager.completeCallbacks.indexOf(onComplete); + if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + const eIdx = agentManager.errorCallbacks.indexOf(onError); + if (eIdx >= 0) agentManager.errorCallbacks.splice(eIdx, 1); + } + const onProgress = (data) => { if (data.status === 'processing' && data.current_path && data.updated_data && Object.keys(data.updated_data).length > 0) { if (state.virtualScroller?.updateSingleItem) { @@ -112,28 +121,26 @@ export class LoraContextMenu extends BaseContextMenu { agentManager.onProgress(onProgress); const onComplete = (data) => { - const pIdx = agentManager.progressCallbacks.indexOf(onProgress); - if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); - const cIdx = agentManager.completeCallbacks.indexOf(onComplete); - if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + cleanupCallbacks(); if (data.status === 'completed') { progressUI.complete(data.summary || 'Enrich complete'); showToast('toast.agent.enrichComplete', { summary: data.summary || 'Done' }, 'success'); - } else if (data.status === 'error') { - state.loadingManager.hide(); - showToast('toast.agent.enrichFailed', { error: data.error || 'Unknown error' }, 'error'); } }; agentManager.onComplete(onComplete); + const onError = (data) => { + cleanupCallbacks(); + state.loadingManager.hide(); + showToast('toast.agent.enrichFailed', { error: data.error || 'Unknown error' }, 'error'); + }; + agentManager.onError(onError); + try { await agentManager.executeSkill('enrich_hf_metadata', [filePath]); } catch (error) { - const pIdx = agentManager.progressCallbacks.indexOf(onProgress); - if (pIdx >= 0) agentManager.progressCallbacks.splice(pIdx, 1); - const cIdx = agentManager.completeCallbacks.indexOf(onComplete); - if (cIdx >= 0) agentManager.completeCallbacks.splice(cIdx, 1); + cleanupCallbacks(); state.loadingManager.hide(); showToast('toast.agent.enrichFailed', { error: error.message }, 'error'); }