diff --git a/src/contracts/javascript/electronToolContracts.ts b/src/contracts/javascript/electronToolContracts.ts index 6a6a19cb2b..e276fa87ce 100644 --- a/src/contracts/javascript/electronToolContracts.ts +++ b/src/contracts/javascript/electronToolContracts.ts @@ -1,4 +1,5 @@ import { z } from "zod"; +import { absoluteLocalPathStringSchema } from "../../domain/localPath.js"; import type { ToolContract } from "../toolContractTypes.js"; import { toolContractMetadata } from "../toolEffects.js"; import { electronFuseOutputSchemas } from "../toolOutputSchemaGroups.js"; @@ -35,13 +36,19 @@ import { JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE } from "./javascriptRuntimeRe const listOutputSchema = evidenceResultOf(electronTargetListSchema); const inspectionOutputSchema = evidenceResultOf(electronPageInspectionSchema); +const javascriptApplicationMcpInputSchema = + analyzeJavaScriptApplicationInputSchema.extend({ + input_path: absoluteLocalPathStringSchema.describe( + "Absolute path to the JavaScript application on the machine running REA.", + ), + }); /** Caller-selected delivery of a completed JavaScript application analysis. */ export const analyzeJavaScriptApplicationRequestSchema = z .discriminatedUnion("detail", [ - analyzeJavaScriptApplicationInputSchema.extend( + javascriptApplicationMcpInputSchema.extend( javaScriptRoutesCompleteDeliveryShape, ), - analyzeJavaScriptApplicationInputSchema.extend( + javascriptApplicationMcpInputSchema.extend( javaScriptRoutesSummaryDeliveryShape, ), ]) diff --git a/tests/boundary/mcp/absoluteLocalPathSchema.test.ts b/tests/boundary/mcp/absoluteLocalPathSchema.test.ts index d0a1489886..cbff37d2c4 100644 --- a/tests/boundary/mcp/absoluteLocalPathSchema.test.ts +++ b/tests/boundary/mcp/absoluteLocalPathSchema.test.ts @@ -106,6 +106,12 @@ const inputCases = ( return [ pathCase("open_binary", "path", { path: absolute }, { path: relative }), + pathCase( + "analyze_javascript_application", + "input_path", + { input_path: absolute, detail: "complete" }, + { input_path: relative, detail: "complete" }, + ), pathCase( "open_binary", "snapshot_path",