* fix(hopper): report unavailable procedure body coverage * refactor!: simplify runtime tools and remove replay engines Keep direct inspection, capture, and comparison tools. Bind handlers to named contracts and let agents compose experiments with commands and local fixture servers. BREAKING CHANGE: Remove controlled replay, Node characterization, finite replay-machine, managed runtime planning, and redundant string-tracing tools. Retire process replay, shims, reactive scenarios, custom checkpoints, and active browser replay and origin-scope inputs.
126 lines
4.9 KiB
JavaScript
126 lines
4.9 KiB
JavaScript
import { mkdtemp, rm } from "node:fs/promises";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
|
|
import { TOOL_CONTRACTS } from "../dist/contracts/toolContracts.js";
|
|
import { PRODUCT_IDENTITY } from "../dist/identity.js";
|
|
import { MCP_STARTUP_POLICY } from "../dist/mcpStartupPolicy.js";
|
|
import * as prompts from "./verify-package-prompts.mjs";
|
|
import { verifyPackageArtifactAndElectron } from "./verify-package-artifact.mjs";
|
|
import { verifyPackageCapabilitiesAndSearch } from "./verify-package-capabilities.mjs";
|
|
import { verifyPackageDiscovery } from "./verify-package-discovery.mjs";
|
|
import { verifyPackageEnvironment } from "./verify-package-environment.mjs";
|
|
import { verifyPackageEvidence } from "./verify-package-evidence.mjs";
|
|
import { verifyPackageInstall } from "./verify-package-install.mjs";
|
|
import { verifyPackageMcp } from "./verify-package-mcp.mjs";
|
|
import { verifyPackagePack } from "./verify-package-pack.mjs";
|
|
import { verifyPackagePlatform } from "./verify-package-platform.mjs";
|
|
import { verifyPackageSetup } from "./verify-package-setup.mjs";
|
|
import { verifyManaged } from "./verify-package-managed.mjs";
|
|
import { verifyUnknownProvider } from "./verify-package-unknown-provider.mjs";
|
|
import { completeVerifierRun, createVerifierRun } from "./lib/verifier-run.mjs";
|
|
import {
|
|
measureMcpStartup,
|
|
profileMcpModuleLoading,
|
|
} from "./lib/mcp-startup-probe.mjs";
|
|
|
|
const root = process.cwd();
|
|
const verifierRun = createVerifierRun();
|
|
const workspace = await mkdtemp(join(tmpdir(), "rea-package-"));
|
|
const evidenceRoot = join(workspace, "evidence");
|
|
const referenceRoot = join(workspace, "reference-source");
|
|
let tarball;
|
|
let mcpStartup;
|
|
let mcpModuleLoading;
|
|
|
|
try {
|
|
({ tarball } = await verifyPackagePack({ root, workspace }));
|
|
const environmentData = await verifyPackageEnvironment({
|
|
root,
|
|
workspace,
|
|
evidenceRoot,
|
|
referenceRoot,
|
|
});
|
|
const { cli, packageRunnerCli } = await verifyPackageInstall({
|
|
root,
|
|
tarball,
|
|
prefix: environmentData.prefix,
|
|
workspace,
|
|
environment: environmentData.environment,
|
|
});
|
|
mcpStartup = await measureMcpStartup({
|
|
command: cli,
|
|
args: ["mcp"],
|
|
environment: {
|
|
...environmentData.environment,
|
|
},
|
|
policy: MCP_STARTUP_POLICY,
|
|
});
|
|
mcpModuleLoading = await profileMcpModuleLoading({
|
|
command: cli,
|
|
args: ["mcp"],
|
|
environment: {
|
|
...environmentData.environment,
|
|
},
|
|
policy: MCP_STARTUP_POLICY,
|
|
packageName: PRODUCT_IDENTITY.packageName,
|
|
});
|
|
const { supportedSetupHost } = await verifyPackageDiscovery({
|
|
cli,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyPackageArtifactAndElectron({
|
|
cli,
|
|
workspace,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyManaged({
|
|
cli,
|
|
workspace,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyUnknownProvider({
|
|
cli,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyPackagePlatform({
|
|
cli,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyPackageCapabilitiesAndSearch({
|
|
cli,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyPackageEvidence({
|
|
cli,
|
|
evidenceRoot,
|
|
referenceRoot,
|
|
environment: environmentData.environment,
|
|
});
|
|
await verifyPackageSetup({
|
|
cli,
|
|
packageRunnerCli,
|
|
environment: environmentData.environment,
|
|
home: environmentData.home,
|
|
npxLog: environmentData.npxLog,
|
|
claudeConfig: environmentData.claudeConfig,
|
|
codexConfig: environmentData.codexConfig,
|
|
cursorConfig: environmentData.cursorConfig,
|
|
codexTarget: environmentData.codexTarget,
|
|
cursorTarget: environmentData.cursorTarget,
|
|
supportedSetupHost,
|
|
root,
|
|
});
|
|
await verifyPackageMcp({
|
|
cli,
|
|
environment: environmentData.environment,
|
|
evidenceRoot,
|
|
});
|
|
process.stdout.write(
|
|
`${JSON.stringify({ verifier_run: await completeVerifierRun(verifierRun), cli: true, analysisCli: true, artifactCli: true, managedCli: true, managedReconstructionCli: true, managedNativeVerificationCli: true, managedApplicationGraphCli: true, evidenceCli: true, incurMcpCommand: PRODUCT_IDENTITY.mcpCommand, lifecycleScriptsRequired: false, doctor: "platform-appropriate", setup: supportedSetupHost ? "planned-then-idempotent" : "unsupported-host-rejected", setupPlanReadOnly: supportedSetupHost, existingHopperPreserved: supportedSetupHost, clients: supportedSetupHost ? 3 : 0, backupReadback: supportedSetupHost, failureRecovery: supportedSetupHost, configSymlinkLifecycle: supportedSetupHost, skill: supportedSetupHost, skillReferences: supportedSetupHost, mcpTools: TOOL_CONTRACTS.length, mcpPrompts: prompts.names.length, promptCompletion: true, promptCompletionLifecycle: true, evidenceMcp: true, targetFree: true, targetLifecycle: true, boundedRegexBridge: true, mcpStartup, mcpModuleLoading })}\n`,
|
|
);
|
|
} finally {
|
|
if (tarball) await rm(join(root, tarball), { force: true });
|
|
await rm(workspace, { recursive: true, force: true });
|
|
}
|