Read source digests, FAT tables and embedded headers from one opened source stream before translating native offsets. Preserve native mapping observations through changed, missing, nonregular and access-denied source failures; keep filesystem work outside the Hopper API thread. Exercise source drift, relocated slices, missing files, permissions and recovery through real Hopper CLI/MCP verification for thin, FAT32 and FAT64 inputs.
23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { z } from "zod";
|
|
import { address, document } from "./toolContractHelpers.js";
|
|
|
|
/** Hopper memory and file-mapping contracts. */
|
|
export const HOPPER_MEMORY_TOOL_DEFINITIONS = [
|
|
{
|
|
name: "read_bytes",
|
|
description:
|
|
"Read analyzed bytes from one provider-normalized virtual address. The hexadecimal payload reports the exact returned length; incomplete reads remain explicit and unsupported provider APIs return typed capability unavailability.",
|
|
inputSchema: z.object({
|
|
address,
|
|
length: z.number().int().min(1).default(256),
|
|
document,
|
|
}),
|
|
},
|
|
{
|
|
name: "address_to_file_offset",
|
|
description:
|
|
"Map one provider-normalized virtual address to its original nonnegative file offset. Hopper verifies the original bytes against the selected executable digest and translates FAT image-relative offsets using the loaded header. Results preserve the provider coordinate, image base, and source path. Unmapped addresses fail explicitly; changed or unavailable sources return typed errors retaining native mapping facts as partial evidence.",
|
|
inputSchema: z.object({ address, document }),
|
|
},
|
|
] as const;
|