From 80aa837d467c1fecc5ff3e3ff8df3c1d0d0e3f77 Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 07:33:56 +0200 Subject: [PATCH 1/8] build(cli): pin the Composer 0.26.0 preview from pkg.pr.new Composer 0.26.0 moves its configuration into the composer section of prisma.config.ts and drops the prisma-composer binary. Until it is on the registry, both manifests pin the preview of prisma/composer#331. The preview's composer-cli depends on @prisma/composer by URL, which pnpm refuses in subdependencies unless blockExoticSubdeps is off. Both go back to 0.26.0 before this merges. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/package.json | 4 +- packages/prisma/package.json | 2 +- pnpm-lock.yaml | 76 +++++++++++++++++++++++++++--------- pnpm-workspace.yaml | 3 ++ 4 files changed, 63 insertions(+), 22 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index ba369232..08473029 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -50,7 +50,7 @@ "dependencies": { "@manypkg/tools": "^2.1.2", "@prisma/cli-engine": "workspace:0.6.2", - "@prisma/composer-cli": "0.25.0", + "@prisma/composer-cli": "https://pkg.pr.new/@prisma/composer-cli@331", "@prisma/compute-sdk": "0.43.0", "@prisma/management-api-sdk": "1.80.0", "@prisma/orm-toolchain": "8.0.0-rc.14", @@ -62,7 +62,7 @@ "open": "^11.0.0" }, "devDependencies": { - "@prisma/composer": "0.25.0", + "@prisma/composer": "https://pkg.pr.new/@prisma/composer@331", "@prisma/credentials-store": "^7.8.0", "@repo/cli-conformance": "workspace:8.0.0-rc.19", "@repo/cli-telemetry": "workspace:8.0.0-rc.19", diff --git a/packages/prisma/package.json b/packages/prisma/package.json index 34417d55..f47d0a06 100644 --- a/packages/prisma/package.json +++ b/packages/prisma/package.json @@ -51,7 +51,7 @@ "dependencies": { "@manypkg/tools": "^2.1.2", "@prisma/cli-engine": "workspace:0.6.2", - "@prisma/composer-cli": "0.25.0", + "@prisma/composer-cli": "https://pkg.pr.new/@prisma/composer-cli@331", "@prisma/compute-sdk": "0.43.0", "@prisma/management-api-sdk": "1.80.0", "@prisma/orm-toolchain": "8.0.0-rc.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bb09696..1c992398 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: workspace:0.6.2 version: link:../cli-engine '@prisma/composer-cli': - specifier: 0.25.0 - version: 0.25.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: https://pkg.pr.new/@prisma/composer-cli@331 + version: https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.43.0 version: 0.43.0(@prisma/management-api-sdk@1.80.0)(rollup@4.62.2) @@ -61,8 +61,8 @@ importers: version: 11.0.0 devDependencies: '@prisma/composer': - specifier: 0.25.0 - version: 0.25.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: https://pkg.pr.new/@prisma/composer@331 + version: https://pkg.pr.new/@prisma/composer@331(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/credentials-store': specifier: ^7.8.0 version: 7.8.0 @@ -213,8 +213,8 @@ importers: specifier: workspace:0.6.2 version: link:../cli-engine '@prisma/composer-cli': - specifier: 0.25.0 - version: 0.25.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: https://pkg.pr.new/@prisma/composer-cli@331 + version: https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.43.0 version: 0.43.0(@prisma/management-api-sdk@1.80.0)(rollup@4.62.2) @@ -1301,15 +1301,21 @@ packages: '@oxc-project/types@0.146.0': resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - '@prisma/composer-cli@0.25.0': - resolution: {integrity: sha512-f/v2S7eeCV7Nvqkb7+/BhHKfT3rtLq4nD/icE15FdkoN8CVysZZd2mUJXyBaAz6835lP3KfP9KGsIH7qnnTFpw==} + '@prisma/composer-cli@https://pkg.pr.new/@prisma/composer-cli@331': + resolution: {tarball: https://pkg.pr.new/@prisma/composer-cli@331} + version: 0.26.0 engines: {node: '>=22.18.0'} - hasBin: true peerDependencies: - '@prisma/cli-engine': 0.6.1 + '@prisma/cli-engine': 0.6.2 + + '@prisma/composer@https://pkg.pr.new/@prisma/composer@331': + resolution: {tarball: https://pkg.pr.new/@prisma/composer@331} + version: 0.26.0 + engines: {node: '>=22.18.0'} - '@prisma/composer@0.25.0': - resolution: {integrity: sha512-il4IFTKvmLTU8LSLSqJD/q8EzEqUuIw+ZPJ4v7ZJd1yMW0uiwWnD5knrbVgftXytbTTjzgzgaO8Fq6s8+d9r1A==} + '@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@be95770': + resolution: {tarball: https://pkg.pr.new/prisma/composer/@prisma/composer@be95770} + version: 0.26.0 engines: {node: '>=22.18.0'} '@prisma/compute-sdk@0.43.0': @@ -4013,12 +4019,11 @@ snapshots: '@oxc-project/types@0.146.0': {} - '@prisma/composer-cli@0.25.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': + '@prisma/composer-cli@https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': dependencies: '@prisma/cli-engine': link:packages/cli-engine - '@prisma/composer': 0.25.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + '@prisma/composer': https://pkg.pr.new/prisma/composer/@prisma/composer@be95770(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) alchemy: 2.0.0-beta.78(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(effect@4.0.0-rc.115)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) - c12: 3.3.4(magicast@0.5.3) cross-spawn: 7.0.6 effect: 4.0.0-rc.115 esbuild: 0.28.2 @@ -4035,7 +4040,6 @@ snapshots: - bufferutil - drizzle-kit - drizzle-orm - - magicast - mongodb - mysql2 - pg @@ -4047,7 +4051,43 @@ snapshots: - vitest - ws - '@prisma/composer@0.25.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(magicast@0.5.3)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': + '@prisma/composer@https://pkg.pr.new/@prisma/composer@331(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': + dependencies: + '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115) + '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115) + '@effect/vitest': 4.0.0-rc.115(effect@4.0.0-rc.115)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) + '@prisma/management-api-sdk': 1.80.0 + '@standard-schema/spec': 1.1.0 + alchemy: 2.0.0-beta.78(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(effect@4.0.0-rc.115)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + arktype: 2.2.3 + cross-spawn: 7.0.6 + effect: 4.0.0-rc.115 + esbuild: 0.28.2 + transitivePeerDependencies: + - '@alchemy.run/frontend-frameworks' + - '@aws/durable-execution-sdk-js' + - '@effect/platform-bun' + - '@effect/platform-node' + - '@effect/sql-mysql2' + - '@effect/sql-pg' + - '@types/node' + - '@types/react' + - '@vercel/nft' + - bufferutil + - drizzle-kit + - drizzle-orm + - mongodb + - mysql2 + - pg + - proxy-agent + - react-devtools-core + - typescript + - utf-8-validate + - vite + - vitest + - ws + + '@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@be95770(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': dependencies: '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115) '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115) @@ -4056,7 +4096,6 @@ snapshots: '@standard-schema/spec': 1.1.0 alchemy: 2.0.0-beta.78(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(effect@4.0.0-rc.115)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) arktype: 2.2.3 - c12: 3.3.4(magicast@0.5.3) cross-spawn: 7.0.6 effect: 4.0.0-rc.115 esbuild: 0.28.2 @@ -4073,7 +4112,6 @@ snapshots: - bufferutil - drizzle-kit - drizzle-orm - - magicast - mongodb - mysql2 - pg diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e47d4a73..72cb7e67 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -39,3 +39,6 @@ minimumReleaseAgeExclude: - '@distilled.cloud/neon@1.0.0-rc.6' - '@distilled.cloud/planetscale@1.0.0-rc.6' - alchemy@2.0.0-beta.74 + +# Composer 0.26.0 preview from pkg.pr.new: composer-cli depends on @prisma/composer by URL. +blockExoticSubdeps: false From 725865a4cee7a21ee0e812b445d3efd0a242bd05 Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 07:36:25 +0200 Subject: [PATCH 2/8] build(cli): drop the composer-cli engine-pin exception Composer 0.26.0 peers @prisma/cli-engine 0.6.2, the version the shell ships, so the tarball check no longer needs to excuse a mismatch. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/scripts/conformance.ts | 8 -------- ...r-section.config.ts => composer-config-path.config.ts} | 0 2 files changed, 8 deletions(-) rename packages/cli/tests/fixtures/config/{composer-section.config.ts => composer-config-path.config.ts} (100%) diff --git a/packages/cli/scripts/conformance.ts b/packages/cli/scripts/conformance.ts index 0aad3038..d3f702d6 100644 --- a/packages/cli/scripts/conformance.ts +++ b/packages/cli/scripts/conformance.ts @@ -110,14 +110,6 @@ async function tarball(): Promise { enginePackage: "@prisma/cli-engine", familyPackages: ["@prisma/composer-cli", "@prisma/orm-toolchain"], exceptions: [ - { - familyPackage: "@prisma/composer-cli", - familyPin: "0.6.1", - shellPin: "0.6.2", - reason: "engine 0.6.2 must publish before composer-cli can peer it", - removeWhen: - "composer-cli releases peering 0.6.2 and the follow-up bump PR pins that release", - }, { familyPackage: "@prisma/orm-toolchain", familyPin: "0.6.1", diff --git a/packages/cli/tests/fixtures/config/composer-section.config.ts b/packages/cli/tests/fixtures/config/composer-config-path.config.ts similarity index 100% rename from packages/cli/tests/fixtures/config/composer-section.config.ts rename to packages/cli/tests/fixtures/config/composer-config-path.config.ts From 278ec0e153fd0a5a19d1230298dfb19ad0c00487 Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 07:36:25 +0200 Subject: [PATCH 3/8] test(cli): check the composer section the way Composer 0.26.0 validates it A composer section that still names a config file is now refused by Composer's section validator before any handler runs: the result is CLI.CONFIG_SECTION_INVALID carrying CONFIG.FIELD_RETIRED, exit 2, on every platform, so the Windows variant of the test goes away. A second fixture builds a valid section with defineConfig from @prisma/composer/config and nodeBuild(), and shows dev accepting it and reaching its handler. Its state descriptor is written by hand: the Prisma Cloud control entry would bring the whole cloud target and the ORM toolchain into the host's dev dependencies. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/tests/bin.test.ts | 117 +++++++++--------- .../config/composer-config-path.config.ts | 2 +- .../fixtures/config/composer-valid.config.ts | 18 +++ 3 files changed, 75 insertions(+), 62 deletions(-) create mode 100644 packages/cli/tests/fixtures/config/composer-valid.config.ts diff --git a/packages/cli/tests/bin.test.ts b/packages/cli/tests/bin.test.ts index 689c69ef..939d2dd0 100644 --- a/packages/cli/tests/bin.test.ts +++ b/packages/cli/tests/bin.test.ts @@ -34,12 +34,20 @@ const MISSING_PRISMA_CONFIG_PATH = join( "missing-prisma.config.ts", ); -/** A prisma.config.ts whose only section is composer's. */ -const COMPOSER_SECTION_CONFIG_PATH = join( +/** A composer section that still carries the retired `configPath`. */ +const COMPOSER_CONFIG_PATH_CONFIG_PATH = join( dirname(fileURLToPath(import.meta.url)), "fixtures", "config", - "composer-section.config.ts", + "composer-config-path.config.ts", +); + +/** A composer section built with `@prisma/composer/config`. */ +const COMPOSER_VALID_CONFIG_PATH = join( + dirname(fileURLToPath(import.meta.url)), + "fixtures", + "config", + "composer-valid.config.ts", ); const SEMVER_PREFIX = /^\d+\.\d+\.\d+/; @@ -492,7 +500,10 @@ describe("buildCli", () => { * stdout is not a TTY here, so the stream is JSON, and JSON escapes * every separator in a Windows path — no path the CLI printed is a * substring of the stream that carried it. */ - function resultError(stdoutText: string): Diagnostic { + function resultFailure(stdoutText: string): { + readonly error: Diagnostic; + readonly diagnostics: readonly Diagnostic[]; + } { const frames = stdoutText .split("\n") .filter((line) => line !== "") @@ -501,81 +512,65 @@ describe("buildCli", () => { if (last?.kind !== "result" || last.envelope.ok) { throw new Error(`expected a failed result frame, got: ${stdoutText}`); } - return last.envelope.error; + return { + error: last.envelope.error, + diagnostics: last.envelope.diagnostics, + }; } - /** Composer's `dev` through the real bin, against the fixture whose - * composer section names a config file that is not there. */ - async function runComposerDev(): Promise<{ + /** Composer's `dev` through the real bin, reading the given config. */ + async function runComposerDev(configPath: string): Promise<{ readonly exitCode: number; readonly error: Diagnostic; + readonly diagnostics: readonly Diagnostic[]; }> { const proc = makeProcess({ - argv: [ - "node", - "bin.js", - "dev", - "--config", - COMPOSER_SECTION_CONFIG_PATH, - "src/service.ts", - ], + argv: ["node", "bin.js", "dev", "--config", configPath, "src/service.ts"], }); const exitCode = await main(proc); - return { exitCode, error: resultError(proc.stdoutText) }; + return { exitCode, ...resultFailure(proc.stdoutText) }; } /** * The mount's config wiring, end to end: the section name composer's - * family declares, read by the bin's real disk loader, reaching - * composer's own handler as the path it acts on. - * - * Every platform but Windows. `dev` is the only composer command - * that reaches config discovery without credentials — `deploy` stops - * at the credential check — and it refuses Windows before it reads - * the section it was handed, so no shipped command can show the - * section arriving there. The test after this one pins what Windows - * can still show. + * family declares, read by the bin's real disk loader and checked by + * composer's own validator before any handler runs, so every + * platform sees the same refusal. */ - it.skipIf(process.platform === "win32")( - "hands the composer section of prisma.config.ts to the composer family", - async () => { - const { exitCode, error } = await runComposerDev(); - - expect(exitCode).toBe(2); - expect(error.code).toBe("CONFIG.FILE_MISSING"); - // Composer resolves the section's relative path against the - // prisma.config.ts that declared it, not against the cwd. - expect(error.where?.path).toBe( - join( - dirname(COMPOSER_SECTION_CONFIG_PATH), - "named-by-the-section.config.ts", - ), - ); - expect(error.why).toContain("there is no walk to fall back on"); - }, - ); + it("refuses a composer section that still names a config file", async () => { + const { exitCode, error, diagnostics } = await runComposerDev( + COMPOSER_CONFIG_PATH_CONFIG_PATH, + ); + + expect(exitCode).toBe(2); + expect(error.code).toBe("CLI.CONFIG_SECTION_INVALID"); + expect(diagnostics).toEqual([ + expect.objectContaining({ + code: "CONFIG.FIELD_RETIRED", + meta: { field: "configPath" }, + where: { path: COMPOSER_CONFIG_PATH_CONFIG_PATH }, + }), + ]); + }); /** - * What Windows still shows: the bin evaluated the config file, the - * engine accepted its `composer` section, and the command reached - * composer's own operation — which then refuses the platform. A - * mis-wired section would fail here as a config diagnostic instead. - * What it does not show is the section's path reaching composer's - * config discovery, since the refusal comes first. - * - * When composer supports Windows this test fails, and the pair - * collapses back into the one above. + * `dev --help` never evaluates the config, so a valid section shows + * only on a run that validates it: composer's validator accepts the + * section and the command reaches its own handler. */ - it.runIf(process.platform === "win32")( - "on Windows, composer's dev refuses the platform before it reads the section", - async () => { - const { exitCode, error } = await runComposerDev(); + it("hands a valid composer section to composer's dev", async () => { + const { exitCode, error } = await runComposerDev( + COMPOSER_VALID_CONFIG_PATH, + ); - expect(exitCode).toBe(2); - expect(error.code).toBe("DEV.PLATFORM_UNSUPPORTED"); - }, - ); + expect(exitCode).toBe(2); + expect(error.code).toBe( + process.platform === "win32" + ? "DEV.PLATFORM_UNSUPPORTED" + : "COMPOSE.ENTRY_UNLOADABLE", + ); + }); it("runs --version through the real tree, printing the version with exit 0", async () => { const proc = makeProcess({ diff --git a/packages/cli/tests/fixtures/config/composer-config-path.config.ts b/packages/cli/tests/fixtures/config/composer-config-path.config.ts index cbe4c293..fa5cfa37 100644 --- a/packages/cli/tests/fixtures/config/composer-config-path.config.ts +++ b/packages/cli/tests/fixtures/config/composer-config-path.config.ts @@ -4,6 +4,6 @@ import { definePrismaConfig } from "@prisma/cli-engine"; // appearing in one of this repository's directories above these // fixtures can never join a test's chain. export default definePrismaConfig({ - composer: { configPath: "./named-by-the-section.config.ts" }, + composer: { configPath: "./prisma-composer.config.ts" }, parent: false, }); diff --git a/packages/cli/tests/fixtures/config/composer-valid.config.ts b/packages/cli/tests/fixtures/config/composer-valid.config.ts new file mode 100644 index 00000000..d4a31786 --- /dev/null +++ b/packages/cli/tests/fixtures/config/composer-valid.config.ts @@ -0,0 +1,18 @@ +import { definePrismaConfig } from "@prisma/cli-engine"; +import { defineConfig as composer } from "@prisma/composer/config"; +import { nodeBuild } from "@prisma/composer/node/control"; + +const build = nodeBuild(); + +export default definePrismaConfig({ + composer: composer({ + extensions: [build], + state: { + extension: build.id, + create: () => { + throw new Error("no command in these tests reaches the state store"); + }, + }, + }), + parent: false, +}); From cc76ea0a6c8a1ee1969d9d77035a4b0043cb63cc Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 07:37:10 +0200 Subject: [PATCH 4/8] docs(skills): describe the composer section of prisma.config.ts prisma init installs this skill into every new project, and it still said dev and deploy need a separate prisma-composer.config.ts. With Composer 0.26.0 that file is refused; the skill now shows the composer section and the three CONFIG codes the way Composer's own skill does. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- skills/prisma-platform-core-concepts/SKILL.md | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/skills/prisma-platform-core-concepts/SKILL.md b/skills/prisma-platform-core-concepts/SKILL.md index c24971fb..1f0ac5f1 100644 --- a/skills/prisma-platform-core-concepts/SKILL.md +++ b/skills/prisma-platform-core-concepts/SKILL.md @@ -71,26 +71,41 @@ packages (`prisma-composer-core-concepts` in `@prisma/composer`, `prisma-orm-core-concepts` in `@prisma/orm-postgres`), so they appear after this install plus `prisma skills sync`, not before. -Two config files with different owners: - -1. `prisma.config.ts` configures the CLI. Each top-level key is a section - owned by one product, and this CLI recognises exactly three: `orm`, - `composer`, and `skills`. The composed shape: - - ```ts - import { definePrismaConfig } from "prisma/config"; - import { defineConfig } from "@prisma/orm-postgres/config"; - - export default definePrismaConfig({ - orm: defineConfig({ contract: "./src/prisma/contract.prisma" }), - skills: { agents: ["claude"] }, - }); - ``` - -2. `prisma-composer.config.ts` configures Composer itself and is a separate, - mandatory file for `dev` and `deploy`: without it `dev` fails with - `CONFIG.FILE_MISSING`. Its contents belong to - `prisma-composer-core-concepts`. +One config file, `prisma.config.ts`, configures the CLI and every product +it runs. Each top-level key is a section owned by one product, and this CLI +recognises exactly three: `orm`, `composer`, and `skills`. The composed +shape: + +```ts +import { definePrismaConfig } from "prisma/config"; +import { defineConfig as composer } from "@prisma/composer/config"; +import { nodeBuild } from "@prisma/composer/node/control"; +import { + prismaCloud, + prismaState, +} from "@prisma/composer-prisma-cloud/control"; +import { defineConfig as orm } from "@prisma/orm-postgres/config"; + +export default definePrismaConfig({ + composer: composer({ + extensions: [prismaCloud(), nodeBuild()], + state: prismaState(), + }), + orm: orm({ contract: "./src/prisma/contract.prisma" }), + skills: { agents: ["claude"] }, +}); +``` + +`dev` and `deploy` read the `composer` section and nothing else; what goes +in it belongs to `prisma-composer-core-concepts`. A separate +`prisma-composer.config.ts` is no longer read, and the old setup is refused, +never silently ignored: `CONFIG.SECTION_MISSING` when no loaded +`prisma.config.ts` declares a `composer` section, `CONFIG.FIELD_RETIRED` +when the section still has `configPath`, and `CONFIG.FILE_RETIRED` when a +`prisma-composer.config.*` sits next to the declaring `prisma.config.ts`. +All three arrive under the CLI's `CLI.CONFIG_SECTION_INVALID`. The fix for +all three is to move the old file's `extensions` and `state` into the +section and delete the old file. ## The resource model From 8f9e2764c075e059e29675670f10bf497489dceb Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 08:16:14 +0200 Subject: [PATCH 5/8] test(cli): pin the composer diagnostics more tightly The configPath test now checks the headline summary, which names the section and the file, and the diagnostic's severity. The valid-section test checks that the handler's failure names the entry the host passed, so it shows the argv reached composer's dev rather than only that some composer code came back. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/tests/bin.test.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/cli/tests/bin.test.ts b/packages/cli/tests/bin.test.ts index 939d2dd0..82aa6f69 100644 --- a/packages/cli/tests/bin.test.ts +++ b/packages/cli/tests/bin.test.ts @@ -544,10 +544,14 @@ describe("buildCli", () => { ); expect(exitCode).toBe(2); - expect(error.code).toBe("CLI.CONFIG_SECTION_INVALID"); + expect(error).toMatchObject({ + code: "CLI.CONFIG_SECTION_INVALID", + summary: `The 'composer' section of ${COMPOSER_CONFIG_PATH_CONFIG_PATH} is invalid.`, + }); expect(diagnostics).toEqual([ expect.objectContaining({ code: "CONFIG.FIELD_RETIRED", + severity: "error", meta: { field: "configPath" }, where: { path: COMPOSER_CONFIG_PATH_CONFIG_PATH }, }), @@ -557,7 +561,9 @@ describe("buildCli", () => { /** * `dev --help` never evaluates the config, so a valid section shows * only on a run that validates it: composer's validator accepts the - * section and the command reaches its own handler. + * section and the handler runs. Its first step imports the entry the + * host passed, which does not exist; on Windows the handler refuses + * the platform before that. */ it("hands a valid composer section to composer's dev", async () => { const { exitCode, error } = await runComposerDev( @@ -565,10 +571,13 @@ describe("buildCli", () => { ); expect(exitCode).toBe(2); - expect(error.code).toBe( + expect(error).toMatchObject( process.platform === "win32" - ? "DEV.PLATFORM_UNSUPPORTED" - : "COMPOSE.ENTRY_UNLOADABLE", + ? { code: "DEV.PLATFORM_UNSUPPORTED" } + : { + code: "COMPOSE.ENTRY_UNLOADABLE", + summary: expect.stringContaining(join("src", "service.ts")), + }, ); }); From f7e11b58e19f62fa3727b36c1024bfbe139bec9e Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 1 Oct 2026 08:16:14 +0200 Subject: [PATCH 6/8] docs(skills): give each retired-config code its own fix A new project with no composer section gets CONFIG.SECTION_MISSING and has no old file to move, so the skill now says to write the section in that case and to move the old contents only for the other two codes. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- skills/prisma-platform-core-concepts/SKILL.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/skills/prisma-platform-core-concepts/SKILL.md b/skills/prisma-platform-core-concepts/SKILL.md index 1f0ac5f1..4b21a3ed 100644 --- a/skills/prisma-platform-core-concepts/SKILL.md +++ b/skills/prisma-platform-core-concepts/SKILL.md @@ -103,9 +103,10 @@ never silently ignored: `CONFIG.SECTION_MISSING` when no loaded `prisma.config.ts` declares a `composer` section, `CONFIG.FIELD_RETIRED` when the section still has `configPath`, and `CONFIG.FILE_RETIRED` when a `prisma-composer.config.*` sits next to the declaring `prisma.config.ts`. -All three arrive under the CLI's `CLI.CONFIG_SECTION_INVALID`. The fix for -all three is to move the old file's `extensions` and `state` into the -section and delete the old file. +All three arrive under the CLI's `CLI.CONFIG_SECTION_INVALID`. For +`CONFIG.SECTION_MISSING`, write the section. For the other two, move the +old file's `extensions` and `state` into the section, then delete the +`configPath` field or the old file. ## The resource model From 3e711a959166f6613652775bd66317c7dc040fc4 Mon Sep 17 00:00:00 2001 From: willbot Date: Mon, 5 Oct 2026 15:38:30 +0200 Subject: [PATCH 7/8] build(cli): pin Composer 0.26.0 from the registry Composer 0.26.0 is on latest, so both manifests pin it in place of the pkg.pr.new preview, and the workspace stops allowing URL dependencies below the top level, which only the preview needed. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/package.json | 4 +-- packages/prisma/package.json | 2 +- pnpm-lock.yaml | 69 +++++++----------------------------- pnpm-workspace.yaml | 3 -- 4 files changed, 16 insertions(+), 62 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 08473029..5cf0eed4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -50,7 +50,7 @@ "dependencies": { "@manypkg/tools": "^2.1.2", "@prisma/cli-engine": "workspace:0.6.2", - "@prisma/composer-cli": "https://pkg.pr.new/@prisma/composer-cli@331", + "@prisma/composer-cli": "0.26.0", "@prisma/compute-sdk": "0.43.0", "@prisma/management-api-sdk": "1.80.0", "@prisma/orm-toolchain": "8.0.0-rc.14", @@ -62,7 +62,7 @@ "open": "^11.0.0" }, "devDependencies": { - "@prisma/composer": "https://pkg.pr.new/@prisma/composer@331", + "@prisma/composer": "0.26.0", "@prisma/credentials-store": "^7.8.0", "@repo/cli-conformance": "workspace:8.0.0-rc.19", "@repo/cli-telemetry": "workspace:8.0.0-rc.19", diff --git a/packages/prisma/package.json b/packages/prisma/package.json index f47d0a06..cfec80a9 100644 --- a/packages/prisma/package.json +++ b/packages/prisma/package.json @@ -51,7 +51,7 @@ "dependencies": { "@manypkg/tools": "^2.1.2", "@prisma/cli-engine": "workspace:0.6.2", - "@prisma/composer-cli": "https://pkg.pr.new/@prisma/composer-cli@331", + "@prisma/composer-cli": "0.26.0", "@prisma/compute-sdk": "0.43.0", "@prisma/management-api-sdk": "1.80.0", "@prisma/orm-toolchain": "8.0.0-rc.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1c992398..47221f5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: workspace:0.6.2 version: link:../cli-engine '@prisma/composer-cli': - specifier: https://pkg.pr.new/@prisma/composer-cli@331 - version: https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: 0.26.0 + version: 0.26.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.43.0 version: 0.43.0(@prisma/management-api-sdk@1.80.0)(rollup@4.62.2) @@ -61,8 +61,8 @@ importers: version: 11.0.0 devDependencies: '@prisma/composer': - specifier: https://pkg.pr.new/@prisma/composer@331 - version: https://pkg.pr.new/@prisma/composer@331(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: 0.26.0 + version: 0.26.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/credentials-store': specifier: ^7.8.0 version: 7.8.0 @@ -213,8 +213,8 @@ importers: specifier: workspace:0.6.2 version: link:../cli-engine '@prisma/composer-cli': - specifier: https://pkg.pr.new/@prisma/composer-cli@331 - version: https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + specifier: 0.26.0 + version: 0.26.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.43.0 version: 0.43.0(@prisma/management-api-sdk@1.80.0)(rollup@4.62.2) @@ -1301,21 +1301,14 @@ packages: '@oxc-project/types@0.146.0': resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - '@prisma/composer-cli@https://pkg.pr.new/@prisma/composer-cli@331': - resolution: {tarball: https://pkg.pr.new/@prisma/composer-cli@331} - version: 0.26.0 + '@prisma/composer-cli@0.26.0': + resolution: {integrity: sha512-oBMN5FaAj0nyYGuVxfAaOMH4+74myWfb0YcPZAi4CndSe/WeAWyMWu4tieSe67o0lcED77dKaRb57cMDfrdvVg==} engines: {node: '>=22.18.0'} peerDependencies: '@prisma/cli-engine': 0.6.2 - '@prisma/composer@https://pkg.pr.new/@prisma/composer@331': - resolution: {tarball: https://pkg.pr.new/@prisma/composer@331} - version: 0.26.0 - engines: {node: '>=22.18.0'} - - '@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@be95770': - resolution: {tarball: https://pkg.pr.new/prisma/composer/@prisma/composer@be95770} - version: 0.26.0 + '@prisma/composer@0.26.0': + resolution: {integrity: sha512-ttALY7KPD8NkecI4vJP0q50FkD7Q7v77TftU34gBA312hqyJKxD3hk4wY6H+NmDBfQAW7VDq8JCv1hGxx/aXJw==} engines: {node: '>=22.18.0'} '@prisma/compute-sdk@0.43.0': @@ -4019,10 +4012,10 @@ snapshots: '@oxc-project/types@0.146.0': {} - '@prisma/composer-cli@https://pkg.pr.new/@prisma/composer-cli@331(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': + '@prisma/composer-cli@0.26.0(@prisma/cli-engine@packages+cli-engine)(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': dependencies: '@prisma/cli-engine': link:packages/cli-engine - '@prisma/composer': https://pkg.pr.new/prisma/composer/@prisma/composer@be95770(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) + '@prisma/composer': 0.26.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) alchemy: 2.0.0-beta.78(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(effect@4.0.0-rc.115)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) cross-spawn: 7.0.6 effect: 4.0.0-rc.115 @@ -4051,43 +4044,7 @@ snapshots: - vitest - ws - '@prisma/composer@https://pkg.pr.new/@prisma/composer@331(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': - dependencies: - '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115) - '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115) - '@effect/vitest': 4.0.0-rc.115(effect@4.0.0-rc.115)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) - '@prisma/management-api-sdk': 1.80.0 - '@standard-schema/spec': 1.1.0 - alchemy: 2.0.0-beta.78(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(effect@4.0.0-rc.115)(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0) - arktype: 2.2.3 - cross-spawn: 7.0.6 - effect: 4.0.0-rc.115 - esbuild: 0.28.2 - transitivePeerDependencies: - - '@alchemy.run/frontend-frameworks' - - '@aws/durable-execution-sdk-js' - - '@effect/platform-bun' - - '@effect/platform-node' - - '@effect/sql-mysql2' - - '@effect/sql-pg' - - '@types/node' - - '@types/react' - - '@vercel/nft' - - bufferutil - - drizzle-kit - - drizzle-orm - - mongodb - - mysql2 - - pg - - proxy-agent - - react-devtools-core - - typescript - - utf-8-validate - - vite - - vitest - - ws - - '@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@be95770(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': + '@prisma/composer@0.26.0(@types/node@22.19.19)(@vercel/nft@1.10.2(rollup@4.62.2))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1107.0))(pg@8.23.0)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(ws@8.21.0)': dependencies: '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115) '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 72cb7e67..e47d4a73 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -39,6 +39,3 @@ minimumReleaseAgeExclude: - '@distilled.cloud/neon@1.0.0-rc.6' - '@distilled.cloud/planetscale@1.0.0-rc.6' - alchemy@2.0.0-beta.74 - -# Composer 0.26.0 preview from pkg.pr.new: composer-cli depends on @prisma/composer by URL. -blockExoticSubdeps: false From 2b26755f1b4cad787e87acd6d13bb0c3bfb10e58 Mon Sep 17 00:00:00 2001 From: willbot Date: Mon, 5 Oct 2026 15:46:46 +0200 Subject: [PATCH 8/8] chore(release): bump to 8.0.0-rc.20 Merging publishes prisma@latest pinning Composer 0.26.0, whose configuration is the composer section of prisma.config.ts. Co-Authored-By: Claude Fable 5.1 Signed-off-by: willbot Signed-off-by: Will Madden --- package.json | 2 +- packages/cli-conformance/package.json | 4 ++-- packages/cli-engine/package.json | 4 ++-- packages/cli-telemetry/package.json | 4 ++-- packages/cli/package.json | 8 +++---- packages/compute/package.json | 2 +- packages/prisma/package.json | 8 +++---- packages/tsconfig/package.json | 2 +- pnpm-lock.yaml | 22 +++++++++---------- skills/prisma-platform-core-concepts/SKILL.md | 2 +- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 194a38b3..4d0ee612 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "prisma-cli", - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "private": true, "engines": { "node": ">=24" diff --git a/packages/cli-conformance/package.json b/packages/cli-conformance/package.json index 1d4d62ba..6c7502a1 100644 --- a/packages/cli-conformance/package.json +++ b/packages/cli-conformance/package.json @@ -1,7 +1,7 @@ { "name": "@repo/cli-conformance", "private": true, - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "description": "Reusable conformance checks for the engine's consumers: import purity over built output, config-section validators that never throw, and verification of the tarballs a registry would receive. Depends on no package it checks.", "type": "module", "exports": { @@ -24,7 +24,7 @@ "test": "pnpm run typecheck && vitest run" }, "devDependencies": { - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "es-module-lexer": "^2.1.0", "tsx": "^4.22.4", diff --git a/packages/cli-engine/package.json b/packages/cli-engine/package.json index 37f30a35..2d15f45c 100644 --- a/packages/cli-engine/package.json +++ b/packages/cli-engine/package.json @@ -59,8 +59,8 @@ }, "devDependencies": { "@prisma/management-api-sdk": "1.80.0", - "@repo/cli-conformance": "workspace:8.0.0-rc.19", - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/cli-conformance": "workspace:8.0.0-rc.20", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "ci-info": "^4.3.1", "tsdown": "^0.21.10", diff --git a/packages/cli-telemetry/package.json b/packages/cli-telemetry/package.json index b1ced912..92756274 100644 --- a/packages/cli-telemetry/package.json +++ b/packages/cli-telemetry/package.json @@ -1,7 +1,7 @@ { "name": "@repo/cli-telemetry", "private": true, - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "description": "CLI telemetry child sender: the detached subprocess the engine hands a composed payload to, its system probes, and the POST", "type": "module", "sideEffects": [ @@ -35,7 +35,7 @@ "@vercel/detect-agent": "^1.2.3" }, "devDependencies": { - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "tsdown": "^0.21.10", "typescript": "^6.0.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index 5cf0eed4..5f6da732 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@prisma/cli", - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "description": "Command-line interface for the Prisma Developer Platform.", "type": "module", "bin": { @@ -64,9 +64,9 @@ "devDependencies": { "@prisma/composer": "0.26.0", "@prisma/credentials-store": "^7.8.0", - "@repo/cli-conformance": "workspace:8.0.0-rc.19", - "@repo/cli-telemetry": "workspace:8.0.0-rc.19", - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/cli-conformance": "workspace:8.0.0-rc.20", + "@repo/cli-telemetry": "workspace:8.0.0-rc.20", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "@types/cross-spawn": "^6.0.6", "tsdown": "^0.21.10", diff --git a/packages/compute/package.json b/packages/compute/package.json index 5a6df494..3a75078b 100644 --- a/packages/compute/package.json +++ b/packages/compute/package.json @@ -42,7 +42,7 @@ "test": "vitest run" }, "devDependencies": { - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "tsdown": "^0.21.10", "typescript": "^6.0.3", diff --git a/packages/prisma/package.json b/packages/prisma/package.json index cfec80a9..3361fe89 100644 --- a/packages/prisma/package.json +++ b/packages/prisma/package.json @@ -1,6 +1,6 @@ { "name": "prisma", - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "description": "The Prisma CLI: one binary for the ORM, Composer, and the Prisma Developer Platform.", "type": "module", "bin": { @@ -63,10 +63,10 @@ "open": "^11.0.0" }, "devDependencies": { - "@prisma/cli": "workspace:8.0.0-rc.19", + "@prisma/cli": "workspace:8.0.0-rc.20", "@prisma/credentials-store": "^7.8.0", - "@repo/cli-telemetry": "workspace:8.0.0-rc.19", - "@repo/tsconfig": "workspace:8.0.0-rc.19", + "@repo/cli-telemetry": "workspace:8.0.0-rc.20", + "@repo/tsconfig": "workspace:8.0.0-rc.20", "@types/node": "^22.19.19", "tsdown": "^0.21.10", "typescript": "^6.0.3", diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 816ac896..ad43a0f8 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -1,7 +1,7 @@ { "name": "@repo/tsconfig", "private": true, - "version": "8.0.0-rc.19", + "version": "8.0.0-rc.20", "description": "Base tsconfig providing package for the monorepo", "license": "Apache-2.0", "files": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 47221f5f..9fc6801d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,13 +67,13 @@ importers: specifier: ^7.8.0 version: 7.8.0 '@repo/cli-conformance': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../cli-conformance '@repo/cli-telemetry': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../cli-telemetry '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/cross-spawn': specifier: ^6.0.6 @@ -97,7 +97,7 @@ importers: packages/cli-conformance: devDependencies: '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/node': specifier: ^22.19.19 @@ -143,10 +143,10 @@ importers: specifier: 1.80.0 version: 1.80.0 '@repo/cli-conformance': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../cli-conformance '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/node': specifier: ^22.19.19 @@ -171,7 +171,7 @@ importers: version: 1.2.4 devDependencies: '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/node': specifier: ^22.19.19 @@ -189,7 +189,7 @@ importers: packages/compute: devDependencies: '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/node': specifier: ^22.19.19 @@ -244,16 +244,16 @@ importers: version: 11.0.0 devDependencies: '@prisma/cli': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../cli '@prisma/credentials-store': specifier: ^7.8.0 version: 7.8.0 '@repo/cli-telemetry': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../cli-telemetry '@repo/tsconfig': - specifier: workspace:8.0.0-rc.19 + specifier: workspace:8.0.0-rc.20 version: link:../tsconfig '@types/node': specifier: ^22.19.19 diff --git a/skills/prisma-platform-core-concepts/SKILL.md b/skills/prisma-platform-core-concepts/SKILL.md index 4b21a3ed..74ca3d3f 100644 --- a/skills/prisma-platform-core-concepts/SKILL.md +++ b/skills/prisma-platform-core-concepts/SKILL.md @@ -2,7 +2,7 @@ name: prisma-platform-core-concepts metadata: library: "prisma" - library_version: "8.0.0-rc.19" + library_version: "8.0.0-rc.20" version: 2026.9.2 description: >- Use when hosting, deploying, or operating an app on the Prisma Platform: