From a6fdf426bd98c8cf7b7a7f589208d3193784062f Mon Sep 17 00:00:00 2001 From: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com> Date: Fri, 9 Oct 2026 09:26:18 +0000 Subject: [PATCH] fix(native): name the plist selection that works when Info.plist is missing inspect_plist on a target without a readable default Contents/Info.plist (for example a bare Mach-O) reported the generic "This analysis is unavailable for the current target. Choose another analysis or target." as message and remediation. The specific reason, including "Pass path to inspect another plist", appeared only in details.reason, although selecting another plist in the same target is the available workflow. Pass that reason as the refusal's user message. Co-Authored-By: Claude Opus 5.5 --- src/native/NativeMacOSProvider.ts | 5 ++++- tests/boundary/cli/nativePlistSelectionFailureCli.test.ts | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/native/NativeMacOSProvider.ts b/src/native/NativeMacOSProvider.ts index c358f2d2c..a0b499f19 100644 --- a/src/native/NativeMacOSProvider.ts +++ b/src/native/NativeMacOSProvider.ts @@ -819,11 +819,14 @@ const unreadablePlist = ( reason: string, ): AnalysisError => { const sentence = reason.endsWith(".") ? reason : `${reason}.`; + // Name the default that is missing and the selection that still works. + const missingDefault = `The target has no readable Contents/Info.plist at ${path}: ${sentence} Pass path to inspect another plist.`; return requested === undefined ? new AnalysisCapabilityUnavailableError( IDENTITY.id, "inspect_plist", - `The target has no readable Contents/Info.plist at ${path}: ${sentence} Pass path to inspect another plist.`, + missingDefault, + { userMessage: missingDefault }, ) : new AnalysisInputError("inspect_plist", undefined, [ { diff --git a/tests/boundary/cli/nativePlistSelectionFailureCli.test.ts b/tests/boundary/cli/nativePlistSelectionFailureCli.test.ts index df3733d51..642f1011e 100644 --- a/tests/boundary/cli/nativePlistSelectionFailureCli.test.ts +++ b/tests/boundary/cli/nativePlistSelectionFailureCli.test.ts @@ -113,6 +113,14 @@ describe.skipIf(process.platform !== "darwin")( expect(result.exitCode).toBe(1); expect(result.json).toMatchObject({ code: "capability_unavailable", + message: expect.stringContaining( + "Pass path to inspect another plist", + ), + remediation: { + action: expect.stringContaining( + "Pass path to inspect another plist", + ), + }, details: { operation: "inspect_plist", reason: expect.stringContaining(