mirror of
https://github.com/morluto/rea.git
synced 2026-10-27 09:55:46 +00:00
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import {
|
|
createEvidence,
|
|
type Evidence,
|
|
type EvidenceObservation,
|
|
} from "../../domain/evidence.js";
|
|
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. */
|
|
export const createJavaScriptRuntimeReconciliationEvidence = (
|
|
input: ReconcileJavaScriptRuntimeInput,
|
|
result: JavaScriptRuntimeReconciliationResult,
|
|
): Evidence =>
|
|
createEvidence(undefined, JAVASCRIPT_RUNTIME_RECONCILIATION_PROVIDER, {
|
|
predicateType: "rea.javascript-runtime-reconciliation",
|
|
operation: "reconcile_javascript_runtime",
|
|
parameters: parameters(input),
|
|
result: jsonValueSchema.parse(result),
|
|
rawResult: null,
|
|
confidence: "inferred",
|
|
authority: "analyst-inference",
|
|
environment: null,
|
|
limitations: result.limitations,
|
|
evidenceLinks: result.evidence_links,
|
|
});
|
|
|
|
const parameters = (
|
|
input: ReconcileJavaScriptRuntimeInput,
|
|
): EvidenceObservation["parameters"] => ({
|
|
static_layers: input.static_layers.map((layer) => ({
|
|
role: layer.role,
|
|
evidence_id: layer.analysis.evidence_id,
|
|
runtime_mappings: layer.runtime_mappings,
|
|
})),
|
|
runtime_evidence_ids: input.runtime_observations.map(
|
|
({ evidence_id: id }) => id,
|
|
),
|
|
});
|