Files
rea/scripts/lib/real-hopper-function-basics.mjs
T
morluto 4fbc501121 feat(native): add inspection primitives, dispatch traces and approved UI observation (#500)
* fix(hopper): normalize string-backed addresses and update verification

* feat(native): add inspection primitives, dispatch traces and approved UI observation

* test: prioritize real artifact E2E and captured golden regressions

* fix(process): queue observed output before reactive rendering actions

* test: prune redundant cases and strengthen boundary assertions

* fix(cli): route native value tracing through shared workflows

* test: replace synthetic success with real workflows and captured data

* fix(catalog): separate portable metadata from native host availability
2026-10-04 16:02:36 +08:00

67 lines
1.5 KiB
JavaScript

import { requireMcpResult } from "./mcp-verifier-results.mjs";
export const verifyHopperFunctionBasics = async (
client,
options,
procedure,
) => {
const containment = requireMcpResult(
await client.callTool(
{
name: "resolve_containing_procedure",
arguments: { address: procedure },
},
options,
),
"resolve_containing_procedure",
);
if (
containment?.found !== true ||
containment.procedure?.address !== procedure
) {
throw new Error(
"resolve_containing_procedure returned the wrong procedure",
);
}
const references = requireMcpResult(
await client.callTool(
{
name: "procedure_references",
arguments: {
procedure,
direction: "outgoing",
},
},
options,
),
"procedure_references",
);
if (!Array.isArray(references?.references)) {
throw new Error("procedure_references returned an invalid result");
}
const instructions = requireMcpResult(
await client.callTool(
{
name: "read_function_instructions",
arguments: { procedure },
},
options,
),
"read_function_instructions",
);
if (
instructions?.procedure?.address !== procedure ||
!Array.isArray(instructions.instructions) ||
instructions.instructions.length === 0
) {
throw new Error("read_function_instructions returned an invalid result");
}
return {
outgoingReferenceCount: references.references.length,
instructionWindowCount: instructions.instructions.length,
};
};