bump-cli 2.9.12 → 2.10.1

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.
@@ -54,7 +54,7 @@
54
54
  "$ref": "#/definitions/schema"
55
55
  },
56
56
  "outputs": {
57
- "$ref": "#/definitions/schema"
57
+ "$ref": "#/definitions/expressionMap"
58
58
  },
59
59
  "steps": {
60
60
  "type": "array",
@@ -75,7 +75,7 @@
75
75
  "type": "string"
76
76
  },
77
77
  "outputs": {
78
- "$ref": "#/definitions/schema"
78
+ "$ref": "#/definitions/expressionMap"
79
79
  },
80
80
  "request": {
81
81
  "type": "object",
@@ -83,13 +83,38 @@
83
83
  "method": {
84
84
  "type": "string"
85
85
  },
86
- "query": {
87
- "$ref": "#/definitions/schema"
88
- },
89
86
  "url": {
90
87
  "type": "string"
88
+ },
89
+ "headers": {
90
+ "$ref": "#/definitions/expressionMap"
91
+ },
92
+ "query": {
93
+ "$ref": "#/definitions/expressionMap"
94
+ },
95
+ "body": {
96
+ "$ref": "#/definitions/expressionMap"
91
97
  }
92
98
  }
99
+ },
100
+ "actions": {
101
+ "type": "array",
102
+ "items": {
103
+ "oneOf": [
104
+ {
105
+ "$ref": "#/definitions/next"
106
+ },
107
+ {
108
+ "$ref": "#/definitions/retry"
109
+ },
110
+ {
111
+ "$ref": "#/definitions/goto"
112
+ },
113
+ {
114
+ "$ref": "#/definitions/end"
115
+ }
116
+ ]
117
+ }
93
118
  }
94
119
  },
95
120
  "required": [
@@ -97,6 +122,122 @@
97
122
  "request"
98
123
  ]
99
124
  },
