mirror of
https://github.com/morluto/rea.git
synced 2026-11-11 01:13:39 +00:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { digestCanonicalValue } from "../../domain/canonicalDigest.js";
|
|
import type { ProviderIdentity } from "../AnalysisProvider.js";
|
|
import type { Evidence, EvidenceObservation } from "../../domain/evidence.js";
|
|
import { createEvidence } from "../../domain/evidence.js";
|
|
import type {
|
|
ElectronActiveObservationInput,
|
|
ElectronActiveObservationResult,
|
|
} from "../../domain/javascript/electronActiveObservation.js";
|
|
import { jsonObjectSchema } from "../../domain/jsonValue.js";
|
|
import type { CanonicalElectronActiveObservationInput } from "./ElectronActiveObservationPort.js";
|
|
|
|
/** Commit the selected Electron experiment and its observed result. */
|
|
export const createElectronActiveEvidence = (
|
|
input: ElectronActiveObservationInput,
|
|
result: ElectronActiveObservationResult,
|
|
provider: ProviderIdentity,
|
|
resolvedInput?: CanonicalElectronActiveObservationInput,
|
|
): Evidence =>
|
|
createEvidence(undefined, provider, {
|
|
predicateType: "rea.electron-active-scenario",
|
|
operation: "capture_electron_scenario",
|
|
parameters: parameters(input, resolvedInput),
|
|
result,
|
|
confidence: "observed",
|
|
authority: "controlled-replay",
|
|
environment: {
|
|
id: `${result.application.electron_version}@unknown`,
|
|
platform: "unknown",
|
|
architecture: "unknown",
|
|
isolation: "none",
|
|
},
|
|
limitations: [
|
|
...result.limitations,
|
|
"Application host platform and architecture were not observed.",
|
|
],
|
|
});
|
|
|
|
const parameters = (
|
|
input: ElectronActiveObservationInput,
|
|
resolvedInput?: CanonicalElectronActiveObservationInput,
|
|
): EvidenceObservation["parameters"] => {
|
|
const scenario = jsonObjectSchema.parse(input);
|
|
return {
|
|
...scenario,
|
|
scenario_sha256: digestCanonicalValue(scenario, "Electron scenario"),
|
|
...(resolvedInput === undefined
|
|
? {}
|
|
: {
|
|
resolved_paths: {
|
|
executable_path: resolvedInput.executable_path,
|
|
application_path: resolvedInput.application_path,
|
|
application_root: resolvedInput.application_root,
|
|
},
|
|
}),
|
|
};
|
|
};
|