Merge branch 'fix/mcp-error-schema-delivery' into fix/ghidra-session-root-stability

This commit is contained in:
N0zoM1z0 committed 2026-10-09 13:42:28 +00:00
commit 2060a6d7f3
4 files changed
+16 -8

No files matched your search

@@ -7,6 +7,7 @@ import { expect, it } from "vitest";
import { WEB_NETWORK_CAPTURE_LIMITS } from "../../../src/domain/webNetworkCapture.js";
import { connectLocalToolsMcp } from "../../fixtures/localToolsMcp.js";
import { parseMcpToolError } from "../../fixtures/mcpToolError.js";
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
const execute = promisify(execFile);
@@ -56,7 +57,7 @@ it("reports real HAR heap exhaustion through CLI and MCP and preserves server us
sensitive_values: ["caller-marked"],
});
expect(response.isError).toBe(true);
expect(response.structuredContent).toMatchObject({
expect(parseMcpToolError(response)).toMatchObject({
error: {
code: "resource_constraint",
retryable: false,
@@ -110,7 +111,7 @@ it("reports real HAR heap exhaustion through CLI and MCP and preserves server us
capture_path: path,
format: "har",
});
expect(oversized.structuredContent).toMatchObject({
expect(parseMcpToolError(oversized)).toMatchObject({
error: { code: "invalid_request" },
});
}, 60_000);
@@ -6,6 +6,7 @@ import { expect, it, onTestFinished } from "vitest";
import { toolContract } from "../../../src/contracts/toolContracts.js";
import { connectLocalToolsMcp } from "../../fixtures/localToolsMcp.js";
import { parseMcpToolError } from "../../fixtures/mcpToolError.js";
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
it("observes a real Node Inspector and releases attachments after cancellation and failures", async () => {
@@ -62,7 +63,7 @@ it("observes a real Node Inspector and releases attachments after cancellation a
target_id: "../missing-target",
});
expect(missing.isError).toBe(true);
expect(missing.structuredContent).toMatchObject({
expect(parseMcpToolError(missing)).toMatchObject({
error: {
code: "target_unavailable",
message: expect.stringContaining("Refresh target discovery"),
@@ -114,7 +115,7 @@ it("observes a real Node Inspector and releases attachments after cancellation a
inspector_endpoint: endpoint,
});
expect(unreachable.isError).toBe(true);
expect(unreachable.structuredContent).toMatchObject({
expect(parseMcpToolError(unreachable)).toMatchObject({
error: {
code: "provider_unavailable",
message: expect.stringContaining(
@@ -9,6 +9,7 @@ import { toolContract } from "../../../src/contracts/toolContracts.js";
import { parseEvidence } from "../../../src/domain/evidence.js";
import { itWithCaptureCapability as captureTest } from "../../boundary/process/processCaptureCapability.js";
import { connectLocalToolsMcp } from "../../fixtures/localToolsMcp.js";
import { parseMcpToolError } from "../../fixtures/mcpToolError.js";
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
const execute = promisify(execFile);
@@ -180,7 +181,7 @@ captureTest(
const failed = await call("capture_process_scenario", {
executable: missing,
});
expect(failed.structuredContent).toMatchObject({
expect(parseMcpToolError(failed)).toMatchObject({
error: {
code: "process_capture_failed",
message: expect.stringContaining(missing),
@@ -9,6 +9,7 @@ import { ok } from "../../src/domain/result.js";
import { run } from "../../src/main.js";
import { createServer } from "../../src/server/createServer.js";
import type { EvidenceMcpServer } from "../../src/server/EvidenceMcpServer.js";
import { parseMcpToolError } from "../fixtures/mcpToolError.js";
const resources: Array<{ close(): Promise<void> }> = [];
afterEach(async () => {
@@ -89,8 +90,10 @@ it("keeps independent server budgets for successful results and oversized errors
}),
),
);
if (smallResult === undefined || largeResult === undefined)
throw new Error("Missing result from selected-budget server");
expect(smallResult?.isError).toBe(true);
expect(smallResult?.structuredContent).toMatchObject({
expect(parseMcpToolError(smallResult)).toMatchObject({
error: {
code: "resource_constraint",
details: {
@@ -110,7 +113,9 @@ it("keeps independent server budgets for successful results and oversized errors
client.callTool({ name: "selected_failure", arguments: {} }),
),
);
expect(smallFailure?.structuredContent).toMatchObject({
if (smallFailure === undefined || largeFailure === undefined)
throw new Error("Missing failure from selected-budget server");
expect(parseMcpToolError(smallFailure)).toMatchObject({
error: {
code: "resource_constraint",
details: {
@@ -122,7 +127,7 @@ it("keeps independent server budgets for successful results and oversized errors
},
},
});
expect(largeFailure?.structuredContent).toMatchObject({
expect(parseMcpToolError(largeFailure)).toMatchObject({
error: {
code: "invalid_request",
details: { issues: [{ message: diagnostic }] },