refactor: centralize input validation and schema interpretation
Migrate twelve application service files to the existing provider input owner, preserving schema causes, cancellation precedence, caller selection, and retained Evidence. Keep flows with distinct error policies separate. Replace the DeepSeek verifier's recursive object scan with schema-position traversal using the canonical keyword and local-reference owners. Literal pattern fields no longer cause false regex failures; patternProperties keys are checked alongside actual pattern constraints in native regex modes. Validation: 271 focused workflow/service tests and six verifier regressions passed; static checks, discovery, and actual Node source-loader smoke passed. The baseline scanner reproduced the new regressions. Installed DeepSeek client execution was not run.
This commit is contained in:
1 parent
8a65787507
commit
6c35d74a7d
15 files changed
+324
-240
No files matched your search
@@ -3,6 +3,7 @@ import {
|
||||
type EvidenceLookup,
|
||||
} from "../EvidenceInputResolver.js";
|
||||
import { retainedEvidenceReferenceSchema } from "../../domain/evidenceReference.js";
|
||||
import { parseProviderOperationInput } from "../ProviderOperationExecution.js";
|
||||
import type { ResolvedSourceToBundleReference } from "./SourceToBundleReference.js";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -121,16 +122,15 @@ export const traceApplicationFeatureEvidence = (
|
||||
AnalysisError
|
||||
> => {
|
||||
const operation = "trace_application_feature";
|
||||
const request = featureTraceFrameSchema.safeParse(rawInput);
|
||||
if (!request.success)
|
||||
return err(
|
||||
analysisInputErrorFromIssues(operation, request.error.issues, rawInput, {
|
||||
cause: request.error,
|
||||
}),
|
||||
);
|
||||
const selected = resolveWorkflowEvidence(request.data.application, lookup);
|
||||
const request = parseProviderOperationInput(
|
||||
operation,
|
||||
rawInput,
|
||||
featureTraceFrameSchema,
|
||||
);
|
||||
if (!request.ok) return request;
|
||||
const selected = resolveWorkflowEvidence(request.value.application, lookup);
|
||||
if (!selected.ok) return selected;
|
||||
const input = { ...request.data, application: selected.value };
|
||||
const input = { ...request.value, application: selected.value };
|
||||
const sourceResult = parseApplicationGraphEvidence(input.application, [
|
||||
"application",
|
||||
]);
|
||||
@@ -187,17 +187,16 @@ export const compareApplicationVersionsEvidence = (
|
||||
AnalysisError
|
||||
> => {
|
||||
const operation = "compare_application_versions";
|
||||
const request = versionComparisonFrameSchema.safeParse(rawInput);
|
||||
if (!request.success)
|
||||
return err(
|
||||
analysisInputErrorFromIssues(operation, request.error.issues, rawInput, {
|
||||
cause: request.error,
|
||||
}),
|
||||
);
|
||||
const pair = resolveApplicationGraphPair(operation, request.data, lookup);
|
||||
const request = parseProviderOperationInput(
|
||||
operation,
|
||||
rawInput,
|
||||
versionComparisonFrameSchema,
|
||||
);
|
||||
if (!request.ok) return request;
|
||||
const pair = resolveApplicationGraphPair(operation, request.value, lookup);
|
||||
if (!pair.ok) return pair;
|
||||
const { left, right } = pair.value;
|
||||
const input = { ...request.data, ...pair.value.selected };
|
||||
const input = { ...request.value, ...pair.value.selected };
|
||||
const leftNativeResult = parseNativeApplicationEvidence(
|
||||
input.left_native_observations,
|
||||
["left_native_observations"],
|
||||
@@ -306,17 +305,16 @@ export const compareJavaScriptExportShapesEvidence = (
|
||||
AnalysisError
|
||||
> => {
|
||||
const operation = "compare_javascript_export_shapes";
|
||||
const request = exportShapeFrameSchema.safeParse(rawInput);
|
||||
if (!request.success)
|
||||
return err(
|
||||
analysisInputErrorFromIssues(operation, request.error.issues, rawInput, {
|
||||
cause: request.error,
|
||||
}),
|
||||
);
|
||||
const pair = resolveApplicationGraphPair(operation, request.data, lookup);
|
||||
const request = parseProviderOperationInput(
|
||||
operation,
|
||||
rawInput,
|
||||
exportShapeFrameSchema,
|
||||
);
|
||||
if (!request.ok) return request;
|
||||
const pair = resolveApplicationGraphPair(operation, request.value, lookup);
|
||||
if (!pair.ok) return pair;
|
||||
const { left, right } = pair.value;
|
||||
const input = { ...request.data, ...pair.value.selected };
|
||||
const input = { ...request.value, ...pair.value.selected };
|
||||
const identities = javaScriptExportShapeIdentitiesSchema.safeParse({
|
||||
left: left.evidence,
|
||||
right: right.evidence,
|
||||
|
||||
Reference in new issue
Block a user