mirror of
https://github.com/morluto/rea
synced 2026-10-27 06:33:32 -04:00
refactor(javascript): own runtime reconciliation failures
Return expected source and semantic failures from the runtime input owner as tagged Results. Bind source schema validation to concrete schemas, preserve nested active-capture paths, and let unexpected interpretation and derivation failures reach the adapter boundary. Remove broad protocol-error wrappers, duplicate active identity validation, and redundant JSON result parsing. Migrate parsed-fact consumers and retain CLI/MCP contracts. Relevant source and public-boundary tests pass; six injected implementation-fault controls fail on the prior revision. Live Electron behavior was not exercised.
This commit is contained in:
@@ -7,7 +7,6 @@ import type {
|
||||
JavaScriptRuntimeReconciliationResult,
|
||||
ReconcileJavaScriptRuntimeInput,
|
||||
} from "../../domain/javascript/javascriptRuntimeReconciliationSchemas.js";
|
||||
import { jsonValueSchema } from "../../domain/jsonValue.js";
|
||||
import { JAVASCRIPT_RUNTIME_RECONCILIATION_PROVIDER } from "../InvestigationProviders.js";
|
||||
|
||||
/** Create derived Evidence for one exact set of static/runtime inputs. */
|
||||
@@ -19,7 +18,7 @@ export const createJavaScriptRuntimeReconciliationEvidence = (
|
||||
predicateType: "rea.javascript-runtime-reconciliation",
|
||||
operation: "reconcile_javascript_runtime",
|
||||
parameters: parameters(input),
|
||||
result: jsonValueSchema.parse(result),
|
||||
result,
|
||||
rawResult: null,
|
||||
confidence: "inferred",
|
||||
authority: "analyst-inference",
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
import { resolve } from "node:path";
|
||||
import { z } from "zod";
|
||||
|
||||
import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js";
|
||||
import type { AnalysisError } from "../../domain/analysisErrorBase.js";
|
||||
import type { Evidence } from "../../domain/evidence.js";
|
||||
import { analysisInputErrorFromIssues } from "../../domain/inputIssueProjection.js";
|
||||
import {
|
||||
parseRuntimeReconciliationInput,
|
||||
readRuntimeReconciliationInput,
|
||||
reconcileJavaScriptRuntime,
|
||||
type ParsedRuntimeReconciliationInput,
|
||||
} from "../../domain/javascript/javascriptRuntimeReconciliation.js";
|
||||
import { reconcileJavaScriptRuntimeInputSchema } from "../../domain/javascript/javascriptRuntimeReconciliationSchemas.js";
|
||||
import { err, ok, type Result } from "../../domain/result.js";
|
||||
@@ -32,37 +30,14 @@ export const reconcileJavaScriptRuntimeEvidence = (
|
||||
export const reconcileJavaScriptRuntimeEvidenceValidated = (
|
||||
parsedInput: z.output<typeof reconcileJavaScriptRuntimeInputSchema>,
|
||||
): Result<Evidence, AnalysisError> => {
|
||||
let parsed: ParsedRuntimeReconciliationInput;
|
||||
try {
|
||||
parsed = parseRuntimeReconciliationInput(
|
||||
normalizeRuntimeMappingRoots(parsedInput),
|
||||
);
|
||||
} catch (cause: unknown) {
|
||||
if (cause instanceof z.ZodError)
|
||||
return err(
|
||||
analysisInputErrorFromIssues(OPERATION, cause.issues, parsedInput),
|
||||
);
|
||||
return err(
|
||||
new AnalysisProtocolError(
|
||||
"JavaScript runtime reconciliation input parsing failed",
|
||||
{ cause },
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
const result = reconcileJavaScriptRuntime(parsed);
|
||||
return ok(
|
||||
createJavaScriptRuntimeReconciliationEvidence(parsed.input, result),
|
||||
);
|
||||
} catch (cause: unknown) {
|
||||
return err(
|
||||
new AnalysisProtocolError(
|
||||
"JavaScript runtime reconciliation produced an invalid result",
|
||||
{ cause },
|
||||
),
|
||||
);
|
||||
}
|
||||
const parsed = readRuntimeReconciliationInput(
|
||||
normalizeRuntimeMappingRoots(parsedInput),
|
||||
);
|
||||
if (!parsed.ok) return parsed;
|
||||
const result = reconcileJavaScriptRuntime(parsed.value);
|
||||
return ok(
|
||||
createJavaScriptRuntimeReconciliationEvidence(parsed.value.input, result),
|
||||
);
|
||||
};
|
||||
|
||||
const normalizeRuntimeMappingRoots = (
|
||||
|
||||
Reference in New Issue
Block a user