From d8948efb81bdbe5f6bc76221f421ad9b25e3fcc0 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Thu, 22 Oct 2026 08:40:36 +0800 Subject: [PATCH] refactor(mcp): bind Electron provider failures at registration --- src/server/registerElectronTools.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/server/registerElectronTools.ts b/src/server/registerElectronTools.ts index f5e6778054..2fd5a6d036 100644 --- a/src/server/registerElectronTools.ts +++ b/src/server/registerElectronTools.ts @@ -78,6 +78,7 @@ export const registerElectronTools = ( runElectronTool( registration, listContract, + options.observationLoadFailure, { input, context }, (parsed, { signal }) => listElectronTargets(options.electron, parsed, { @@ -92,6 +93,7 @@ export const registerElectronTools = ( runElectronTool( registration, inspectContract, + options.observationLoadFailure, { input, context }, (parsed, { signal, progress }) => inspectElectronPage(options.electron, parsed, { @@ -107,6 +109,7 @@ export const registerElectronTools = ( runElectronTool( registration, analyzeContract, + undefined, { input, context }, async ({ detail, ...request }, { signal, progress }) => { const analyzed = await analyzeJavaScriptApplicationValidated( @@ -127,6 +130,7 @@ export const registerElectronTools = ( runElectronTool( registration, reconcileContract, + undefined, { input, context }, (parsed) => Promise.resolve(reconcileJavaScriptRuntimeEvidenceValidated(parsed)), @@ -139,6 +143,7 @@ export const registerElectronTools = ( runElectronTool( registration, activeContract, + options.activeLoadFailure, { input, context }, (parsed, { signal, progress }) => captureElectronScenario(options.electronActive, parsed, { @@ -174,6 +179,7 @@ const runElectronTool = async ( readonly server: EvidenceMcpServer; }, contract: ToolContract, + loadFailure: OptionalProviderLoadFailure | undefined, request: { readonly input: Input; readonly context: ServerContext; @@ -184,16 +190,9 @@ const runElectronTool = async ( ) => Promise>, ) => { const { input, context } = request; - const failure = - contract.name === "capture_electron_scenario" - ? options.activeLoadFailure - : contract.name === "list_electron_targets" || - contract.name === "inspect_electron_page" - ? options.observationLoadFailure - : undefined; - if (failure !== undefined) + if (loadFailure !== undefined) return options.delivery.toCallToolResult( - err(optionalProviderUnavailable(failure, contract.name)), + err(optionalProviderUnavailable(loadFailure, contract.name)), contract, ); return runAdmittedToolOperation(