@sanity/runtime-cli 17.1.0 → 17.2.0-blueprinit.g3a96975

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 (109) hide show
  1. package/README.md +38 -28
  2. package/SKILL.md +21 -0
  3. package/dist/actions/blueprinit/manifest.d.ts +13 -0
  4. package/dist/actions/blueprinit/manifest.js +57 -0
  5. package/dist/actions/blueprinit/studio.d.ts +6 -0
  6. package/dist/actions/blueprinit/studio.js +43 -0
  7. package/dist/actions/blueprinit/templates.d.ts +34 -0
  8. package/dist/actions/blueprinit/templates.js +83 -0
  9. package/dist/actions/blueprinit/workspace.d.ts +15 -0
  10. package/dist/actions/blueprinit/workspace.js +142 -0
  11. package/dist/actions/blueprints/assets.d.ts +2 -1
  12. package/dist/actions/blueprints/assets.js +17 -26
  13. package/dist/actions/blueprints/blueprint.d.ts +1 -1
  14. package/dist/actions/blueprints/pre-deploy.d.ts +29 -0
  15. package/dist/actions/blueprints/pre-deploy.js +164 -0
  16. package/dist/actions/blueprints/wait-for-operation.js +4 -0
  17. package/dist/actions/sanity/datasets.d.ts +15 -0
  18. package/dist/actions/sanity/datasets.js +26 -0
  19. package/dist/actions/sanity/examples.d.ts +4 -4
  20. package/dist/baseCommands.d.ts +11 -4
  21. package/dist/baseCommands.js +21 -0
  22. package/dist/commands/blueprinit.d.ts +14 -0
  23. package/dist/commands/blueprinit.js +45 -0
  24. package/dist/commands/blueprints/add.d.ts +1 -1
  25. package/dist/commands/blueprints/config.d.ts +1 -1
  26. package/dist/commands/blueprints/deploy.d.ts +1 -1
  27. package/dist/commands/blueprints/destroy.d.ts +1 -1
  28. package/dist/commands/blueprints/doctor.d.ts +0 -1
  29. package/dist/commands/blueprints/doctor.js +3 -7
  30. package/dist/commands/blueprints/info.d.ts +1 -1
  31. package/dist/commands/blueprints/logs.d.ts +1 -1
  32. package/dist/commands/blueprints/mint-deploy-token.d.ts +1 -1
  33. package/dist/commands/blueprints/plan.d.ts +1 -1
  34. package/dist/commands/blueprints/promote.d.ts +1 -1
  35. package/dist/commands/blueprints/stacks.d.ts +1 -1
  36. package/dist/commands/functions/add.d.ts +1 -1
  37. package/dist/commands/functions/build.d.ts +1 -1
  38. package/dist/commands/functions/dev.d.ts +1 -1
  39. package/dist/commands/functions/env/add.d.ts +4 -1
  40. package/dist/commands/functions/env/add.js +6 -2
  41. package/dist/commands/functions/env/list.d.ts +4 -1
  42. package/dist/commands/functions/env/list.js +9 -3
  43. package/dist/commands/functions/env/remove.d.ts +4 -1
  44. package/dist/commands/functions/env/remove.js +9 -3
  45. package/dist/commands/functions/logs.d.ts +1 -1
  46. package/dist/commands/functions/test.d.ts +1 -1
  47. package/dist/constants.d.ts +1 -0
  48. package/dist/constants.js +1 -0
  49. package/dist/cores/blueprinit/adopt.d.ts +6 -0
  50. package/dist/cores/blueprinit/adopt.js +90 -0
  51. package/dist/cores/blueprinit/finish.d.ts +14 -0
  52. package/dist/cores/blueprinit/finish.js +36 -0
  53. package/dist/cores/blueprinit/fresh.d.ts +3 -0
  54. package/dist/cores/blueprinit/fresh.js +88 -0
  55. package/dist/cores/blueprinit/prompts.d.ts +4 -0
  56. package/dist/cores/blueprinit/prompts.js +14 -0
  57. package/dist/cores/blueprinit/selection.d.ts +15 -0
  58. package/dist/cores/blueprinit/selection.js +63 -0
  59. package/dist/cores/blueprinit/types.d.ts +13 -0
  60. package/dist/cores/blueprinit/types.js +1 -0
  61. package/dist/cores/blueprinit.d.ts +7 -0
  62. package/dist/cores/blueprinit.js +39 -0
  63. package/dist/cores/blueprints/deploy.js +18 -65
  64. package/dist/cores/blueprints/doctor.js +15 -12
  65. package/dist/cores/functions/build.js +3 -2
  66. package/dist/cores/functions/test.js +4 -2
  67. package/dist/server/app.js +8 -2
  68. package/dist/server/static/favicon-dark.svg +1 -0
  69. package/dist/server/static/favicon.svg +1 -0
  70. package/dist/server/static/index.html +1 -1
  71. package/dist/server/static/vendor/vendor.bundle.js +5 -0
  72. package/dist/utils/command-skills.d.ts +2 -0
  73. package/dist/utils/command-skills.js +17 -0
  74. package/dist/utils/functions/child-process-wrapper.js +13 -171
  75. package/dist/utils/functions/child-runtime/console.d.ts +1 -0
  76. package/dist/utils/functions/child-runtime/console.js +50 -0
  77. package/dist/utils/functions/child-runtime/invoke.d.ts +4 -0
  78. package/dist/utils/functions/child-runtime/invoke.js +47 -0
  79. package/dist/utils/functions/child-runtime/resources.d.ts +4 -0
  80. package/dist/utils/functions/child-runtime/resources.js +59 -0
  81. package/dist/utils/functions/find-entry-point.d.ts +1 -1
  82. package/dist/utils/functions/find-entry-point.js +10 -12
  83. package/dist/utils/functions/invoke/local.js +1 -1
  84. package/dist/utils/functions/invoke/prepare.d.ts +1 -1
  85. package/dist/utils/functions/invoke/prepare.js +19 -8
  86. package/dist/utils/functions/package-json.d.ts +1 -2
  87. package/dist/utils/functions/package-json.js +4 -6
  88. package/dist/utils/functions/prepare-asset.d.ts +2 -2
  89. package/dist/utils/functions/prepare-asset.js +18 -7
  90. package/dist/utils/functions/resolve-dependencies.d.ts +4 -1
  91. package/dist/utils/functions/resolve-dependencies.js +5 -6
  92. package/dist/utils/functions/resource-to-arc.d.ts +1 -1
  93. package/dist/utils/functions/resource-to-arc.js +4 -5
  94. package/dist/utils/functions/should-transpile.d.ts +7 -1
  95. package/dist/utils/functions/should-transpile.js +10 -10
  96. package/dist/utils/functions/transpile/function.d.ts +4 -1
  97. package/dist/utils/functions/transpile/function.js +9 -14
  98. package/dist/utils/functions/transpile/verify-handler.js +1 -1
  99. package/dist/utils/logger.d.ts +7 -5
  100. package/dist/utils/logger.js +33 -1
  101. package/dist/utils/progress.d.ts +5 -0
  102. package/dist/utils/progress.js +40 -0
  103. package/dist/utils/studios/prepare-asset.d.ts +6 -0
  104. package/dist/utils/studios/prepare-asset.js +139 -0
  105. package/dist/utils/types.d.ts +9 -8
  106. package/dist/utils/types.js +2 -3
  107. package/oclif.manifest.json +1237 -930
  108. package/package.json +33 -24
  109. package/skills/blueprinit.md +137 -0
