mirror of
https://github.com/morluto/rea.git
synced 2026-11-13 10:12:50 +00:00
Preserve reported Program PDB identity, explicit omissions and nullable load state, retaining declared CodeView facts when equivalence is unknown. Bound JSON locator expansion and advance PE/workflow replay revisions without discarding historical Evidence. Main already contains the shared canonical workflow collector. Integrate its unknown-PDB repair and fix the CLI fixture for the new artifact-session dependency. No unrelated pcap repair is included. Validation: 309 focused tests across 15 files pass (2 Windows-only skips), runtime build and check:fast/pre-push pass. Real Windows Ghidra 12.1.4 PUBLIC/JDK 21.0.12.1 uses the public where.exe/PDB pair; 17 relevant production files match verified ca24903f. MCP cold/warm normalized results match and the backward graph has 3 successful nodes. Inputs are unchanged and no owned Java/Node processes remain. CLI inspection keeps its earlier exact-source scope. NB10 omission uses regression fixtures, without a real NB10 provider claim. Tests keep 2-core affinity and 512 MiB Node/Java heaps. Retain the 600s analysis and 30s initialization timeout observations alongside the successful test-only extended-budget run; no product-default or cross-revision speedup claim. Fixes #2259
43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { afterEach, expect, it } from "vitest";
|
|
import { createAnalysisExecution } from "../../../src/application/AnalysisProvider.js";
|
|
import { ok } from "../../../src/domain/result.js";
|
|
import { parseEvidence } from "../../../src/domain/evidence.js";
|
|
import { connect, closeEnhancedToolResources } from "./enhancedToolsHarness.js";
|
|
|
|
afterEach(closeEnhancedToolResources);
|
|
|
|
it("retains provider coverage caveats in a composed MCP overview without repeated reads", async () => {
|
|
const calls: string[] = [];
|
|
const limitation = "Companion PDB symbol coverage is unverified.";
|
|
const client = await connect({
|
|
execute: async (operation) => {
|
|
calls.push(operation);
|
|
const value = operation === "current_document" ? "fixture" : [];
|
|
return ok(
|
|
createAnalysisExecution(
|
|
value,
|
|
{ id: "fixture", name: "Fixture", version: "1" },
|
|
{ limitations: [limitation] },
|
|
),
|
|
);
|
|
},
|
|
});
|
|
const response = await client.callTool({
|
|
name: "binary_overview",
|
|
arguments: {},
|
|
});
|
|
expect(response.isError).not.toBe(true);
|
|
const evidence = parseEvidence(response.structuredContent);
|
|
expect(evidence.limitations).toEqual([
|
|
"Artifact identity is unavailable for this observation.",
|
|
"Derived by an REA composed workflow.",
|
|
limitation,
|
|
]);
|
|
expect(evidence.normalized_result).toMatchObject({
|
|
document: "fixture",
|
|
procedure_count: 0,
|
|
string_count: 0,
|
|
});
|
|
expect(calls.length).toBe(new Set(calls).size);
|
|
});
|