Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/remove-dev-engine-runtime.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@proofkit/cli": patch
---

Remove generated devEngines runtime block and loosen package manager version.
12 changes: 1 addition & 11 deletions packages/cli/src/cli/init.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,11 +137,6 @@ type ProofKitPackageJSON = PackageJson & {
version: string;
onFail: "download";
};
runtime: {
name: "node";
version: string;
onFail: "download";
};
};
engines?: {
node: string;
Expand Down Expand Up @@ -312,12 +307,7 @@ export const runInit = async (name?: string, opts?: CliFlags) => {
pkgJson.devEngines = {
packageManager: {
name: pkgManager,
version: pkgManagerVersion,
onFail: "download",
},
runtime: {
name: "node",
version: NODE_RUNTIME_VERSION,
version: pkgManagerVersion.startsWith("^") ? pkgManagerVersion : `^${pkgManagerVersion}`,
onFail: "download",
},
};
Expand Down
11 changes: 5 additions & 6 deletions packages/cli/src/core/planInit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,7 @@ export function planInit(
? {
packageManager: {
name: request.packageManager,
version: options.packageManagerVersion,
onFail: "download",
},
runtime: {
name: "node",
version: NODE_RUNTIME_VERSION,
version: formatPackageManagerVersionRange(options.packageManagerVersion),
onFail: "download",
},
}
Expand Down Expand Up @@ -232,6 +227,10 @@ export function planInit(
};
}

function formatPackageManagerVersionRange(version: string) {
return version.startsWith("^") ? version : `^${version}`;
}

export function applyPackageJsonMutations(
packageJson: PackageJson,
mutations: InitPlan["packageJson"],
Expand Down
5 changes: 0 additions & 5 deletions packages/cli/src/core/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,6 @@ export interface InitPlan {
version: string;
onFail: "download";
};
runtime: {
name: "node";
version: string;
onFail: "download";
};
};
engines: {
node: string;
Expand Down
12 changes: 2 additions & 10 deletions packages/cli/tests/init-scaffold-contract.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,7 @@ describe("Init scaffold contract tests", () => {
expect(packageJson.devEngines?.packageManager?.name).toBe("pnpm");
expect(packageJson.devEngines?.packageManager?.version).toMatch(packageManagerVersionPattern);
expect(packageJson.devEngines?.packageManager?.onFail).toBe("download");
expect(packageJson.devEngines?.runtime).toEqual({
name: "node",
version: NODE_RUNTIME_VERSION,
onFail: "download",
});
expect(packageJson.devEngines?.runtime).toBeUndefined();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Strengthen the package-manager version contract assertion in this suite.

These updated assertions correctly remove devEngines.runtime, but this contract test still allows non-caret versions via ^\^?\d+\.\d+\.\d+. Tightening to require ^ would better enforce the new scaffold contract end-to-end.

Also applies to: 244-244

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/tests/init-scaffold-contract.test.ts` at line 184, Update the
assertions that validate the scaffolded package-manager runtime version so they
require a leading caret; specifically replace the permissive regex that allowed
an optional caret with one that enforces it (e.g., assert
packageJson.engines?.runtime matches /^\^\d+\.\d+\.\d+$/) and do the same for
the other occurrence that checks packageJson (the one currently asserting via
the permissive /^\^?\d+\.\d+\.\d+$/). Keep the existing check that
packageJson.devEngines?.runtime is undefined.

expect(packageJson.engines?.node).toBe(NODE_RUNTIME_VERSION);
expect(allProofkitDependenciesUseCurrentVersions(packageJson)).toBe(true);
expect(readFileSync(join(browserProjectDir, "CLAUDE.md"), "utf-8")).toBe("@AGENTS.md\n");
Expand Down Expand Up @@ -245,11 +241,7 @@ describe("Init scaffold contract tests", () => {
expect(packageJson.devEngines?.packageManager?.name).toBe("pnpm");
expect(packageJson.devEngines?.packageManager?.version).toMatch(packageManagerVersionPattern);
expect(packageJson.devEngines?.packageManager?.onFail).toBe("download");
expect(packageJson.devEngines?.runtime).toEqual({
name: "node",
version: NODE_RUNTIME_VERSION,
onFail: "download",
});
expect(packageJson.devEngines?.runtime).toBeUndefined();
expect(packageJson.engines?.node).toBe(NODE_RUNTIME_VERSION);
expect(allProofkitDependenciesUseCurrentVersions(packageJson)).toBe(true);
expect(readFileSync(join(webviewerProjectDir, "CLAUDE.md"), "utf-8")).toBe("@AGENTS.md\n");
Expand Down
8 changes: 2 additions & 6 deletions packages/cli/tests/integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,10 @@ describe("integration scaffold generation", () => {
expect(packageJson.packageManager).toBeUndefined();
expect(packageJson.devEngines?.packageManager).toEqual({
name: "pnpm",
version: "11.1.0",
onFail: "download",
});
expect(packageJson.devEngines?.runtime).toEqual({
name: "node",
version: NODE_RUNTIME_VERSION,
version: "^11.1.0",
onFail: "download",
});
expect(packageJson.devEngines?.runtime).toBeUndefined();
expect(packageJson.engines).toEqual({
node: NODE_RUNTIME_VERSION,
});
Expand Down
8 changes: 2 additions & 6 deletions packages/cli/tests/planner.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,10 @@ describe("planInit", () => {
expect(plan.packageJson.name).toBe("demo-app");
expect(plan.packageJson.devEngines?.packageManager).toEqual({
name: "pnpm",
version: "11.0.0",
onFail: "download",
});
expect(plan.packageJson.devEngines?.runtime).toEqual({
name: "node",
version: NODE_RUNTIME_VERSION,
version: "^11.0.0",
onFail: "download",
});
expect(plan.packageJson.devEngines).not.toHaveProperty("runtime");
expect(plan.packageJson.engines).toEqual({
node: NODE_RUNTIME_VERSION,
});
Expand Down
Loading