@prisma/cli 8.0.0-rc.13 → 8.0.0-rc.13-dev.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +266 -75
- package/package.json +7 -7
package/dist/cli.js
CHANGED
|
@@ -1823,7 +1823,8 @@ const SKILL_SOURCE_PACKAGES = [
|
|
|
1823
1823
|
"@prisma/orm-postgres",
|
|
1824
1824
|
"@prisma/orm-sqlite",
|
|
1825
1825
|
"@prisma/orm-mongo",
|
|
1826
|
-
"@prisma/composer"
|
|
1826
|
+
"@prisma/composer",
|
|
1827
|
+
"prisma"
|
|
1827
1828
|
];
|
|
1828
1829
|
/** The directory inside a source package's tarball that holds its skill
|
|
1829
1830
|
* trees, one directory per skill. */
|
|
@@ -2522,6 +2523,7 @@ const authLoginCommand = defineCommand({
|
|
|
2522
2523
|
managesCredentials: true,
|
|
2523
2524
|
help: {
|
|
2524
2525
|
summary: "Log in to your Prisma platform account",
|
|
2526
|
+
description: "Opens a browser sign-in and stores a session for one workspace, the account-level container that holds your Projects. Run it again to add a session for another workspace; 'auth workspace use' switches between stored sessions. In CI or other non-interactive environments, skip login and set PRISMA_SERVICE_TOKEN instead.",
|
|
2525
2527
|
examples: ["auth login"]
|
|
2526
2528
|
},
|
|
2527
2529
|
handler: async (_args, ctx) => {
|
|
@@ -2612,6 +2614,7 @@ const authLogoutCommand = defineCommand({
|
|
|
2612
2614
|
managesCredentials: true,
|
|
2613
2615
|
help: {
|
|
2614
2616
|
summary: "Clear stored authentication credentials",
|
|
2617
|
+
description: "Ends every workspace session stored on this machine. To end just one and keep the others, use 'auth workspace logout' instead. A credential supplied via PRISMA_SERVICE_TOKEN is not stored here and stays in force.",
|
|
2615
2618
|
examples: ["auth logout"]
|
|
2616
2619
|
},
|
|
2617
2620
|
handler: async (_args, ctx) => {
|
|
@@ -2701,7 +2704,8 @@ function presentationsFor(spec, result) {
|
|
|
2701
2704
|
}
|
|
2702
2705
|
const authWhoamiCommand = defineCommand({
|
|
2703
2706
|
help: {
|
|
2704
|
-
summary: "Show
|
|
2707
|
+
summary: "Show who is signed in and which workspace commands target",
|
|
2708
|
+
description: "Shows which identity the CLI is acting as and which workspace its commands will target. Run it to check you are in the right workspace before creating or deleting resources, or to see whether a PRISMA_SERVICE_TOKEN credential is overriding your stored sessions.",
|
|
2705
2709
|
examples: ["auth whoami", "auth whoami --json"]
|
|
2706
2710
|
},
|
|
2707
2711
|
handler: async (_args, ctx) => {
|
|
@@ -2792,6 +2796,7 @@ const authWorkspaceListCommand = defineCommand({
|
|
|
2792
2796
|
managesCredentials: true,
|
|
2793
2797
|
help: {
|
|
2794
2798
|
summary: "List your workspace sessions",
|
|
2799
|
+
description: "Each 'auth login' stores one session per workspace. This lists the sessions on this machine and marks the current one, which every workspace-scoped command targets unless a PRISMA_SERVICE_TOKEN credential is set; that credential overrides stored sessions.",
|
|
2795
2800
|
examples: ["auth workspace list", "auth workspace list --json"]
|
|
2796
2801
|
},
|
|
2797
2802
|
handler: async (_args, ctx) => {
|
|
@@ -2855,6 +2860,7 @@ const authWorkspaceLogoutCommand = defineCommand({
|
|
|
2855
2860
|
}) } },
|
|
2856
2861
|
help: {
|
|
2857
2862
|
summary: "End one workspace session",
|
|
2863
|
+
description: "Removes the stored session for one workspace and leaves the others in place. To clear every session on this machine, use 'auth logout'.",
|
|
2858
2864
|
examples: ["auth workspace logout my-workspace"]
|
|
2859
2865
|
},
|
|
2860
2866
|
handler: async (args, ctx) => {
|
|
@@ -2937,7 +2943,8 @@ const authWorkspaceUseCommand = defineCommand({
|
|
|
2937
2943
|
placeholder: "id-or-name"
|
|
2938
2944
|
}) } },
|
|
2939
2945
|
help: {
|
|
2940
|
-
summary: "Make
|
|
2946
|
+
summary: "Make a workspace session current: commands target that workspace",
|
|
2947
|
+
description: "Switches which workspace subsequent commands target. This changes local CLI state only; nothing is created or modified on the platform. Run without an argument to pick from your stored sessions. A PRISMA_SERVICE_TOKEN credential, when set, overrides stored sessions: commands keep targeting its workspace regardless of the selection here.",
|
|
2941
2948
|
examples: ["auth workspace use", "auth workspace use my-workspace"]
|
|
2942
2949
|
},
|
|
2943
2950
|
handler: async (args, ctx) => {
|
|
@@ -4289,11 +4296,12 @@ function listPresentations$8(result) {
|
|
|
4289
4296
|
}
|
|
4290
4297
|
const branchListCommand = defineCommand({
|
|
4291
4298
|
help: {
|
|
4292
|
-
summary: "List Platform branches
|
|
4299
|
+
summary: "List a project's Platform branches",
|
|
4300
|
+
description: "A Branch maps to a Git branch of the connected repository. Each one is an isolated environment with its own services, databases, buckets, and environment variables: the production branch serves live traffic, every other branch is a preview.",
|
|
4293
4301
|
examples: ["branch list", "branch list --project my-app"]
|
|
4294
4302
|
},
|
|
4295
4303
|
args: { flags: { project: flag.string({
|
|
4296
|
-
brief: "Project id or name",
|
|
4304
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
4297
4305
|
placeholder: "id-or-name"
|
|
4298
4306
|
}) } },
|
|
4299
4307
|
needs: { credentials: true },
|
|
@@ -4486,11 +4494,11 @@ function bucketApiError(summary, response, error) {
|
|
|
4486
4494
|
/** Where a caller who is missing a bucket id finds one. */
|
|
4487
4495
|
const LIST_BUCKETS_COMMAND = `${CLI_NAME} bucket list`;
|
|
4488
4496
|
const projectFlag$3 = flag.string({
|
|
4489
|
-
brief: "Project id or name",
|
|
4497
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
4490
4498
|
placeholder: "id-or-name"
|
|
4491
4499
|
});
|
|
4492
4500
|
const branchFlag$2 = flag.string({
|
|
4493
|
-
brief: "Branch git name",
|
|
4501
|
+
brief: "Branch git name; use to target one branch's environment",
|
|
4494
4502
|
placeholder: "git-name"
|
|
4495
4503
|
});
|
|
4496
4504
|
const bucketPositional = positional.string({
|
|
@@ -4563,6 +4571,7 @@ const bucketCreateCommand = defineCommand({
|
|
|
4563
4571
|
} },
|
|
4564
4572
|
help: {
|
|
4565
4573
|
summary: "Create an object-store bucket",
|
|
4574
|
+
description: "Creates blob storage in a Branch of the project. A bucket holds no credentials of its own: mint them with 'bucket key create', which prints them once.",
|
|
4566
4575
|
examples: [
|
|
4567
4576
|
"bucket create",
|
|
4568
4577
|
"bucket create --name my-store",
|
|
@@ -4628,6 +4637,7 @@ const bucketDeleteCommand = defineCommand({
|
|
|
4628
4637
|
args: { positionals: { bucketId: bucketPositional } },
|
|
4629
4638
|
help: {
|
|
4630
4639
|
summary: "Delete a bucket and all its access keys",
|
|
4640
|
+
description: "Deletion is permanent: the stored objects are destroyed and every access key stops working. The exact bucket id is the consent token; pass it with --confirm to run non-interactively.",
|
|
4631
4641
|
examples: ["bucket delete bkt_123 --confirm bkt_123"]
|
|
4632
4642
|
},
|
|
4633
4643
|
needs: { credentials: true },
|
|
@@ -4707,17 +4717,18 @@ const bucketKeyCreateCommand = defineCommand({
|
|
|
4707
4717
|
positionals: { bucketId: bucketPositional },
|
|
4708
4718
|
flags: {
|
|
4709
4719
|
role: flag.enum({
|
|
4710
|
-
brief: "Access role
|
|
4720
|
+
brief: "Access role; read_write unless set, use read for consumers that only download",
|
|
4711
4721
|
values: ["read", "read_write"]
|
|
4712
4722
|
}),
|
|
4713
4723
|
name: flag.string({
|
|
4714
|
-
brief: "Key display name (auto-generated if omitted)",
|
|
4724
|
+
brief: "Key display name; use it to record which consumer holds the key (auto-generated if omitted)",
|
|
4715
4725
|
placeholder: "name"
|
|
4716
4726
|
})
|
|
4717
4727
|
}
|
|
4718
4728
|
},
|
|
4719
4729
|
help: {
|
|
4720
4730
|
summary: "Create a bucket access key and print its one-time credentials",
|
|
4731
|
+
description: "Mints S3-compatible credentials for one bucket, shown exactly once; store them now, nothing prints them again. Give each consumer its own key so one can be revoked without breaking the others, and grant read-only consumers --role read.",
|
|
4721
4732
|
examples: [
|
|
4722
4733
|
"bucket key create bkt_123",
|
|
4723
4734
|
"bucket key create bkt_123 --role read",
|
|
@@ -4788,6 +4799,7 @@ const bucketKeyDeleteCommand = defineCommand({
|
|
|
4788
4799
|
} },
|
|
4789
4800
|
help: {
|
|
4790
4801
|
summary: "Revoke and delete a bucket access key",
|
|
4802
|
+
description: "The key's credentials stop working immediately; anything still using them loses access to the bucket. The bucket and its other keys are untouched.",
|
|
4791
4803
|
examples: ["bucket key delete bkt_123 bkey_456"]
|
|
4792
4804
|
},
|
|
4793
4805
|
needs: { credentials: true },
|
|
@@ -4905,6 +4917,7 @@ const bucketKeyListCommand = defineCommand({
|
|
|
4905
4917
|
args: { positionals: { bucketId: bucketPositional } },
|
|
4906
4918
|
help: {
|
|
4907
4919
|
summary: "List access keys for a bucket",
|
|
4920
|
+
description: "Shows each key's id, name, and role. Key secrets print once, at 'bucket key create'; listing never reveals them.",
|
|
4908
4921
|
examples: ["bucket key list bkt_123", "bucket key list bkt_123 --json"]
|
|
4909
4922
|
},
|
|
4910
4923
|
needs: { credentials: true },
|
|
@@ -4979,7 +4992,8 @@ const bucketListCommand = defineCommand({
|
|
|
4979
4992
|
branch: branchFlag$2
|
|
4980
4993
|
} },
|
|
4981
4994
|
help: {
|
|
4982
|
-
summary: "List object-store buckets
|
|
4995
|
+
summary: "List a project's object-store buckets",
|
|
4996
|
+
description: "A bucket is blob storage for files and uploads. Buckets are branch-bound: each belongs to one Branch, the isolated environment for one Git branch.",
|
|
4983
4997
|
examples: [
|
|
4984
4998
|
"bucket list",
|
|
4985
4999
|
"bucket list --branch preview",
|
|
@@ -5162,7 +5176,7 @@ async function postFeedback(endpoint, body, signal) {
|
|
|
5162
5176
|
const feedbackCommand = defineCommand({
|
|
5163
5177
|
help: {
|
|
5164
5178
|
summary: "Send feedback to the Prisma CLI team",
|
|
5165
|
-
description: "Anonymous unless --email is passed. Every submission includes the CLI
|
|
5179
|
+
description: "Anonymous unless --email is passed. Every submission includes the CLI version, node version, and OS platform/arch, and nothing else.",
|
|
5166
5180
|
examples: ["feedback \"the deploy flow is great\"", "feedback \"please add X\" --email you@example.com"]
|
|
5167
5181
|
},
|
|
5168
5182
|
args: {
|
|
@@ -5282,7 +5296,7 @@ function formatGitConnectionDetail(status) {
|
|
|
5282
5296
|
/** Workspace, project and the source-repository client for the
|
|
5283
5297
|
* `git *` commands. */
|
|
5284
5298
|
const projectFlag$2 = flag.string({
|
|
5285
|
-
brief: "Project id or name",
|
|
5299
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
5286
5300
|
placeholder: "id-or-name"
|
|
5287
5301
|
});
|
|
5288
5302
|
async function resolveGitContext(ctx, explicitProject, commandName) {
|
|
@@ -5384,13 +5398,14 @@ function connectPresentations(result) {
|
|
|
5384
5398
|
const gitConnectCommand = defineCommand({
|
|
5385
5399
|
args: {
|
|
5386
5400
|
positionals: { gitUrl: positional.optionalString({
|
|
5387
|
-
brief: "GitHub repository URL",
|
|
5401
|
+
brief: "GitHub repository URL (default: this repository's origin)",
|
|
5388
5402
|
placeholder: "git-url"
|
|
5389
5403
|
}) },
|
|
5390
5404
|
flags: { project: projectFlag$2 }
|
|
5391
5405
|
},
|
|
5392
5406
|
help: {
|
|
5393
|
-
summary: "Connect
|
|
5407
|
+
summary: "Connect a project to a GitHub repository so every push deploys",
|
|
5408
|
+
description: "Turns on deploy-on-push: once connected, pushing a Git branch builds and deploys it to a matching Platform Branch, an isolated environment with its own services, databases, and buckets. If the Prisma GitHub App does not cover the repository yet, the command opens the install page and waits. Run without a URL to use this repository's origin remote.",
|
|
5394
5409
|
examples: [
|
|
5395
5410
|
"git connect",
|
|
5396
5411
|
"git connect git@github.com:prisma/prisma-cli.git",
|
|
@@ -5486,7 +5501,8 @@ function disconnectPresentations(result) {
|
|
|
5486
5501
|
const gitDisconnectCommand = defineCommand({
|
|
5487
5502
|
args: { flags: { project: projectFlag$2 } },
|
|
5488
5503
|
help: {
|
|
5489
|
-
summary: "Disconnect the GitHub repository
|
|
5504
|
+
summary: "Disconnect the GitHub repository: pushes stop deploying",
|
|
5505
|
+
description: "Stops deploy-on-push by removing the repository connection. Nothing already deployed changes: existing branches, services, and databases stay as they are.",
|
|
5490
5506
|
examples: ["git disconnect", "git disconnect --project proj_123"]
|
|
5491
5507
|
},
|
|
5492
5508
|
needs: { credentials: true },
|
|
@@ -5760,8 +5776,8 @@ function bothSwitchesError() {
|
|
|
5760
5776
|
}
|
|
5761
5777
|
const skillsSyncCommand = defineCommand({
|
|
5762
5778
|
help: {
|
|
5763
|
-
summary: "Copy the agent skills from installed Prisma packages into this project",
|
|
5764
|
-
description: "
|
|
5779
|
+
summary: "Copy the AI-agent instruction files (skills) from installed Prisma packages into this project",
|
|
5780
|
+
description: "Agent skills are instruction files that teach AI coding agents (Claude Code, Cursor, and others) how to use the installed Prisma packages. They ship inside the packages themselves, so they always describe the version in use. Sync copies them into the skill directories the agent harnesses read, and removes copies whose package is gone. It does nothing, and exits 0, when everything is already current.",
|
|
5765
5781
|
examples: ["skills sync", "skills sync --disable"]
|
|
5766
5782
|
},
|
|
5767
5783
|
needs: { config: skillsConfigSection },
|
|
@@ -6268,7 +6284,7 @@ function initPresentations(result, postinstall, config, skills) {
|
|
|
6268
6284
|
}
|
|
6269
6285
|
const initCommand = defineCommand({
|
|
6270
6286
|
help: {
|
|
6271
|
-
summary: "Prepare this repository for Prisma
|
|
6287
|
+
summary: "Prepare this repository for Prisma: config file, dev dependency, AI-agent skills",
|
|
6272
6288
|
description: "Runs locally and calls no platform API. Adds a postinstall script to package.json that keeps the Prisma agent skills in sync on every install, adds prisma to devDependencies at this CLI's exact version when no dependency field declares it, scaffolds a prisma.config.ts recording which agents to install skills for, then syncs the skills once now. Everything lands in the current directory; a prisma.config.ts or postinstall script that already exists is never edited. Rerunning is safe: each step reports what is already done.",
|
|
6273
6289
|
examples: [
|
|
6274
6290
|
"init",
|
|
@@ -6840,11 +6856,11 @@ async function readWorkspaceSubscription(client, workspaceId, signal) {
|
|
|
6840
6856
|
//#region src/commands/postgres/context.ts
|
|
6841
6857
|
/** Workspace, project and provider for the `postgres *` commands. */
|
|
6842
6858
|
const projectFlag$1 = flag.string({
|
|
6843
|
-
brief: "Project id or name",
|
|
6859
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
6844
6860
|
placeholder: "id-or-name"
|
|
6845
6861
|
});
|
|
6846
6862
|
const branchFlag$1 = flag.string({
|
|
6847
|
-
brief: "Branch git name",
|
|
6863
|
+
brief: "Branch git name; use to target one branch's environment",
|
|
6848
6864
|
placeholder: "git-name"
|
|
6849
6865
|
});
|
|
6850
6866
|
const databasePositional = positional.string({
|
|
@@ -7022,6 +7038,7 @@ const postgresBackupListCommand = defineCommand({
|
|
|
7022
7038
|
},
|
|
7023
7039
|
help: {
|
|
7024
7040
|
summary: "List backups for a database",
|
|
7041
|
+
description: "Backups are created automatically by the platform. Use the listed backup ids with 'postgres backup restore'.",
|
|
7025
7042
|
examples: ["postgres backup list db_123", "postgres backup list acme-production --limit 50"]
|
|
7026
7043
|
},
|
|
7027
7044
|
needs: { credentials: true },
|
|
@@ -7104,11 +7121,11 @@ const postgresBackupRestoreCommand = defineCommand({
|
|
|
7104
7121
|
}) },
|
|
7105
7122
|
flags: {
|
|
7106
7123
|
backup: flag.string({
|
|
7107
|
-
brief: "Backup to restore from",
|
|
7124
|
+
brief: "Backup to restore from, listed by 'postgres backup list'",
|
|
7108
7125
|
placeholder: "backup-id"
|
|
7109
7126
|
}),
|
|
7110
7127
|
sourceDatabase: flag.string({
|
|
7111
|
-
brief: "Database the backup belongs to
|
|
7128
|
+
brief: "Database the backup belongs to; use when restoring another database's backup into the target",
|
|
7112
7129
|
placeholder: "database"
|
|
7113
7130
|
}),
|
|
7114
7131
|
project: projectFlag$1,
|
|
@@ -7117,6 +7134,7 @@ const postgresBackupRestoreCommand = defineCommand({
|
|
|
7117
7134
|
},
|
|
7118
7135
|
help: {
|
|
7119
7136
|
summary: "Restore a database from a backup after exact id confirmation",
|
|
7137
|
+
description: "Replaces the target database's current state with the backup's contents; anything written since that backup is lost, so the exact target database id is the consent token. To restore another database's backup into this one, name where the backup came from with --source-database.",
|
|
7120
7138
|
examples: ["postgres backup restore db_123 --backup bkp_456 --confirm db_123"]
|
|
7121
7139
|
},
|
|
7122
7140
|
needs: { credentials: true },
|
|
@@ -7166,7 +7184,7 @@ const postgresConnectionCreateCommand = defineCommand({
|
|
|
7166
7184
|
positionals: { database: databasePositional },
|
|
7167
7185
|
flags: {
|
|
7168
7186
|
name: flag.string({
|
|
7169
|
-
brief: "Connection name",
|
|
7187
|
+
brief: "Connection name; use it to record which consumer holds the credential",
|
|
7170
7188
|
placeholder: "name"
|
|
7171
7189
|
}),
|
|
7172
7190
|
project: projectFlag$1,
|
|
@@ -7174,7 +7192,8 @@ const postgresConnectionCreateCommand = defineCommand({
|
|
|
7174
7192
|
}
|
|
7175
7193
|
},
|
|
7176
7194
|
help: {
|
|
7177
|
-
summary: "Create
|
|
7195
|
+
summary: "Create an additional connection URL for a database; printed exactly once",
|
|
7196
|
+
description: "Mints an additional credential for an existing database, shown exactly once. Give each consumer (an app, CI, a teammate) its own named connection, so its access can later be rotated or revoked without touching the others.",
|
|
7178
7197
|
examples: ["postgres connection create db_123", "postgres connection create db_123 --name readonly"]
|
|
7179
7198
|
},
|
|
7180
7199
|
needs: { credentials: true },
|
|
@@ -7212,6 +7231,7 @@ const postgresConnectionDeleteCommand = defineCommand({
|
|
|
7212
7231
|
}) } },
|
|
7213
7232
|
help: {
|
|
7214
7233
|
summary: "Delete a database connection after exact id confirmation",
|
|
7234
|
+
description: "Revokes the credential: anything still using its URL loses access to the database. The database itself and its other connections are untouched. The exact connection id is the consent token.",
|
|
7215
7235
|
examples: ["postgres connection delete conn_123 --confirm conn_123"]
|
|
7216
7236
|
},
|
|
7217
7237
|
needs: { credentials: true },
|
|
@@ -7324,6 +7344,7 @@ const postgresConnectionListCommand = defineCommand({
|
|
|
7324
7344
|
},
|
|
7325
7345
|
help: {
|
|
7326
7346
|
summary: "List database connection metadata without secret values",
|
|
7347
|
+
description: "Each connection is an independent credential for the same database, so one consumer's access can be rotated or revoked without breaking the others. Listing shows metadata only; connection URLs print once, at create or rotate, and never again.",
|
|
7327
7348
|
examples: ["postgres connection list db_123", "postgres connection list acme-preview --branch preview --json"]
|
|
7328
7349
|
},
|
|
7329
7350
|
needs: { credentials: true },
|
|
@@ -7350,6 +7371,7 @@ const postgresConnectionRotateCommand = defineCommand({
|
|
|
7350
7371
|
}) } },
|
|
7351
7372
|
help: {
|
|
7352
7373
|
summary: "Rotate connection credentials and print the new one-time connection URL",
|
|
7374
|
+
description: "Replaces the connection's credentials: the old URL stops working and the new one prints exactly once. Use it after a suspected leak or on a rotation schedule. The exact connection id is the consent token.",
|
|
7353
7375
|
examples: ["postgres connection rotate conn_123 --confirm conn_123"]
|
|
7354
7376
|
},
|
|
7355
7377
|
needs: { credentials: true },
|
|
@@ -7396,7 +7418,7 @@ const postgresCreateCommand = defineCommand({
|
|
|
7396
7418
|
}) },
|
|
7397
7419
|
flags: {
|
|
7398
7420
|
region: flag.string({
|
|
7399
|
-
brief: "Prisma Postgres region id",
|
|
7421
|
+
brief: "Prisma Postgres region id; set it when the data must live near a location",
|
|
7400
7422
|
placeholder: "region"
|
|
7401
7423
|
}),
|
|
7402
7424
|
project: projectFlag$1,
|
|
@@ -7405,6 +7427,7 @@ const postgresCreateCommand = defineCommand({
|
|
|
7405
7427
|
},
|
|
7406
7428
|
help: {
|
|
7407
7429
|
summary: "Create a Prisma Postgres database and print its one-time connection URL",
|
|
7430
|
+
description: "Creates a database in a Branch of the project and prints its connection URL exactly once; store it now, nothing prints it again. Mint further URLs for other consumers with 'postgres connection create'.",
|
|
7408
7431
|
examples: ["postgres create my-db", "postgres create my-db --branch feature/foo --region eu-central-1"]
|
|
7409
7432
|
},
|
|
7410
7433
|
needs: { credentials: true },
|
|
@@ -7496,6 +7519,7 @@ const postgresDeleteCommand = defineCommand({
|
|
|
7496
7519
|
},
|
|
7497
7520
|
help: {
|
|
7498
7521
|
summary: "Delete a database after exact id confirmation",
|
|
7522
|
+
description: "Deletion is permanent and destroys the data. The exact database id is the consent token; pass it with --confirm to run non-interactively.",
|
|
7499
7523
|
examples: ["postgres delete db_123 --confirm db_123"]
|
|
7500
7524
|
},
|
|
7501
7525
|
needs: { credentials: true },
|
|
@@ -7583,7 +7607,8 @@ const postgresListCommand = defineCommand({
|
|
|
7583
7607
|
branch: branchFlag$1
|
|
7584
7608
|
} },
|
|
7585
7609
|
help: {
|
|
7586
|
-
summary: "List Prisma Postgres databases
|
|
7610
|
+
summary: "List a project's Prisma Postgres databases",
|
|
7611
|
+
description: "Databases are branch-bound: each belongs to one Branch, the isolated environment for one Git branch. Without --branch, this lists databases across every branch of the project.",
|
|
7587
7612
|
examples: [
|
|
7588
7613
|
"postgres list",
|
|
7589
7614
|
"postgres list --branch feature/foo",
|
|
@@ -7704,6 +7729,7 @@ const postgresShowCommand = defineCommand({
|
|
|
7704
7729
|
},
|
|
7705
7730
|
help: {
|
|
7706
7731
|
summary: "Show database metadata without secret values",
|
|
7732
|
+
description: "Shows a database's name, branch, region, and status. Connection URLs are secrets printed once, by 'postgres create' or 'postgres connection rotate'; this command never reveals them.",
|
|
7707
7733
|
examples: ["postgres show db_123", "postgres show acme-preview --branch preview --json"]
|
|
7708
7734
|
},
|
|
7709
7735
|
needs: { credentials: true },
|
|
@@ -8546,12 +8572,13 @@ const projectCreateCommand = defineCommand({
|
|
|
8546
8572
|
placeholder: "name"
|
|
8547
8573
|
}) },
|
|
8548
8574
|
flags: { region: flag.string({
|
|
8549
|
-
brief: "Prisma Compute region
|
|
8575
|
+
brief: "Prisma Compute region for the project's infrastructure; set it when data or users must stay near a location",
|
|
8550
8576
|
placeholder: "region"
|
|
8551
8577
|
}) }
|
|
8552
8578
|
},
|
|
8553
8579
|
help: {
|
|
8554
|
-
summary: "Create a Project and link this directory",
|
|
8580
|
+
summary: "Create a Project and link this directory: commands run here target it",
|
|
8581
|
+
description: "Creates a Project in your workspace and links the current directory to it, so later commands resolve it without --project. A Project groups one product or codebase; its Branches are isolated environments, each with its own services, databases, and buckets. This is usually the first command after 'auth login' in a new repository.",
|
|
8555
8582
|
examples: ["project create my-app", "project create my-app --json"]
|
|
8556
8583
|
},
|
|
8557
8584
|
needs: { credentials: true },
|
|
@@ -8630,6 +8657,7 @@ const projectDeleteCommand = defineCommand({
|
|
|
8630
8657
|
}) } },
|
|
8631
8658
|
help: {
|
|
8632
8659
|
summary: "Delete a Project permanently after exact id confirmation",
|
|
8660
|
+
description: "Deletion is permanent: it destroys the project's databases and stops its deployed services. Because of that, the command asks for the exact project id as a consent token; pass it with --confirm to run non-interactively.",
|
|
8633
8661
|
examples: ["project delete proj_123 --confirm proj_123"]
|
|
8634
8662
|
},
|
|
8635
8663
|
needs: { credentials: true },
|
|
@@ -9297,19 +9325,19 @@ function serializeEnvList(result) {
|
|
|
9297
9325
|
/** Flags, scope resolution and presentation shared by the
|
|
9298
9326
|
* `project env *` commands. */
|
|
9299
9327
|
const roleFlag = flag.enum({
|
|
9300
|
-
brief: "Project
|
|
9328
|
+
brief: "Project-wide scope: production, or preview (shared by every preview branch)",
|
|
9301
9329
|
values: ["production", "preview"]
|
|
9302
9330
|
});
|
|
9303
9331
|
const projectFlag = flag.string({
|
|
9304
|
-
brief: "Project id or name",
|
|
9332
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
9305
9333
|
placeholder: "id-or-name"
|
|
9306
9334
|
});
|
|
9307
9335
|
const branchFlag = flag.string({
|
|
9308
|
-
brief: "
|
|
9336
|
+
brief: "Scope to one preview branch's override; use for values only that branch needs",
|
|
9309
9337
|
placeholder: "git-name"
|
|
9310
9338
|
});
|
|
9311
9339
|
const fileFlag = flag.string({
|
|
9312
|
-
brief: "Read KEY=VALUE assignments from a dotenv file",
|
|
9340
|
+
brief: "Read KEY=VALUE assignments from a dotenv file; use to import many variables at once",
|
|
9313
9341
|
placeholder: "path"
|
|
9314
9342
|
});
|
|
9315
9343
|
function requireEnvScope(flags, command) {
|
|
@@ -9462,7 +9490,8 @@ const projectEnvAddCommand = defineCommand({
|
|
|
9462
9490
|
}
|
|
9463
9491
|
},
|
|
9464
9492
|
help: {
|
|
9465
|
-
summary: "Create
|
|
9493
|
+
summary: "Create an environment variable in one scope: production, preview, or one branch",
|
|
9494
|
+
description: "Variables reach a service's environment when it deploys. Writes always name their scope so production is never targeted by accident: --role production, --role preview (shared by every preview branch), or --branch for one branch's override. The value comes from KEY=VALUE, from the current shell environment when only KEY is given, or from a dotenv file with --file.",
|
|
9466
9495
|
examples: [
|
|
9467
9496
|
"project env add STRIPE_KEY=sk_test_xxx --role production",
|
|
9468
9497
|
"project env add STRIPE_KEY=sk_test_xxx --role preview",
|
|
@@ -9578,7 +9607,8 @@ const projectEnvDeleteCommand = defineCommand({
|
|
|
9578
9607
|
}
|
|
9579
9608
|
},
|
|
9580
9609
|
help: {
|
|
9581
|
-
summary: "Delete an environment variable from
|
|
9610
|
+
summary: "Delete an environment variable from one scope: production, preview, or one branch",
|
|
9611
|
+
description: "Removes the variable from the named scope only; the same key in other scopes is untouched. Services lose the value on their next deploy.",
|
|
9582
9612
|
examples: [
|
|
9583
9613
|
"project env delete STRIPE_KEY --role production",
|
|
9584
9614
|
"project env delete STRIPE_KEY --role preview",
|
|
@@ -9656,13 +9686,14 @@ const projectEnvListCommand = defineCommand({
|
|
|
9656
9686
|
args: { flags: {
|
|
9657
9687
|
role: roleFlag,
|
|
9658
9688
|
branch: flag.string({
|
|
9659
|
-
brief: "
|
|
9689
|
+
brief: "Show what one preview branch resolves: the preview scope plus its overrides",
|
|
9660
9690
|
placeholder: "git-name"
|
|
9661
9691
|
}),
|
|
9662
9692
|
project: projectFlag
|
|
9663
9693
|
} },
|
|
9664
9694
|
help: {
|
|
9665
|
-
summary: "List environment
|
|
9695
|
+
summary: "List environment variables in a scope: names and ids, never values",
|
|
9696
|
+
description: "Values are write-only through the CLI: listing shows names, ids, and status, never values. Without a scope flag it shows an overview of every scope; --role narrows to the production or preview scope, and --branch shows what one preview branch resolves.",
|
|
9666
9697
|
examples: [
|
|
9667
9698
|
"project env list",
|
|
9668
9699
|
"project env list --role production",
|
|
@@ -9728,7 +9759,8 @@ const projectEnvUpdateCommand = defineCommand({
|
|
|
9728
9759
|
}
|
|
9729
9760
|
},
|
|
9730
9761
|
help: {
|
|
9731
|
-
summary: "Replace an existing environment variable's value
|
|
9762
|
+
summary: "Replace an existing environment variable's value",
|
|
9763
|
+
description: "Overwrites one variable's value in one scope; the variable must already exist there (use 'project env add' to create it). With --file, overwrites every variable the dotenv file lists. New values reach services on their next deploy.",
|
|
9732
9764
|
examples: [
|
|
9733
9765
|
"project env update STRIPE_KEY=sk_new_xxx --role production",
|
|
9734
9766
|
"project env update STRIPE_KEY=sk_new_xxx --role preview",
|
|
@@ -9877,7 +9909,8 @@ const projectLinkCommand = defineCommand({
|
|
|
9877
9909
|
placeholder: "id-or-name"
|
|
9878
9910
|
}) } },
|
|
9879
9911
|
help: {
|
|
9880
|
-
summary: "Link this directory to a Project",
|
|
9912
|
+
summary: "Link this directory to a Project: commands run here target it by default",
|
|
9913
|
+
description: "Records locally that this directory belongs to an existing Project, so later commands resolve it without --project. Linking itself changes local state only. Run without an argument to pick from your workspace's projects; that picker also offers creating a new Project, which does create one on the platform.",
|
|
9881
9914
|
examples: [
|
|
9882
9915
|
"project link",
|
|
9883
9916
|
"project link proj_123",
|
|
@@ -9958,6 +9991,7 @@ function listPresentations$1(result) {
|
|
|
9958
9991
|
const projectListCommand = defineCommand({
|
|
9959
9992
|
help: {
|
|
9960
9993
|
summary: "List all projects in your workspace",
|
|
9994
|
+
description: "A Project groups one product or codebase. It is the child of a workspace and the parent of Branches: isolated environments that hold your services, databases, and buckets.",
|
|
9961
9995
|
examples: ["project list", "project list --json"]
|
|
9962
9996
|
},
|
|
9963
9997
|
needs: { credentials: true },
|
|
@@ -10018,12 +10052,13 @@ const projectRenameCommand = defineCommand({
|
|
|
10018
10052
|
placeholder: "name"
|
|
10019
10053
|
}) },
|
|
10020
10054
|
flags: { project: flag.string({
|
|
10021
|
-
brief: "Project id or name",
|
|
10055
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
10022
10056
|
placeholder: "id-or-name"
|
|
10023
10057
|
}) }
|
|
10024
10058
|
},
|
|
10025
10059
|
help: {
|
|
10026
|
-
summary: "Rename
|
|
10060
|
+
summary: "Rename a Project",
|
|
10061
|
+
description: "Changes the display name of the linked project, or of the one named by --project. The project id stays the same, so existing links and automation keep working.",
|
|
10027
10062
|
examples: ["project rename \"Acme Dashboard v2\"", "project rename billing-api --project proj_123"]
|
|
10028
10063
|
},
|
|
10029
10064
|
needs: { credentials: true },
|
|
@@ -10153,11 +10188,12 @@ function showPresentations$1(result, cwd, env) {
|
|
|
10153
10188
|
}
|
|
10154
10189
|
const projectShowCommand = defineCommand({
|
|
10155
10190
|
args: { positionals: { project: positional.optionalString({
|
|
10156
|
-
brief: "Project id or name (default: the linked
|
|
10191
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
10157
10192
|
placeholder: "id-or-name"
|
|
10158
10193
|
}) } },
|
|
10159
10194
|
help: {
|
|
10160
|
-
summary: "Show this directory
|
|
10195
|
+
summary: "Show which Project this directory is linked to",
|
|
10196
|
+
description: "Reports which Project this directory is linked to, or that it is not linked, with next steps. Pass an id or name to inspect any project without changing the local link.",
|
|
10161
10197
|
examples: ["project show", "project show proj_123 --json"]
|
|
10162
10198
|
},
|
|
10163
10199
|
needs: { credentials: true },
|
|
@@ -10341,17 +10377,18 @@ const projectTransferCommand = defineCommand({
|
|
|
10341
10377
|
}) },
|
|
10342
10378
|
flags: {
|
|
10343
10379
|
toWorkspace: flag.string({
|
|
10344
|
-
brief: "
|
|
10380
|
+
brief: "Receiving workspace, when it is one of your own stored sessions",
|
|
10345
10381
|
placeholder: "id-or-name"
|
|
10346
10382
|
}),
|
|
10347
10383
|
recipientToken: flag.string({
|
|
10348
|
-
brief: "Access token for the receiving workspace",
|
|
10384
|
+
brief: "Access token for the receiving workspace, when you are not a member of it",
|
|
10349
10385
|
placeholder: "token"
|
|
10350
10386
|
})
|
|
10351
10387
|
}
|
|
10352
10388
|
},
|
|
10353
10389
|
help: {
|
|
10354
10390
|
summary: "Transfer a Project to another workspace after exact id confirmation",
|
|
10391
|
+
description: "Moves a project, with everything in it, out of the current workspace. Name the receiving workspace with --to-workspace when you are logged in to it too, or pass --recipient-token when someone else owns it. The exact project id is the consent token.",
|
|
10355
10392
|
examples: ["project transfer proj_123 --to-workspace \"Prisma Labs\" --confirm proj_123", "project transfer proj_123 --recipient-token <token> --confirm proj_123"]
|
|
10356
10393
|
},
|
|
10357
10394
|
needs: { credentials: true },
|
|
@@ -11549,6 +11586,7 @@ async function resolveServiceDomainTarget(ctx, options) {
|
|
|
11549
11586
|
const serviceCreateCommand = defineCommand({
|
|
11550
11587
|
help: {
|
|
11551
11588
|
summary: "Create a service in a project",
|
|
11589
|
+
description: "Registers a service on a Branch ahead of its first deploy. Deploying through a connected repository or 'deploy' creates services automatically, so reach for this only when a service must exist before anything has been deployed to it.",
|
|
11552
11590
|
examples: ["service create my-service", "service create my-service --region us-east-1 --branch main"]
|
|
11553
11591
|
},
|
|
11554
11592
|
args: {
|
|
@@ -11558,15 +11596,15 @@ const serviceCreateCommand = defineCommand({
|
|
|
11558
11596
|
}) },
|
|
11559
11597
|
flags: {
|
|
11560
11598
|
project: flag.string({
|
|
11561
|
-
brief: "Project id or name",
|
|
11599
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
11562
11600
|
placeholder: "id-or-name"
|
|
11563
11601
|
}),
|
|
11564
11602
|
region: flag.string({
|
|
11565
|
-
brief: "Prisma Compute region id",
|
|
11603
|
+
brief: "Prisma Compute region id; set it when the service must run near a location",
|
|
11566
11604
|
placeholder: "region"
|
|
11567
11605
|
}),
|
|
11568
11606
|
branch: flag.string({
|
|
11569
|
-
brief: "Branch
|
|
11607
|
+
brief: "Branch to create the service on (default: the default branch)",
|
|
11570
11608
|
placeholder: "branch"
|
|
11571
11609
|
})
|
|
11572
11610
|
}
|
|
@@ -11718,7 +11756,8 @@ function destroyProgressReporter(ctx, serviceName) {
|
|
|
11718
11756
|
//#region src/commands/service/delete.ts
|
|
11719
11757
|
const serviceDeleteCommand = defineCommand({
|
|
11720
11758
|
help: {
|
|
11721
|
-
summary: "Delete
|
|
11759
|
+
summary: "Delete a service from one branch",
|
|
11760
|
+
description: "Removes the service from the targeted Branch only: its versions stop serving and its URL goes away. The same service on other branches is untouched. Pass the confirmation token with --confirm to run non-interactively.",
|
|
11722
11761
|
examples: ["service delete my-service", "service delete my-service --confirm my-service"]
|
|
11723
11762
|
},
|
|
11724
11763
|
args: {
|
|
@@ -11789,11 +11828,11 @@ function domainTargetArgs() {
|
|
|
11789
11828
|
return {
|
|
11790
11829
|
flags: {
|
|
11791
11830
|
service: flag.string({
|
|
11792
|
-
brief: "Service id or name",
|
|
11831
|
+
brief: "Service id or name the domain belongs to",
|
|
11793
11832
|
placeholder: "name"
|
|
11794
11833
|
}),
|
|
11795
11834
|
project: flag.string({
|
|
11796
|
-
brief: "Project id or name",
|
|
11835
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
11797
11836
|
placeholder: "id-or-name"
|
|
11798
11837
|
}),
|
|
11799
11838
|
branch: flag.string({
|
|
@@ -11812,6 +11851,7 @@ function domainTargetArgs() {
|
|
|
11812
11851
|
const serviceDomainAddCommand = defineCommand({
|
|
11813
11852
|
help: {
|
|
11814
11853
|
summary: "Register a custom domain on the service's production branch",
|
|
11854
|
+
description: "Points a hostname you own at the service instead of its generated URL. After registering, create the DNS record the platform asks for, then 'service domain wait' blocks until verification and TLS provisioning finish.",
|
|
11815
11855
|
examples: ["service domain add shop.acme.com --service my-service"]
|
|
11816
11856
|
},
|
|
11817
11857
|
args: domainTargetArgs(),
|
|
@@ -11844,6 +11884,7 @@ const serviceDomainAddCommand = defineCommand({
|
|
|
11844
11884
|
const serviceDomainDeleteCommand = defineCommand({
|
|
11845
11885
|
help: {
|
|
11846
11886
|
summary: "Delete a custom domain from the service",
|
|
11887
|
+
description: "The hostname stops routing to the service immediately; the service itself and its generated URL keep working. Pass the hostname with --confirm to run non-interactively.",
|
|
11847
11888
|
examples: ["service domain delete shop.acme.com --service my-service", "service domain delete shop.acme.com --service my-service --confirm shop.acme.com"]
|
|
11848
11889
|
},
|
|
11849
11890
|
args: domainTargetArgs(),
|
|
@@ -11874,6 +11915,7 @@ const serviceDomainDeleteCommand = defineCommand({
|
|
|
11874
11915
|
const serviceDomainRetryCommand = defineCommand({
|
|
11875
11916
|
help: {
|
|
11876
11917
|
summary: "Retry custom domain DNS verification and TLS provisioning",
|
|
11918
|
+
description: "Run it after fixing what made the domain fail, typically a missing or wrong DNS record reported by 'service domain show'.",
|
|
11877
11919
|
examples: ["service domain retry shop.acme.com --service my-service"]
|
|
11878
11920
|
},
|
|
11879
11921
|
args: domainTargetArgs(),
|
|
@@ -11902,6 +11944,7 @@ const serviceDomainRetryCommand = defineCommand({
|
|
|
11902
11944
|
const serviceDomainShowCommand = defineCommand({
|
|
11903
11945
|
help: {
|
|
11904
11946
|
summary: "Show custom domain status and certificate details",
|
|
11947
|
+
description: "Reports where the domain is in its lifecycle: DNS verification, TLS certificate issuance, active, or failed with the fix to apply. Check here first when a domain is not serving.",
|
|
11905
11948
|
examples: ["service domain show shop.acme.com --service my-service"]
|
|
11906
11949
|
},
|
|
11907
11950
|
args: domainTargetArgs(),
|
|
@@ -11968,6 +12011,7 @@ const DURATION = /^(\d+)(ms|s|m|h)$/;
|
|
|
11968
12011
|
const serviceDomainWaitCommand = defineCommand({
|
|
11969
12012
|
help: {
|
|
11970
12013
|
summary: "Wait until a custom domain is active or failed",
|
|
12014
|
+
description: "Blocks while DNS verification and TLS provisioning run, then exits with the outcome; useful in scripts and CI after 'service domain add'.",
|
|
11971
12015
|
examples: ["service domain wait shop.acme.com --service my-service", "service domain wait shop.acme.com --service my-service --timeout 30m"]
|
|
11972
12016
|
},
|
|
11973
12017
|
args: {
|
|
@@ -12032,15 +12076,16 @@ const serviceDomainWaitCommand = defineCommand({
|
|
|
12032
12076
|
const serviceListCommand = defineCommand({
|
|
12033
12077
|
help: {
|
|
12034
12078
|
summary: "List the services in a project",
|
|
12079
|
+
description: "A service is one HTTP application (a frontend or a backend) deployed on a Branch of the project. Each deploy produces a service version; at most one version serves traffic at a time.",
|
|
12035
12080
|
examples: ["service list", "service list --project my-app --json"]
|
|
12036
12081
|
},
|
|
12037
12082
|
args: { flags: {
|
|
12038
12083
|
project: flag.string({
|
|
12039
|
-
brief: "Project id or name",
|
|
12084
|
+
brief: "Project id or name (default: the project this directory is linked to)",
|
|
12040
12085
|
placeholder: "id-or-name"
|
|
12041
12086
|
}),
|
|
12042
12087
|
branch: flag.string({
|
|
12043
|
-
brief: "Branch
|
|
12088
|
+
brief: "Branch the services live on (default: the default branch)",
|
|
12044
12089
|
placeholder: "branch"
|
|
12045
12090
|
})
|
|
12046
12091
|
} },
|
|
@@ -12303,6 +12348,7 @@ async function resolveLogsTarget(ctx, options) {
|
|
|
12303
12348
|
const serviceLogsCommand = defineSessionCommand({
|
|
12304
12349
|
help: {
|
|
12305
12350
|
summary: "Read logs for a version of the service",
|
|
12351
|
+
description: "Reads the live version's logs by default; point --version-id at any other version, such as a failed build being debugged. --follow keeps streaming new lines, and --tail or --from-start choose where reading starts.",
|
|
12306
12352
|
examples: [
|
|
12307
12353
|
"service logs my-service",
|
|
12308
12354
|
"service logs my-service --tail 500",
|
|
@@ -12325,7 +12371,7 @@ const serviceLogsCommand = defineSessionCommand({
|
|
|
12325
12371
|
placeholder: "name"
|
|
12326
12372
|
}),
|
|
12327
12373
|
versionId: flag.string({
|
|
12328
|
-
brief: "Service version id to read (default: the live version)",
|
|
12374
|
+
brief: "Service version id to read; use for a failed or stopped version (default: the live version)",
|
|
12329
12375
|
placeholder: "id"
|
|
12330
12376
|
}),
|
|
12331
12377
|
tail: flag.number({
|
|
@@ -12417,7 +12463,8 @@ const serviceOpenCommand = defineCommand({
|
|
|
12417
12463
|
//#region src/commands/service/show.ts
|
|
12418
12464
|
const serviceShowCommand = defineCommand({
|
|
12419
12465
|
help: {
|
|
12420
|
-
summary: "Show
|
|
12466
|
+
summary: "Show a service and the version currently serving traffic",
|
|
12467
|
+
description: "Shows the version serving traffic and the service's live URL, when the service has a live version; a service that has never deployed has none yet. Inspect other versions with 'service version list' and 'service version show'.",
|
|
12421
12468
|
examples: ["service show my-service", "service show my-service --branch feature-x"]
|
|
12422
12469
|
},
|
|
12423
12470
|
args: {
|
|
@@ -12465,6 +12512,7 @@ const serviceShowCommand = defineCommand({
|
|
|
12465
12512
|
const serviceVersionDeleteCommand = defineCommand({
|
|
12466
12513
|
help: {
|
|
12467
12514
|
summary: "Delete a service version and the artifact it holds",
|
|
12515
|
+
description: "Permanently removes the version and its built artifact, so it can no longer be started or rolled back to. Pass the exact version id with --confirm to run non-interactively.",
|
|
12468
12516
|
examples: ["service version delete cpv_123", "service version delete cpv_123 --confirm cpv_123"]
|
|
12469
12517
|
},
|
|
12470
12518
|
args: { positionals: { version: positional.string({
|
|
@@ -12510,6 +12558,7 @@ const serviceVersionDeleteCommand = defineCommand({
|
|
|
12510
12558
|
const serviceVersionListCommand = defineCommand({
|
|
12511
12559
|
help: {
|
|
12512
12560
|
summary: "List versions of the service",
|
|
12561
|
+
description: "Every deploy produces an immutable service version; at most one serves traffic at a time. Use the listed ids with 'service version' promote, rollback, start, stop, and delete.",
|
|
12513
12562
|
examples: ["service version list my-service", "service version list my-service --branch feature-x"]
|
|
12514
12563
|
},
|
|
12515
12564
|
args: {
|
|
@@ -12554,6 +12603,7 @@ const serviceVersionListCommand = defineCommand({
|
|
|
12554
12603
|
const serviceVersionPromoteCommand = defineCommand({
|
|
12555
12604
|
help: {
|
|
12556
12605
|
summary: "Promote a service version to production by rebuilding with production env vars",
|
|
12606
|
+
description: "The normal release path: take a version that proved itself on a preview branch, rebuild its source with production environment variables, and switch production traffic to the result. To undo a release, use 'service version rollback', which needs no rebuild.",
|
|
12557
12607
|
examples: ["service version promote cpv_123"]
|
|
12558
12608
|
},
|
|
12559
12609
|
args: { positionals: { version: positional.string({
|
|
@@ -12615,6 +12665,7 @@ const serviceVersionPromoteCommand = defineCommand({
|
|
|
12615
12665
|
const serviceVersionRollbackCommand = defineCommand({
|
|
12616
12666
|
help: {
|
|
12617
12667
|
summary: "Roll back production to a previous service version",
|
|
12668
|
+
description: "Returns production traffic to an already-built version without rebuilding, which makes it the fastest way out of a bad release. Defaults to the version before the live one; name an exact target with --to.",
|
|
12618
12669
|
examples: [
|
|
12619
12670
|
"service version rollback my-service",
|
|
12620
12671
|
"service version rollback my-service --to cpv_123",
|
|
@@ -12632,7 +12683,7 @@ const serviceVersionRollbackCommand = defineCommand({
|
|
|
12632
12683
|
placeholder: "name"
|
|
12633
12684
|
}),
|
|
12634
12685
|
to: flag.string({
|
|
12635
|
-
brief: "Version id to roll back to (default: the version before the live one)",
|
|
12686
|
+
brief: "Version id to roll back to; use when the last good version is further back (default: the version before the live one)",
|
|
12636
12687
|
placeholder: "version"
|
|
12637
12688
|
})
|
|
12638
12689
|
},
|
|
@@ -12709,6 +12760,7 @@ const serviceVersionRollbackCommand = defineCommand({
|
|
|
12709
12760
|
const serviceVersionShowCommand = defineCommand({
|
|
12710
12761
|
help: {
|
|
12711
12762
|
summary: "Show a service version in detail",
|
|
12763
|
+
description: "Version ids are globally unique, so the id alone is the complete target: no --project or --branch scope is needed.",
|
|
12712
12764
|
examples: ["service version show cpv_123"]
|
|
12713
12765
|
},
|
|
12714
12766
|
args: { positionals: { version: positional.string({
|
|
@@ -12862,6 +12914,7 @@ const skillsCommandFamily = defineCommandFamily({
|
|
|
12862
12914
|
list: defineCommand({
|
|
12863
12915
|
help: {
|
|
12864
12916
|
summary: "Show which Prisma agent skills are installed in this project",
|
|
12917
|
+
description: "Shows each skill, the package and version it came from, and whether the synced copies are current. Run 'skills sync' to bring stale copies up to date.",
|
|
12865
12918
|
examples: ["skills list", "skills list --json"]
|
|
12866
12919
|
},
|
|
12867
12920
|
needs: { config: skillsConfigSection },
|
|
@@ -12981,26 +13034,146 @@ const ormCommandFamily$1 = ormCommandFamily;
|
|
|
12981
13034
|
* text that belongs to them; both halves are spread in below. */
|
|
12982
13035
|
const telemetry = telemetryCommandGroup({ docsUrl: CLI_DOCS_URL });
|
|
12983
13036
|
const cliGroups = {
|
|
12984
|
-
auth: {
|
|
12985
|
-
|
|
12986
|
-
|
|
12987
|
-
|
|
12988
|
-
|
|
12989
|
-
|
|
12990
|
-
|
|
12991
|
-
|
|
12992
|
-
|
|
12993
|
-
|
|
12994
|
-
|
|
12995
|
-
|
|
12996
|
-
|
|
12997
|
-
|
|
12998
|
-
|
|
12999
|
-
|
|
13000
|
-
|
|
13001
|
-
|
|
13037
|
+
auth: {
|
|
13038
|
+
brief: "Manage authentication for the Prisma Platform. Sign in and out, inspect identity, switch workspaces",
|
|
13039
|
+
description: "Signing in opens a browser flow and stores a session for one workspace: the account-level container that holds your Projects, members, and billing. Commands act on the current session's workspace; log in once per workspace and switch with the 'workspace' subcommands. A PRISMA_SERVICE_TOKEN environment credential overrides stored sessions, which is the way to authenticate CI."
|
|
13040
|
+
},
|
|
13041
|
+
project: {
|
|
13042
|
+
brief: "Manage Prisma Platform projects. CRUD, link a directory, transfer ownership, manage environment variables",
|
|
13043
|
+
description: "A Project groups one product or codebase. It is the child of a workspace and the parent of Branches: isolated environments, one per Git branch, each holding its own services, databases, and buckets. 'Linking' connects a local directory to a Project: the link is stored locally, and every project-scoped command run in that directory targets the linked project unless --project names another. 'create' links automatically; 'link' points a directory at an existing Project; 'show' reports the link.",
|
|
13044
|
+
workflow: [
|
|
13045
|
+
{
|
|
13046
|
+
run: "project create my-app",
|
|
13047
|
+
brief: "Create a Project, link this directory"
|
|
13048
|
+
},
|
|
13049
|
+
{
|
|
13050
|
+
run: "git connect",
|
|
13051
|
+
brief: "Connect GitHub so every push deploys"
|
|
13052
|
+
},
|
|
13053
|
+
{
|
|
13054
|
+
run: "project env add KEY=value --role preview",
|
|
13055
|
+
brief: "Set env vars services get at deploy"
|
|
13056
|
+
}
|
|
13057
|
+
]
|
|
13058
|
+
},
|
|
13059
|
+
"project env": {
|
|
13060
|
+
brief: "Manage a project's environment variables. Add, update, list, and delete values per scope",
|
|
13061
|
+
description: "Variables live in scopes: production, preview (shared by every preview branch), or a single branch's override. Values reach services when they deploy, and are write-only afterwards: list shows metadata, never values."
|
|
13062
|
+
},
|
|
13063
|
+
postgres: {
|
|
13064
|
+
brief: "Manage Prisma Postgres databases. CRUD, usage metrics, backups, and connection credentials",
|
|
13065
|
+
description: "Databases are branch-bound: each belongs to a Branch, the isolated environment for one Git branch of a project, so commands take --branch to target one. Address a database by its id (db_...) or name. Connection URLs are secrets that print exactly once, at create or rotate; nothing shows them again. 'backup' restores platform-taken backups, and 'connection' manages per-consumer credentials.",
|
|
13066
|
+
workflow: [
|
|
13067
|
+
{
|
|
13068
|
+
run: "postgres create app-db",
|
|
13069
|
+
brief: "Create a database; its URL prints once"
|
|
13070
|
+
},
|
|
13071
|
+
{
|
|
13072
|
+
run: "postgres connection create app-db --name ci",
|
|
13073
|
+
brief: "Mint one credential per consumer"
|
|
13074
|
+
},
|
|
13075
|
+
{
|
|
13076
|
+
run: "postgres connection rotate conn_123",
|
|
13077
|
+
brief: "Replace a leaked credential"
|
|
13078
|
+
}
|
|
13079
|
+
]
|
|
13080
|
+
},
|
|
13081
|
+
"postgres backup": {
|
|
13082
|
+
brief: "Inspect and restore database backups. The platform takes them automatically",
|
|
13083
|
+
description: "The platform takes backups automatically; there is no backup-create command. Restore replaces a database's current state with a backup's contents after exact id confirmation."
|
|
13084
|
+
},
|
|
13085
|
+
"postgres connection": {
|
|
13086
|
+
brief: "Manage database connection credentials. Create, rotate, and revoke per-consumer connection URLs",
|
|
13087
|
+
description: "A connection is one independent credential (a connection URL) for one database. Give each consumer (an app, CI, a teammate) its own, so one can be rotated or revoked without breaking the others. URLs print once, at create or rotate; list shows metadata only."
|
|
13088
|
+
},
|
|
13089
|
+
bucket: {
|
|
13090
|
+
brief: "Manage S3-compatible object-store buckets for a project. CRUD operations and access keys",
|
|
13091
|
+
description: "A bucket is blob storage for files and uploads, bound to one Branch of a project and reachable through the standard S3 API. Access goes through S3-compatible keys minted per consumer with 'bucket key create', which prints credentials (endpoint, key id, secret) exactly once.",
|
|
13092
|
+
workflow: [{
|
|
13093
|
+
run: "bucket create --name uploads",
|
|
13094
|
+
brief: "Create a bucket in the branch"
|
|
13095
|
+
}, {
|
|
13096
|
+
run: "bucket key create bkt_123",
|
|
13097
|
+
brief: "Mint S3 credentials, shown once"
|
|
13098
|
+
}]
|
|
13099
|
+
},
|
|
13100
|
+
"bucket key": {
|
|
13101
|
+
brief: "Manage a bucket's access keys. Create, list, and revoke per-consumer S3 credentials",
|
|
13102
|
+
description: "A key is one consumer's S3-compatible credentials for one bucket, with role read or read_write. Secrets print once at create; delete revokes access immediately."
|
|
13103
|
+
},
|
|
13104
|
+
branch: {
|
|
13105
|
+
brief: "View Platform branches: the isolated environment behind each Git branch",
|
|
13106
|
+
description: "A Branch maps to a Git branch of the connected repository. Each is an isolated environment with its own services, databases, buckets, and environment variables: the production branch serves live traffic, every other branch is a preview."
|
|
13107
|
+
},
|
|
13108
|
+
git: {
|
|
13109
|
+
brief: "Manage the GitHub connection that deploys on push. Connect or disconnect a repository",
|
|
13110
|
+
description: "Connecting a GitHub repository turns on deploy-on-push: pushing a Git branch builds and deploys it to a matching Platform Branch. Disconnecting stops push deploys without touching anything already deployed."
|
|
13111
|
+
},
|
|
13112
|
+
service: {
|
|
13113
|
+
brief: "Manage deployed services. Logs, versions, promote and rollback releases, custom domains",
|
|
13114
|
+
description: "A service is one HTTP application (a frontend or a backend) deployed on a Branch. Every deploy produces an immutable service version; at most one serves traffic at a time. The 'version' subcommands move which one that is: promote releases a preview build into production, rollback returns production to a previous version without rebuilding. 'logs' reads and streams output, and 'domain' attaches hostnames you own.",
|
|
13115
|
+
workflow: [
|
|
13116
|
+
{
|
|
13117
|
+
run: "service logs my-api --follow",
|
|
13118
|
+
brief: "Stream the live version's logs"
|
|
13119
|
+
},
|
|
13120
|
+
{
|
|
13121
|
+
run: "service version promote cpv_123",
|
|
13122
|
+
brief: "Release a preview build to production"
|
|
13123
|
+
},
|
|
13124
|
+
{
|
|
13125
|
+
run: "service version rollback my-api",
|
|
13126
|
+
brief: "Put production back on the previous version"
|
|
13127
|
+
}
|
|
13128
|
+
]
|
|
13129
|
+
},
|
|
13130
|
+
"service domain": {
|
|
13131
|
+
brief: "Manage custom domains for a service. Register hostnames, drive DNS and TLS verification, inspect status",
|
|
13132
|
+
description: "Custom domains point hostnames you own at a service's production branch. After add, create the DNS record the platform reports; wait and retry drive DNS verification and TLS provisioning to done.",
|
|
13133
|
+
workflow: [
|
|
13134
|
+
{
|
|
13135
|
+
run: "service domain add shop.acme.com --service my-api",
|
|
13136
|
+
brief: "Register the hostname"
|
|
13137
|
+
},
|
|
13138
|
+
{
|
|
13139
|
+
run: "service domain wait shop.acme.com --service my-api",
|
|
13140
|
+
brief: "Block until active or failed"
|
|
13141
|
+
},
|
|
13142
|
+
{
|
|
13143
|
+
run: "service domain show shop.acme.com --service my-api",
|
|
13144
|
+
brief: "Inspect status and certificate"
|
|
13145
|
+
}
|
|
13146
|
+
]
|
|
13147
|
+
},
|
|
13148
|
+
"service version": {
|
|
13149
|
+
brief: "Manage a service's deploy versions. List, inspect, promote, roll back, start, stop, delete",
|
|
13150
|
+
description: "Every deploy produces an immutable version; at most one serves traffic at a time on each branch. List and show inspect them. Promote and rollback choose which version serves traffic; start, stop, and delete drive one version's lifecycle."
|
|
13151
|
+
},
|
|
13152
|
+
"auth workspace": {
|
|
13153
|
+
brief: "Manage stored workspace sessions. List them, switch the current one, end one",
|
|
13154
|
+
description: "One session is stored per workspace you log in to. List them, switch the current one, or end one without touching the others."
|
|
13155
|
+
},
|
|
13156
|
+
contract: {
|
|
13157
|
+
brief: "Author your data contract: the PSL source of your data model. Emit, infer, format",
|
|
13158
|
+
description: "A contract is the declarative description of your application's data model, authored in PSL (Prisma Schema Language). Migrations are planned from it, and live databases are verified and signed against it. Emit generates its artifacts, infer derives a contract from an existing database, and format normalizes the source."
|
|
13159
|
+
},
|
|
13160
|
+
db: {
|
|
13161
|
+
brief: "Run contract operations against a live database. Verify, sign, update, migrate",
|
|
13162
|
+
description: "These commands run against a live database, addressed with --db <url>. Verify checks the database against the contract (the PSL description of your data model), sign marks it as matching, and update and migrate advance its schema."
|
|
13163
|
+
},
|
|
13164
|
+
migration: {
|
|
13165
|
+
brief: "Manage on-disk migrations derived from contract changes. Plan, inspect, check, track history",
|
|
13166
|
+
description: "A migration is an on-disk package describing one schema change, derived from edits to your contract (the PSL description of your data model). Plan writes one; the rest inspect, check integrity, and track what has run where. Apply them with 'db migrate'."
|
|
13167
|
+
},
|
|
13168
|
+
"migration ref": {
|
|
13169
|
+
brief: "Manage refs: named pointers to contracts. Set, list, delete",
|
|
13170
|
+
description: "A ref is a named pointer to a contract, letting commands target a contract by a stable name. Set, list, and delete refs here."
|
|
13171
|
+
},
|
|
13002
13172
|
orm: { brief: "Initialize a Prisma ORM project" },
|
|
13003
|
-
skills: {
|
|
13173
|
+
skills: {
|
|
13174
|
+
brief: "Manage Prisma skills for AI coding agents. Sync and list the instruction files",
|
|
13175
|
+
description: "Agent skills are instruction files that teach AI coding agents (Claude Code, Cursor, and others) how to use the installed Prisma packages. They ship inside the packages; sync copies them into the directories the agent harnesses read."
|
|
13176
|
+
},
|
|
13004
13177
|
...telemetry.groups
|
|
13005
13178
|
};
|
|
13006
13179
|
const mountedCommands = {
|
|
@@ -13103,7 +13276,25 @@ function buildCli() {
|
|
|
13103
13276
|
commands: mountedCommands,
|
|
13104
13277
|
help: {
|
|
13105
13278
|
tagline: "The Prisma Developer Platform, from your terminal",
|
|
13106
|
-
description: "Deploy your app with isolated infrastructure for every branch.",
|
|
13279
|
+
description: "Deploy your app with isolated infrastructure for every branch: a Project groups one product, and each of its Branches maps to a Git branch with its own services, databases, and buckets. The production branch serves live traffic; every other branch is a preview.",
|
|
13280
|
+
workflow: [
|
|
13281
|
+
{
|
|
13282
|
+
run: "auth login",
|
|
13283
|
+
brief: "Sign in to your Prisma workspace"
|
|
13284
|
+
},
|
|
13285
|
+
{
|
|
13286
|
+
run: "project create my-app",
|
|
13287
|
+
brief: "Create a Project, link this directory"
|
|
13288
|
+
},
|
|
13289
|
+
{
|
|
13290
|
+
run: "git connect",
|
|
13291
|
+
brief: "Connect GitHub so every push deploys"
|
|
13292
|
+
},
|
|
13293
|
+
{
|
|
13294
|
+
run: "deploy",
|
|
13295
|
+
brief: "Or build and deploy straight from this machine"
|
|
13296
|
+
}
|
|
13297
|
+
],
|
|
13107
13298
|
examples: [
|
|
13108
13299
|
"auth login",
|
|
13109
13300
|
"project list",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/cli",
|
|
3
|
-
"version": "8.0.0-rc.13",
|
|
3
|
+
"version": "8.0.0-rc.13-dev.94",
|
|
4
4
|
"description": "Command-line interface for the Prisma Developer Platform.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@manypkg/tools": "^2.1.2",
|
|
43
43
|
"@prisma/cli-engine": "0.3.0",
|
|
44
|
-
"@prisma/composer-cli": "0.17.0",
|
|
44
|
+
"@prisma/composer-cli": "0.17.0-dev.2",
|
|
45
45
|
"@prisma/compute-sdk": "0.42.0",
|
|
46
46
|
"@prisma/management-api-sdk": "1.69.0",
|
|
47
|
-
"@prisma/orm-toolchain": "8.0.0-rc.8",
|
|
47
|
+
"@prisma/orm-toolchain": "8.0.0-rc.8-dev.18",
|
|
48
48
|
"@vercel/detect-agent": "^1.2.3",
|
|
49
49
|
"better-result": "^2.9.2",
|
|
50
50
|
"dotenv": "^17.4.2",
|
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
"open": "^11.0.0"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@prisma/composer": "0.17.0",
|
|
55
|
+
"@prisma/composer": "0.17.0-dev.2",
|
|
56
56
|
"@prisma/credentials-store": "^7.8.0",
|
|
57
|
-
"@repo/cli-conformance": "8.0.0-rc.13",
|
|
58
|
-
"@repo/cli-telemetry": "8.0.0-rc.13",
|
|
59
|
-
"@repo/tsconfig": "8.0.0-rc.13",
|
|
57
|
+
"@repo/cli-conformance": "8.0.0-rc.13-dev.94",
|
|
58
|
+
"@repo/cli-telemetry": "8.0.0-rc.13-dev.94",
|
|
59
|
+
"@repo/tsconfig": "8.0.0-rc.13-dev.94",
|
|
60
60
|
"@types/node": "^22.19.19",
|
|
61
61
|
"tsdown": "^0.21.10",
|
|
62
62
|
"tsx": "^4.22.4",
|