@sanity/runtime-cli 4.5.0 → 5.0.0

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 (55) hide show
  1. package/README.md +61 -84
  2. package/dist/actions/blueprints/blueprint.d.ts +6 -12
  3. package/dist/actions/blueprints/blueprint.js +55 -45
  4. package/dist/actions/blueprints/index.d.ts +33 -0
  5. package/dist/actions/blueprints/index.js +32 -0
  6. package/dist/actions/blueprints/projects.d.ts +9 -0
  7. package/dist/actions/blueprints/projects.js +12 -0
  8. package/dist/actions/blueprints/resources.d.ts +1 -0
  9. package/dist/actions/blueprints/resources.js +24 -11
  10. package/dist/actions/blueprints/stacks.d.ts +0 -12
  11. package/dist/actions/blueprints/stacks.js +1 -30
  12. package/dist/baseCommands.d.ts +24 -0
  13. package/dist/baseCommands.js +69 -0
  14. package/dist/commands/blueprints/add.d.ts +7 -3
  15. package/dist/commands/blueprints/add.js +51 -14
  16. package/dist/commands/blueprints/config.d.ts +9 -2
  17. package/dist/commands/blueprints/config.js +68 -18
  18. package/dist/commands/blueprints/deploy.d.ts +2 -2
  19. package/dist/commands/blueprints/deploy.js +18 -33
  20. package/dist/commands/blueprints/destroy.d.ts +4 -3
  21. package/dist/commands/blueprints/destroy.js +32 -35
  22. package/dist/commands/blueprints/info.d.ts +2 -2
  23. package/dist/commands/blueprints/info.js +16 -36
  24. package/dist/commands/blueprints/init.d.ts +15 -6
  25. package/dist/commands/blueprints/init.js +99 -47
  26. package/dist/commands/blueprints/logs.d.ts +2 -2
  27. package/dist/commands/blueprints/logs.js +18 -32
  28. package/dist/commands/blueprints/plan.d.ts +2 -2
  29. package/dist/commands/blueprints/plan.js +10 -16
  30. package/dist/commands/blueprints/stacks.d.ts +3 -2
  31. package/dist/commands/blueprints/stacks.js +10 -29
  32. package/dist/commands/functions/env/add.d.ts +2 -2
  33. package/dist/commands/functions/env/add.js +6 -17
  34. package/dist/commands/functions/env/list.d.ts +2 -2
  35. package/dist/commands/functions/env/list.js +10 -17
  36. package/dist/commands/functions/env/remove.d.ts +2 -2
  37. package/dist/commands/functions/env/remove.js +6 -17
  38. package/dist/commands/functions/invoke.d.ts +2 -2
  39. package/dist/commands/functions/invoke.js +7 -14
  40. package/dist/commands/functions/logs.d.ts +3 -7
  41. package/dist/commands/functions/logs.js +21 -37
  42. package/dist/commands/functions/test.d.ts +3 -3
  43. package/dist/commands/functions/test.js +10 -8
  44. package/dist/server/app.js +3 -3
  45. package/dist/server/static/vendor/vendor.bundle.d.ts +2 -2
  46. package/dist/utils/display/blueprints-formatting.js +2 -2
  47. package/dist/utils/display/colors.js +2 -0
  48. package/dist/utils/display/errors.d.ts +4 -0
  49. package/dist/utils/display/errors.js +27 -0
  50. package/dist/utils/display/index.d.ts +1 -0
  51. package/dist/utils/display/index.js +1 -0
  52. package/dist/utils/types.d.ts +15 -3
  53. package/dist/utils/types.js +9 -3
  54. package/oclif.manifest.json +93 -45
  55. package/package.json +2 -1
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import * as http from 'node:http';
3
3
  import { default as mime } from 'mime-types';
4
- import { readBlueprintOnDisk } from '../actions/blueprints/blueprint.js';
4
+ import { readLocalBlueprint } from '../actions/blueprints/blueprint.js';
5
5
  import config from '../config.js';
6
6
  import { findFunctionByName } from '../utils/find-function.js';
7
7
  import invoke from '../utils/invoke-local.js';