@@ -1,15 +1,133 @@
1
1
  {
2
2
  "commands": {
3
- "functions:add": {
3
+ "blueprinit": {
4
4
  "aliases": [],
5
5
  "args": {},
6
- "description": "Scaffolds a new Function in the functions/ folder and templates a resource for your Blueprint manifest.\n\nFunctions are serverless handlers triggered by document, live content or media-library events (create, update, delete, publish).\n\nAfter adding, use 'functions dev' to test locally, then 'blueprints deploy' to publish.",
6
+ "description": "Scaffolds a Blueprint, Studio, and starter function around an existing Sanity project.\n\nThis hidden command is an experiment; its interface and generated files are not stable.",
7
7
  "examples": [
8
8
  "<%= config.bin %> <%= command.id %>",
9
- "<%= config.bin %> <%= command.id %> --helpers",
10
- "<%= config.bin %> <%= command.id %> --name my-function",
11
- "<%= config.bin %> <%= command.id %> --name my-function --type document-create",
12
- "<%= config.bin %> <%= command.id %> --name my-function --type document-create --type document-update --lang js"
9
+ "<%= config.bin %> <%= command.id %> --yes"
10
+ ],
11
+ "flags": {
12
+ "json": {
13
+ "description": "Format output as json",
14
+ "name": "json",
15
+ "allowNo": false,
16
+ "type": "boolean"
17
+ },
18
+ "llms": {
19
+ "aliases": [
20
+ "skill"
21
+ ],
22
+ "description": "Show agent-oriented guidance for this command",
23
+ "name": "llms",
24
+ "allowNo": false,
25
+ "type": "boolean"
26
+ },
27
+ "path": {
28
+ "aliases": [
29
+ "blueprint-path"
30
+ ],
31
+ "char": "p",
32
+ "description": "Path to a Blueprint file or directory containing one",
33
+ "env": "SANITY_BLUEPRINT_PATH",
34
+ "hidden": true,
35
+ "name": "path",
36
+ "hasDynamicHelp": false,
37
+ "multiple": false,
38
+ "type": "option"
39
+ },
40
+ "trace": {
41
+ "description": "Trace output",
42
+ "hidden": true,
43
+ "name": "trace",
44
+ "allowNo": false,
45
+ "type": "boolean"
46
+ },
47
+ "validate-resources": {
48
+ "description": "Validate resources",
49
+ "hidden": true,
50
+ "name": "validate-resources",
51
+ "allowNo": true,
52
+ "type": "boolean"
53
+ },
54
+ "verbose": {
55
+ "description": "Verbose output",
56
+ "hidden": true,
57
+ "name": "verbose",
58
+ "allowNo": false,
59
+ "type": "boolean"
60
+ },
61
+ "yes": {
62
+ "char": "y",
63
+ "description": "Skip confirmation prompts",
64
+ "name": "yes",
65
+ "allowNo": false,
66
+ "type": "boolean"
67
+ },
68
+ "organization-id": {
69
+ "aliases": [
70
+ "organization",
71
+ "organizationId",
72
+ "org"
73
+ ],
74
+ "description": "Organization to use when the account has several",
75
+ "name": "organization-id",
76
+ "hasDynamicHelp": false,
77
+ "multiple": false,
78
+ "type": "option"
79
+ },
80
+ "project-id": {
81
+ "aliases": [
82
+ "project",
83
+ "projectId"
84
+ ],
85
+ "description": "Project to use when the organization has several",
86
+ "name": "project-id",
87
+ "hasDynamicHelp": false,
88
+ "multiple": false,
89
+ "type": "option"
90
+ }
91
+ },
92
+ "hasDynamicHelp": false,
93
+ "hidden": true,
94
+ "hiddenAliases": [],
95
+ "id": "blueprinit",
96
+ "pluginAlias": "@sanity/runtime-cli",
97
+ "pluginName": "@sanity/runtime-cli",
98
+ "pluginType": "core",
99
+ "strict": true,
100
+ "summary": "Experimental blueprints-first project init",
101
+ "enableJsonFlag": true,
102
+ "isESM": true,
103
+ "relativePath": [
104
+ "dist",
105
+ "commands",
106
+ "blueprinit.js"
107
+ ]
108
+ },
109
+ "blueprints:add": {
110
+ "aliases": [],
111
+ "args": {
112
+ "type": {
113
+ "description": "Type of resource to add (only \"function\" is supported)",
114
+ "name": "type",
115
+ "options": [
116
+ "function"
117
+ ],
118
+ "required": true
119
+ }
120
+ },
121
+ "deprecationOptions": {
122
+ "to": "functions add"
123
+ },
124
+ "description": "This command is deprecated. Use \"functions add\" instead.\n\nEquivalent usage:\n $ <%= config.bin %> functions add\n $ <%= config.bin %> functions add --name my-function --type document-create",
125
+ "examples": [
126
+ "<%= config.bin %> <%= command.id %> function",
127
+ "<%= config.bin %> <%= command.id %> function --helpers",
128
+ "<%= config.bin %> <%= command.id %> function --name my-function",
129
+ "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-create",
130
+ "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-create --fn-type document-update --lang js"
13
131
  ],
14
132
  "flags": {
15
133
  "json": {
@@ -18,6 +136,16 @@
18
136
  "allowNo": false,
19
137
  "type": "boolean"
20
138
  },
139
+ "llms": {
140
+ "aliases": [
141
+ "skill"
142
+ ],
143
+ "description": "Show agent-oriented guidance for this command",
144
+ "hidden": true,
145
+ "name": "llms",
146
+ "allowNo": false,
147
+ "type": "boolean"
148
+ },
21
149
  "path": {
22
150
  "aliases": [
23
151
  "blueprint-path"
@@ -95,7 +223,7 @@
95
223
  "aliases": [
96
224
  "recipe"
97
225
  ],
98
- "description": "Example to use for the Function",
226
+ "description": "Example to use for the function resource. Discover examples at https://www.sanity.io/exchange/type=recipes/by=sanity",
99
227
  "exclusive": [
100
228
  "name",
101
229
  "fn-type",
@@ -111,18 +239,21 @@
111
239
  },
112
240
  "name": {
113
241
  "char": "n",
114
- "description": "Name of the Function to add",
242
+ "description": "Name of the resource to add",
115
243
  "name": "name",
116
244
  "hasDynamicHelp": false,
117
245
  "multiple": false,
118
246
  "type": "option"
119
247
  },
120
- "type": {
248
+ "fn-type": {
249
+ "aliases": [
250
+ "function-type"
251
+ ],
121
252
  "dependsOn": [
122
253
  "name"
123
254
  ],
124
255
  "description": "Document change event(s) that should trigger the function; you can specify multiple events by specifying this flag multiple times",
125
- "name": "type",
256
+ "name": "fn-type",
126
257
  "hasDynamicHelp": false,
127
258
  "multiple": true,
128
259
  "options": [
@@ -140,9 +271,11 @@
140
271
  },
141
272
  "language": {
142
273
  "aliases": [
274
+ "function-language",
275
+ "fn-language",
143
276
  "lang"
144
277
  ],
145
- "description": "Language of the new Function",
278
+ "description": "Language of the new function",
146
279
  "name": "language",
147
280
  "default": "ts",
148
281
  "hasDynamicHelp": false,
@@ -165,15 +298,23 @@
165
298
  "allowNo": false,
166
299
  "type": "boolean"
167
300
  },
168
- "helpers": {
169
- "description": "Add helpers to the new Function",
170
- "name": "helpers",
301
+ "fn-helpers": {
302
+ "aliases": [
303
+ "function-helpers",
304
+ "helpers"
305
+ ],
306
+ "description": "Add helpers to the new function",
307
+ "name": "fn-helpers",
171
308
  "allowNo": true,
172
309
  "type": "boolean"
173
310
  },
174
- "installer": {
175
- "description": "How to install the @sanity/functions helpers",
176
- "name": "installer",
311
+ "fn-installer": {
312
+ "aliases": [
313
+ "function-installer",
314
+ "installer"
315
+ ],
316
+ "description": "Which package manager to use when installing the @sanity/functions helpers",
317
+ "name": "fn-installer",
177
318
  "hasDynamicHelp": false,
178
319
  "multiple": false,
179
320
  "options": [
@@ -197,12 +338,13 @@
197
338
  },
198
339
  "hasDynamicHelp": false,
199
340
  "hiddenAliases": [],
200
- "id": "functions:add",
341
+ "id": "blueprints:add",
201
342
  "pluginAlias": "@sanity/runtime-cli",
202
343
  "pluginName": "@sanity/runtime-cli",
203
344
  "pluginType": "core",
345
+ "state": "deprecated",
204
346
  "strict": true,
205
- "summary": "Add a Function to your Blueprint",
347
+ "summary": "[deprecated] Use \"functions add\" instead",
206
348
  "enableJsonFlag": true,
207
349
  "needs": [
208
350
  "blueprint"
@@ -211,19 +353,20 @@
211
353
  "relativePath": [
212
354
  "dist",
213
355
  "commands",
214
- "functions",
356
+ "blueprints",
215
357
  "add.js"
216
358
  ]
217
359
  },
218
- "functions:build": {
360
+ "blueprints:config": {
219
361
  "aliases": [],
220
- "args": {
221
- "name": {
222
- "description": "The name of the Sanity Function",
223
- "name": "name",
224
- "required": false
225
- }
226
- },
362
+ "args": {},
363
+ "description": "Manages the local Blueprint configuration, which links your Blueprint to a Sanity project and Stack.\n\nWithout flags, displays the current configuration. Use --edit to interactively modify settings, or combine --edit with ID flags to update values directly (useful for scripting and automation).\n\nIf you need to switch your Blueprint to a different Stack, use --edit --stack.",
364
+ "examples": [
365
+ "<%= config.bin %> <%= command.id %>",
366
+ "<%= config.bin %> <%= command.id %> --edit",
367
+ "<%= config.bin %> <%= command.id %> --edit --project-id <projectId>",
368
+ "<%= config.bin %> <%= command.id %> --edit --project-id <projectId> --stack <name-or-id>"
369
+ ],
227
370
  "flags": {
228
371
  "json": {
229
372
  "description": "Format output as json",
@@ -231,6 +374,16 @@
231
374
  "allowNo": false,
232
375
  "type": "boolean"
233
376
  },
377
+ "llms": {
378
+ "aliases": [
379
+ "skill"
380
+ ],
381
+ "description": "Show agent-oriented guidance for this command",
382
+ "hidden": true,
383
+ "name": "llms",
384
+ "allowNo": false,
385
+ "type": "boolean"
386
+ },
234
387
  "path": {
235
388
  "aliases": [
236
389
  "blueprint-path"
@@ -266,8 +419,14 @@
266
419
  "type": "boolean"
267
420
  },
268
421
  "stack": {
269
- "description": "Stack name or ID to use instead of the locally configured Stack",
270
- "hidden": true,
422
+ "aliases": [
423
+ "stack-id",
424
+ "stackId"
425
+ ],
426
+ "dependsOn": [
427
+ "edit"
428
+ ],
429
+ "description": "Stack name or ID to set in the configuration. Requires --edit flag",
271
430
  "name": "stack",
272
431
  "hasDynamicHelp": false,
273
432
  "multiple": false,
@@ -278,11 +437,13 @@
278
437
  "project",
279
438
  "projectId"
280
439
  ],
440
+ "dependsOn": [
441
+ "edit"
442
+ ],
281
443
  "description": "Sanity project ID used to scope Blueprint and Stack",
282
444
  "exclusive": [
283
445
  "organization-id"
284
446
  ],
285
- "hidden": true,
286
447
  "name": "project-id",
287
448
  "hasDynamicHelp": false,
288
449
  "multiple": false,
@@ -294,70 +455,59 @@
294
455
  "organizationId",
295
456
  "org"
296
457
  ],
458
+ "dependsOn": [
459
+ "edit"
460
+ ],
297
461
  "description": "Sanity organization ID used to scope Blueprint and Stack",
298
462
  "exclusive": [
299
463
  "project-id"
300
464
  ],
301
- "hidden": true,
302
465
  "name": "organization-id",
303
466
  "hasDynamicHelp": false,
304
467
  "multiple": false,
305
468
  "type": "option"
306
469
  },
307
- "fn-installer": {
308
- "aliases": [
309
- "function-installer",
310
- "installer"
311
- ],
312
- "description": "Which package manager to use when building Functions",
313
- "hidden": true,
314
- "name": "fn-installer",
315
- "hasDynamicHelp": false,
316
- "multiple": false,
317
- "options": [
318
- "npm",
319
- "pnpm",
320
- "yarn"
321
- ],
322
- "type": "option"
323
- },
324
- "out-dir": {
325
- "char": "o",
326
- "description": "Output directory for zip files",
327
- "name": "out-dir",
328
- "hasDynamicHelp": false,
329
- "multiple": false,
330
- "type": "option"
470
+ "edit": {
471
+ "char": "e",
472
+ "description": "Modify the configuration interactively, or directly when combined with ID flags.",
473
+ "name": "edit",
474
+ "allowNo": false,
475
+ "type": "boolean"
331
476
  }
332
477
  },
333
478
  "hasDynamicHelp": false,
334
- "hidden": true,
335
479
  "hiddenAliases": [],
336
- "id": "functions:build",
480
+ "id": "blueprints:config",
337
481
  "pluginAlias": "@sanity/runtime-cli",
338
482
  "pluginName": "@sanity/runtime-cli",
339
483
  "pluginType": "core",
340
484
  "strict": true,
341
- "summary": "Build Sanity Function(s) to zip archives",
485
+ "summary": "View or edit the local Blueprint configuration",
342
486
  "enableJsonFlag": true,
343
487
  "needs": [
488
+ "token",
344
489
  "blueprint"
345
490
  ],
346
491
  "isESM": true,
347
492
  "relativePath": [
348
493
  "dist",
349
494
  "commands",
350
- "functions",
351
- "build.js"
495
+ "blueprints",
496
+ "config.js"
352
497
  ]
353
498
  },
354
- "functions:dev": {
499
+ "blueprints:deploy": {
355
500
  "aliases": [],
356
501
  "args": {},
357
- "description": "Runs a local, web-based development server to test your functions before deploying.\n\nOpen the emulator in your browser to interactively test your functions with the payload editor.\n\nOptionally, set the host and port with the --host and --port flags. Function timeout can be configured with the --timeout flag.\n\nTo invoke a function with the CLI, use 'functions test'.",
502
+ "description": "Applies your local Blueprint to the remote Stack, creating, updating, or removing resources as needed. This is the primary command for applying infrastructure changes.\n\nBefore deploying, run 'blueprints plan' to preview changes. After deployment, use 'blueprints info' to verify Stack status or 'blueprints logs' to monitor activity.\n\nUse --no-wait to queue the deployment and return immediately without waiting for completion.\n\nUse --fn-installer to force which package manager to use when deploying functions.\n\nSet SANITY_ASSET_TIMEOUT (seconds) to override the 60-second timeout for processing resource assets.\n\nExit codes: 0 deployed, 2 deployment failed, 75 deployment accepted but completion could not be confirmed (rerun 'blueprints info' to check).",
358
503
  "examples": [
359
- "<%= config.bin %> <%= command.id %> --host 127.0.0.1 --port 8974",
360
- "<%= config.bin %> <%= command.id %> --timeout 60"
504
+ "<%= config.bin %> <%= command.id %>",
505
+ "<%= config.bin %> <%= command.id %> --message \"Enable staging dataset\"",
506
+ "<%= config.bin %> <%= command.id %> --no-wait",
507
+ "<%= config.bin %> <%= command.id %> --fn-installer npm",
508
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
509
+ "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>",
510
+ "<%= config.bin %> <%= command.id %> --new-stack-name <new-name>"
361
511
  ],
362
512
  "flags": {
363
513
  "json": {
@@ -366,6 +516,16 @@
366
516
  "allowNo": false,
367
517
  "type": "boolean"
368
518
  },
519
+ "llms": {
520
+ "aliases": [
521
+ "skill"
522
+ ],
523
+ "description": "Show agent-oriented guidance for this command",
524
+ "hidden": true,
525
+ "name": "llms",
526
+ "allowNo": false,
527
+ "type": "boolean"
528
+ },
369
529
  "path": {
370
530
  "aliases": [
371
531
  "blueprint-path"
@@ -402,7 +562,6 @@
402
562
  },
403
563
  "stack": {
404
564
  "description": "Stack name or ID to use instead of the locally configured Stack",
405
- "hidden": true,
406
565
  "name": "stack",
407
566
  "hasDynamicHelp": false,
408
567
  "multiple": false,
@@ -417,7 +576,6 @@
417
576
  "exclusive": [
418
577
  "organization-id"
419
578
  ],
420
- "hidden": true,
421
579
  "name": "project-id",
422
580
  "hasDynamicHelp": false,
423
581
  "multiple": false,
@@ -433,35 +591,45 @@
433
591
  "exclusive": [
434
592
  "project-id"
435
593
  ],
436
- "hidden": true,
437
594
  "name": "organization-id",
438
595
  "hasDynamicHelp": false,
439
596
  "multiple": false,
440
597
  "type": "option"
441
598
  },
442
- "host": {
443
- "char": "h",
444
- "description": "The local network interface at which to listen. [default: \"localhost\"]",
445
- "name": "host",
446
- "required": false,
599
+ "message": {
600
+ "char": "m",
601
+ "description": "Message describing the deployment (e.g. reason for change)",
602
+ "name": "message",
447
603
  "hasDynamicHelp": false,
448
604
  "multiple": false,
449
605
  "type": "option"
450
606
  },
451
- "port": {
452
- "char": "p",
453
- "description": "TCP port to start emulator on. [default: 8080]",
454
- "name": "port",
455
- "required": false,
607
+ "fn-installer": {
608
+ "aliases": [
609
+ "function-installer",
610
+ "installer"
611
+ ],
612
+ "description": "Which package manager to use when installing Function dependencies",
613
+ "hidden": true,
614
+ "name": "fn-installer",
456
615
  "hasDynamicHelp": false,
457
616
  "multiple": false,
617
+ "options": [
618
+ "npm",
619
+ "pnpm",
620
+ "yarn"
621
+ ],
458
622
  "type": "option"
459
623
  },
460
- "timeout": {
461
- "char": "t",
462
- "description": "Maximum execution time for all functions, in seconds. Takes precedence over function-specific `timeout`",
463
- "name": "timeout",
464
- "required": false,
624
+ "no-wait": {
625
+ "description": "Do not wait for Stack deployment to complete",
626
+ "name": "no-wait",
627
+ "allowNo": false,
628
+ "type": "boolean"
629
+ },
630
+ "new-stack-name": {
631
+ "description": "Set a new name for the Stack",
632
+ "name": "new-stack-name",
465
633
  "hasDynamicHelp": false,
466
634
  "multiple": false,
467
635
  "type": "option"
@@ -469,39 +637,32 @@
469
637
  },
470
638
  "hasDynamicHelp": false,
471
639
  "hiddenAliases": [],
472
- "id": "functions:dev",
640
+ "id": "blueprints:deploy",
473
641
  "pluginAlias": "@sanity/runtime-cli",
474
642
  "pluginName": "@sanity/runtime-cli",
475
643
  "pluginType": "core",
476
644
  "strict": true,
477
- "summary": "Start the Sanity Function emulator",
645
+ "summary": "Deploy the local Blueprint to the remote Stack",
478
646
  "enableJsonFlag": true,
479
647
  "needs": [
648
+ "deployedStack",
480
649
  "blueprint"
481
650
  ],
482
651
  "isESM": true,
483
652
  "relativePath": [
484
653
  "dist",
485
654
  "commands",
486
- "functions",
487
- "dev.js"
655
+ "blueprints",
656
+ "deploy.js"
488
657
  ]
489
658
  },
490
- "functions:logs": {
659
+ "blueprints:destroy": {
491
660
  "aliases": [],
492
- "args": {
493
- "name": {
494
- "description": "The name of the Sanity Function",
495
- "name": "name",
496
- "required": false
497
- }
498
- },
499
- "description": "Fetches execution logs from a deployed function, useful for debugging production issues or monitoring activity.\n\nUse --watch (-w) to stream logs in real-time. Use --delete to clear all logs for a function (requires confirmation unless --force is specified).",
661
+ "args": {},
662
+ "description": "Permanently removes the remote Stack and all its provisioned resources. Your Blueprint manifest and resource files remain intact; \"stackId\" is unset in your local config.\n\nThis is a destructive operation. You will be prompted to confirm unless --force is specified.\n\nUse this to clean up test environments or decommission a Stack you no longer need.\n\nExit codes: 0 destroyed, 2 destruction failed, 75 destruction accepted but completion could not be confirmed (rerun 'blueprints info' to check).",
500
663
  "examples": [
501
- "<%= config.bin %> <%= command.id %> <name>",
502
- "<%= config.bin %> <%= command.id %> <name> --json",
503
- "<%= config.bin %> <%= command.id %> <name> --limit 100",
504
- "<%= config.bin %> <%= command.id %> <name> --delete"
664
+ "<%= config.bin %> <%= command.id %>",
665
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id> --project-id <projectId> --force --no-wait"
505
666
  ],
506
667
  "flags": {
507
668
  "json": {
@@ -510,6 +671,16 @@
510
671
  "allowNo": false,
511
672
  "type": "boolean"
512
673
  },
674
+ "llms": {
675
+ "aliases": [
676
+ "skill"
677
+ ],
678
+ "description": "Show agent-oriented guidance for this command",
679
+ "hidden": true,
680
+ "name": "llms",
681
+ "allowNo": false,
682
+ "type": "boolean"
683
+ },
513
684
  "path": {
514
685
  "aliases": [
515
686
  "blueprint-path"
@@ -545,7 +716,11 @@
545
716
  "type": "boolean"
546
717
  },
547
718
  "stack": {
548
- "description": "Stack name or ID to use instead of the locally configured Stack",
719
+ "aliases": [
720
+ "stack-id",
721
+ "stackId"
722
+ ],
723
+ "description": "Stack name or ID to destroy (defaults to the locally configured Stack)",
549
724
  "name": "stack",
550
725
  "hasDynamicHelp": false,
551
726
  "multiple": false,
@@ -556,11 +731,14 @@
556
731
  "project",
557
732
  "projectId"
558
733
  ],
734
+ "dependsOn": [
735
+ "stack",
736
+ "force"
737
+ ],
559
738
  "description": "Sanity project ID used to scope Blueprint and Stack",
560
739
  "exclusive": [
561
740
  "organization-id"
562
741
  ],
563
- "hidden": true,
564
742
  "name": "project-id",
565
743
  "hasDynamicHelp": false,
566
744
  "multiple": false,
@@ -572,104 +750,62 @@
572
750
  "organizationId",
573
751
  "org"
574
752
  ],
753
+ "dependsOn": [
754
+ "stack",
755
+ "force"
756
+ ],
575
757
  "description": "Sanity organization ID used to scope Blueprint and Stack",
576
758
  "exclusive": [
577
759
  "project-id"
578
760
  ],
579
- "hidden": true,
580
761
  "name": "organization-id",
581
762
  "hasDynamicHelp": false,
582
763
  "multiple": false,
583
764
  "type": "option"
584
765
  },
585
- "limit": {
586
- "char": "l",
587
- "description": "Total number of log entries to retrieve",
588
- "name": "limit",
589
- "required": false,
590
- "default": 50,
591
- "hasDynamicHelp": false,
592
- "multiple": false,
593
- "type": "option"
594
- },
595
- "utc": {
596
- "char": "u",
597
- "description": "Show dates in UTC time zone",
598
- "name": "utc",
599
- "required": false,
600
- "allowNo": false,
601
- "type": "boolean"
602
- },
603
- "delete": {
604
- "char": "d",
605
- "description": "Delete all logs for the function",
606
- "exclusive": [
607
- "limit",
608
- "json"
609
- ],
610
- "name": "delete",
611
- "required": false,
612
- "allowNo": false,
613
- "type": "boolean"
614
- },
615
766
  "force": {
616
- "char": "f",
617
- "dependsOn": [
618
- "delete"
767
+ "aliases": [
768
+ "f"
619
769
  ],
620
- "description": "Skip confirmation for deleting logs",
770
+ "description": "Force Stack destruction (skip confirmation)",
621
771
  "name": "force",
622
- "required": false,
623
772
  "allowNo": false,
624
773
  "type": "boolean"
625
774
  },
626
- "watch": {
627
- "aliases": [
628
- "follow"
629
- ],
630
- "char": "w",
631
- "description": "Watch for new logs (streaming mode)",
632
- "name": "watch",
775
+ "no-wait": {
776
+ "description": "Do not wait for Stack destruction to complete",
777
+ "name": "no-wait",
633
778
  "allowNo": false,
634
779
  "type": "boolean"
635
780
  }
636
781
  },
637
782
  "hasDynamicHelp": false,
638
783
  "hiddenAliases": [],
639
- "id": "functions:logs",
784
+ "id": "blueprints:destroy",
640
785
  "pluginAlias": "@sanity/runtime-cli",
641
786
  "pluginName": "@sanity/runtime-cli",
642
787
  "pluginType": "core",
643
788
  "strict": true,
644
- "summary": "Retrieve or delete logs for a Sanity Function",
789
+ "summary": "Destroy a remote Stack deployment and its resources",
645
790
  "enableJsonFlag": true,
646
791
  "needs": [
647
- "deployedStack",
648
- "blueprint"
792
+ "scope"
649
793
  ],
650
794
  "isESM": true,
651
795
  "relativePath": [
652
796
  "dist",
653
797
  "commands",
654
- "functions",
655
- "logs.js"
798
+ "blueprints",
799
+ "destroy.js"
656
800
  ]
657
801
  },
658
- "functions:test": {
802
+ "blueprints:doctor": {
659
803
  "aliases": [],
660
- "args": {
661
- "name": {
662
- "description": "The name of the Sanity Function",
663
- "name": "name",
664
- "required": false
665
- }
666
- },
667
- "description": "Executes a function locally with the provided payload, simulating how it would run when deployed. Use this to test your function logic before deploying.\n\nProvide test data via --data (inline JSON), --file (JSON file), or --document-id (fetch from Sanity). For update events, use the before/after flag pairs to simulate document changes.",
804
+ "args": {},
805
+ "description": "Analyzes your local Blueprint and remote Stack configuration for common issues, such as missing authentication, invalid project references, or misconfigured resources.\n\nRun this command when encountering errors with other Blueprint commands. Use --fix to interactively resolve detected issues.\n\nSupports --json for programmatic consumption of diagnostic results.",
668
806
  "examples": [
669
- "<%= config.bin %> <%= command.id %> <name> --data '{ \"id\": 1 }'",
670
- "<%= config.bin %> <%= command.id %> <name> --file 'payload.json'",
671
- "<%= config.bin %> <%= command.id %> <name> --data '{ \"id\": 1 }' --timeout 60",
672
- "<%= config.bin %> <%= command.id %> <name> --event update --data-before '{ \"title\": \"before\" }' --data-after '{ \"title\": \"after\" }'"
807
+ "<%= config.bin %> <%= command.id %>",
808
+ "<%= config.bin %> <%= command.id %> --fix"
673
809
  ],
674
810
  "flags": {
675
811
  "json": {
@@ -678,6 +814,16 @@
678
814
  "allowNo": false,
679
815
  "type": "boolean"
680
816
  },
817
+ "llms": {
818
+ "aliases": [
819
+ "skill"
820
+ ],
821
+ "description": "Show agent-oriented guidance for this command",
822
+ "hidden": true,
823
+ "name": "llms",
824
+ "allowNo": false,
825
+ "type": "boolean"
826
+ },
681
827
  "path": {
682
828
  "aliases": [
683
829
  "blueprint-path"
@@ -685,7 +831,6 @@
685
831
  "char": "p",
686
832
  "description": "Path to a Blueprint file or directory containing one",
687
833
  "env": "SANITY_BLUEPRINT_PATH",
688
- "hidden": true,
689
834
  "name": "path",
690
835
  "hasDynamicHelp": false,
691
836
  "multiple": false,
@@ -712,308 +857,66 @@
712
857
  "allowNo": false,
713
858
  "type": "boolean"
714
859
  },
715
- "stack": {
716
- "description": "Stack name or ID to use instead of the locally configured Stack",
717
- "hidden": true,
718
- "name": "stack",
719
- "hasDynamicHelp": false,
720
- "multiple": false,
721
- "type": "option"
860
+ "fix": {
861
+ "description": "Interactively fix configuration issues",
862
+ "name": "fix",
863
+ "allowNo": false,
864
+ "type": "boolean"
865
+ }
866
+ },
867
+ "hasDynamicHelp": false,
868
+ "hiddenAliases": [],
869
+ "id": "blueprints:doctor",
870
+ "pluginAlias": "@sanity/runtime-cli",
871
+ "pluginName": "@sanity/runtime-cli",
872
+ "pluginType": "core",
873
+ "strict": true,
874
+ "summary": "Diagnose potential issues with local Blueprint and remote Stack configuration",
875
+ "enableJsonFlag": true,
876
+ "isESM": true,
877
+ "relativePath": [
878
+ "dist",
879
+ "commands",
880
+ "blueprints",
881
+ "doctor.js"
882
+ ]
883
+ },
884
+ "blueprints:info": {
885
+ "aliases": [],
886
+ "args": {},
887
+ "description": "Displays the current state and metadata of your remote Stack deployment, including deployed resources, status, and configuration.\n\nUse this command to verify a deployment succeeded, check what resources are live, or confirm which Stack your local Blueprint is connected to.\n\nRun 'blueprints stacks' to see all available Stacks in your project or organization.",
888
+ "examples": [
889
+ "<%= config.bin %> <%= command.id %>",
890
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
891
+ "<%= config.bin %> <%= command.id %> --project-id <id> --stack <name-or-id>",
892
+ "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>"
893
+ ],
894
+ "flags": {
895
+ "json": {
896
+ "description": "Format output as json",
897
+ "name": "json",
898
+ "allowNo": false,
899
+ "type": "boolean"
722
900
  },
723
- "project-id": {
901
+ "llms": {
724
902
  "aliases": [
725
- "project",
726
- "projectId"
903
+ "skill"
727
904
  ],
728
- "description": "Sanity project ID used to scope Blueprint and Stack",
729
- "exclusive": [
730
- "organization-id"
905
+ "description": "Show agent-oriented guidance for this command",
906
+ "hidden": true,
907
+ "name": "llms",
908
+ "allowNo": false,
909
+ "type": "boolean"
910
+ },
911
+ "path": {
912
+ "aliases": [
913
+ "blueprint-path"
731
914
  ],
732
- "name": "project-id",
733
- "hasDynamicHelp": false,
734
- "multiple": false,
735
- "type": "option"
736
- },
737
- "organization-id": {
738
- "aliases": [
739
- "organization",
740
- "organizationId",
741
- "org"
742
- ],
743
- "description": "Sanity organization ID used to scope Blueprint and Stack",
744
- "exclusive": [
745
- "project-id"
746
- ],
747
- "name": "organization-id",
748
- "hasDynamicHelp": false,
749
- "multiple": false,
750
- "type": "option"
751
- },
752
- "data": {
753
- "char": "d",
754
- "description": "Data to send to the function",
755
- "exclusive": [
756
- "file",
757
- "document-id"
758
- ],
759
- "name": "data",
760
- "required": false,
761
- "hasDynamicHelp": false,
762
- "multiple": false,
763
- "type": "option"
764
- },
765
- "data-before": {
766
- "description": "Original document",
767
- "exclusive": [
768
- "data",
769
- "file",
770
- "document-id",
771
- "file-before",
772
- "file-after",
773
- "document-id-before",
774
- "document-id-after"
775
- ],
776
- "name": "data-before",
777
- "required": false,
778
- "hasDynamicHelp": false,
779
- "multiple": false,
780
- "type": "option"
781
- },
782
- "data-after": {
783
- "description": "Current document",
784
- "exclusive": [
785
- "data",
786
- "file",
787
- "document-id",
788
- "file-before",
789
- "file-after",
790
- "document-id-before",
791
- "document-id-after"
792
- ],
793
- "name": "data-after",
794
- "required": false,
795
- "hasDynamicHelp": false,
796
- "multiple": false,
797
- "type": "option"
798
- },
799
- "event": {
800
- "char": "e",
801
- "description": "Type of event (create, update, delete)",
802
- "name": "event",
803
- "required": false,
804
- "hasDynamicHelp": false,
805
- "multiple": false,
806
- "options": [
807
- "create",
808
- "update",
809
- "delete"
810
- ],
811
- "type": "option"
812
- },
813
- "file": {
814
- "char": "f",
815
- "description": "Read data from file and send to the function",
816
- "exclusive": [
817
- "data",
818
- "document-id"
819
- ],
820
- "name": "file",
821
- "required": false,
822
- "hasDynamicHelp": false,
823
- "multiple": false,
824
- "type": "option"
825
- },
826
- "file-before": {
827
- "description": "Original document",
828
- "exclusive": [
829
- "data",
830
- "file",
831
- "document-id",
832
- "data-before",
833
- "data-after",
834
- "document-id-before",
835
- "document-id-after"
836
- ],
837
- "name": "file-before",
838
- "required": false,
839
- "hasDynamicHelp": false,
840
- "multiple": false,
841
- "type": "option"
842
- },
843
- "file-after": {
844
- "description": "Current document",
845
- "exclusive": [
846
- "data",
847
- "file",
848
- "document-id",
849
- "data-before",
850
- "data-after",
851
- "document-id-before",
852
- "document-id-after"
853
- ],
854
- "name": "file-after",
855
- "required": false,
856
- "hasDynamicHelp": false,
857
- "multiple": false,
858
- "type": "option"
859
- },
860
- "timeout": {
861
- "char": "t",
862
- "description": "Execution timeout value in seconds",
863
- "name": "timeout",
864
- "required": false,
865
- "hasDynamicHelp": false,
866
- "multiple": false,
867
- "type": "option"
868
- },
869
- "api": {
870
- "char": "a",
871
- "description": "Sanity API Version to use",
872
- "name": "api",
873
- "required": false,
874
- "hasDynamicHelp": false,
875
- "multiple": false,
876
- "type": "option"
877
- },
878
- "dataset": {
879
- "description": "The Sanity dataset to use",
880
- "name": "dataset",
881
- "required": false,
882
- "hasDynamicHelp": false,
883
- "multiple": false,
884
- "type": "option"
885
- },
886
- "document-id": {
887
- "aliases": [
888
- "doc",
889
- "documentId"
890
- ],
891
- "description": "Document to fetch and send to function",
892
- "exclusive": [
893
- "data",
894
- "file"
895
- ],
896
- "name": "document-id",
897
- "required": false,
898
- "hasDynamicHelp": false,
899
- "multiple": false,
900
- "type": "option"
901
- },
902
- "document-id-before": {
903
- "description": "Original document",
904
- "exclusive": [
905
- "data",
906
- "file",
907
- "document-id",
908
- "data-before",
909
- "data-after",
910
- "file-before",
911
- "file-after"
912
- ],
913
- "name": "document-id-before",
914
- "required": false,
915
- "hasDynamicHelp": false,
916
- "multiple": false,
917
- "type": "option"
918
- },
919
- "document-id-after": {
920
- "description": "Current document",
921
- "exclusive": [
922
- "data",
923
- "file",
924
- "document-id",
925
- "data-before",
926
- "data-after",
927
- "file-before",
928
- "file-after"
929
- ],
930
- "name": "document-id-after",
931
- "required": false,
932
- "hasDynamicHelp": false,
933
- "multiple": false,
934
- "type": "option"
935
- },
936
- "with-user-token": {
937
- "description": "Prime access token from CLI config",
938
- "name": "with-user-token",
939
- "allowNo": false,
940
- "type": "boolean"
941
- },
942
- "media-library-id": {
943
- "aliases": [
944
- "media"
945
- ],
946
- "description": "Sanity Media Library ID to use",
947
- "exclusive": [
948
- "project-id",
949
- "dataset"
950
- ],
951
- "name": "media-library-id",
952
- "required": false,
953
- "hasDynamicHelp": false,
954
- "multiple": false,
955
- "type": "option"
956
- }
957
- },
958
- "hasDynamicHelp": false,
959
- "hiddenAliases": [],
960
- "id": "functions:test",
961
- "pluginAlias": "@sanity/runtime-cli",
962
- "pluginName": "@sanity/runtime-cli",
963
- "pluginType": "core",
964
- "strict": true,
965
- "summary": "Invoke a local Sanity Function",
966
- "enableJsonFlag": true,
967
- "needs": [
968
- "blueprint"
969
- ],
970
- "isESM": true,
971
- "relativePath": [
972
- "dist",
973
- "commands",
974
- "functions",
975
- "test.js"
976
- ]
977
- },
978
- "blueprints:add": {
979
- "aliases": [],
980
- "args": {
981
- "type": {
982
- "description": "Type of resource to add (only \"function\" is supported)",
983
- "name": "type",
984
- "options": [
985
- "function"
986
- ],
987
- "required": true
988
- }
989
- },
990
- "deprecationOptions": {
991
- "to": "functions add"
992
- },
993
- "description": "This command is deprecated. Use \"functions add\" instead.\n\nEquivalent usage:\n $ <%= config.bin %> functions add\n $ <%= config.bin %> functions add --name my-function --type document-create",
994
- "examples": [
995
- "<%= config.bin %> <%= command.id %> function",
996
- "<%= config.bin %> <%= command.id %> function --helpers",
997
- "<%= config.bin %> <%= command.id %> function --name my-function",
998
- "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-create",
999
- "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-create --fn-type document-update --lang js"
1000
- ],
1001
- "flags": {
1002
- "json": {
1003
- "description": "Format output as json",
1004
- "name": "json",
1005
- "allowNo": false,
1006
- "type": "boolean"
1007
- },
1008
- "path": {
1009
- "aliases": [
1010
- "blueprint-path"
1011
- ],
1012
- "char": "p",
1013
- "description": "Path to a Blueprint file or directory containing one",
1014
- "env": "SANITY_BLUEPRINT_PATH",
1015
- "hidden": true,
1016
- "name": "path",
915
+ "char": "p",
916
+ "description": "Path to a Blueprint file or directory containing one",
917
+ "env": "SANITY_BLUEPRINT_PATH",
918
+ "hidden": true,
919
+ "name": "path",
1017
920
  "hasDynamicHelp": false,
1018
921
  "multiple": false,
1019
922
  "type": "option"
@@ -1040,8 +943,10 @@
1040
943
  "type": "boolean"
1041
944
  },
1042
945
  "stack": {
1043
- "description": "Stack name or ID to use instead of the locally configured Stack",
1044
- "hidden": true,
946
+ "aliases": [
947
+ "id"
948
+ ],
949
+ "description": "Stack name or ID",
1045
950
  "name": "stack",
1046
951
  "hasDynamicHelp": false,
1047
952
  "multiple": false,
@@ -1056,7 +961,6 @@
1056
961
  "exclusive": [
1057
962
  "organization-id"
1058
963
  ],
1059
- "hidden": true,
1060
964
  "name": "project-id",
1061
965
  "hasDynamicHelp": false,
1062
966
  "multiple": false,
@@ -1072,159 +976,52 @@
1072
976
  "exclusive": [
1073
977
  "project-id"
1074
978
  ],
1075
- "hidden": true,
1076
979
  "name": "organization-id",
1077
980
  "hasDynamicHelp": false,
1078
981
  "multiple": false,
1079
982
  "type": "option"
1080
- },
1081
- "example": {
1082
- "aliases": [
1083
- "recipe"
1084
- ],
1085
- "description": "Example to use for the function resource. Discover examples at https://www.sanity.io/exchange/type=recipes/by=sanity",
1086
- "exclusive": [
1087
- "name",
1088
- "fn-type",
1089
- "language",
1090
- "javascript",
1091
- "fn-helpers",
1092
- "fn-installer"
1093
- ],
1094
- "name": "example",
1095
- "hasDynamicHelp": false,
1096
- "multiple": false,
1097
- "type": "option"
1098
- },
1099
- "name": {
1100
- "char": "n",
1101
- "description": "Name of the resource to add",
1102
- "name": "name",
1103
- "hasDynamicHelp": false,
1104
- "multiple": false,
1105
- "type": "option"
1106
- },
1107
- "fn-type": {
1108
- "aliases": [
1109
- "function-type"
1110
- ],
1111
- "dependsOn": [
1112
- "name"
1113
- ],
1114
- "description": "Document change event(s) that should trigger the function; you can specify multiple events by specifying this flag multiple times",
1115
- "name": "fn-type",
1116
- "hasDynamicHelp": false,
1117
- "multiple": true,
1118
- "options": [
1119
- "document-publish",
1120
- "document-create",
1121
- "document-delete",
1122
- "document-update",
1123
- "media-library-asset-create",
1124
- "media-library-asset-delete",
1125
- "media-library-asset-update",
1126
- "scheduled-function",
1127
- "sync-tag-invalidate"
1128
- ],
1129
- "type": "option"
1130
- },
1131
- "language": {
1132
- "aliases": [
1133
- "function-language",
1134
- "fn-language",
1135
- "lang"
1136
- ],
1137
- "description": "Language of the new function",
1138
- "name": "language",
1139
- "default": "ts",
1140
- "hasDynamicHelp": false,
1141
- "multiple": false,
1142
- "options": [
1143
- "ts",
1144
- "js"
1145
- ],
1146
- "type": "option"
1147
- },
1148
- "javascript": {
1149
- "aliases": [
1150
- "js"
1151
- ],
1152
- "description": "Use JavaScript instead of TypeScript",
1153
- "exclusive": [
1154
- "language"
1155
- ],
1156
- "name": "javascript",
1157
- "allowNo": false,
1158
- "type": "boolean"
1159
- },
1160
- "fn-helpers": {
1161
- "aliases": [
1162
- "function-helpers",
1163
- "helpers"
1164
- ],
1165
- "description": "Add helpers to the new function",
1166
- "name": "fn-helpers",
1167
- "allowNo": true,
1168
- "type": "boolean"
1169
- },
1170
- "fn-installer": {
1171
- "aliases": [
1172
- "function-installer",
1173
- "installer"
1174
- ],
1175
- "description": "Which package manager to use when installing the @sanity/functions helpers",
1176
- "name": "fn-installer",
1177
- "hasDynamicHelp": false,
1178
- "multiple": false,
1179
- "options": [
1180
- "skip",
1181
- "npm",
1182
- "pnpm",
1183
- "yarn"
1184
- ],
1185
- "type": "option"
1186
- },
1187
- "install": {
1188
- "char": "i",
1189
- "description": "Shortcut for --fn-installer npm",
1190
- "exclusive": [
1191
- "fn-installer"
1192
- ],
1193
- "name": "install",
1194
- "allowNo": false,
1195
- "type": "boolean"
1196
983
  }
1197
984
  },
1198
985
  "hasDynamicHelp": false,
1199
986
  "hiddenAliases": [],
1200
- "id": "blueprints:add",
987
+ "id": "blueprints:info",
1201
988
  "pluginAlias": "@sanity/runtime-cli",
1202
989
  "pluginName": "@sanity/runtime-cli",
1203
990
  "pluginType": "core",
1204
- "state": "deprecated",
1205
991
  "strict": true,
1206
- "summary": "[deprecated] Use \"functions add\" instead",
992
+ "summary": "Display the status and resources of the remote Stack deployment",
1207
993
  "enableJsonFlag": true,
1208
994
  "needs": [
1209
- "blueprint"
995
+ "deployedStack"
1210
996
  ],
1211
997
  "isESM": true,
1212
998
  "relativePath": [
1213
999
  "dist",
1214
1000
  "commands",
1215
1001
  "blueprints",
1216
- "add.js"
1002
+ "info.js"
1217
1003
  ]
1218
1004
  },
1219
- "blueprints:config": {
1005
+ "blueprints:init": {
1220
1006
  "aliases": [],
1221
- "args": {},
1222
- "description": "Manages the local Blueprint configuration, which links your Blueprint to a Sanity project and Stack.\n\nWithout flags, displays the current configuration. Use --edit to interactively modify settings, or combine --edit with ID flags to update values directly (useful for scripting and automation).\n\nIf you need to switch your Blueprint to a different Stack, use --edit --stack.",
1007
+ "args": {
1008
+ "dir": {
1009
+ "description": "Directory to create the local Blueprint in (defaults to the current directory)",
1010
+ "name": "dir"
1011
+ }
1012
+ },
1013
+ "description": "A Blueprint is your local infrastructure-as-code configuration that defines Sanity resources (datasets, functions, etc.). A Stack is the remote deployment target where your Blueprint is applied.\n[NOTE: Currently, accounts are limited to three (3) Stacks per project scope.]\n\nThis is typically the first command you run in a new project. It creates a local Blueprint manifest file (sanity.blueprint.ts, .js, or .json) and provisions a new remote Stack.\nAdditionally, a Blueprint configuration file is created in .sanity/ containing the scope and Stack IDs. This is .gitignored by default.\n\nAfter initialization, use 'blueprints plan' to preview changes, then 'blueprints deploy' to apply them.\n\nRunning without a directory prompts to confirm the current directory. Run 'blueprints init .' to initialize in the current directory without a prompt.",
1223
1014
  "examples": [
1224
1015
  "<%= config.bin %> <%= command.id %>",
1225
- "<%= config.bin %> <%= command.id %> --edit",
1226
- "<%= config.bin %> <%= command.id %> --edit --project-id <projectId>",
1227
- "<%= config.bin %> <%= command.id %> --edit --project-id <projectId> --stack <name-or-id>"
1016
+ "<%= config.bin %> <%= command.id %> .",
1017
+ "<%= config.bin %> <%= command.id %> [directory]",
1018
+ "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts>",
1019
+ "<%= config.bin %> <%= command.id %> --organization-id <organizationId>",
1020
+ "<%= config.bin %> <%= command.id %> --project-id <projectId>",
1021
+ "<%= config.bin %> <%= command.id %> --stack-name <newStackName>",
1022
+ "<%= config.bin %> <%= command.id %> --stack-id <existingStackId>",
1023
+ "<%= config.bin %> <%= command.id %> new-stack --type <json|js|ts> --org <organizationId> --name <newStackName>",
1024
+ "<%= config.bin %> <%= command.id %> old-stack --type <json|js|ts> --project-id <projectId> --stack-id <existingStackId>"
1228
1025
  ],
1229
1026
  "flags": {
1230
1027
  "json": {
@@ -1233,6 +1030,16 @@
1233
1030
  "allowNo": false,
1234
1031
  "type": "boolean"
1235
1032
  },
1033
+ "llms": {
1034
+ "aliases": [
1035
+ "skill"
1036
+ ],
1037
+ "description": "Show agent-oriented guidance for this command",
1038
+ "hidden": true,
1039
+ "name": "llms",
1040
+ "allowNo": false,
1041
+ "type": "boolean"
1042
+ },
1236
1043
  "path": {
1237
1044
  "aliases": [
1238
1045
  "blueprint-path"
@@ -1267,18 +1074,41 @@
1267
1074
  "allowNo": false,
1268
1075
  "type": "boolean"
1269
1076
  },
1270
- "stack": {
1077
+ "dir": {
1078
+ "description": "Directory to create the local Blueprint in",
1079
+ "name": "dir",
1080
+ "hasDynamicHelp": false,
1081
+ "multiple": false,
1082
+ "type": "option"
1083
+ },
1084
+ "example": {
1271
1085
  "aliases": [
1086
+ "recipe"
1087
+ ],
1088
+ "description": "Example to use for the local Blueprint",
1089
+ "exclusive": [
1090
+ "blueprint-type",
1272
1091
  "stack-id",
1273
- "stackId"
1092
+ "stack-name"
1274
1093
  ],
1275
- "dependsOn": [
1276
- "edit"
1094
+ "name": "example",
1095
+ "hasDynamicHelp": false,
1096
+ "multiple": false,
1097
+ "type": "option"
1098
+ },
1099
+ "blueprint-type": {
1100
+ "aliases": [
1101
+ "type"
1277
1102
  ],
1278
- "description": "Stack name or ID to set in the configuration. Requires --edit flag",
1279
- "name": "stack",
1103
+ "description": "Blueprint manifest type to use for the local Blueprint",
1104
+ "name": "blueprint-type",
1280
1105
  "hasDynamicHelp": false,
1281
1106
  "multiple": false,
1107
+ "options": [
1108
+ "json",
1109
+ "js",
1110
+ "ts"
1111
+ ],
1282
1112
  "type": "option"
1283
1113
  },
1284
1114
  "project-id": {
@@ -1286,9 +1116,6 @@
1286
1116
  "project",
1287
1117
  "projectId"
1288
1118
  ],
1289
- "dependsOn": [
1290
- "edit"
1291
- ],
1292
1119
  "description": "Sanity project ID used to scope Blueprint and Stack",
1293
1120
  "exclusive": [
1294
1121
  "organization-id"
@@ -1304,59 +1131,88 @@
1304
1131
  "organizationId",
1305
1132
  "org"
1306
1133
  ],
1307
- "dependsOn": [
1308
- "edit"
1309
- ],
1310
1134
  "description": "Sanity organization ID used to scope Blueprint and Stack",
1311
1135
  "exclusive": [
1312
1136
  "project-id"
1313
1137
  ],
1314
- "name": "organization-id",
1138
+ "name": "organization-id",
1139
+ "hasDynamicHelp": false,
1140
+ "multiple": false,
1141
+ "type": "option"
1142
+ },
1143
+ "stack-id": {
1144
+ "aliases": [
1145
+ "stackId"
1146
+ ],
1147
+ "description": "Existing Stack ID used to scope local Blueprint",
1148
+ "exclusive": [
1149
+ "stack-name"
1150
+ ],
1151
+ "name": "stack-id",
1152
+ "relationships": [
1153
+ {
1154
+ "type": "some",
1155
+ "flags": [
1156
+ "project-id",
1157
+ "organization-id"
1158
+ ]
1159
+ }
1160
+ ],
1161
+ "hasDynamicHelp": false,
1162
+ "multiple": false,
1163
+ "type": "option"
1164
+ },
1165
+ "stack-name": {
1166
+ "aliases": [
1167
+ "name"
1168
+ ],
1169
+ "description": "Name to use for a new Stack provisioned during initialization",
1170
+ "exclusive": [
1171
+ "stack-id"
1172
+ ],
1173
+ "name": "stack-name",
1174
+ "relationships": [
1175
+ {
1176
+ "type": "some",
1177
+ "flags": [
1178
+ "project-id",
1179
+ "organization-id"
1180
+ ]
1181
+ }
1182
+ ],
1315
1183
  "hasDynamicHelp": false,
1316
1184
  "multiple": false,
1317
1185
  "type": "option"
1318
- },
1319
- "edit": {
1320
- "char": "e",
1321
- "description": "Modify the configuration interactively, or directly when combined with ID flags.",
1322
- "name": "edit",
1323
- "allowNo": false,
1324
- "type": "boolean"
1325
1186
  }
1326
1187
  },
1327
1188
  "hasDynamicHelp": false,
1328
1189
  "hiddenAliases": [],
1329
- "id": "blueprints:config",
1190
+ "id": "blueprints:init",
1330
1191
  "pluginAlias": "@sanity/runtime-cli",
1331
1192
  "pluginName": "@sanity/runtime-cli",
1332
1193
  "pluginType": "core",
1333
1194
  "strict": true,
1334
- "summary": "View or edit the local Blueprint configuration",
1195
+ "summary": "Initialize a Blueprint and create a remote Stack",
1335
1196
  "enableJsonFlag": true,
1336
- "needs": [
1337
- "token",
1338
- "blueprint"
1339
- ],
1340
1197
  "isESM": true,
1341
1198
  "relativePath": [
1342
1199
  "dist",
1343
1200
  "commands",
1344
1201
  "blueprints",
1345
- "config.js"
1202
+ "init.js"
1346
1203
  ]
1347
1204
  },
1348
- "blueprints:deploy": {
1205
+ "blueprints:logs": {
1349
1206
  "aliases": [],
1350
1207
  "args": {},
1351
- "description": "Applies your local Blueprint to the remote Stack, creating, updating, or removing resources as needed. This is the primary command for applying infrastructure changes.\n\nBefore deploying, run 'blueprints plan' to preview changes. After deployment, use 'blueprints info' to verify Stack status or 'blueprints logs' to monitor activity.\n\nUse --no-wait to queue the deployment and return immediately without waiting for completion.\n\nUse --fn-installer to force which package manager to use when deploying functions.\n\nSet SANITY_ASSET_TIMEOUT (seconds) to override the 60-second timeout for processing resource assets.\n\nExit codes: 0 deployed, 2 deployment failed, 75 deployment accepted but completion could not be confirmed (rerun 'blueprints info' to check).",
1208
+ "description": "Retrieves Stack deployment logs, useful for debugging and monitoring deployment activity.\n\nUse --watch (-w) to tail logs in real-time.\n\nUse --limit, --since, or --before to narrow the result set when not watching.\n\nIf you're not seeing expected logs, verify your Stack is deployed with 'blueprints info'.",
1352
1209
  "examples": [
1353
1210
  "<%= config.bin %> <%= command.id %>",
1354
- "<%= config.bin %> <%= command.id %> --message \"Enable staging dataset\"",
1355
- "<%= config.bin %> <%= command.id %> --no-wait",
1356
- "<%= config.bin %> <%= command.id %> --fn-installer npm",
1211
+ "<%= config.bin %> <%= command.id %> --watch",
1357
1212
  "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
1358
- "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>",
1359
- "<%= config.bin %> <%= command.id %> --new-stack-name <new-name>"
1213
+ "<%= config.bin %> <%= command.id %> --limit 500",
1214
+ "<%= config.bin %> <%= command.id %> --since 2026-05-01T00:00:00Z",
1215
+ "<%= config.bin %> <%= command.id %> --before 2026-05-01T00:00:00Z"
1360
1216
  ],
1361
1217
  "flags": {
1362
1218
  "json": {
@@ -1365,6 +1221,16 @@
1365
1221
  "allowNo": false,
1366
1222
  "type": "boolean"
1367
1223
  },
1224
+ "llms": {
1225
+ "aliases": [
1226
+ "skill"
1227
+ ],
1228
+ "description": "Show agent-oriented guidance for this command",
1229
+ "hidden": true,
1230
+ "name": "llms",
1231
+ "allowNo": false,
1232
+ "type": "boolean"
1233
+ },
1368
1234
  "path": {
1369
1235
  "aliases": [
1370
1236
  "blueprint-path"
@@ -1435,40 +1301,43 @@
1435
1301
  "multiple": false,
1436
1302
  "type": "option"
1437
1303
  },
1438
- "message": {
1439
- "char": "m",
1440
- "description": "Message describing the deployment (e.g. reason for change)",
1441
- "name": "message",
1304
+ "watch": {
1305
+ "aliases": [
1306
+ "follow"
1307
+ ],
1308
+ "char": "w",
1309
+ "description": "Watch for new Stack logs",
1310
+ "name": "watch",
1311
+ "allowNo": false,
1312
+ "type": "boolean"
1313
+ },
1314
+ "limit": {
1315
+ "char": "l",
1316
+ "description": "Maximum number of log entries to retrieve (1-500)",
1317
+ "exclusive": [
1318
+ "watch"
1319
+ ],
1320
+ "name": "limit",
1442
1321
  "hasDynamicHelp": false,
1443
1322
  "multiple": false,
1444
1323
  "type": "option"
1445
1324
  },
1446
- "fn-installer": {
1447
- "aliases": [
1448
- "function-installer",
1449
- "installer"
1325
+ "since": {
1326
+ "description": "Only show logs after this ISO 8601 timestamp",
1327
+ "exclusive": [
1328
+ "watch"
1450
1329
  ],
1451
- "description": "Which package manager to use when installing Function dependencies",
1452
- "hidden": true,
1453
- "name": "fn-installer",
1330
+ "name": "since",
1454
1331
  "hasDynamicHelp": false,
1455
1332
  "multiple": false,
1456
- "options": [
1457
- "npm",
1458
- "pnpm",
1459
- "yarn"
1460
- ],
1461
1333
  "type": "option"
1462
1334
  },
1463
- "no-wait": {
1464
- "description": "Do not wait for Stack deployment to complete",
1465
- "name": "no-wait",
1466
- "allowNo": false,
1467
- "type": "boolean"
1468
- },
1469
- "new-stack-name": {
1470
- "description": "Set a new name for the Stack",
1471
- "name": "new-stack-name",
1335
+ "before": {
1336
+ "description": "Only show logs before this ISO 8601 timestamp",
1337
+ "exclusive": [
1338
+ "watch"
1339
+ ],
1340
+ "name": "before",
1472
1341
  "hasDynamicHelp": false,
1473
1342
  "multiple": false,
1474
1343
  "type": "option"
@@ -1476,32 +1345,36 @@
1476
1345
  },
1477
1346
  "hasDynamicHelp": false,
1478
1347
  "hiddenAliases": [],
1479
- "id": "blueprints:deploy",
1348
+ "id": "blueprints:logs",
1480
1349
  "pluginAlias": "@sanity/runtime-cli",
1481
1350
  "pluginName": "@sanity/runtime-cli",
1482
1351
  "pluginType": "core",
1483
1352
  "strict": true,
1484
- "summary": "Deploy the local Blueprint to the remote Stack",
1353
+ "summary": "Display logs for the current Blueprint's Stack deployment",
1485
1354
  "enableJsonFlag": true,
1486
1355
  "needs": [
1487
- "deployedStack",
1488
- "blueprint"
1356
+ "deployedStack"
1489
1357
  ],
1490
1358
  "isESM": true,
1491
1359
  "relativePath": [
1492
1360
  "dist",
1493
1361
  "commands",
1494
1362
  "blueprints",
1495
- "deploy.js"
1363
+ "logs.js"
1496
1364
  ]
1497
1365
  },
1498
- "blueprints:destroy": {
1366
+ "blueprints:mint-deploy-token": {
1499
1367
  "aliases": [],
1500
1368
  "args": {},
1501
- "description": "Permanently removes the remote Stack and all its provisioned resources. Your Blueprint manifest and resource files remain intact; \"stackId\" is unset in your local config.\n\nThis is a destructive operation. You will be prompted to confirm unless --force is specified.\n\nUse this to clean up test environments or decommission a Stack you no longer need.\n\nExit codes: 0 destroyed, 2 destruction failed, 75 destruction accepted but completion could not be confirmed (rerun 'blueprints info' to check).",
1369
+ "description": "Mints a long-lived robot token with the role required to plan, deploy, and destroy Blueprints in this project or organization.\n\nBy default the command runs interactively and asks how you want to receive the token (clipboard, print, or exit). Use --print to emit only the raw token for shell pipelines, or --json for full API output.\n\nThe minted token is also visible in your Sanity Manage UI under Robots, where it can be revoked.",
1502
1370
  "examples": [
1503
1371
  "<%= config.bin %> <%= command.id %>",
1504
- "<%= config.bin %> <%= command.id %> --stack <name-or-id> --project-id <projectId> --force --no-wait"
1372
+ "<%= config.bin %> <%= command.id %> --label \"ci-deploy\"",
1373
+ "<%= config.bin %> <%= command.id %> --print",
1374
+ "export SANITY_AUTH_TOKEN=$(<%= config.bin %> <%= command.id %> --print)",
1375
+ "<%= config.bin %> <%= command.id %> --json",
1376
+ "<%= config.bin %> <%= command.id %> --project-id <projectId>",
1377
+ "<%= config.bin %> <%= command.id %> --organization-id <orgId>"
1505
1378
  ],
1506
1379
  "flags": {
1507
1380
  "json": {
@@ -1510,6 +1383,16 @@
1510
1383
  "allowNo": false,
1511
1384
  "type": "boolean"
1512
1385
  },
1386
+ "llms": {
1387
+ "aliases": [
1388
+ "skill"
1389
+ ],
1390
+ "description": "Show agent-oriented guidance for this command",
1391
+ "hidden": true,
1392
+ "name": "llms",
1393
+ "allowNo": false,
1394
+ "type": "boolean"
1395
+ },
1513
1396
  "path": {
1514
1397
  "aliases": [
1515
1398
  "blueprint-path"
@@ -1545,11 +1428,8 @@
1545
1428
  "type": "boolean"
1546
1429
  },
1547
1430
  "stack": {
1548
- "aliases": [
1549
- "stack-id",
1550
- "stackId"
1551
- ],
1552
- "description": "Stack name or ID to destroy (defaults to the locally configured Stack)",
1431
+ "description": "Stack name or ID to use instead of the locally configured Stack",
1432
+ "hidden": true,
1553
1433
  "name": "stack",
1554
1434
  "hasDynamicHelp": false,
1555
1435
  "multiple": false,
@@ -1560,10 +1440,6 @@
1560
1440
  "project",
1561
1441
  "projectId"
1562
1442
  ],
1563
- "dependsOn": [
1564
- "stack",
1565
- "force"
1566
- ],
1567
1443
  "description": "Sanity project ID used to scope Blueprint and Stack",
1568
1444
  "exclusive": [
1569
1445
  "organization-id"
@@ -1579,10 +1455,6 @@
1579
1455
  "organizationId",
1580
1456
  "org"
1581
1457
  ],
1582
- "dependsOn": [
1583
- "stack",
1584
- "force"
1585
- ],
1586
1458
  "description": "Sanity organization ID used to scope Blueprint and Stack",
1587
1459
  "exclusive": [
1588
1460
  "project-id"
@@ -1592,30 +1464,32 @@
1592
1464
  "multiple": false,
1593
1465
  "type": "option"
1594
1466
  },
1595
- "force": {
1596
- "aliases": [
1597
- "f"
1598
- ],
1599
- "description": "Force Stack destruction (skip confirmation)",
1600
- "name": "force",
1601
- "allowNo": false,
1602
- "type": "boolean"
1467
+ "label": {
1468
+ "description": "Human-readable label for the robot. Defaults to a generated value.",
1469
+ "name": "label",
1470
+ "hasDynamicHelp": false,
1471
+ "multiple": false,
1472
+ "type": "option"
1603
1473
  },
1604
- "no-wait": {
1605
- "description": "Do not wait for Stack destruction to complete",
1606
- "name": "no-wait",
1474
+ "print": {
1475
+ "char": "P",
1476
+ "description": "Print only the raw token to stdout (suitable for shell substitution)",
1477
+ "exclusive": [
1478
+ "json"
1479
+ ],
1480
+ "name": "print",
1607
1481
  "allowNo": false,
1608
1482
  "type": "boolean"
1609
1483
  }
1610
1484
  },
1611
1485
  "hasDynamicHelp": false,
1612
1486
  "hiddenAliases": [],
1613
- "id": "blueprints:destroy",
1487
+ "id": "blueprints:mint-deploy-token",
1614
1488
  "pluginAlias": "@sanity/runtime-cli",
1615
1489
  "pluginName": "@sanity/runtime-cli",
1616
1490
  "pluginType": "core",
1617
1491
  "strict": true,
1618
- "summary": "Destroy a remote Stack deployment and its resources",
1492
+ "summary": "Create a robot API token for deploying Blueprints from CI/CD",
1619
1493
  "enableJsonFlag": true,
1620
1494
  "needs": [
1621
1495
  "scope"
@@ -1625,16 +1499,17 @@
1625
1499
  "dist",
1626
1500
  "commands",
1627
1501
  "blueprints",
1628
- "destroy.js"
1502
+ "mint-deploy-token.js"
1629
1503
  ]
1630
1504
  },
1631
- "blueprints:doctor": {
1505
+ "blueprints:plan": {
1632
1506
  "aliases": [],
1633
1507
  "args": {},
1634
- "description": "Analyzes your local Blueprint and remote Stack configuration for common issues, such as missing authentication, invalid project references, or misconfigured resources.\n\nRun this command when encountering errors with other Blueprint commands. Use --fix to interactively resolve detected issues.",
1508
+ "description": "Use this command to preview what changes will be applied to your remote Stack before deploying. This is a safe, read-only operation—no resources are created, modified, or deleted.\n\nRun 'blueprints plan' after making local changes to your Blueprint manifest to verify the expected diff. When ready, run 'blueprints deploy' to apply changes.",
1635
1509
  "examples": [
1636
1510
  "<%= config.bin %> <%= command.id %>",
1637
- "<%= config.bin %> <%= command.id %> --fix"
1511
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
1512
+ "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>"
1638
1513
  ],
1639
1514
  "flags": {
1640
1515
  "json": {
@@ -1643,6 +1518,16 @@
1643
1518
  "allowNo": false,
1644
1519
  "type": "boolean"
1645
1520
  },
1521
+ "llms": {
1522
+ "aliases": [
1523
+ "skill"
1524
+ ],
1525
+ "description": "Show agent-oriented guidance for this command",
1526
+ "hidden": true,
1527
+ "name": "llms",
1528
+ "allowNo": false,
1529
+ "type": "boolean"
1530
+ },
1646
1531
  "path": {
1647
1532
  "aliases": [
1648
1533
  "blueprint-path"
@@ -1650,6 +1535,7 @@
1650
1535
  "char": "p",
1651
1536
  "description": "Path to a Blueprint file or directory containing one",
1652
1537
  "env": "SANITY_BLUEPRINT_PATH",
1538
+ "hidden": true,
1653
1539
  "name": "path",
1654
1540
  "hasDynamicHelp": false,
1655
1541
  "multiple": false,
@@ -1670,44 +1556,79 @@
1670
1556
  "type": "boolean"
1671
1557
  },
1672
1558
  "verbose": {
1673
- "description": "Verbose output; defaults to true",
1559
+ "description": "Verbose output",
1560
+ "hidden": true,
1674
1561
  "name": "verbose",
1675
- "allowNo": true,
1676
- "type": "boolean"
1677
- },
1678
- "fix": {
1679
- "description": "Interactively fix configuration issues",
1680
- "name": "fix",
1681
1562
  "allowNo": false,
1682
1563
  "type": "boolean"
1564
+ },
1565
+ "stack": {
1566
+ "description": "Stack name or ID to use instead of the locally configured Stack",
1567
+ "name": "stack",
1568
+ "hasDynamicHelp": false,
1569
+ "multiple": false,
1570
+ "type": "option"
1571
+ },
1572
+ "project-id": {
1573
+ "aliases": [
1574
+ "project",
1575
+ "projectId"
1576
+ ],
1577
+ "description": "Sanity project ID used to scope Blueprint and Stack",
1578
+ "exclusive": [
1579
+ "organization-id"
1580
+ ],
1581
+ "name": "project-id",
1582
+ "hasDynamicHelp": false,
1583
+ "multiple": false,
1584
+ "type": "option"
1585
+ },
1586
+ "organization-id": {
1587
+ "aliases": [
1588
+ "organization",
1589
+ "organizationId",
1590
+ "org"
1591
+ ],
1592
+ "description": "Sanity organization ID used to scope Blueprint and Stack",
1593
+ "exclusive": [
1594
+ "project-id"
1595
+ ],
1596
+ "name": "organization-id",
1597
+ "hasDynamicHelp": false,
1598
+ "multiple": false,
1599
+ "type": "option"
1683
1600
  }
1684
1601
  },
1685
1602
  "hasDynamicHelp": false,
1686
1603
  "hiddenAliases": [],
1687
- "id": "blueprints:doctor",
1604
+ "id": "blueprints:plan",
1688
1605
  "pluginAlias": "@sanity/runtime-cli",
1689
1606
  "pluginName": "@sanity/runtime-cli",
1690
1607
  "pluginType": "core",
1691
1608
  "strict": true,
1692
- "summary": "Diagnose potential issues with local Blueprint and remote Stack configuration",
1609
+ "summary": "Preview changes that will be applied to the remote Stack",
1693
1610
  "enableJsonFlag": true,
1611
+ "needs": [
1612
+ "token",
1613
+ "blueprint"
1614
+ ],
1694
1615
  "isESM": true,
1695
1616
  "relativePath": [
1696
1617
  "dist",
1697
1618
  "commands",
1698
1619
  "blueprints",
1699
- "doctor.js"
1620
+ "plan.js"
1700
1621
  ]
1701
1622
  },
1702
- "blueprints:info": {
1623
+ "blueprints:promote": {
1703
1624
  "aliases": [],
1704
1625
  "args": {},
1705
- "description": "Displays the current state and metadata of your remote Stack deployment, including deployed resources, status, and configuration.\n\nUse this command to verify a deployment succeeded, check what resources are live, or confirm which Stack your local Blueprint is connected to.\n\nRun 'blueprints stacks' to see all available Stacks in your project or organization.",
1626
+ "description": "Promotes a deployed Stack to organization scope, enabling management of org-level resources. Promotion cannot be reversed.\n\nYour local Blueprint configuration will be updated to reflect the new scope.",
1706
1627
  "examples": [
1707
1628
  "<%= config.bin %> <%= command.id %>",
1708
1629
  "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
1709
- "<%= config.bin %> <%= command.id %> --project-id <id> --stack <name-or-id>",
1710
- "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>"
1630
+ "<%= config.bin %> <%= command.id %> --project-id <projectId> --stack <name-or-id>",
1631
+ "<%= config.bin %> <%= command.id %> --new-stack-name <new-name>"
1711
1632
  ],
1712
1633
  "flags": {
1713
1634
  "json": {
@@ -1716,6 +1637,16 @@
1716
1637
  "allowNo": false,
1717
1638
  "type": "boolean"
1718
1639
  },
1640
+ "llms": {
1641
+ "aliases": [
1642
+ "skill"
1643
+ ],
1644
+ "description": "Show agent-oriented guidance for this command",
1645
+ "hidden": true,
1646
+ "name": "llms",
1647
+ "allowNo": false,
1648
+ "type": "boolean"
1649
+ },
1719
1650
  "path": {
1720
1651
  "aliases": [
1721
1652
  "blueprint-path"
@@ -1754,7 +1685,7 @@
1754
1685
  "aliases": [
1755
1686
  "id"
1756
1687
  ],
1757
- "description": "Stack name or ID",
1688
+ "description": "Stack name or ID to promote",
1758
1689
  "name": "stack",
1759
1690
  "hasDynamicHelp": false,
1760
1691
  "multiple": false,
@@ -1784,52 +1715,56 @@
1784
1715
  "exclusive": [
1785
1716
  "project-id"
1786
1717
  ],
1718
+ "hidden": true,
1787
1719
  "name": "organization-id",
1788
1720
  "hasDynamicHelp": false,
1789
1721
  "multiple": false,
1790
1722
  "type": "option"
1723
+ },
1724
+ "force": {
1725
+ "description": "Skip confirmation prompt",
1726
+ "name": "force",
1727
+ "allowNo": false,
1728
+ "type": "boolean"
1729
+ },
1730
+ "new-stack-name": {
1731
+ "description": "Set a new name for the Stack while promoting",
1732
+ "name": "new-stack-name",
1733
+ "hasDynamicHelp": false,
1734
+ "multiple": false,
1735
+ "type": "option"
1791
1736
  }
1792
1737
  },
1793
1738
  "hasDynamicHelp": false,
1794
1739
  "hiddenAliases": [],
1795
- "id": "blueprints:info",
1740
+ "id": "blueprints:promote",
1796
1741
  "pluginAlias": "@sanity/runtime-cli",
1797
1742
  "pluginName": "@sanity/runtime-cli",
1798
1743
  "pluginType": "core",
1799
1744
  "strict": true,
1800
- "summary": "Display the status and resources of the remote Stack deployment",
1745
+ "summary": "Promote a Stack from project scope to organization scope",
1801
1746
  "enableJsonFlag": true,
1802
1747
  "needs": [
1803
- "deployedStack"
1748
+ "deployedStack",
1749
+ "blueprint"
1804
1750
  ],
1805
1751
  "isESM": true,
1806
1752
  "relativePath": [
1807
1753
  "dist",
1808
1754
  "commands",
1809
1755
  "blueprints",
1810
- "info.js"
1756
+ "promote.js"
1811
1757
  ]
1812
1758
  },
1813
- "blueprints:init": {
1759
+ "blueprints:stacks": {
1814
1760
  "aliases": [],
1815
- "args": {
1816
- "dir": {
1817
- "description": "Directory to create the local Blueprint in (defaults to the current directory)",
1818
- "name": "dir"
1819
- }
1820
- },
1821
- "description": "A Blueprint is your local infrastructure-as-code configuration that defines Sanity resources (datasets, functions, etc.). A Stack is the remote deployment target where your Blueprint is applied.\n[NOTE: Currently, accounts are limited to three (3) Stacks per project scope.]\n\nThis is typically the first command you run in a new project. It creates a local Blueprint manifest file (sanity.blueprint.ts, .js, or .json) and provisions a new remote Stack.\nAdditionally, a Blueprint configuration file is created in .sanity/ containing the scope and Stack IDs. This is .gitignored by default.\n\nAfter initialization, use 'blueprints plan' to preview changes, then 'blueprints deploy' to apply them.\n\nRunning without a directory prompts to confirm the current directory. Run 'blueprints init .' to initialize in the current directory without a prompt.",
1761
+ "args": {},
1762
+ "description": "Shows all Stacks associated with a project or organization. By default, lists Stacks scoped to the local Blueprint.\n\nUse this to discover existing Stacks you can scope a local Blueprint to (using 'blueprints config --edit'), or to audit what's deployed across your project.\n\nUse --include-projects with --organization-id to also list Stacks from all projects within the organization.",
1822
1763
  "examples": [
1823
1764
  "<%= config.bin %> <%= command.id %>",
1824
- "<%= config.bin %> <%= command.id %> .",
1825
- "<%= config.bin %> <%= command.id %> [directory]",
1826
- "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts>",
1827
- "<%= config.bin %> <%= command.id %> --organization-id <organizationId>",
1828
1765
  "<%= config.bin %> <%= command.id %> --project-id <projectId>",
1829
- "<%= config.bin %> <%= command.id %> --stack-name <newStackName>",
1830
- "<%= config.bin %> <%= command.id %> --stack-id <existingStackId>",
1831
- "<%= config.bin %> <%= command.id %> new-stack --type <json|js|ts> --org <organizationId> --name <newStackName>",
1832
- "<%= config.bin %> <%= command.id %> old-stack --type <json|js|ts> --project-id <projectId> --stack-id <existingStackId>"
1766
+ "<%= config.bin %> <%= command.id %> --organization-id <organizationId>",
1767
+ "<%= config.bin %> <%= command.id %> --organization-id <organizationId> --include-projects"
1833
1768
  ],
1834
1769
  "flags": {
1835
1770
  "json": {
@@ -1838,6 +1773,16 @@
1838
1773
  "allowNo": false,
1839
1774
  "type": "boolean"
1840
1775
  },
1776
+ "llms": {
1777
+ "aliases": [
1778
+ "skill"
1779
+ ],
1780
+ "description": "Show agent-oriented guidance for this command",
1781
+ "hidden": true,
1782
+ "name": "llms",
1783
+ "allowNo": false,
1784
+ "type": "boolean"
1785
+ },
1841
1786
  "path": {
1842
1787
  "aliases": [
1843
1788
  "blueprint-path"
@@ -1872,41 +1817,12 @@
1872
1817
  "allowNo": false,
1873
1818
  "type": "boolean"
1874
1819
  },
1875
- "dir": {
1876
- "description": "Directory to create the local Blueprint in",
1877
- "name": "dir",
1878
- "hasDynamicHelp": false,
1879
- "multiple": false,
1880
- "type": "option"
1881
- },
1882
- "example": {
1883
- "aliases": [
1884
- "recipe"
1885
- ],
1886
- "description": "Example to use for the local Blueprint",
1887
- "exclusive": [
1888
- "blueprint-type",
1889
- "stack-id",
1890
- "stack-name"
1891
- ],
1892
- "name": "example",
1893
- "hasDynamicHelp": false,
1894
- "multiple": false,
1895
- "type": "option"
1896
- },
1897
- "blueprint-type": {
1898
- "aliases": [
1899
- "type"
1900
- ],
1901
- "description": "Blueprint manifest type to use for the local Blueprint",
1902
- "name": "blueprint-type",
1820
+ "stack": {
1821
+ "description": "Stack name or ID to use instead of the locally configured Stack",
1822
+ "hidden": true,
1823
+ "name": "stack",
1903
1824
  "hasDynamicHelp": false,
1904
1825
  "multiple": false,
1905
- "options": [
1906
- "json",
1907
- "js",
1908
- "ts"
1909
- ],
1910
1826
  "type": "option"
1911
1827
  },
1912
1828
  "project-id": {
@@ -1916,7 +1832,8 @@
1916
1832
  ],
1917
1833
  "description": "Sanity project ID used to scope Blueprint and Stack",
1918
1834
  "exclusive": [
1919
- "organization-id"
1835
+ "organization-id",
1836
+ "include-projects"
1920
1837
  ],
1921
1838
  "name": "project-id",
1922
1839
  "hasDynamicHelp": false,
@@ -1938,79 +1855,46 @@
1938
1855
  "multiple": false,
1939
1856
  "type": "option"
1940
1857
  },
1941
- "stack-id": {
1942
- "aliases": [
1943
- "stackId"
1944
- ],
1945
- "description": "Existing Stack ID used to scope local Blueprint",
1946
- "exclusive": [
1947
- "stack-name"
1948
- ],
1949
- "name": "stack-id",
1950
- "relationships": [
1951
- {
1952
- "type": "some",
1953
- "flags": [
1954
- "project-id",
1955
- "organization-id"
1956
- ]
1957
- }
1958
- ],
1959
- "hasDynamicHelp": false,
1960
- "multiple": false,
1961
- "type": "option"
1962
- },
1963
- "stack-name": {
1964
- "aliases": [
1965
- "name"
1966
- ],
1967
- "description": "Name to use for a new Stack provisioned during initialization",
1968
- "exclusive": [
1969
- "stack-id"
1970
- ],
1971
- "name": "stack-name",
1972
- "relationships": [
1973
- {
1974
- "type": "some",
1975
- "flags": [
1976
- "project-id",
1977
- "organization-id"
1978
- ]
1979
- }
1858
+ "include-projects": {
1859
+ "dependsOn": [
1860
+ "organization-id"
1980
1861
  ],
1981
- "hasDynamicHelp": false,
1982
- "multiple": false,
1983
- "type": "option"
1862
+ "description": "Include Stacks from all projects within the organization. Requires --organization-id.",
1863
+ "name": "include-projects",
1864
+ "allowNo": false,
1865
+ "type": "boolean"
1984
1866
  }
1985
1867
  },
1986
1868
  "hasDynamicHelp": false,
1987
1869
  "hiddenAliases": [],
1988
- "id": "blueprints:init",
1870
+ "id": "blueprints:stacks",
1989
1871
  "pluginAlias": "@sanity/runtime-cli",
1990
1872
  "pluginName": "@sanity/runtime-cli",
1991
1873
  "pluginType": "core",
1992
1874
  "strict": true,
1993
- "summary": "Initialize a Blueprint and create a remote Stack",
1875
+ "summary": "List remote Stack deployments for your project or organization",
1994
1876
  "enableJsonFlag": true,
1877
+ "needs": [
1878
+ "scope"
1879
+ ],
1995
1880
  "isESM": true,
1996
1881
  "relativePath": [
1997
1882
  "dist",
1998
1883
  "commands",
1999
1884
  "blueprints",
2000
- "init.js"
1885
+ "stacks.js"
2001
1886
  ]
2002
1887
  },
2003
- "blueprints:logs": {
1888
+ "functions:add": {
2004
1889
  "aliases": [],
2005
1890
  "args": {},
2006
- "description": "Retrieves Stack deployment logs, useful for debugging and monitoring deployment activity.\n\nUse --watch (-w) to tail logs in real-time.\n\nUse --limit, --since, or --before to narrow the result set when not watching.\n\nIf you're not seeing expected logs, verify your Stack is deployed with 'blueprints info'.",
1891
+ "description": "Scaffolds a new Function in the functions/ folder and templates a resource for your Blueprint manifest.\n\nFunctions are serverless handlers triggered by document, live content or media-library events (create, update, delete, publish).\n\nAfter adding, use 'functions dev' to test locally, then 'blueprints deploy' to publish.",
2007
1892
  "examples": [
2008
1893
  "<%= config.bin %> <%= command.id %>",
2009
- "<%= config.bin %> <%= command.id %> --watch",
2010
- "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
2011
- "<%= config.bin %> <%= command.id %> --limit 500",
2012
- "<%= config.bin %> <%= command.id %> --since 2026-05-01T00:00:00Z",
2013
- "<%= config.bin %> <%= command.id %> --before 2026-05-01T00:00:00Z"
1894
+ "<%= config.bin %> <%= command.id %> --helpers",
1895
+ "<%= config.bin %> <%= command.id %> --name my-function",
1896
+ "<%= config.bin %> <%= command.id %> --name my-function --type document-create",
1897
+ "<%= config.bin %> <%= command.id %> --name my-function --type document-create --type document-update --lang js"
2014
1898
  ],
2015
1899
  "flags": {
2016
1900
  "json": {
@@ -2019,6 +1903,16 @@
2019
1903
  "allowNo": false,
2020
1904
  "type": "boolean"
2021
1905
  },
1906
+ "llms": {
1907
+ "aliases": [
1908
+ "skill"
1909
+ ],
1910
+ "description": "Show agent-oriented guidance for this command",
1911
+ "hidden": true,
1912
+ "name": "llms",
1913
+ "allowNo": false,
1914
+ "type": "boolean"
1915
+ },
2022
1916
  "path": {
2023
1917
  "aliases": [
2024
1918
  "blueprint-path"
@@ -2055,6 +1949,7 @@
2055
1949
  },
2056
1950
  "stack": {
2057
1951
  "description": "Stack name or ID to use instead of the locally configured Stack",
1952
+ "hidden": true,
2058
1953
  "name": "stack",
2059
1954
  "hasDynamicHelp": false,
2060
1955
  "multiple": false,
@@ -2069,6 +1964,7 @@
2069
1964
  "exclusive": [
2070
1965
  "organization-id"
2071
1966
  ],
1967
+ "hidden": true,
2072
1968
  "name": "project-id",
2073
1969
  "hasDynamicHelp": false,
2074
1970
  "multiple": false,
@@ -2084,86 +1980,145 @@
2084
1980
  "exclusive": [
2085
1981
  "project-id"
2086
1982
  ],
1983
+ "hidden": true,
2087
1984
  "name": "organization-id",
2088
1985
  "hasDynamicHelp": false,
2089
1986
  "multiple": false,
2090
1987
  "type": "option"
2091
1988
  },
2092
- "watch": {
1989
+ "example": {
2093
1990
  "aliases": [
2094
- "follow"
1991
+ "recipe"
2095
1992
  ],
2096
- "char": "w",
2097
- "description": "Watch for new Stack logs",
2098
- "name": "watch",
2099
- "allowNo": false,
2100
- "type": "boolean"
2101
- },
2102
- "limit": {
2103
- "char": "l",
2104
- "description": "Maximum number of log entries to retrieve (1-500)",
1993
+ "description": "Example to use for the Function",
2105
1994
  "exclusive": [
2106
- "watch"
1995
+ "name",
1996
+ "fn-type",
1997
+ "language",
1998
+ "javascript",
1999
+ "fn-helpers",
2000
+ "fn-installer"
2107
2001
  ],
2108
- "name": "limit",
2002
+ "name": "example",
2109
2003
  "hasDynamicHelp": false,
2110
2004
  "multiple": false,
2111
2005
  "type": "option"
2112
2006
  },
2113
- "since": {
2114
- "description": "Only show logs after this ISO 8601 timestamp",
2007
+ "name": {
2008
+ "char": "n",
2009
+ "description": "Name of the Function to add",
2010
+ "name": "name",
2011
+ "hasDynamicHelp": false,
2012
+ "multiple": false,
2013
+ "type": "option"
2014
+ },
2015
+ "type": {
2016
+ "dependsOn": [
2017
+ "name"
2018
+ ],
2019
+ "description": "Document change event(s) that should trigger the function; you can specify multiple events by specifying this flag multiple times",
2020
+ "name": "type",
2021
+ "hasDynamicHelp": false,
2022
+ "multiple": true,
2023
+ "options": [
2024
+ "document-publish",
2025
+ "document-create",
2026
+ "document-delete",
2027
+ "document-update",
2028
+ "media-library-asset-create",
2029
+ "media-library-asset-delete",
2030
+ "media-library-asset-update",
2031
+ "scheduled-function",
2032
+ "sync-tag-invalidate"
2033
+ ],
2034
+ "type": "option"
2035
+ },
2036
+ "language": {
2037
+ "aliases": [
2038
+ "lang"
2039
+ ],
2040
+ "description": "Language of the new Function",
2041
+ "name": "language",
2042
+ "default": "ts",
2043
+ "hasDynamicHelp": false,
2044
+ "multiple": false,
2045
+ "options": [
2046
+ "ts",
2047
+ "js"
2048
+ ],
2049
+ "type": "option"
2050
+ },
2051
+ "javascript": {
2052
+ "aliases": [
2053
+ "js"
2054
+ ],
2055
+ "description": "Use JavaScript instead of TypeScript",
2115
2056
  "exclusive": [
2116
- "watch"
2057
+ "language"
2058
+ ],
2059
+ "name": "javascript",
2060
+ "allowNo": false,
2061
+ "type": "boolean"
2062
+ },
2063
+ "helpers": {
2064
+ "description": "Add helpers to the new Function",
2065
+ "name": "helpers",
2066
+ "allowNo": true,
2067
+ "type": "boolean"
2068
+ },
2069
+ "installer": {
2070
+ "description": "How to install the @sanity/functions helpers",
2071
+ "name": "installer",
2072
+ "hasDynamicHelp": false,
2073
+ "multiple": false,
2074
+ "options": [
2075
+ "skip",
2076
+ "npm",
2077
+ "pnpm",
2078
+ "yarn"
2117
2079
  ],
2118
- "name": "since",
2119
- "hasDynamicHelp": false,
2120
- "multiple": false,
2121
2080
  "type": "option"
2122
2081
  },
2123
- "before": {
2124
- "description": "Only show logs before this ISO 8601 timestamp",
2082
+ "install": {
2083
+ "char": "i",
2084
+ "description": "Shortcut for --fn-installer npm",
2125
2085
  "exclusive": [
2126
- "watch"
2086
+ "fn-installer"
2127
2087
  ],
2128
- "name": "before",
2129
- "hasDynamicHelp": false,
2130
- "multiple": false,
2131
- "type": "option"
2088
+ "name": "install",
2089
+ "allowNo": false,
2090
+ "type": "boolean"
2132
2091
  }
2133
2092
  },
2134
2093
  "hasDynamicHelp": false,
2135
2094
  "hiddenAliases": [],
2136
- "id": "blueprints:logs",
2095
+ "id": "functions:add",
2137
2096
  "pluginAlias": "@sanity/runtime-cli",
2138
2097
  "pluginName": "@sanity/runtime-cli",
2139
2098
  "pluginType": "core",
2140
2099
  "strict": true,
2141
- "summary": "Display logs for the current Blueprint's Stack deployment",
2100
+ "summary": "Add a Function to your Blueprint",
2142
2101
  "enableJsonFlag": true,
2143
2102
  "needs": [
2144
- "deployedStack"
2103
+ "blueprint"
2145
2104
  ],
2146
2105
  "isESM": true,
2147
2106
  "relativePath": [
2148
2107
  "dist",
2149
2108
  "commands",
2150
- "blueprints",
2151
- "logs.js"
2109
+ "functions",
2110
+ "add.js"
2152
2111
  ]
2153
2112
  },
2154
- "blueprints:mint-deploy-token": {
2113
+ "functions:build": {
2155
2114
  "aliases": [],
2156
- "args": {},
2157
- "description": "Mints a long-lived robot token with the role required to plan, deploy, and destroy Blueprints in this project or organization.\n\nBy default the command runs interactively and asks how you want to receive the token (clipboard, print, or exit). Use --print to emit only the raw token for shell pipelines, or --json for full API output.\n\nThe minted token is also visible in your Sanity Manage UI under Robots, where it can be revoked.",
2158
- "examples": [
2159
- "<%= config.bin %> <%= command.id %>",
2160
- "<%= config.bin %> <%= command.id %> --label \"ci-deploy\"",
2161
- "<%= config.bin %> <%= command.id %> --print",
2162
- "export SANITY_AUTH_TOKEN=$(<%= config.bin %> <%= command.id %> --print)",
2163
- "<%= config.bin %> <%= command.id %> --json",
2164
- "<%= config.bin %> <%= command.id %> --project-id <projectId>",
2165
- "<%= config.bin %> <%= command.id %> --organization-id <orgId>"
2166
- ],
2115
+ "args": {
2116
+ "name": {
2117
+ "description": "The name of the Sanity Function",
2118
+ "name": "name",
2119
+ "required": false
2120
+ }
2121
+ },
2167
2122
  "flags": {
2168
2123
  "json": {
2169
2124
  "description": "Format output as json",
@@ -2171,6 +2126,16 @@
2171
2126
  "allowNo": false,
2172
2127
  "type": "boolean"
2173
2128
  },
2129
+ "llms": {
2130
+ "aliases": [
2131
+ "skill"
2132
+ ],
2133
+ "description": "Show agent-oriented guidance for this command",
2134
+ "hidden": true,
2135
+ "name": "llms",
2136
+ "allowNo": false,
2137
+ "type": "boolean"
2138
+ },
2174
2139
  "path": {
2175
2140
  "aliases": [
2176
2141
  "blueprint-path"
@@ -2222,6 +2187,7 @@
2222
2187
  "exclusive": [
2223
2188
  "organization-id"
2224
2189
  ],
2190
+ "hidden": true,
2225
2191
  "name": "project-id",
2226
2192
  "hasDynamicHelp": false,
2227
2193
  "multiple": false,
@@ -2237,57 +2203,66 @@
2237
2203
  "exclusive": [
2238
2204
  "project-id"
2239
2205
  ],
2206
+ "hidden": true,
2240
2207
  "name": "organization-id",
2241
2208
  "hasDynamicHelp": false,
2242
2209
  "multiple": false,
2243
2210
  "type": "option"
2244
2211
  },
2245
- "label": {
2246
- "description": "Human-readable label for the robot. Defaults to a generated value.",
2247
- "name": "label",
2212
+ "fn-installer": {
2213
+ "aliases": [
2214
+ "function-installer",
2215
+ "installer"
2216
+ ],
2217
+ "description": "Which package manager to use when building Functions",
2218
+ "hidden": true,
2219
+ "name": "fn-installer",
2248
2220
  "hasDynamicHelp": false,
2249
2221
  "multiple": false,
2222
+ "options": [
2223
+ "npm",
2224
+ "pnpm",
2225
+ "yarn"
2226
+ ],
2250
2227
  "type": "option"
2251
2228
  },
2252
- "print": {
2253
- "char": "P",
2254
- "description": "Print only the raw token to stdout (suitable for shell substitution)",
2255
- "exclusive": [
2256
- "json"
2257
- ],
2258
- "name": "print",
2259
- "allowNo": false,
2260
- "type": "boolean"
2229
+ "out-dir": {
2230
+ "char": "o",
2231
+ "description": "Output directory for zip files",
2232
+ "name": "out-dir",
2233
+ "hasDynamicHelp": false,
2234
+ "multiple": false,
2235
+ "type": "option"
2261
2236
  }
2262
2237
  },
2263
2238
  "hasDynamicHelp": false,
2239
+ "hidden": true,
2264
2240
  "hiddenAliases": [],
2265
- "id": "blueprints:mint-deploy-token",
2241
+ "id": "functions:build",
2266
2242
  "pluginAlias": "@sanity/runtime-cli",
2267
2243
  "pluginName": "@sanity/runtime-cli",
2268
2244
  "pluginType": "core",
2269
2245
  "strict": true,
2270
- "summary": "Create a robot API token for deploying Blueprints from CI/CD",
2246
+ "summary": "Build Sanity Function(s) to zip archives",
2271
2247
  "enableJsonFlag": true,
2272
2248
  "needs": [
2273
- "scope"
2249
+ "blueprint"
2274
2250
  ],
2275
2251
  "isESM": true,
2276
2252
  "relativePath": [
2277
2253
  "dist",
2278
2254
  "commands",
2279
- "blueprints",
2280
- "mint-deploy-token.js"
2255
+ "functions",
2256
+ "build.js"
2281
2257
  ]
2282
2258
  },
2283
- "blueprints:plan": {
2259
+ "functions:dev": {
2284
2260
  "aliases": [],
2285
2261
  "args": {},
2286
- "description": "Use this command to preview what changes will be applied to your remote Stack before deploying. This is a safe, read-only operation—no resources are created, modified, or deleted.\n\nRun 'blueprints plan' after making local changes to your Blueprint manifest to verify the expected diff. When ready, run 'blueprints deploy' to apply changes.",
2262
+ "description": "Runs a local, web-based development server to test your functions before deploying.\n\nOpen the emulator in your browser to interactively test your functions with the payload editor.\n\nOptionally, set the host and port with the --host and --port flags. Function timeout can be configured with the --timeout flag.\n\nTo invoke a function with the CLI, use 'functions test'.",
2287
2263
  "examples": [
2288
- "<%= config.bin %> <%= command.id %>",
2289
- "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
2290
- "<%= config.bin %> <%= command.id %> --organization-id <orgId> --stack <name-or-id>"
2264
+ "<%= config.bin %> <%= command.id %> --host 127.0.0.1 --port 8974",
2265
+ "<%= config.bin %> <%= command.id %> --timeout 60"
2291
2266
  ],
2292
2267
  "flags": {
2293
2268
  "json": {
@@ -2296,6 +2271,16 @@
2296
2271
  "allowNo": false,
2297
2272
  "type": "boolean"
2298
2273
  },
2274
+ "llms": {
2275
+ "aliases": [
2276
+ "skill"
2277
+ ],
2278
+ "description": "Show agent-oriented guidance for this command",
2279
+ "hidden": true,
2280
+ "name": "llms",
2281
+ "allowNo": false,
2282
+ "type": "boolean"
2283
+ },
2299
2284
  "path": {
2300
2285
  "aliases": [
2301
2286
  "blueprint-path"
@@ -2332,6 +2317,7 @@
2332
2317
  },
2333
2318
  "stack": {
2334
2319
  "description": "Stack name or ID to use instead of the locally configured Stack",
2320
+ "hidden": true,
2335
2321
  "name": "stack",
2336
2322
  "hasDynamicHelp": false,
2337
2323
  "multiple": false,
@@ -2346,6 +2332,7 @@
2346
2332
  "exclusive": [
2347
2333
  "organization-id"
2348
2334
  ],
2335
+ "hidden": true,
2349
2336
  "name": "project-id",
2350
2337
  "hasDynamicHelp": false,
2351
2338
  "multiple": false,
@@ -2361,42 +2348,75 @@
2361
2348
  "exclusive": [
2362
2349
  "project-id"
2363
2350
  ],
2351
+ "hidden": true,
2364
2352
  "name": "organization-id",
2365
2353
  "hasDynamicHelp": false,
2366
2354
  "multiple": false,
2367
2355
  "type": "option"
2356
+ },
2357
+ "host": {
2358
+ "char": "h",
2359
+ "description": "The local network interface at which to listen. [default: \"localhost\"]",
2360
+ "name": "host",
2361
+ "required": false,
2362
+ "hasDynamicHelp": false,
2363
+ "multiple": false,
2364
+ "type": "option"
2365
+ },
2366
+ "port": {
2367
+ "char": "p",
2368
+ "description": "TCP port to start emulator on. [default: 8080]",
2369
+ "name": "port",
2370
+ "required": false,
2371
+ "hasDynamicHelp": false,
2372
+ "multiple": false,
2373
+ "type": "option"
2374
+ },
2375
+ "timeout": {
2376
+ "char": "t",
2377
+ "description": "Maximum execution time for all functions, in seconds. Takes precedence over function-specific `timeout`",
2378
+ "name": "timeout",
2379
+ "required": false,
2380
+ "hasDynamicHelp": false,
2381
+ "multiple": false,
2382
+ "type": "option"
2368
2383
  }
2369
2384
  },
2370
2385
  "hasDynamicHelp": false,
2371
2386
  "hiddenAliases": [],
2372
- "id": "blueprints:plan",
2387
+ "id": "functions:dev",
2373
2388
  "pluginAlias": "@sanity/runtime-cli",
2374
2389
  "pluginName": "@sanity/runtime-cli",
2375
2390
  "pluginType": "core",
2376
2391
  "strict": true,
2377
- "summary": "Preview changes that will be applied to the remote Stack",
2392
+ "summary": "Start the Sanity Function emulator",
2378
2393
  "enableJsonFlag": true,
2379
2394
  "needs": [
2380
- "token",
2381
2395
  "blueprint"
2382
2396
  ],
2383
2397
  "isESM": true,
2384
2398
  "relativePath": [
2385
2399
  "dist",
2386
2400
  "commands",
2387
- "blueprints",
2388
- "plan.js"
2401
+ "functions",
2402
+ "dev.js"
2389
2403
  ]
2390
2404
  },
2391
- "blueprints:promote": {
2405
+ "functions:logs": {
2392
2406
  "aliases": [],
2393
- "args": {},
2394
- "description": "Promotes a deployed Stack to organization scope, enabling management of org-level resources. Promotion cannot be reversed.\n\nYour local Blueprint configuration will be updated to reflect the new scope.",
2407
+ "args": {
2408
+ "name": {
2409
+ "description": "The name of the Sanity Function",
2410
+ "name": "name",
2411
+ "required": false
2412
+ }
2413
+ },
2414
+ "description": "Fetches execution logs from a deployed function, useful for debugging production issues or monitoring activity.\n\nUse --watch (-w) to stream logs in real-time. Use --delete to clear all logs for a function (requires confirmation unless --force is specified).",
2395
2415
  "examples": [
2396
- "<%= config.bin %> <%= command.id %>",
2397
- "<%= config.bin %> <%= command.id %> --stack <name-or-id>",
2398
- "<%= config.bin %> <%= command.id %> --project-id <projectId> --stack <name-or-id>",
2399
- "<%= config.bin %> <%= command.id %> --new-stack-name <new-name>"
2416
+ "<%= config.bin %> <%= command.id %> <name>",
2417
+ "<%= config.bin %> <%= command.id %> <name> --json",
2418
+ "<%= config.bin %> <%= command.id %> <name> --limit 100",
2419
+ "<%= config.bin %> <%= command.id %> <name> --delete"
2400
2420
  ],
2401
2421
  "flags": {
2402
2422
  "json": {
@@ -2405,6 +2425,16 @@
2405
2425
  "allowNo": false,
2406
2426
  "type": "boolean"
2407
2427
  },
2428
+ "llms": {
2429
+ "aliases": [
2430
+ "skill"
2431
+ ],
2432
+ "description": "Show agent-oriented guidance for this command",
2433
+ "hidden": true,
2434
+ "name": "llms",
2435
+ "allowNo": false,
2436
+ "type": "boolean"
2437
+ },
2408
2438
  "path": {
2409
2439
  "aliases": [
2410
2440
  "blueprint-path"
@@ -2440,10 +2470,7 @@
2440
2470
  "type": "boolean"
2441
2471
  },
2442
2472
  "stack": {
2443
- "aliases": [
2444
- "id"
2445
- ],
2446
- "description": "Stack name or ID to promote",
2473
+ "description": "Stack name or ID to use instead of the locally configured Stack",
2447
2474
  "name": "stack",
2448
2475
  "hasDynamicHelp": false,
2449
2476
  "multiple": false,
@@ -2458,6 +2485,7 @@
2458
2485
  "exclusive": [
2459
2486
  "organization-id"
2460
2487
  ],
2488
+ "hidden": true,
2461
2489
  "name": "project-id",
2462
2490
  "hasDynamicHelp": false,
2463
2491
  "multiple": false,
@@ -2479,28 +2507,66 @@
2479
2507
  "multiple": false,
2480
2508
  "type": "option"
2481
2509
  },
2510
+ "limit": {
2511
+ "char": "l",
2512
+ "description": "Total number of log entries to retrieve",
2513
+ "name": "limit",
2514
+ "required": false,
2515
+ "default": 50,
2516
+ "hasDynamicHelp": false,
2517
+ "multiple": false,
2518
+ "type": "option"
2519
+ },
2520
+ "utc": {
2521
+ "char": "u",
2522
+ "description": "Show dates in UTC time zone",
2523
+ "name": "utc",
2524
+ "required": false,
2525
+ "allowNo": false,
2526
+ "type": "boolean"
2527
+ },
2528
+ "delete": {
2529
+ "char": "d",
2530
+ "description": "Delete all logs for the function",
2531
+ "exclusive": [
2532
+ "limit",
2533
+ "json"
2534
+ ],
2535
+ "name": "delete",
2536
+ "required": false,
2537
+ "allowNo": false,
2538
+ "type": "boolean"
2539
+ },
2482
2540
  "force": {
2483
- "description": "Skip confirmation prompt",
2541
+ "char": "f",
2542
+ "dependsOn": [
2543
+ "delete"
2544
+ ],
2545
+ "description": "Skip confirmation for deleting logs",
2484
2546
  "name": "force",
2547
+ "required": false,
2485
2548
  "allowNo": false,
2486
2549
  "type": "boolean"
2487
2550
  },
2488
- "new-stack-name": {
2489
- "description": "Set a new name for the Stack while promoting",
2490
- "name": "new-stack-name",
2491
- "hasDynamicHelp": false,
2492
- "multiple": false,
2493
- "type": "option"
2551
+ "watch": {
2552
+ "aliases": [
2553
+ "follow"
2554
+ ],
2555
+ "char": "w",
2556
+ "description": "Watch for new logs (streaming mode)",
2557
+ "name": "watch",
2558
+ "allowNo": false,
2559
+ "type": "boolean"
2494
2560
  }
2495
2561
  },
2496
2562
  "hasDynamicHelp": false,
2497
2563
  "hiddenAliases": [],
2498
- "id": "blueprints:promote",
2564
+ "id": "functions:logs",
2499
2565
  "pluginAlias": "@sanity/runtime-cli",
2500
2566
  "pluginName": "@sanity/runtime-cli",
2501
2567
  "pluginType": "core",
2502
2568
  "strict": true,
2503
- "summary": "Promote a Stack from project scope to organization scope",
2569
+ "summary": "Retrieve or delete logs for a Sanity Function",
2504
2570
  "enableJsonFlag": true,
2505
2571
  "needs": [
2506
2572
  "deployedStack",
@@ -2510,19 +2576,25 @@
2510
2576
  "relativePath": [
2511
2577
  "dist",
2512
2578
  "commands",
2513
- "blueprints",
2514
- "promote.js"
2579
+ "functions",
2580
+ "logs.js"
2515
2581
  ]
2516
2582
  },
2517
- "blueprints:stacks": {
2583
+ "functions:test": {
2518
2584
  "aliases": [],
2519
- "args": {},
2520
- "description": "Shows all Stacks associated with a project or organization. By default, lists Stacks scoped to the local Blueprint.\n\nUse this to discover existing Stacks you can scope a local Blueprint to (using 'blueprints config --edit'), or to audit what's deployed across your project.\n\nUse --include-projects with --organization-id to also list Stacks from all projects within the organization.",
2585
+ "args": {
2586
+ "name": {
2587
+ "description": "The name of the Sanity Function",
2588
+ "name": "name",
2589
+ "required": false
2590
+ }
2591
+ },
2592
+ "description": "Executes a function locally with the provided payload, simulating how it would run when deployed. Use this to test your function logic before deploying.\n\nProvide test data via --data (inline JSON), --file (JSON file), or --document-id (fetch from Sanity). For update events, use the before/after flag pairs to simulate document changes.",
2521
2593
  "examples": [
2522
- "<%= config.bin %> <%= command.id %>",
2523
- "<%= config.bin %> <%= command.id %> --project-id <projectId>",
2524
- "<%= config.bin %> <%= command.id %> --organization-id <organizationId>",
2525
- "<%= config.bin %> <%= command.id %> --organization-id <organizationId> --include-projects"
2594
+ "<%= config.bin %> <%= command.id %> <name> --data '{ \"id\": 1 }'",
2595
+ "<%= config.bin %> <%= command.id %> <name> --file 'payload.json'",
2596
+ "<%= config.bin %> <%= command.id %> <name> --data '{ \"id\": 1 }' --timeout 60",
2597
+ "<%= config.bin %> <%= command.id %> <name> --event update --data-before '{ \"title\": \"before\" }' --data-after '{ \"title\": \"after\" }'"
2526
2598
  ],
2527
2599
  "flags": {
2528
2600
  "json": {
@@ -2531,6 +2603,16 @@
2531
2603
  "allowNo": false,
2532
2604
  "type": "boolean"
2533
2605
  },
2606
+ "llms": {
2607
+ "aliases": [
2608
+ "skill"
2609
+ ],
2610
+ "description": "Show agent-oriented guidance for this command",
2611
+ "hidden": true,
2612
+ "name": "llms",
2613
+ "allowNo": false,
2614
+ "type": "boolean"
2615
+ },
2534
2616
  "path": {
2535
2617
  "aliases": [
2536
2618
  "blueprint-path"
@@ -2580,8 +2662,7 @@
2580
2662
  ],
2581
2663
  "description": "Sanity project ID used to scope Blueprint and Stack",
2582
2664
  "exclusive": [
2583
- "organization-id",
2584
- "include-projects"
2665
+ "organization-id"
2585
2666
  ],
2586
2667
  "name": "project-id",
2587
2668
  "hasDynamicHelp": false,
@@ -2603,34 +2684,230 @@
2603
2684
  "multiple": false,
2604
2685
  "type": "option"
2605
2686
  },
2606
- "include-projects": {
2607
- "dependsOn": [
2608
- "organization-id"
2687
+ "data": {
2688
+ "char": "d",
2689
+ "description": "Data to send to the function",
2690
+ "exclusive": [
2691
+ "file",
2692
+ "document-id"
2609
2693
  ],
2610
- "description": "Include Stacks from all projects within the organization. Requires --organization-id.",
2611
- "name": "include-projects",
2694
+ "name": "data",
2695
+ "required": false,
2696
+ "hasDynamicHelp": false,
2697
+ "multiple": false,
2698
+ "type": "option"
2699
+ },
2700
+ "data-before": {
2701
+ "description": "Original document",
2702
+ "exclusive": [
2703
+ "data",
2704
+ "file",
2705
+ "document-id",
2706
+ "file-before",
2707
+ "file-after",
2708
+ "document-id-before",
2709
+ "document-id-after"
2710
+ ],
2711
+ "name": "data-before",
2712
+ "required": false,
2713
+ "hasDynamicHelp": false,
2714
+ "multiple": false,
2715
+ "type": "option"
2716
+ },
2717
+ "data-after": {
2718
+ "description": "Current document",
2719
+ "exclusive": [
2720
+ "data",
2721
+ "file",
2722
+ "document-id",
2723
+ "file-before",
2724
+ "file-after",
2725
+ "document-id-before",
2726
+ "document-id-after"
2727
+ ],
2728
+ "name": "data-after",
2729
+ "required": false,
2730
+ "hasDynamicHelp": false,
2731
+ "multiple": false,
2732
+ "type": "option"
2733
+ },
2734
+ "event": {
2735
+ "char": "e",
2736
+ "description": "Type of event (create, update, delete)",
2737
+ "name": "event",
2738
+ "required": false,
2739
+ "hasDynamicHelp": false,
2740
+ "multiple": false,
2741
+ "options": [
2742
+ "create",
2743
+ "update",
2744
+ "delete"
2745
+ ],
2746
+ "type": "option"
2747
+ },
2748
+ "file": {
2749
+ "char": "f",
2750
+ "description": "Read data from file and send to the function",
2751
+ "exclusive": [
2752
+ "data",
2753
+ "document-id"
2754
+ ],
2755
+ "name": "file",
2756
+ "required": false,
2757
+ "hasDynamicHelp": false,
2758
+ "multiple": false,
2759
+ "type": "option"
2760
+ },
2761
+ "file-before": {
2762
+ "description": "Original document",
2763
+ "exclusive": [
2764
+ "data",
2765
+ "file",
2766
+ "document-id",
2767
+ "data-before",
2768
+ "data-after",
2769
+ "document-id-before",
2770
+ "document-id-after"
2771
+ ],
2772
+ "name": "file-before",
2773
+ "required": false,
2774
+ "hasDynamicHelp": false,
2775
+ "multiple": false,
2776
+ "type": "option"
2777
+ },
2778
+ "file-after": {
2779
+ "description": "Current document",
2780
+ "exclusive": [
2781
+ "data",
2782
+ "file",
2783
+ "document-id",
2784
+ "data-before",
2785
+ "data-after",
2786
+ "document-id-before",
2787
+ "document-id-after"
2788
+ ],
2789
+ "name": "file-after",
2790
+ "required": false,
2791
+ "hasDynamicHelp": false,
2792
+ "multiple": false,
2793
+ "type": "option"
2794
+ },
2795
+ "timeout": {
2796
+ "char": "t",
2797
+ "description": "Execution timeout value in seconds",
2798
+ "name": "timeout",
2799
+ "required": false,
2800
+ "hasDynamicHelp": false,
2801
+ "multiple": false,
2802
+ "type": "option"
2803
+ },
2804
+ "api": {
2805
+ "char": "a",
2806
+ "description": "Sanity API Version to use",
2807
+ "name": "api",
2808
+ "required": false,
2809
+ "hasDynamicHelp": false,
2810
+ "multiple": false,
2811
+ "type": "option"
2812
+ },
2813
+ "dataset": {
2814
+ "description": "The Sanity dataset to use",
2815
+ "name": "dataset",
2816
+ "required": false,
2817
+ "hasDynamicHelp": false,
2818
+ "multiple": false,
2819
+ "type": "option"
2820
+ },
2821
+ "document-id": {
2822
+ "aliases": [
2823
+ "doc",
2824
+ "documentId"
2825
+ ],
2826
+ "description": "Document to fetch and send to function",
2827
+ "exclusive": [
2828
+ "data",
2829
+ "file"
2830
+ ],
2831
+ "name": "document-id",
2832
+ "required": false,
2833
+ "hasDynamicHelp": false,
2834
+ "multiple": false,
2835
+ "type": "option"
2836
+ },
2837
+ "document-id-before": {
2838
+ "description": "Original document",
2839
+ "exclusive": [
2840
+ "data",
2841
+ "file",
2842
+ "document-id",
2843
+ "data-before",
2844
+ "data-after",
2845
+ "file-before",
2846
+ "file-after"
2847
+ ],
2848
+ "name": "document-id-before",
2849
+ "required": false,
2850
+ "hasDynamicHelp": false,
2851
+ "multiple": false,
2852
+ "type": "option"
2853
+ },
2854
+ "document-id-after": {
2855
+ "description": "Current document",
2856
+ "exclusive": [
2857
+ "data",
2858
+ "file",
2859
+ "document-id",
2860
+ "data-before",
2861
+ "data-after",
2862
+ "file-before",
2863
+ "file-after"
2864
+ ],
2865
+ "name": "document-id-after",
2866
+ "required": false,
2867
+ "hasDynamicHelp": false,
2868
+ "multiple": false,
2869
+ "type": "option"
2870
+ },
2871
+ "with-user-token": {
2872
+ "description": "Prime access token from CLI config",
2873
+ "name": "with-user-token",
2612
2874
  "allowNo": false,
2613
2875
  "type": "boolean"
2876
+ },
2877
+ "media-library-id": {
2878
+ "aliases": [
2879
+ "media"
2880
+ ],
2881
+ "description": "Sanity Media Library ID to use",
2882
+ "exclusive": [
2883
+ "project-id",
2884
+ "dataset"
2885
+ ],
2886
+ "name": "media-library-id",
2887
+ "required": false,
2888
+ "hasDynamicHelp": false,
2889
+ "multiple": false,
2890
+ "type": "option"
2614
2891
  }
2615
2892
  },
2616
2893
  "hasDynamicHelp": false,
2617
2894
  "hiddenAliases": [],
2618
- "id": "blueprints:stacks",
2895
+ "id": "functions:test",
2619
2896
  "pluginAlias": "@sanity/runtime-cli",
2620
2897
  "pluginName": "@sanity/runtime-cli",
2621
2898
  "pluginType": "core",
2622
2899
  "strict": true,
2623
- "summary": "List remote Stack deployments for your project or organization",
2900
+ "summary": "Invoke a local Sanity Function",
2624
2901
  "enableJsonFlag": true,
2625
2902
  "needs": [
2626
- "scope"
2903
+ "blueprint"
2627
2904
  ],
2628
2905
  "isESM": true,
2629
2906
  "relativePath": [
2630
2907
  "dist",
2631
2908
  "commands",
2632
- "blueprints",
2633
- "stacks.js"
2909
+ "functions",
2910
+ "test.js"
2634
2911
  ]
2635
2912
  },
2636
2913
  "functions:env:add": {
@@ -2654,7 +2931,8 @@
2654
2931
  },
2655
2932
  "description": "Sets an environment variable in a deployed Sanity Function. If the variable already exists, its value is updated.\n\nEnvironment variables are useful for API keys, configuration values, and other secrets that shouldn't be hardcoded. Changes take effect on the next function invocation.",
2656
2933
  "examples": [
2657
- "<%= config.bin %> <%= command.id %> MyFunction API_URL https://api.example.com/"
2934
+ "<%= config.bin %> <%= command.id %> MyFunction API_URL https://api.example.com/",
2935
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id> MyFunction API_URL https://api.example.com/"
2658
2936
  ],
2659
2937
  "flags": {
2660
2938
  "json": {
@@ -2663,6 +2941,16 @@
2663
2941
  "allowNo": false,
2664
2942
  "type": "boolean"
2665
2943
  },
2944
+ "llms": {
2945
+ "aliases": [
2946
+ "skill"
2947
+ ],
2948
+ "description": "Show agent-oriented guidance for this command",
2949
+ "hidden": true,
2950
+ "name": "llms",
2951
+ "allowNo": false,
2952
+ "type": "boolean"
2953
+ },
2666
2954
  "path": {
2667
2955
  "aliases": [
2668
2956
  "blueprint-path"
@@ -2699,7 +2987,6 @@
2699
2987
  },
2700
2988
  "stack": {
2701
2989
  "description": "Stack name or ID to use instead of the locally configured Stack",
2702
- "hidden": true,
2703
2990
  "name": "stack",
2704
2991
  "hasDynamicHelp": false,
2705
2992
  "multiple": false,
@@ -2770,7 +3057,8 @@
2770
3057
  },
2771
3058
  "description": "Displays all environment variables (keys only) configured in a deployed Sanity Function.\n\nUse 'functions env add' to set variables or 'functions env remove' to delete them.",
2772
3059
  "examples": [
2773
- "<%= config.bin %> <%= command.id %> MyFunction"
3060
+ "<%= config.bin %> <%= command.id %> MyFunction",
3061
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id> MyFunction"
2774
3062
  ],
2775
3063
  "flags": {
2776
3064
  "json": {
@@ -2779,6 +3067,16 @@
2779
3067
  "allowNo": false,
2780
3068
  "type": "boolean"
2781
3069
  },
3070
+ "llms": {
3071
+ "aliases": [
3072
+ "skill"
3073
+ ],
3074
+ "description": "Show agent-oriented guidance for this command",
3075
+ "hidden": true,
3076
+ "name": "llms",
3077
+ "allowNo": false,
3078
+ "type": "boolean"
3079
+ },
2782
3080
  "path": {
2783
3081
  "aliases": [
2784
3082
  "blueprint-path"
@@ -2815,7 +3113,6 @@
2815
3113
  },
2816
3114
  "stack": {
2817
3115
  "description": "Stack name or ID to use instead of the locally configured Stack",
2818
- "hidden": true,
2819
3116
  "name": "stack",
2820
3117
  "hasDynamicHelp": false,
2821
3118
  "multiple": false,
@@ -2891,7 +3188,8 @@
2891
3188
  },
2892
3189
  "description": "Deletes an environment variable from a deployed Sanity Function. The change takes effect on the next function invocation.\n\nUse 'functions env list' to see current variables before removing.",
2893
3190
  "examples": [
2894
- "<%= config.bin %> <%= command.id %> MyFunction API_URL"
3191
+ "<%= config.bin %> <%= command.id %> MyFunction API_URL",
3192
+ "<%= config.bin %> <%= command.id %> --stack <name-or-id> MyFunction API_URL"
2895
3193
  ],
2896
3194
  "flags": {
2897
3195
  "json": {
@@ -2900,6 +3198,16 @@
2900
3198
  "allowNo": false,
2901
3199
  "type": "boolean"
2902
3200
  },
3201
+ "llms": {
3202
+ "aliases": [
3203
+ "skill"
3204
+ ],
3205
+ "description": "Show agent-oriented guidance for this command",
3206
+ "hidden": true,
3207
+ "name": "llms",
3208
+ "allowNo": false,
3209
+ "type": "boolean"
3210
+ },
2903
3211
  "path": {
2904
3212
  "aliases": [
2905
3213
  "blueprint-path"
@@ -2936,7 +3244,6 @@
2936
3244
  },
2937
3245
  "stack": {
2938
3246
  "description": "Stack name or ID to use instead of the locally configured Stack",
2939
- "hidden": true,
2940
3247
  "name": "stack",
2941
3248
  "hasDynamicHelp": false,
2942
3249
  "multiple": false,
@@ -2997,5 +3304,5 @@
2997
3304
  ]
2998
3305
  }
2999
3306
  },
3000
- "version": "17.1.0"
3307
+ "version": "17.2.0-blueprinit.g3a96975"
3001
3308
  }