125
+ "action": {
126
+ "type": "object",
127
+ "required": [
128
+ "do"
129
+ ],
130
+ "properties": {
131
+ "id": {
132
+ "type": "string"
133
+ },
134
+ "when": {
135
+ "type": "string",
136
+ "description": "A runtime expression conditioning this action"
137
+ },
138
+ "do": {
139
+ "type": "string"
140
+ }
141
+ },
142
+ "discriminator": {
143
+ "propertyName": "do",
144
+ "mapping": {
145
+ "next": "#/definitions/next",
146
+ "retry": "#/definitions/retry",
147
+ "goto": "#/definitions/goto",
148
+ "end": "#/definitions/end"
149
+ }
150
+ }
151
+ },
152
+ "next": {
153
+ "allOf": [
154
+ {
155
+ "$ref": "#/definitions/action"
156
+ },
157
+ {
158
+ "type": "object",
159
+ "properties": {
160
+ "do": {
161
+ "type": "string",
162
+ "const": "next"
163
+ }
164
+ }
165
+ }
166
+ ]
167
+ },
168
+ "retry": {
169
+ "allOf": [
170
+ {
171
+ "$ref": "#/definitions/action"
172
+ },
173
+ {
174
+ "type": "object",
175
+ "properties": {
176
+ "do": {
177
+ "type": "string",
178
+ "const": "retry"
179
+ },
180
+ "wait": {
181
+ "type": "integer",
182
+ "description": "Number of seconds to wait",
183
+ "default": 5
184
+ },
185
+ "max_retry": {
186
+ "type": "integer",
187
+ "description": "Maximum number of subsequent retries to execute",
188
+ "default": 5
189
+ }
190
+ }
191
+ }
192
+ ]
193
+ },
194
+ "goto": {
195
+ "allOf": [
196
+ {
197
+ "$ref": "#/definitions/action"
198
+ },
199
+ {
200
+ "type": "object",
201
+ "required": [
202
+ "step"
203
+ ],
204
+ "properties": {
205
+ "do": {
206
+ "type": "string",
207
+ "const": "goto"
208
+ },
209
+ "step": {
210
+ "type": "string",
211
+ "description": "The target step ID to jump to"
212
+ }
213
+ }
214
+ }
215
+ ]
216
+ },
217
+ "end": {
218
+ "allOf": [
219
+ {
220
+ "$ref": "#/definitions/action"
221
+ },
222
+ {
223
+ "type": "object",
224
+ "properties": {
225
+ "do": {
226
+ "type": "string",
227
+ "const": "end"
228
+ }
229
+ }
230
+ }
231
+ ]
232
+ },
233
+ "expressionMap": {
234
+ "type": "object",
235
+ "description": "A map of names to runtime expressions.",
236
+ "additionalProperties": {
237
+ "type": "string",
238
+ "description": "A runtime expression."
239
+ }
240
+ },
100
241
  "schema": {
101
242
  "allOf": [
102
243
  {
@@ -28,9 +28,8 @@ export class WorkflowDeploy {
28
28
  }
29
29
  async run(workflowDefinition, mcpServer, token) {
30
30
  let version;
31
- const request = {
32
- definition: workflowDefinition.rawDefinition,
33
- };
31
+ const [definition, references] = await workflowDefinition.extractDefinition();
32
+ const request = { definition, references };
34
33
  // eslint-disable-next-line prefer-const
35
34
  version = await this.createWorkflowVersion(mcpServer, request, token);
36
35
  return version;
@@ -1,9 +1,10 @@
1
1
  import { JSONSchema4, JSONSchema4Array, JSONSchema4Object, JSONSchema6, JSONSchema6Object, JSONSchema7 } from 'json-schema';
2
- type SpecSchema = JSONSchema4 | JSONSchema6 | JSONSchema7;
2
+ type JSONSchema = JSONSchema4 | JSONSchema6 | JSONSchema7;
3
3
  declare class SupportedFormat {
4
- static readonly asyncapi: Record<string, SpecSchema>;
5
- static readonly flower: Record<string, SpecSchema>;
6
- static readonly openapi: Record<string, SpecSchema>;
4
+ static readonly arazzo: Record<string, JSONSchema>;
5
+ static readonly asyncapi: Record<string, JSONSchema>;
6
+ static readonly flower: Record<string, JSONSchema>;
7
+ static readonly openapi: Record<string, JSONSchema>;
7
8
  }
8
9
  declare class API {
9
10
  readonly definition: APIDefinition;
@@ -13,30 +14,38 @@ declare class API {
13
14
  readonly references: APIReference[];
14
15
  readonly specName?: string;
15
16
  readonly version?: string;
16
- constructor(location: string, values: SpecSchema);
17
+ constructor(location: string, data: Record<string, JSONSchemaWithRaw>);
18
+ static isArazzo(definition: JSONSchema4Object | JSONSchema6Object): definition is Arazzo;
17
19
  static isAsyncAPI(definition: JSONSchema4Object | JSONSchema6Object): definition is AsyncAPI;
18
20
  static isFlower(definition: JSONSchema4Object | JSONSchema6Object): definition is Flower;
19
21
  static isOpenAPI(definition: JSONSchema4Object | JSONSchema6Object): definition is OpenAPI;
20
22
  static isOpenAPIOverlay(definition: JSONSchema4Object | JSONSchema6Object): definition is OpenAPIOverlay;
23
+ static isSupportedFormat(definition: JSONSchema4Object | JSONSchema6Object): definition is APIDefinition;
21
24
  static load(path: string): Promise<API>;
22
25
  applyOverlay(overlayPath: string): Promise<void>;
23
26
  extractDefinition(outputPath?: string, overlays?: string[] | undefined): Promise<[string, APIReference[]]>;
24
- getSpec(definition: APIDefinition): SpecSchema | undefined;
27
+ getSpec(definition: APIDefinition): JSONSchema | undefined;
25
28
  getSpecName(definition: APIDefinition): string | undefined;
26
29
  getVersion(definition: APIDefinition): string | undefined;
27
30
  guessFormat(output?: string): string;
28
31
  isMainRefPath(path: string): boolean;
29
- resolveContent(values: SpecSchema): [string, APIDefinition];
30
- resolveRelativeLocation(absPath: string): string;
31
32
  serializeDefinition(outputPath?: string): string;
32
33
  versionWithoutPatch(): string;
34
+ private _resolveArazzoSourceDescriptions;
35
+ private _resolveContentFrom;
36
+ private _resolveRelativeLocation;
33
37
  private url;
34
38
  }
39
+ type JSONSchemaWithRaw = {
40
+ readonly parsed?: JSONSchema4 | JSONSchema4Object | JSONSchema6 | JSONSchema6Object | string;
41
+ readonly raw?: string;
42
+ };
35
43
  type APIReference = {
36
44
  content: string;
37
45
  location: string;
46
+ name?: string;
38
47
  };
39
- type APIDefinition = AsyncAPI | Flower | OpenAPI | OpenAPIOverlay;
48
+ type APIDefinition = Arazzo | AsyncAPI | Flower | OpenAPI | OpenAPIOverlay;
40
49
  type InfoObject = {
41
50
  readonly description?: string;
42
51
  readonly title: string;
@@ -59,4 +68,8 @@ type AsyncAPI = {
59
68
  type Flower = {
60
69
  readonly flower: string;
61
70
  } & JSONSchema4Object;
71
+ type Arazzo = {
72
+ readonly arazzo: string;
73
+ readonly info: InfoObject;
74
+ } & JSONSchema4Object;
62
75
  export { API, APIDefinition, OpenAPI, OpenAPIOverlay, SupportedFormat };
@@ -5,9 +5,11 @@ import { parseWithPointers, safeStringify } from '@stoplight/yaml';
5
5
  import debug from 'debug';
6
6
  import { default as nodePath } from 'node:path';
7
7
  import { Overlay } from './core/overlay.js';
8
+ import arazzoSchemas from './core/schemas/arazzo-schemas/index.js';
8
9
  import flowerSchemas from './core/schemas/flower-schemas/index.js';
9
10
  import openapiSchemas from './core/schemas/oas-schemas/index.js';
10
11
  class SupportedFormat {
12
+ static arazzo = arazzoSchemas.schemas;
11
13
  static asyncapi = {
12
14
  '2.0': asyncapi.schemas['2.0.0'],
13
15
  '2.1': asyncapi.schemas['2.1.0'],
@@ -17,15 +19,8 @@ class SupportedFormat {
17
19
  '2.5': asyncapi.schemas['2.5.0'],
18
20
  '2.6': asyncapi.schemas['2.6.0'],
19
21
  };
20
- static flower = {
21
- '0.1': flowerSchemas.schemas['0.1'],
22
- };
23
- static openapi = {
24
- '2.0': openapiSchemas.schemas['2.0'],
25
- '3.0': openapiSchemas.schemas['3.0'],
26
- '3.1': openapiSchemas.schemas['3.1'],
27
- '3.2': openapiSchemas.schemas['3.2'],
28
- };
22
+ static flower = flowerSchemas.schemas;
23
+ static openapi = openapiSchemas.schemas;
29
24
  }
30
25
  class UnsupportedFormat extends CLIError {
31
26
  constructor(message = '') {
@@ -46,10 +41,10 @@ class API {
46
41
  references;
47
42
  specName;
48
43
  version;
49
- constructor(location, values) {
44
+ constructor(location, data) {
50
45
  this.location = location;
51
- this.references = [];
52
- const [raw, parsed] = this.resolveContent(values);
46
+ const [raw, parsed, references] = this._resolveContentFrom(data);
47
+ this.references = references || [];
53
48
  this.rawDefinition = raw;
54
49
  this.definition = parsed;
55
50
  this.specName = this.getSpecName(parsed);
@@ -58,6 +53,9 @@ class API {
58
53
  throw new UnsupportedFormat(`${this.specName} ${this.version}`);
59
54
  }
60
55
  }
56
+ static isArazzo(definition) {
57
+ return 'arazzo' in definition;
58
+ }
61
59
  static isAsyncAPI(definition) {
62
60
  return 'asyncapi' in definition;
63
61
  }
@@ -70,6 +68,13 @@ class API {
70
68
  static isOpenAPIOverlay(definition) {
71
69
  return 'overlay' in definition;
72
70
  }
71
+ static isSupportedFormat(definition) {
72
+ return (API.isArazzo(definition) ||
73
+ API.isAsyncAPI(definition) ||
74
+ API.isFlower(definition) ||
75
+ API.isOpenAPI(definition) ||
76
+ API.isOpenAPIOverlay(definition));
77
+ }
73
78
  static async load(path) {
74
79
  const { json, text, yaml } = getJsonSchemaRefParserDefaultOptions().parse;
75
80
  // Not sure why the lib types the parser as potentially
@@ -114,8 +119,17 @@ class API {
114
119
  },
115
120
  })
116
121
  .then(($refs) => {
117
- const values = $refs.values();
118
- return new API(path, values);
122
+ // JSON schema refs parser lib doesn't type the output of this
123
+ // method well (it types it as a generic JSON schema) where as
124
+ // it builds a Map of string (the path/URLs of each reference)
125
+ // to JSONSchema (the reference value)
126
+ //
127
+ // We also change the reference values in our custom parsers
128
+ // defined above to include the raw values which gets “widen”
129
+ // by the lib. We thus need to force the type output to a more
130
+ // precise type.
131
+ const data = $refs.values();
132
+ return new API(path, data);
119
133
  })
120
134
  .catch((error) => {
121
135
  throw new CLIError(error);
@@ -147,59 +161,68 @@ class API {
147
161
  }
148
162
  /* eslint-enable no-await-in-loop */
149
163
  }
164
+ if (API.isArazzo(this.definition)) {
165
+ await this._resolveArazzoSourceDescriptions();
166
+ }
150
167
  const references = [];
151
168
  for (let i = 0; i < this.references.length; i++) {
152
- const reference = this.references[i];
153
- references.push({
154
- content: reference.content,
155
- location: reference.location,
156
- });
169
+ const { content, location, name } = this.references[i];
170
+ references.push({ content, location, name });
157
171
  }
158
172
  return [this.serializeDefinition(outputPath), references];
159
173
  }
160
174
  getSpec(definition) {
175
+ if (API.isArazzo(definition)) {
176
+ return SupportedFormat.arazzo[this.versionWithoutPatch()];
177
+ }
161
178
  if (API.isAsyncAPI(definition)) {
162
179
  return SupportedFormat.asyncapi[this.versionWithoutPatch()];
163
180
  }
164
- if (API.isOpenAPIOverlay(definition)) {
165
- return { overlay: { type: 'string' } };
166
- }
167
181
  if (API.isFlower(definition)) {
168
182
  return SupportedFormat.flower[this.versionWithoutPatch()];
169
183
  }
170
184
  if (API.isOpenAPI(definition)) {
171
185
  return SupportedFormat.openapi[this.versionWithoutPatch()];
172
186
  }
187
+ if (API.isOpenAPIOverlay(definition)) {
188
+ return { overlay: { type: 'string' } };
189
+ }
173
190
  return undefined;
174
191
  }
175
192
  getSpecName(definition) {
193
+ if (API.isArazzo(definition)) {
194
+ return 'Arazzo';
195
+ }
176
196
  if (API.isAsyncAPI(definition)) {
177
197
  return 'AsyncAPI';
178
198
  }
179
199
  if (API.isFlower(definition)) {
180
200
  return 'Flower';
181
201
  }
182
- if (API.isOpenAPIOverlay(definition)) {
183
- return 'OpenAPIOverlay';
184
- }
185
202
  if (API.isOpenAPI(definition)) {
186
203
  return 'OpenAPI';
187
204
  }
205
+ if (API.isOpenAPIOverlay(definition)) {
206
+ return 'OpenAPIOverlay';
207
+ }
188
208
  return undefined;
189
209
  }
190
210
  getVersion(definition) {
211
+ if (API.isArazzo(definition)) {
212
+ return definition.arazzo;
213
+ }
191
214
  if (API.isAsyncAPI(definition)) {
192
215
  return definition.asyncapi;
193
216
  }
194
217
  if (API.isFlower(definition)) {
195
218
  return definition.flower;
196
219
  }
197
- if (API.isOpenAPIOverlay(definition)) {
198
- return definition.overlay;
199
- }
200
220
  if (API.isOpenAPI(definition)) {
201
221
  return (definition.openapi || definition.swagger);
202
222
  }
223
+ if (API.isOpenAPIOverlay(definition)) {
224
+ return definition.overlay;
225
+ }
203
226
  return undefined;
204
227
  }
205
228
  guessFormat(output) {
@@ -215,52 +238,6 @@ class API {
215
238
  .join(nodePath?.posix?.sep ?? '/');
216
239
  return path === this.location || path === resolvedAbsLocation;
217
240
  }
218
- resolveContent(values) {
219
- let mainReference = { parsed: {}, raw: '' };
220
- for (const [absPath, reference] of Object.entries(values)) {
221
- if (this.isMainRefPath(absPath)) {
222
- // $refs.values is not properly typed so we need to force it
223
- // with the resulting type of our custom defined parser
224
- mainReference = reference;
225
- }
226
- else {
227
- // $refs.values is not properly typed so we need to force it
228
- // with the resulting type of our custom defined parser
229
- const { raw } = reference;
230
- if (!raw) {
231
- throw new UnsupportedFormat(`Reference ${absPath} is empty`);
232
- }
233
- this.references.push({
234
- content: raw,
235
- location: this.resolveRelativeLocation(absPath),
236
- });
237
- }
238
- }
239
- const { parsed, raw } = mainReference;
240
- if (!parsed || !raw || !(parsed instanceof Object) || !('info' in parsed || 'flower' in parsed)) {
241
- debug('bump-cli:definition')(`Main location (${this.location}) not found or empty (within ${JSON.stringify(Object.keys(values))})`);
242
- throw new UnsupportedFormat('Definition needs to be a valid Object');
243
- }
244
- if (!API.isOpenAPI(parsed) && !API.isAsyncAPI(parsed) && !API.isOpenAPIOverlay(parsed) && !API.isFlower(parsed)) {
245
- throw new UnsupportedFormat();
246
- }
247
- return [raw, parsed];
248
- }
249
- /* Resolve reference absolute paths to the main api location when possible */
250
- resolveRelativeLocation(absPath) {
251
- const definitionUrl = this.url();
252
- const refUrl = this.url(absPath);
253
- if ((refUrl.hostname === '' && // filesystem path
254
- (/^\//.test(absPath) || // Unix style
255
- /^[A-Za-z]+:[/\\]/.test(absPath))) || // Windows style
256
- (/^https?:\/\//.test(absPath) && definitionUrl.hostname === refUrl.hostname) // Same domain URLs
257
- ) {
258
- const relativeLocation = nodePath.relative(nodePath.dirname(this.location), absPath);
259
- debug('bump-cli:definition')(`Resolved relative $ref location: ${relativeLocation}`);
260
- return relativeLocation;
261
- }
262
- return absPath;
263
- }
264
241
  serializeDefinition(outputPath) {
265
242
  if (this.overlayedDefinition) {
266
243
  const { comments } = parseWithPointers(this.rawDefinition, { attachComments: true });
@@ -278,6 +255,84 @@ class API {
278
255
  const [major, minor] = this.version.split('.', 3);
279
256
  return `${major}.${minor}`;
280
257
  }
258
+ async _resolveArazzoSourceDescriptions() {
259
+ if (!API.isArazzo(this.definition)) {
260
+ debug('bump-cli:definition')('This is not an Arazzo definition, no source descriptions to resolve');
261
+ }
262
+ else if (this.definition.sourceDescriptions) {
263
+ const sources = this.definition.sourceDescriptions;
264
+ for (const { name, type: sourceType, url: location } of sources) {
265
+ if (sourceType === 'openapi') {
266
+ const relativeLocation = this._resolveRelativeLocation(location);
267
+ /* eslint-disable no-await-in-loop */
268
+ const api = await API.load(relativeLocation);
269
+ const [content] = await api.extractDefinition();
270
+ /* eslint-enable no-await-in-loop */
271
+ this.references.push({ content, location: relativeLocation, name });
272
+ }
273
+ else {
274
+ debug('bump-cli:definition')(`Arazzo source description of type ${sourceType} is not yet supported.`);
275
+ }
276
+ }
277
+ }
278
+ else {
279
+ debug('bump-cli:definition')("Arazzo definition doesn't have any sourceDescriptions");
280
+ }
281
+ }
282
+ _resolveContentFrom(data) {
283
+ let definition;
284
+ let rawDefinition;
285
+ const references = [];
286
+ // data contains all refs as a map of paths/URLs and their
287
+ // correspond values
288
+ for (const [absPath, reference] of Object.entries(data)) {
289
+ if (this.isMainRefPath(absPath)) {
290
+ ;
291
+ ({ parsed: definition, raw: rawDefinition } = reference);
292
+ }
293
+ else {
294
+ if (!reference.raw) {
295
+ throw new UnsupportedFormat(`Reference ${absPath} is empty`);
296
+ }
297
+ references.push({
298
+ content: reference.raw,
299
+ location: this._resolveRelativeLocation(absPath),
300
+ });
301
+ }
302
+ }
303
+ if (!definition ||
304
+ !rawDefinition ||
305
+ !(definition instanceof Object) ||
306
+ !('info' in definition || 'flower' in definition)) {
307
+ debug('bump-cli:definition')(`Main location (${this.location}) not found or empty (within ${JSON.stringify(Object.keys(data))})`);
308
+ throw new UnsupportedFormat('Definition needs to be a valid Object');
309
+ }
310
+ if (!API.isSupportedFormat(definition)) {
311
+ throw new UnsupportedFormat();
312
+ }
313
+ return [rawDefinition, definition, references];
314
+ }
315
+ /* Resolve reference paths to the main api location when possible */
316
+ _resolveRelativeLocation(path) {
317
+ const definitionUrl = this.url();
318
+ const refUrl = this.url(path);
319
+ const unixStyle = /^\//.test(path);
320
+ const windowsStyle = /^[A-Za-z]+:[/\\]/.test(path);
321
+ const isUrl = /^https?:\/\//.test(path);
322
+ // Guard: Absolute URL on different domain we return an untouched
323
+ // path
324
+ if (isUrl && definitionUrl.hostname !== refUrl.hostname) {
325
+ return path;
326
+ }
327
+ const isAbsolutePath = refUrl.hostname === '' && (unixStyle || windowsStyle);
328
+ // Absolute path or URL on **same domain**
329
+ const isAbsolute = isAbsolutePath || isUrl;
330
+ const relativeLocation = isAbsolute
331
+ ? nodePath.relative(nodePath.dirname(this.location), path)
332
+ : nodePath.join(nodePath.dirname(this.location), path);
333
+ debug('bump-cli:definition')(`Resolved relative $ref location: ${relativeLocation}`);
334
+ return relativeLocation;
335
+ }
281
336
  url(location = this.location) {
282
337
  try {
283
338
  return new URL(location);
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export declare const COMMANDS: {
8
8
  overlay: typeof Overlay;
9
9
  preview: typeof Preview;
10
10
  };
11
- export { DiffResponse, PreviewResponse, VersionResponse, WithDiff } from './api/models.js';
11
+ export { PreviewResponse, VersionResponse, WithDiff } from './api/models.js';
12
12
  export { default as Deploy } from './commands/deploy.js';
13
13
  export { default as Preview } from './commands/preview.js';
14
14
  export * as Diff from './core/diff.js';
@@ -301,5 +301,5 @@
301
301
  "strict": true
302
302
  }
303
303
  },
304
- "version": "2.9.12"
304
+ "version": "2.10.1"
305
305
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bump-cli",
3
- "description": "The Bump CLI is used to interact with your API documentation hosted on Bump.sh by using the API of developers.bump.sh",
4
- "version": "2.9.12",
3
+ "description": "The Bump CLI is used to interact with your API documentation hosted on Bump.sh by using the APIs of developers.bump.sh",
4
+ "version": "2.10.1",
5
5
  "author": "Paul Bonaud <paulr@bump.sh>",
6
6
  "bin": {
7
7
  "bump": "./bin/run.js"
@@ -14,9 +14,9 @@
14
14
  "@types/debug": "^4.1.12",
15
15
  "@types/jsonpath": "^0.2.4",
16
16
  "@types/mocha": "^10",
17
- "@types/node": "^24",
18
- "@types/sinon": "^17.0.3",
19
- "@typescript-eslint/eslint-plugin": "^8.13.0",
17
+ "@types/node": "^25",
18
+ "@types/sinon": "^21.0.0",
19
+ "@typescript-eslint/eslint-plugin": "^8.61.1",
20
20
  "chai": "^6.2.2",
21
21
  "eslint": "^8",
22
22
  "eslint-config-oclif": "^5",
@@ -92,7 +92,7 @@
92
92
  "dependencies": {
93
93
  "@apidevtools/json-schema-ref-parser": "^11.7.2",
94
94
  "@asyncapi/specs": "^6.8.0",
95
- "@clack/prompts": "^0.11.0",
95
+ "@clack/prompts": "^1.0.0",
96
96
  "@oclif/core": "^4",
97
97
  "@oclif/plugin-help": "^6",
98
98
  "@oclif/plugin-warn-if-update-available": "^3.1.20",
@@ -103,6 +103,6 @@
103
103
  "debug": "^4.3.7",
104
104
  "jsonpathly": "^3.0.0",
105
105
  "mergician": "^2.0.2",
106
- "open": "^10.1.0"
106
+ "open": "^11.0.0"
107
107
  }
108
108
  }