* feat(native): add UI and dispatch investigation workflows * feat(ghidra): support macOS host validation * docs: update native investigation capabilities * feat(artifacts): decode compiled Interface Builder archives * feat(ghidra): expose bounded p-code value flow * test(ghidra): split host and cross-format verification * fix(verify): follow complete result contracts * refactor: remove unused authorization and schema helpers * refactor: remove unused evidence result alias * fix(ghidra): report jump-table evidence precisely * fix(verify): align browser scenario fixture schema * fix(setup): compare parsed client config structurally * test(ghidra): verify AArch64 jump-table mappings * fix(ghidra): recover AArch64 byte jump tables * test(artifacts): verify compiled interface builder archives * feat(native): trace UI actions through handlers * fix(tests): update native trace and shutdown fixtures * fix(verification): diagnose browser scenario failures * fix(browser): wrap scenario snapshots in capture state * fix(native): bind and bound investigation workflows * fix(artifacts): preserve bounded interface builder evidence * fix(ghidra): enforce admitted hosts and preflight tools * fix(native): preserve trace cancellation and bounds * test(application): expect bound analysis target evidence * fix(native): preserve investigation bounds and cancellation * fix(application): preserve bundle and unresolved trace evidence * style(test): format artifact subject fixture
37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
import { json, run } from "./lib/verify-package-core.mjs";
|
|
|
|
/** Verify packaged capabilities, providers, and non-Linux search results. */
|
|
export async function verifyPackageCapabilitiesAndSearch({ cli, environment }) {
|
|
const capabilities = json(
|
|
await run(cli, ["capabilities", "--json"], environment),
|
|
);
|
|
if (!Array.isArray(capabilities.capabilities))
|
|
throw new Error("packaged capabilities CLI failed");
|
|
const providers = json(await run(cli, ["providers", "--json"], environment));
|
|
if (
|
|
!Array.isArray(providers.providers) ||
|
|
providers.providers.some(({ id }) => typeof id !== "string") ||
|
|
providers.analysis_provider_binding !== null ||
|
|
providers.analysis_provider_candidates?.find(
|
|
({ provider }) => provider?.id === "hopper",
|
|
)?.target_support?.status !== "unknown"
|
|
)
|
|
throw new Error("packaged providers CLI failed");
|
|
if (process.platform !== "linux") {
|
|
const searchResult = json(
|
|
await run(
|
|
cli,
|
|
["search", process.execPath, "fixture", "--json"],
|
|
environment,
|
|
),
|
|
);
|
|
if (
|
|
searchResult.operation !== "search_strings" ||
|
|
!Array.isArray(searchResult.normalized_result)
|
|
)
|
|
throw new Error(
|
|
`packaged search CLI failed: ${JSON.stringify(searchResult)}`,
|
|
);
|
|
}
|
|
}
|