@@ -13,7 +13,7 @@ const app = (port) => {
13
13
  switch (true) {
14
14
  case req.url === '/blueprint': {
15
15
  try {
16
- const { parsedBlueprint } = await readBlueprintOnDisk({ getStack: false });
16
+ const { parsedBlueprint } = await readLocalBlueprint();
17
17
  res.setHeader('Content-Type', 'application/json');
18
18
  res.writeHead(200);
19
19
  res.end(JSON.stringify(parsedBlueprint)); // Use parsedBlueprint directly
@@ -34,7 +34,7 @@ const app = (port) => {
34
34
  const { data, func: functionName } = parseInvokeRequest(Buffer.concat(body));
35
35
  const { context, event } = data;
36
36
  const start = performance.now();
37
- const { parsedBlueprint } = await readBlueprintOnDisk({ getStack: false });
37
+ const { parsedBlueprint } = await readLocalBlueprint();
38
38
  const resource = findFunctionByName(parsedBlueprint, functionName);
39
39
  const readBlueprintTime = performance.now() - start;
40
40
  const response = await invoke(resource, event, context);
@@ -1018,9 +1018,9 @@ declare class ViewState {
1018
1018
  viewport: Viewport | undefined;
1019
1019
  lineGaps: any[];
1020
1020
  lineGapDeco: any;
1021
- updateForViewport(): 2 | 0;
1021
+ updateForViewport(): 0 | 2;
1022
1022
  viewports: (Viewport | undefined)[] | undefined;
1023
- updateScaler(): 2 | 0;
1023
+ updateScaler(): 0 | 2;
1024
1024
  updateViewportLines(): void;
1025
1025
  viewportLines: any[] | undefined;
1026
1026
  update(update: any, scrollTarget?: null): void;
@@ -6,10 +6,10 @@ export function formatTitle(title, name) {
6
6
  }
7
7
  export function formatResourceTree(resources) {
8
8
  if (!resources || resources.length === 0) {
9
- return ' Zero resources in this stack';
9
+ return ' Zero deployed resources';
10
10
  }
11
11
  const output = [];
12
- output.push(`${blue('Stack Resources')} [${resources.length}]`);
12
+ output.push(`${blue('Blueprint Resources')} [${resources.length}]`);
13
13
  const functionResources = resources.filter((r) => r.type?.startsWith('sanity.function.'));
14
14
  const otherResources = resources.filter((r) => !r.type?.startsWith('sanity.function.'));
15
15
  const hasOtherResources = otherResources.length > 0;
@@ -1,4 +1,6 @@
1
1
  import chalk from 'chalk';
2
+ // TODO: remove simple exports and use chalk directly
3
+ // move compound styling like niceId to formatters
2
4
  export function bold(str) {
3
5
  return chalk.bold(str);
4
6
  }
@@ -0,0 +1,4 @@
1
+ import type { BlueprintIssue } from '../../actions/blueprints/index.js';
2
+ import type { BlueprintParserError } from '../types.js';
3
+ export declare function presentBlueprintIssues(issues: BlueprintIssue[]): string;
4
+ export declare function presentBlueprintParserErrors(errors: BlueprintParserError[]): string;
@@ -0,0 +1,27 @@
1
+ export function presentBlueprintIssues(issues) {
2
+ const report = [];
3
+ for (const issue of issues) {
4
+ switch (issue.code) {
5
+ case 'PARSE_ERROR':
6
+ report.push(issue.message);
7
+ if (issue.errors)
8
+ report.push(presentBlueprintParserErrors(issue.errors));
9
+ break;
10
+ case 'NO_STACK_ID':
11
+ report.push('Existing deployment not found.');
12
+ break;
13
+ case 'NO_PROJECT_ID':
14
+ report.push('Project ID not found.');
15
+ break;
16
+ case 'NO_STACK':
17
+ report.push('Existing deployment not found.');
18
+ break;
19
+ default:
20
+ report.push(issue.message);
21
+ }
22
+ }
23
+ return report.join('\n');
24
+ }
25
+ export function presentBlueprintParserErrors(errors) {
26
+ return errors.map((e) => e.message).join('\n');
27
+ }
@@ -2,3 +2,4 @@ export * as blueprintsFormatting from './blueprints-formatting.js';
2
2
  export * as colors from './colors.js';
3
3
  export * as dates from './dates.js';
4
4
  export * as logsFormatting from './logs-formatting.js';
5
+ export * as errors from './errors.js';
@@ -2,3 +2,4 @@ export * as blueprintsFormatting from './blueprints-formatting.js';
2
2
  export * as colors from './colors.js';
3
3
  export * as dates from './dates.js';
4
4
  export * as logsFormatting from './logs-formatting.js';
5
+ export * as errors from './errors.js';
@@ -55,6 +55,11 @@ export interface LocalFunctionResource extends LocalResource {
55
55
  memory?: number;
56
56
  timeout?: number;
57
57
  env?: Record<string, string>;
58
+ event?: {
59
+ on: Array<string>;
60
+ filter?: string;
61
+ projection?: string;
62
+ };
58
63
  }
59
64
  export interface Stack {
60
65
  id: string;
@@ -96,6 +101,7 @@ export interface StackPayload {
96
101
  name: string;
97
102
  projectId: string;
98
103
  document: LocalBlueprint;
104
+ useProjectBasedId?: boolean;
99
105
  }
100
106
  /** @internal */
101
107
  export interface InvokePayloadOptions {
@@ -135,10 +141,16 @@ export interface FunctionLog {
135
141
  }
136
142
  /** @internal */
137
143
  export declare enum BlueprintParserErrorType {
138
- MissingProject = "missing_project",
139
- MissingStack = "missing_stack",
140
144
  InvalidProperty = "invalid_property",
141
- InvalidStack = "invalid_stack"
145
+ InvalidVersion = "invalid_version",
146
+ InvalidType = "invalid_type",
147
+ MissingRequiredProperty = "missing_required_property",
148
+ DuplicateName = "duplicate_name",
149
+ InvalidFormat = "invalid_format",
150
+ InvalidValue = "invalid_value",
151
+ JsonValidationError = "json_validation_error",
152
+ InvalidInput = "invalid_input",
153
+ MissingParameter = "missing_parameter"
142
154
  }
143
155
  /** @internal */
144
156
  export interface BlueprintParserError {
@@ -4,8 +4,14 @@ export function isLocalFunctionResource(r) {
4
4
  /** @internal */
5
5
  export var BlueprintParserErrorType;
6
6
  (function (BlueprintParserErrorType) {
7
- BlueprintParserErrorType["MissingProject"] = "missing_project";
8
- BlueprintParserErrorType["MissingStack"] = "missing_stack";
9
7
  BlueprintParserErrorType["InvalidProperty"] = "invalid_property";
10
- BlueprintParserErrorType["InvalidStack"] = "invalid_stack";
8
+ BlueprintParserErrorType["InvalidVersion"] = "invalid_version";
9
+ BlueprintParserErrorType["InvalidType"] = "invalid_type";
10
+ BlueprintParserErrorType["MissingRequiredProperty"] = "missing_required_property";
11
+ BlueprintParserErrorType["DuplicateName"] = "duplicate_name";
12
+ BlueprintParserErrorType["InvalidFormat"] = "invalid_format";
13
+ BlueprintParserErrorType["InvalidValue"] = "invalid_value";
14
+ BlueprintParserErrorType["JsonValidationError"] = "json_validation_error";
15
+ BlueprintParserErrorType["InvalidInput"] = "invalid_input";
16
+ BlueprintParserErrorType["MissingParameter"] = "missing_parameter";
11
17
  })(BlueprintParserErrorType || (BlueprintParserErrorType = {}));
@@ -12,11 +12,12 @@
12
12
  "required": true
13
13
  }
14
14
  },
15
- "description": "Add a resource to a Blueprint",
15
+ "description": "Add a (function) resource to a Blueprint",
16
16
  "examples": [
17
17
  "<%= config.bin %> <%= command.id %> function",
18
18
  "<%= config.bin %> <%= command.id %> function --name my-function",
19
- "<%= config.bin %> <%= command.id %> function --name my-function --function-type document-publish"
19
+ "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-publish",
20
+ "<%= config.bin %> <%= command.id %> function --name my-function --fn-type document-publish --lang js"
20
21
  ],
21
22
  "flags": {
22
23
  "name": {
@@ -27,18 +28,46 @@
27
28
  "multiple": false,
28
29
  "type": "option"
29
30
  },
30
- "function-type": {
31
+ "fn-type": {
32
+ "aliases": [
33
+ "function-type"
34
+ ],
31
35
  "dependsOn": [
32
36
  "name"
33
37
  ],
34
- "description": "Type of function to add (e.g. document-publish)",
35
- "name": "function-type",
38
+ "description": "Type of new function",
39
+ "name": "fn-type",
36
40
  "hasDynamicHelp": false,
37
41
  "multiple": false,
38
42
  "options": [
39
43
  "document-publish"
40
44
  ],
41
45
  "type": "option"
46
+ },
47
+ "language": {
48
+ "aliases": [
49
+ "function-language",
50
+ "lang"
51
+ ],
52
+ "description": "Language of the new function",
53
+ "name": "language",
54
+ "default": "ts",
55
+ "hasDynamicHelp": false,
56
+ "multiple": false,
57
+ "options": [
58
+ "ts",
59
+ "js"
60
+ ],
61
+ "type": "option"
62
+ },
63
+ "javascript": {
64
+ "aliases": [
65
+ "js"
66
+ ],
67
+ "description": "Use JavaScript instead of TypeScript",
68
+ "name": "javascript",
69
+ "allowNo": false,
70
+ "type": "boolean"
42
71
  }
43
72
  },
44
73
  "hasDynamicHelp": false,
@@ -65,7 +94,7 @@
65
94
  "<%= config.bin %> <%= command.id %>",
66
95
  "<%= config.bin %> <%= command.id %> --test-config",
67
96
  "<%= config.bin %> <%= command.id %> --edit",
68
- "<%= config.bin %> <%= command.id %> --edit --project-id <projectId> --stack-id <stackId>"
97
+ "<%= config.bin %> <%= command.id %> --edit --project-id <projectId>"
69
98
  ],
70
99
  "flags": {
71
100
  "test-config": {
@@ -109,6 +138,7 @@
109
138
  "edit"
110
139
  ],
111
140
  "description": "Update the Stack ID in the configuration. Requires --edit flag",
141
+ "hidden": true,
112
142
  "name": "stack-id",
113
143
  "hasDynamicHelp": false,
114
144
  "multiple": false,
@@ -136,7 +166,8 @@
136
166
  "args": {},
137
167
  "description": "Deploy a Blueprint",
138
168
  "examples": [
139
- "<%= config.bin %> <%= command.id %>"
169
+ "<%= config.bin %> <%= command.id %>",
170
+ "<%= config.bin %> <%= command.id %> --no-wait"
140
171
  ],
141
172
  "flags": {
142
173
  "no-wait": {
@@ -153,7 +184,6 @@
153
184
  "pluginName": "@sanity/runtime-cli",
154
185
  "pluginType": "core",
155
186
  "strict": true,
156
- "enableJsonFlag": false,
157
187
  "isESM": true,
158
188
  "relativePath": [
159
189
  "dist",
@@ -165,25 +195,40 @@
165
195
  "blueprints:destroy": {
166
196
  "aliases": [],
167
197
  "args": {},
168
- "description": "Destroy a deployed Blueprint Stack",
198
+ "description": "Destroy a Blueprint deployment (will not delete local files)",
169
199
  "examples": [
170
- "<%= config.bin %> <%= command.id %>",
171
- "<%= config.bin %> <%= command.id %> --id ST-a1b2c3"
200
+ "<%= config.bin %> <%= command.id %>"
172
201
  ],
173
202
  "flags": {
203
+ "force": {
204
+ "description": "Force destroy (skip confirmation)",
205
+ "name": "force",
206
+ "allowNo": false,
207
+ "type": "boolean"
208
+ },
209
+ "projectId": {
210
+ "dependsOn": [
211
+ "id",
212
+ "force"
213
+ ],
214
+ "description": "Project associated with the Stack (defaults to current Project)",
215
+ "hidden": true,
216
+ "name": "projectId",
217
+ "hasDynamicHelp": false,
218
+ "multiple": false,
219
+ "type": "option"
220
+ },
174
221
  "id": {
222
+ "dependsOn": [
223
+ "projectId",
224
+ "force"
225
+ ],
175
226
  "description": "Stack ID to destroy (defaults to current Stack)",
227
+ "hidden": true,
176
228
  "name": "id",
177
- "required": false,
178
229
  "hasDynamicHelp": false,
179
230
  "multiple": false,
180
231
  "type": "option"
181
- },
182
- "force": {
183
- "description": "Force destroy (skip confirmation)",
184
- "name": "force",
185
- "allowNo": false,
186
- "type": "boolean"
187
232
  }
188
233
  },
189
234
  "hasDynamicHelp": false,
@@ -193,7 +238,6 @@
193
238
  "pluginName": "@sanity/runtime-cli",
194
239
  "pluginType": "core",
195
240
  "strict": true,
196
- "enableJsonFlag": false,
197
241
  "isESM": true,
198
242
  "relativePath": [
199
243
  "dist",
@@ -205,16 +249,15 @@
205
249
  "blueprints:info": {
206
250
  "aliases": [],
207
251
  "args": {},
208
- "description": "Show information about a deployed Blueprint Stack",
252
+ "description": "Show information about a Blueprint deployment",
209
253
  "examples": [
210
- "<%= config.bin %> <%= command.id %>",
211
- "<%= config.bin %> <%= command.id %> --id ST-a1b2c3"
254
+ "<%= config.bin %> <%= command.id %>"
212
255
  ],
213
256
  "flags": {
214
257
  "id": {
215
258
  "description": "Stack ID to show info for (defaults to current stack)",
259
+ "hidden": true,
216
260
  "name": "id",
217
- "required": false,
218
261
  "hasDynamicHelp": false,
219
262
  "multiple": false,
220
263
  "type": "option"
@@ -227,7 +270,6 @@
227
270
  "pluginName": "@sanity/runtime-cli",
228
271
  "pluginType": "core",
229
272
  "strict": true,
230
- "enableJsonFlag": false,
231
273
  "isESM": true,
232
274
  "relativePath": [
233
275
  "dist",
@@ -238,15 +280,27 @@
238
280
  },
239
281
  "blueprints:init": {
240
282
  "aliases": [],
241
- "args": {},
283
+ "args": {
284
+ "dir": {
285
+ "description": "Directory to create the Blueprint in",
286
+ "name": "dir"
287
+ }
288
+ },
242
289
  "description": "Initialize a new Blueprint",
243
290
  "examples": [
244
291
  "<%= config.bin %> <%= command.id %>",
292
+ "<%= config.bin %> <%= command.id %> [directory]",
245
293
  "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts>",
246
- "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts> --project-id <projectId> --stack-id <stackId>",
247
- "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts> --project-id <projectId> --stack-name <stackName>"
294
+ "<%= config.bin %> <%= command.id %> --blueprint-type <json|js|ts> --project-id <projectId>"
248
295
  ],
249
296
  "flags": {
297
+ "dir": {
298
+ "description": "Directory to create the Blueprint in",
299
+ "name": "dir",
300
+ "hasDynamicHelp": false,
301
+ "multiple": false,
302
+ "type": "option"
303
+ },
250
304
  "blueprint-type": {
251
305
  "aliases": [
252
306
  "type"
@@ -285,6 +339,7 @@
285
339
  "exclusive": [
286
340
  "stack-name"
287
341
  ],
342
+ "hidden": true,
288
343
  "name": "stack-id",
289
344
  "hasDynamicHelp": false,
290
345
  "multiple": false,
@@ -294,14 +349,11 @@
294
349
  "aliases": [
295
350
  "name"
296
351
  ],
297
- "char": "n",
298
- "dependsOn": [
299
- "project-id"
300
- ],
301
352
  "description": "Name to use for a NEW Stack",
302
353
  "exclusive": [
303
354
  "stack-id"
304
355
  ],
356
+ "hidden": true,
305
357
  "name": "stack-name",
306
358
  "hasDynamicHelp": false,
307
359
  "multiple": false,
@@ -327,7 +379,7 @@
327
379
  "blueprints:logs": {
328
380
  "aliases": [],
329
381
  "args": {},
330
- "description": "Display logs for a Blueprint stack",
382
+ "description": "Display logs for a Blueprint deployment",
331
383
  "examples": [
332
384
  "<%= config.bin %> <%= command.id %>",
333
385
  "<%= config.bin %> <%= command.id %> --watch"
@@ -349,7 +401,6 @@
349
401
  "pluginName": "@sanity/runtime-cli",
350
402
  "pluginType": "core",
351
403
  "strict": true,
352
- "enableJsonFlag": false,
353
404
  "isESM": true,
354
405
  "relativePath": [
355
406
  "dist",
@@ -373,7 +424,6 @@
373
424
  "pluginName": "@sanity/runtime-cli",
374
425
  "pluginType": "core",
375
426
  "strict": true,
376
- "enableJsonFlag": false,
377
427
  "isESM": true,
378
428
  "relativePath": [
379
429
  "dist",
@@ -401,13 +451,13 @@
401
451
  }
402
452
  },
403
453
  "hasDynamicHelp": false,
454
+ "hidden": true,
404
455
  "hiddenAliases": [],
405
456
  "id": "blueprints:stacks",
406
457
  "pluginAlias": "@sanity/runtime-cli",
407
458
  "pluginName": "@sanity/runtime-cli",
408
459
  "pluginType": "core",
409
460
  "strict": true,
410
- "enableJsonFlag": false,
411
461
  "isESM": true,
412
462
  "relativePath": [
413
463
  "dist",
@@ -491,7 +541,6 @@
491
541
  "pluginName": "@sanity/runtime-cli",
492
542
  "pluginType": "core",
493
543
  "strict": true,
494
- "enableJsonFlag": false,
495
544
  "isESM": true,
496
545
  "relativePath": [
497
546
  "dist",
@@ -566,7 +615,6 @@
566
615
  "pluginName": "@sanity/runtime-cli",
567
616
  "pluginType": "core",
568
617
  "strict": true,
569
- "enableJsonFlag": false,
570
618
  "isESM": true,
571
619
  "relativePath": [
572
620
  "dist",
@@ -635,9 +683,13 @@
635
683
  "multiple": false,
636
684
  "type": "option"
637
685
  },
638
- "project": {
639
- "description": "The Sanity project to use",
640
- "name": "project",
686
+ "project-id": {
687
+ "aliases": [
688
+ "project",
689
+ "projectId"
690
+ ],
691
+ "description": "Sanity Project ID to use",
692
+ "name": "project-id",
641
693
  "required": false,
642
694
  "hasDynamicHelp": false,
643
695
  "multiple": false,
@@ -651,7 +703,6 @@
651
703
  "pluginName": "@sanity/runtime-cli",
652
704
  "pluginType": "core",
653
705
  "strict": true,
654
- "enableJsonFlag": false,
655
706
  "isESM": true,
656
707
  "relativePath": [
657
708
  "dist",
@@ -691,7 +742,6 @@
691
742
  "pluginName": "@sanity/runtime-cli",
692
743
  "pluginType": "core",
693
744
  "strict": true,
694
- "enableJsonFlag": false,
695
745
  "isESM": true,
696
746
  "relativePath": [
697
747
  "dist",
@@ -722,7 +772,6 @@
722
772
  "pluginName": "@sanity/runtime-cli",
723
773
  "pluginType": "core",
724
774
  "strict": true,
725
- "enableJsonFlag": false,
726
775
  "isESM": true,
727
776
  "relativePath": [
728
777
  "dist",
@@ -758,7 +807,6 @@
758
807
  "pluginName": "@sanity/runtime-cli",
759
808
  "pluginType": "core",
760
809
  "strict": true,
761
- "enableJsonFlag": false,
762
810
  "isESM": true,
763
811
  "relativePath": [
764
812
  "dist",
@@ -769,5 +817,5 @@
769
817
  ]
770
818
  }
771
819
  },
772
- "version": "4.5.0"
820
+ "version": "5.0.0"
773
821
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sanity/runtime-cli",
3
3
  "description": "Sanity's Runtime CLI for Blueprints and Functions",
4
- "version": "4.5.0",
4
+ "version": "5.0.0",
5
5
  "author": "Sanity Runtime Team",
6
6
  "type": "module",
7
7
  "license": "MIT",
@@ -67,6 +67,7 @@
67
67
  "chalk": "^5.4.1",
68
68
  "color-json": "^3.0.5",
69
69
  "eventsource": "^3.0.6",
70
+ "find-up": "^7.0.0",
70
71
  "inquirer": "^12.5.2",
71
72
  "mime-types": "^3.0.1",
72
73
  "vite": "^6.3.3",