Files
rea/src/application/JavaScriptRuntimeReconciliationService.ts
T
morluto ee1cd40405 feat(mcp)!: harden contracts and evidence references
BREAKING CHANGE: comparison tools now require session-owned Evidence IDs or approved bundle paths, and structured Evidence results use compact references.
2026-07-16 19:49:58 +08:00

46 lines
1.6 KiB
TypeScript

import { z } from "zod";
import {
AnalysisInputError,
AnalysisProtocolError,
type AnalysisError,
} from "../domain/errors.js";
import type { Evidence } from "../domain/evidence.js";
import { projectInputIssues } from "../domain/inputIssueProjection.js";
import { reconcileJavaScriptRuntime } from "../domain/javascriptRuntimeReconciliation.js";
import { reconcileJavaScriptRuntimeInputSchema } from "../domain/javascriptRuntimeReconciliationSchemas.js";
import { err, ok, type Result } from "../domain/result.js";
import { createJavaScriptRuntimeReconciliationEvidence } from "./JavaScriptRuntimeReconciliationEvidence.js";
const OPERATION = "reconcile_javascript_runtime" as const;
/** Derive a combined JAG from verified static and passive-runtime Evidence. */
export const reconcileJavaScriptRuntimeEvidence = (
rawInput: unknown,
): Result<Evidence, AnalysisError> => {
const parsed = reconcileJavaScriptRuntimeInputSchema.safeParse(rawInput);
if (!parsed.success)
return err(
new AnalysisInputError(
OPERATION,
undefined,
projectInputIssues(parsed.error.issues, rawInput),
),
);
try {
const result = reconcileJavaScriptRuntime(parsed.data);
return ok(
createJavaScriptRuntimeReconciliationEvidence(parsed.data, result),
);
} catch (cause: unknown) {
return err(
cause instanceof z.ZodError || cause instanceof TypeError
? new AnalysisInputError(OPERATION)
: new AnalysisProtocolError(
"JavaScript runtime reconciliation produced an invalid result",
{ cause },
),
);
}
};