mirror of
https://github.com/morluto/rea
synced 2026-10-25 22:08:11 -04:00
test(apple): match plist provenance to the selected workflow
This commit is contained in:
@@ -6,6 +6,7 @@ import { toolContract } from "../../../dist/contracts/toolContracts.js";
|
||||
import {
|
||||
artifactCliEvidence,
|
||||
withArtifactMcp,
|
||||
withBundleResourcesMcp,
|
||||
} from "../../lib/artifact-e2e.mjs";
|
||||
|
||||
/** Inspect the compiled bundle with real native utilities through both adapters. */
|
||||
@@ -16,15 +17,79 @@ export async function verifyNativeProvenance(app, executable) {
|
||||
const operations = [
|
||||
["inspect_macho", []],
|
||||
["inspect_signature", []],
|
||||
["inspect_plist", []],
|
||||
["list_architectures", []],
|
||||
["demangle_swift", symbols],
|
||||
];
|
||||
const observations = [];
|
||||
const resourcePlistCli = toolContract("inspect_plist").outputSchema.parse(
|
||||
await artifactCliEvidence("inspect-plist", app),
|
||||
);
|
||||
assert.equal(resourcePlistCli.subject, null);
|
||||
assert.equal(resourcePlistCli.raw_result, null);
|
||||
await withBundleResourcesMcp(app, async (client) => {
|
||||
const response = await client.callTool({
|
||||
name: "inspect_plist",
|
||||
arguments: {},
|
||||
});
|
||||
assert.notEqual(response.isError, true, JSON.stringify(response));
|
||||
const mcp = toolContract("inspect_plist").outputSchema.parse(
|
||||
response.structuredContent,
|
||||
);
|
||||
assert.equal(mcp.subject, null);
|
||||
assert.equal(mcp.raw_result, null);
|
||||
assert.deepEqual(mcp.normalized_result, resourcePlistCli.normalized_result);
|
||||
assert.deepEqual(
|
||||
JSON.parse(response.content.find((item) => item.type === "text").text),
|
||||
response.structuredContent,
|
||||
);
|
||||
await client.ping();
|
||||
observations.push({
|
||||
operation: "inspect_plist_resource_root",
|
||||
commands: resourcePlistCli.normalized_result.provenance.length,
|
||||
cli_bytes: Buffer.byteLength(JSON.stringify(resourcePlistCli)),
|
||||
mcp_bytes: Buffer.byteLength(JSON.stringify(response)),
|
||||
});
|
||||
});
|
||||
|
||||
const binaryPlistCli = toolContract("inspect_plist").outputSchema.parse(
|
||||
await artifactCliEvidence("inspect-plist", executable),
|
||||
);
|
||||
assert.equal(binaryPlistCli.subject?.digest.sha256, sha256);
|
||||
assert.equal(binaryPlistCli.raw_result, null);
|
||||
assert.equal(binaryPlistCli.normalized_result.resource_root, undefined);
|
||||
await withArtifactMcp(app, async (client) => {
|
||||
const definitions = new Map(
|
||||
(await client.listTools()).tools.map((tool) => [tool.name, tool]),
|
||||
);
|
||||
const plistResponse = await client.callTool(
|
||||
{ name: "inspect_plist", arguments: {} },
|
||||
{ toolDefinition: definitions.get("inspect_plist") },
|
||||
);
|
||||
assert.notEqual(plistResponse.isError, true, JSON.stringify(plistResponse));
|
||||
const binaryPlistMcp = toolContract("inspect_plist").outputSchema.parse(
|
||||
plistResponse.structuredContent,
|
||||
);
|
||||
assert.equal(binaryPlistMcp.subject?.digest.sha256, sha256);
|
||||
assert.equal(binaryPlistMcp.raw_result, null);
|
||||
assert.equal(binaryPlistMcp.normalized_result.resource_root, undefined);
|
||||
assert.deepEqual(
|
||||
binaryPlistMcp.normalized_result,
|
||||
binaryPlistCli.normalized_result,
|
||||
);
|
||||
assert.deepEqual(
|
||||
JSON.parse(
|
||||
plistResponse.content.find((item) => item.type === "text").text,
|
||||
),
|
||||
plistResponse.structuredContent,
|
||||
);
|
||||
await client.ping();
|
||||
observations.push({
|
||||
operation: "inspect_plist_binary_bound",
|
||||
commands: binaryPlistCli.normalized_result.provenance.length,
|
||||
cli_bytes: Buffer.byteLength(JSON.stringify(binaryPlistCli)),
|
||||
mcp_bytes: Buffer.byteLength(JSON.stringify(plistResponse)),
|
||||
});
|
||||
|
||||
for (const [operation, arguments_] of operations) {
|
||||
const cli = toolContract(operation).outputSchema.parse(
|
||||
await artifactCliEvidence(
|
||||
|
||||
Reference in New Issue
Block a user