fix(javascript): trace nested Electron bridge members (#2745)

* fix(javascript): trace nested Electron bridge members

* fix(javascript): preserve shallow Electron bridge paths

* fix(javascript): preserve exact Electron bridge member paths

* fix(javascript): preserve exact Electron bridge paths

* fix(javascript): preserve bridge entry ownership

* fix(javascript): preserve bridge path identity

* fix(javascript): normalize typed feature seeds before tracing

* test(javascript): normalize direct selector seed inputs

* refactor(javascript): consume normalized feature seed defaults

---------

Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
This commit is contained in:
Avocadoandmorluto authored and GitHub committed 2026-10-13 22:16:44 +08:00
1 parent c9982ad8bf
commit f0b8ae1fc8
14 files changed
+643 -51

No files matched your search

@@ -12,6 +12,8 @@ import type {
} from "./javascriptApplicationGraphSchemas.js";
import {
applicationFeatureTraceResultSchema,
applicationFeatureSeedSchema,
type ApplicationFeatureSeedInput,
type ApplicationFeatureTraceResult,
type TraceApplicationFeatureInput,
} from "./javascriptFeatureTraceSchemas.js";
@@ -30,14 +32,18 @@ export interface ApplicationFeatureTraceProjectionInput {
readonly sourceEvidenceId: string;
readonly graph: JavaScriptApplicationGraph;
readonly nativeEvidence: readonly Evidence[];
readonly seed: TraceApplicationFeatureInput["seed"];
readonly seed: ApplicationFeatureSeedInput;
readonly direction: TraceApplicationFeatureInput["direction"];
}
/** Trace a literal feature through its complete reachable, authority-preserving JAG. */
export const traceApplicationFeature = (
input: ApplicationFeatureTraceProjectionInput,
source: ApplicationFeatureTraceProjectionInput,
): ApplicationFeatureTraceResult => {
const input = {
...source,
seed: applicationFeatureSeedSchema.parse(source.seed),
};
const allSeedMatches = findApplicationFeatureSeeds(
input.graph.nodes,
input.seed,