mirror of
https://github.com/morluto/rea.git
synced 2026-11-14 02:32:54 +00:00
feat(javascript): expose bounded semantic tracing
This commit is contained in:
1 parent
8678b57b5e
commit
508a9ccde9
56 files changed
+2455
-307
No files matched your search
@@ -4,15 +4,18 @@ import {
|
||||
compareApplicationVersionsRequestSchema,
|
||||
compareJavaScriptExportShapesRequestSchema,
|
||||
traceApplicationFeatureRequestSchema,
|
||||
traceJavaScriptSemanticsRequestSchema,
|
||||
type CompareApplicationVersionsRequest,
|
||||
type CompareJavaScriptExportShapesRequest,
|
||||
type TraceApplicationFeatureRequest,
|
||||
type TraceJavaScriptSemanticsRequest,
|
||||
} from "../contracts/applicationWorkflowInputContracts.js";
|
||||
import { AnalysisInputError, type AnalysisError } from "../domain/errors.js";
|
||||
import { projectInputIssues } from "../domain/inputIssueProjection.js";
|
||||
import { compareApplicationVersionsInputSchema } from "../domain/javascriptApplicationVersionComparisonSchemas.js";
|
||||
import { compareJavaScriptExportShapesInputSchema } from "../domain/javascriptExportShapeComparisonSchemas.js";
|
||||
import { traceApplicationFeatureInputSchema } from "../domain/javascriptFeatureTraceSchemas.js";
|
||||
import { traceJavaScriptSemanticsInputSchema } from "../domain/javascriptSemanticTraceSchemas.js";
|
||||
import { err, ok, type Result } from "../domain/result.js";
|
||||
import {
|
||||
resolveEvidenceReferences,
|
||||
@@ -25,6 +28,10 @@ const APPLICATION_GRAPH_IDENTITIES = [
|
||||
operation: "analyze_javascript_application",
|
||||
predicate: "rea.javascript-application-analysis/v1",
|
||||
},
|
||||
{
|
||||
operation: "analyze_javascript_application",
|
||||
predicate: "rea.javascript-application-analysis/v2",
|
||||
},
|
||||
{
|
||||
operation: "reconcile_javascript_runtime",
|
||||
predicate: "rea.javascript-runtime-reconciliation/v1",
|
||||
@@ -36,6 +43,7 @@ const APPLICATION_GRAPH_IDENTITIES = [
|
||||
] as const satisfies readonly EvidenceSemanticIdentity[];
|
||||
|
||||
type TraceInput = z.output<typeof traceApplicationFeatureInputSchema>;
|
||||
type SemanticTraceInput = z.output<typeof traceJavaScriptSemanticsInputSchema>;
|
||||
type ComparisonInput = z.output<typeof compareApplicationVersionsInputSchema>;
|
||||
type ExportShapeComparisonInput = z.output<
|
||||
typeof compareJavaScriptExportShapesInputSchema
|
||||
@@ -86,6 +94,40 @@ export const resolveTraceApplicationFeatureRequestValidated = (
|
||||
: invalid("trace_application_feature", parsed.error, raw);
|
||||
};
|
||||
|
||||
/** Parse and resolve one semantic trace adapter request. */
|
||||
export const resolveTraceJavaScriptSemanticsRequest = (
|
||||
input: unknown,
|
||||
lookup?: EvidenceLookup,
|
||||
): Result<SemanticTraceInput, AnalysisError> => {
|
||||
const parsed = traceJavaScriptSemanticsRequestSchema.safeParse(input);
|
||||
return parsed.success
|
||||
? resolveTraceJavaScriptSemanticsRequestValidated(parsed.data, lookup)
|
||||
: invalid("trace_javascript_semantics", parsed.error, input);
|
||||
};
|
||||
|
||||
/** Resolve a semantic trace request already parsed by its public contract. */
|
||||
export const resolveTraceJavaScriptSemanticsRequestValidated = (
|
||||
input: TraceJavaScriptSemanticsRequest,
|
||||
lookup?: EvidenceLookup,
|
||||
): Result<SemanticTraceInput, AnalysisError> => {
|
||||
const application =
|
||||
input.application === undefined
|
||||
? resolveEvidenceReferences(
|
||||
lookup,
|
||||
input.application_evidence_id === undefined
|
||||
? []
|
||||
: [input.application_evidence_id],
|
||||
APPLICATION_GRAPH_IDENTITIES,
|
||||
)
|
||||
: ok([input.application]);
|
||||
if (!application.ok) return application;
|
||||
const raw = { application: application.value[0], query: input.query };
|
||||
const parsed = traceJavaScriptSemanticsInputSchema.safeParse(raw);
|
||||
return parsed.success
|
||||
? ok(parsed.data)
|
||||
: invalid("trace_javascript_semantics", parsed.error, raw);
|
||||
};
|
||||
|
||||
/** Parse and resolve one comparison adapter request into canonical input. */
|
||||
export const resolveCompareApplicationVersionsRequest = (
|
||||
input: unknown,
|
||||
|
||||
Reference in new issue
Block a user