Retain complete authenticated application Evidence when the repeated MCP representation exceeds the default receive frame or Node string limit. Return a typed transport constraint, keep useful followup queries available, and stream full canonical bundles to atomic destinations. Verify complete Notion and Obsidian workflows on Linux and native Windows, full CLI/Evidence parity, and real large Chrome screenshot recovery. Preserve complete success contracts and caller-selected evidence paths. Refs #1065, #1053.
48 lines
2.2 KiB
TypeScript
48 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE } from "../../contracts/javascript/javascriptRuntimeReconciliationExample.js";
|
|
import { parseEvidence } from "../../domain/evidence.js";
|
|
import {
|
|
analyzeJavaScriptApplicationInputSchema,
|
|
javascriptApplicationAnalysisResultSchema,
|
|
} from "../../domain/javascript/javascriptApplicationAnalysis.js";
|
|
import {
|
|
createJavaScriptApplicationEvidence,
|
|
createOwnedJavaScriptApplicationEvidence,
|
|
} from "./JavaScriptApplicationEvidence.js";
|
|
import {
|
|
parseApplicationGraphEvidence,
|
|
rememberOwnedApplicationGraphEvidence,
|
|
} from "./JavaScriptApplicationEvidenceGraph.js";
|
|
|
|
describe("owned application graph Evidence", () => {
|
|
it("reuses the exact authenticated graph and preserves ordinary wire identity", () => {
|
|
const result = javascriptApplicationAnalysisResultSchema.parse(
|
|
JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE.normalized_result,
|
|
);
|
|
const input = analyzeJavaScriptApplicationInputSchema.parse({
|
|
input_path: result.input_path,
|
|
...JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE.parameters,
|
|
});
|
|
const ordinary = createJavaScriptApplicationEvidence(input, result);
|
|
const owned = createOwnedJavaScriptApplicationEvidence(input, result);
|
|
expect(owned.evidence_id).toBe(ordinary.evidence_id);
|
|
expect(JSON.stringify(owned)).toBe(JSON.stringify(ordinary));
|
|
const parsed = parseApplicationGraphEvidence(owned);
|
|
expect(parsed.evidence).toBe(owned);
|
|
expect(parsed.graph).toBe(result.graph);
|
|
expect(parsed.semanticGraph).toBe(result.semantic_graph);
|
|
expect(Object.isFrozen(parsed.graph.nodes)).toBe(true);
|
|
expect(parseApplicationGraphEvidence(owned)).toBe(parsed);
|
|
const wire: unknown = JSON.parse(JSON.stringify(owned));
|
|
expect(parseApplicationGraphEvidence(wire)).toEqual(parsed);
|
|
expect(parseApplicationGraphEvidence(wire).graph).not.toBe(parsed.graph);
|
|
expect(() =>
|
|
rememberOwnedApplicationGraphEvidence(ordinary, result),
|
|
).toThrow("exact validated immutable result");
|
|
const tampered = { ...owned, normalized_result: {} };
|
|
expect(() => parseEvidence(Object.freeze(tampered))).toThrow();
|
|
expect(() => parseApplicationGraphEvidence(tampered)).toThrow();
|
|
});
|
|
});
|