mirror of
https://github.com/morluto/rea.git
synced 2026-10-26 17:35:11 +00:00
refactor(mcp): reuse parsed Evidence tool parameters
This commit is contained in:
1 parent
23def04096
commit
19520d0008
2 files changed
+7
-18
No files matched your search
@@ -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<string> = 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 [];
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user