derive cli contract version expectations

This commit is contained in:
Alvin Unreal 2026-05-11 21:17:43 +02:00
parent 930ba5adcf
commit ce767ea05a

View file

@ -7,6 +7,8 @@ import { tmpdir } from "node:os";
import { assertSafeProjectHookPath, cliPackageName, configureProject, createClaudeMcpAddJsonArgs, createLocalDevCliCommand, createVersionPinnedCliCommand, installProjectLocalHooks, parseConfigureArgs, parseInstallArgs, parseReactArgs, parseSayArgs, resolveConfiguredPet, runClaudeMcpAddJson } from "./index.js";
const packageVersion = (JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")) as { readonly version: string }).version;
const parsed = parseConfigureArgs(["--agent", "claude", "--pet", "fixer", "--cwd", "/tmp/project", "--yes"]);
assert.equal(parsed.agent, "claude");
assert.equal(parsed.petId, "fixer");
@ -130,9 +132,9 @@ try {
const opencodeConfigPath = join(opencodeProject, ".opencode", "opencode.jsonc");
const opencodeInstructionPath = join(opencodeProject, ".opencode", "openpets.md");
const opencodeConfig = JSON.parse(readFileSync(opencodeConfigPath, "utf8")) as { readonly mcp?: Record<string, { readonly command?: readonly string[] }>; readonly instructions?: readonly string[]; readonly plugin?: readonly unknown[] };
assert.deepEqual(opencodeConfig.mcp?.openpets?.command, ["npx", "-y", "@open-pets/cli@2.0.4", "mcp", "--pet", "fixer"]);
assert.deepEqual(opencodeConfig.mcp?.openpets?.command, ["npx", "-y", `@open-pets/cli@${packageVersion}`, "mcp", "--pet", "fixer"]);
assert.deepEqual(opencodeConfig.instructions, [".opencode/openpets.md"]);
assert.deepEqual(opencodeConfig.plugin, [["@open-pets/opencode@2.0.4", { pet: "fixer" }]]);
assert.deepEqual(opencodeConfig.plugin, [[`@open-pets/opencode@${packageVersion}`, { pet: "fixer" }]]);
assert.match(readFileSync(opencodeInstructionPath, "utf8"), /OPENPETS:START/);
await configureProject({ agent: "opencode", petId: "fixer", cwd: opencodeProject, yes: true, force: false, localDev: false });
const opencodeConfigAgain = readFileSync(opencodeConfigPath, "utf8");
@ -158,7 +160,7 @@ try {
const lowerTop = readFileSync(join(lowerOwnerProject, "opencode.json"), "utf8");
const lowerOwned = JSON.parse(readFileSync(join(lowerOwnerProject, ".opencode", "opencode.jsonc"), "utf8")) as { readonly mcp?: Record<string, { readonly command?: readonly string[] }> };
assert.equal(lowerTop.includes("@open-pets/cli"), false);
assert.deepEqual(lowerOwned.mcp?.openpets?.command, ["npx", "-y", "@open-pets/cli@2.0.4", "mcp", "--pet", "fixer"]);
assert.deepEqual(lowerOwned.mcp?.openpets?.command, ["npx", "-y", `@open-pets/cli@${packageVersion}`, "mcp", "--pet", "fixer"]);
const customProject = join(dir, "opencode-custom");
mkdirSync(customProject);