Deliver complete Evidence directly through MCP with required nullable analysis profiles and immutable per-server delivery settings. Bind selected environments at construction and require typed cleanup outcomes with retained retry ownership. Remove test-only routing, duplicate session and snapshot metadata, producer-field repairs, and ambiguous provider arguments. Separate artifact byte identity from occurrence classification and retain typed source-map and partial native facts across CLI, MCP, and verifier consumers. BREAKING CHANGE: obsolete Evidence envelopes, session aliases, incomplete snapshots, and missing normalized producer facts are no longer accepted.
17 lines
757 B
TypeScript
17 lines
757 B
TypeScript
/** Snapshot caller-selected variables using Node child-process key semantics. */
|
|
export const snapshotEnvironment = (
|
|
environment: Readonly<NodeJS.ProcessEnv>,
|
|
platform: NodeJS.Platform = process.platform,
|
|
): Readonly<NodeJS.ProcessEnv> => {
|
|
if (platform !== "win32") return Object.freeze({ ...environment });
|
|
const snapshot: NodeJS.ProcessEnv = {};
|
|
// Node sorts keys lexicographically and forwards the first case-insensitive
|
|
// match on Windows. Canonical keys also make subsequent lookups deterministic.
|
|
for (const key of Object.keys(environment).sort()) {
|
|
const canonicalKey = key.toUpperCase();
|
|
if (!Object.hasOwn(snapshot, canonicalKey))
|
|
snapshot[canonicalKey] = environment[key];
|
|
}
|
|
return Object.freeze(snapshot);
|
|
};
|