refactor(javascript): group domain semantics and contracts (#907)

This commit is contained in:
ysopwnable authored and GitHub committed 2026-10-07 17:16:58 +08:00
1 parent d5f28fb29c
commit f6a58f1062
253 files changed
+432 -410

No files matched your search

@@ -0,0 +1,53 @@
import { classifyStaticLoadStates } from "./javascriptRuntimeLoadState.js";
import { buildReconciledApplicationGraph } from "./javascriptRuntimeReconciliationGraph.js";
import { reconcileRuntimeEntities } from "./javascriptRuntimeReconciliationMatching.js";
import {
parseRuntimeCaptures,
parseStaticLayers,
} from "./javascriptRuntimeReconciliationParsing.js";
import { createJavaScriptRuntimeReconciliationResult } from "./javascriptRuntimeReconciliationResult.js";
import type { JavaScriptRuntimeReconciliationResult } from "./javascriptRuntimeReconciliationSchemas.js";
import { reconcileJavaScriptRuntimeInputSchema } from "./javascriptRuntimeReconciliationSchemas.js";
import { projectRuntimeCaptures } from "./javascriptRuntimeReconciliationRuntime.js";
import { collectStaticRuntimeCandidates } from "./javascriptRuntimeStaticCandidates.js";
/** Reconcile static JAG layers with authorized passive CDP Evidence. */
export const reconcileJavaScriptRuntime = (
input: unknown,
): JavaScriptRuntimeReconciliationResult => {
const parsed = reconcileJavaScriptRuntimeInputSchema.parse(input);
const layers = parseStaticLayers(parsed.static_layers);
const captures = parseRuntimeCaptures(parsed.runtime_observations);
const runtime = projectRuntimeCaptures(captures);
const candidates = collectStaticRuntimeCandidates(layers);
const matching = reconcileRuntimeEntities({
entities: runtime.entities,
candidates,
layers,
});
const loadStates = classifyStaticLoadStates(
layers,
runtime.entities,
matching.items,
{
reconciliationComplete:
runtime.omittedEntities === 0 && matching.omittedItems === 0,
},
);
const graph = buildReconciledApplicationGraph({
layers,
captures,
runtime,
reconciliationEdges: matching.edges,
omittedReconciliationItems: matching.omittedItems,
});
return createJavaScriptRuntimeReconciliationResult({
layers,
captures,
runtime,
matching,
loadStates,
graph: graph.graph,
omittedGraphItems: graph.omittedGraphItems,
});
};