@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.
Files changed (2) hide show
  1. package/dist/cli.js +266 -75
  2. 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 the authenticated user and accessible workspace",
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 one of your workspace sessions current",
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 for the resolved project",
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 (default: read_write)",
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 for the resolved project",
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\nversion, node version, and OS platform/arch, and nothing else.",
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 the resolved project to a GitHub repository",
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 from the resolved project",
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: "Skills come from the Prisma packages the project installs, 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.",
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 development",
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 (defaults to the target)",
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 a database connection and print its one-time connection URL",
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 for the resolved project",
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 id",
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 template scope (production or preview)",
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: "Preview branch override scope",
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 a new environment variable.",
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 a scope.",
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: "Preview branch resolved scope",
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 variable metadata for a scope (no values).",
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 the resolved Project",
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 project)",
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's Project binding",
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: "Locally authenticated workspace to receive the project",
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 name",
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 the service from the resolved branch",
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 name",
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 the service and its current version",
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: { brief: "Manage local authentication for the CLI" },
12985
- project: { brief: "Manage and inspect your Prisma projects" },
12986
- "project env": { brief: "Manage environment variables for the active project" },
12987
- postgres: { brief: "Manage Prisma Postgres databases for a project" },
12988
- "postgres backup": { brief: "Inspect and restore platform-created database backups" },
12989
- "postgres connection": { brief: "Manage one-time-view database connection strings" },
12990
- bucket: { brief: "Manage object-store buckets for a project" },
12991
- "bucket key": { brief: "Manage access keys for an object-store bucket" },
12992
- branch: { brief: "View your Platform branches" },
12993
- git: { brief: "Manage Git repository connections for a project" },
12994
- service: { brief: "Manage services and their versions for a project" },
12995
- "service domain": { brief: "Manage custom domains for a service" },
12996
- "service version": { brief: "Manage the versions of a service" },
12997
- "auth workspace": { brief: "Manage local workspace sessions" },
12998
- contract: { brief: "Define and emit your application data contract" },
12999
- db: { brief: "Verify, sign and update your database against the contract" },
13000
- migration: { brief: "Plan, inspect and scaffold on-disk migrations" },
13001
- "migration ref": { brief: "Manage named refs that point at contracts" },
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: { brief: "Keep this project's Prisma agent skills current" },
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",