diff --git a/src/server/registerArtifactTools.ts b/src/server/registerArtifactTools.ts index c0455af7bd..7b6a8656db 100644 --- a/src/server/registerArtifactTools.ts +++ b/src/server/registerArtifactTools.ts @@ -4,10 +4,7 @@ import { } from "../domain/immutableJson.js"; import type { EvidenceMcpServer } from "./EvidenceMcpServer.js"; -import { - ARTIFACT_TOOL_CONTRACTS, - artifactInspectionInputSchema, -} from "../contracts/artifactToolContracts.js"; +import { ARTIFACT_TOOL_CONTRACTS } from "../contracts/artifactToolContracts.js"; import { createArtifactExtractionDestination } from "../application/artifacts/ArtifactExtractionDestination.js"; import { registerEvidenceTools } from "./registerEvidenceTools.js"; import { artifactInspectionResultSchema } from "../domain/artifactInspection.js"; @@ -22,6 +19,7 @@ const SUMMARY_DELIVERY: ReadonlySet = new Set([ "inspect_artifact", "decode_interface_builder", ]); +const executionWithoutDelivery = withoutDeliveryDetail(SUMMARY_DELIVERY); /** inspect_artifact keeps an explicit detail in its Evidence parameters. */ const decodeWithoutDelivery = withoutDeliveryDetail( new Set(["decode_interface_builder"]), @@ -35,16 +33,10 @@ export const registerArtifactTools = ( registerEvidenceTools(server, ARTIFACT_TOOL_CONTRACTS, { ...options, ...retainedSummaryDelivery(SUMMARY_DELIVERY, options), - parametersForExecution: (operation, parameters) => { - if (operation === "inspect_artifact") { - const { detail: _detail, ...execution } = - artifactInspectionInputSchema.parse(parameters); - return execution; - } - return operation === "extract_artifact" + parametersForExecution: (operation, parameters) => + operation === "extract_artifact" ? { ...parameters, output_root: createArtifactExtractionDestination() } - : decodeWithoutDelivery(operation, parameters); - }, + : executionWithoutDelivery(operation, parameters), parametersForEvidence: decodeWithoutDelivery, sourceEvidence: (operation, result) => { if (operation !== "inspect_artifact") return []; diff --git a/src/server/registerEvidenceTools.ts b/src/server/registerEvidenceTools.ts index 6d87921842..cf1f71cf2d 100644 --- a/src/server/registerEvidenceTools.ts +++ b/src/server/registerEvidenceTools.ts @@ -61,10 +61,8 @@ export const registerEvidenceTools = ( contract.name, toolRegistrationOptions(contract), async (input, context) => { - const ready = options.preflight?.( - contract.name, - jsonObjectSchema.parse(input), - ); + const parameters = jsonObjectSchema.parse(input); + const ready = options.preflight?.(contract.name, parameters); if (ready !== undefined && !ready.ok) return server.delivery.toCallToolResult(ready, contract); const admitted = await options.withAdmittedAnalysis( @@ -81,7 +79,6 @@ export const registerEvidenceTools = ( total: 1, message: "started", }); - const parameters = jsonObjectSchema.parse(input); const executionParameters = options.parametersForExecution?.(contract.name, parameters) ?? parameters;