Files
reverse-engineering-anything/src/application/evm/EvmInterfaceService.test.ts
T
2947a77507 fix(engines): keep format ceilings fixed and recover the EVMole deadline (#6088)
* fix(engines): keep format ceilings fixed and recover the EVMole deadline

Promote the owned EVMole worker wall clock to timeout_ms and name it in
recovery. Fixed CPU, byte, and address-space refusals in this theme say
the adjustable deadline does not raise them.

Refs #5910

Co-authored-by: morluto <morluto@users.noreply.github.com>

* fix(engines): recover the allowance that refused the request

Model capacity recovery follows a structured limit instead of message text,
and the shared header ceiling no longer names Safetensors. Firmware signal
errors keep captured tool output, oversized reports do not suggest an
intermittent rerun, and NativeAOT hydration budget exhaustion explains the
fixed parser allowance on the partial report.

Co-authored-by: morluto <morluto@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: morluto <morluto@users.noreply.github.com>
2026-10-22 03:06:59 +08:00

199 lines
6.1 KiB
TypeScript

import { expect, it } from "vitest";
import { EvmInterfaceService } from "./EvmInterfaceService.js";
import type { EvmInterfaceExecution } from "./EvmInterfacePort.js";
import {
evmInterfaceExecution,
evmInterfaceFixture,
} from "../../../tests/fixtures/evm/interface.js";
import { err, ok } from "../../domain/result.js";
import {
AnalysisCancelledError,
AnalysisCapabilityUnavailableError,
AnalysisOutputError,
} from "../../domain/analysisErrorCore.js";
import { parseEvidence } from "../../domain/evidence.js";
it.each([
{ path: "relative.hex", encoding: "hex" },
{ path: "/selected", encoding: "auto" },
{ path: "/selected" },
{ path: "/selected", encoding: "raw", approval: true },
{ path: "/selected", encoding: "hex", timeout_ms: 0 },
{ path: "/selected", encoding: "hex", timeout_ms: 2_147_483_648 },
])("rejects invalid selection before effects: %j", async (input) => {
const service = new EvmInterfaceService({
inspect: () => {
throw new Error("must not start");
},
});
expect(await service.inspect(input)).toMatchObject({
ok: false,
error: { _tag: "AnalysisInputError" },
});
});
it.each(["carrier", "encoding", "digest", "no-subject"])(
"rejects mismatched producer binding: %s",
async (problem) => {
const value = evmInterfaceFixture();
if (problem === "carrier") value.artifact.path = "/other";
if (problem === "encoding") value.artifact.encoding = "raw";
const observed = evmInterfaceExecution(value);
const execution = {
...observed,
subject:
problem === "no-subject"
? null
: {
path: "/artifacts/source-owned.hex",
sha256:
problem === "digest" ? "b".repeat(64) : value.artifact.sha256,
format: "file" as const,
},
};
const service = new EvmInterfaceService({
inspect: () =>
Promise.resolve(ok(execution as unknown as EvmInterfaceExecution)),
});
expect(
await service.inspect({
path: "/artifacts/source-owned.hex",
encoding: "hex",
}),
).toMatchObject({
ok: false,
error: { _tag: "AnalysisOutputError", capturedOutput: value.diagnostics },
});
},
);
it("preserves meaningful provider failure and cancellation before/after execution", async () => {
const failure = new AnalysisCapabilityUnavailableError(
"evm",
"inspect_evm_interface",
"Selected limiter missing",
);
const service = new EvmInterfaceService({
inspect: () => Promise.resolve(err(failure)),
});
expect(await service.inspect({ path: "/code", encoding: "raw" })).toEqual(
err(failure),
);
const controller = new AbortController();
const observed = evmInterfaceFixture();
observed.diagnostics = {
stdout: "selected\u0000",
stderr: "warning",
truncated: true,
};
const cancelled = new EvmInterfaceService({
inspect: () => {
controller.abort();
return Promise.resolve(ok(evmInterfaceExecution(observed)));
},
});
const late = await cancelled.inspect(
{ path: "/artifacts/source-owned.hex", encoding: "hex" },
{ signal: controller.signal },
);
expect(late).toMatchObject({
ok: false,
error: {
_tag: "AnalysisCancelledError",
capturedOutput: observed.diagnostics,
partialObservation: {
operation: "inspect_evm_interface",
normalized_result: observed,
},
},
});
if (!late.ok) {
expect(late.error).toBeInstanceOf(AnalysisCancelledError);
expect(parseEvidence(late.error.partialObservation)).toMatchObject({
operation: "inspect_evm_interface",
normalized_result: observed,
});
}
const untouched = new EvmInterfaceService({
inspect: () => {
throw new Error("must not start");
},
});
expect(
await untouched.inspect(
{ path: "/code", encoding: "raw" },
{ signal: controller.signal },
),
).toMatchObject({ ok: false, error: { _tag: "AnalysisCancelledError" } });
});
it("keeps malformed interface output ahead of a late cancellation", async () => {
const controller = new AbortController();
const malformed = evmInterfaceFixture();
malformed.artifact.path = "/artifacts/other.hex";
const result = await new EvmInterfaceService({
inspect: () => {
controller.abort();
return Promise.resolve(ok(evmInterfaceExecution(malformed)));
},
}).inspect(
{ path: "/artifacts/source-owned.hex", encoding: "hex" },
{ signal: controller.signal },
);
expect(result.ok).toBe(false);
if (!result.ok) expect(result.error).toBeInstanceOf(AnalysisOutputError);
});
it("keeps an omitted timeout at the default and records a selected one", async () => {
const value = evmInterfaceFixture();
let seen: unknown;
const service = new EvmInterfaceService({
inspect: (input) => {
seen = input;
return Promise.resolve(ok(evmInterfaceExecution(value)));
},
});
const omitted = await service.inspect({
path: value.artifact.path,
encoding: "hex",
});
expect(seen).toEqual({ path: value.artifact.path, encoding: "hex" });
expect(omitted.ok).toBe(true);
if (omitted.ok)
expect(parseEvidence(omitted.value).parameters).not.toHaveProperty(
"timeout_ms",
);
const selected = await service.inspect({
path: value.artifact.path,
encoding: "hex",
timeout_ms: 45_000,
});
expect(seen).toEqual({
path: value.artifact.path,
encoding: "hex",
timeout_ms: 45_000,
});
expect(selected.ok).toBe(true);
if (selected.ok)
expect(parseEvidence(selected.value).parameters).toMatchObject({
timeout_ms: 45_000,
});
});
it.each([null, "caller stopped", { requested: "stop" }])(
"preserves the exact admission reason without invoking the provider: %j",
async (reason) => {
const controller = new AbortController();
controller.abort(reason);
const service = new EvmInterfaceService({
inspect: () => {
throw new Error("must not start");
},
});
const result = await service.inspect(
{ path: "/selected.hex", encoding: "hex" },
{ signal: controller.signal },
);
if (result.ok) throw new Error("Expected cancellation");
expect(result.error.cause).toBe(reason);
},
);