@botpress/cli 4.25.3 → 4.26.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.
@@ -1,36 +1,46 @@
1
1
 
2
- > @botpress/cli@4.25.3 build /home/runner/work/botpress/botpress/packages/cli
2
+ > @botpress/cli@4.26.0 build /home/runner/work/botpress/botpress/packages/cli
3
3
  > pnpm run build:types && pnpm run bundle && pnpm run template:gen
4
4
 
5
5
 
6
- > @botpress/cli@4.25.3 build:types /home/runner/work/botpress/botpress/packages/cli
6
+ > @botpress/cli@4.26.0 build:types /home/runner/work/botpress/botpress/packages/cli
7
7
  > tsc -p ./tsconfig.build.json
8
8
 
9
9
 
10
- > @botpress/cli@4.25.3 bundle /home/runner/work/botpress/botpress/packages/cli
10
+ > @botpress/cli@4.26.0 bundle /home/runner/work/botpress/botpress/packages/cli
11
11
  > ts-node -T build.ts
12
12
 
13
13
 
14
- > @botpress/cli@4.25.3 template:gen /home/runner/work/botpress/botpress/packages/cli
14
+ > @botpress/cli@4.26.0 template:gen /home/runner/work/botpress/botpress/packages/cli
15
15
  > pnpm -r --stream -F @bp-templates/* exec bp gen
16
16
 
17
- 🤖 Botpress CLI v4.25.3
18
- 🤖 Botpress CLI v4.25.3
19
- 🤖 Botpress CLI v4.25.3
20
- 🤖 Botpress CLI v4.25.3
21
- Generating typings for plugin empty-plugin...
17
+ 🤖 Botpress CLI v4.26.0
18
+ Checking if cli is up to date
19
+ 🤖 Botpress CLI v4.26.0
20
+ Checking if cli is up to date
21
+ 🤖 Botpress CLI v4.26.0
22
+ ● Checking if cli is up to date
23
+ ● Checking if sdk is up to date
24
+ ● Checking if sdk is up to date
25
+ 🤖 Botpress CLI v4.26.0
26
+ ● Checking if cli is up to date
27
+ ● Checking if sdk is up to date
28
+ ○ Generating typings for integration hello-world...
29
+ ● Checking if sdk is up to date
30
+ ○ Generating typings for integration empty-integration...
22
31
  ✓ Typings available at .botpress
23
32
 
24
- ○ Generating typings for integration empty-integration...
25
33
  ✓ Typings available at .botpress
26
34
 
27
- ○ Generating typings for integration hello-world...
28
35
  ○ Generating typings for bot...
29
36
  ✓ Typings available at .botpress
30
37
 
38
+ ○ Generating typings for plugin empty-plugin...
31
39
  ✓ Typings available at .botpress
32
40
 
33
- 🤖 Botpress CLI v4.25.3
41
+ 🤖 Botpress CLI v4.26.0
42
+ ● Checking if cli is up to date
43
+ ● Checking if sdk is up to date
34
44
  ○ Generating typings for integration webhook-message...
35
45
  ✓ Typings available at .botpress
36
46
 
@@ -7,6 +7,7 @@ export declare abstract class BaseCommand<C extends CommandDefinition> {
7
7
  protected abstract run(): Promise<void>;
8
8
  protected bootstrap?(): Promise<void>;
9
9
  protected teardown?(): Promise<void>;
10
+ private get _cmdName();
10
11
  handler(): Promise<{
11
12
  exitCode: number;
12
13
  }>;
@@ -37,6 +37,9 @@ class BaseCommand {
37
37
  this.logger = logger;
38
38
  this.argv = argv;
39
39
  }
40
+ get _cmdName() {
41
+ return this.constructor.name;
42
+ }
40
43
  async handler() {
41
44
  let exitCode = 0;
42
45
  try {
@@ -46,13 +49,9 @@ class BaseCommand {
46
49
  await this.run();
47
50
  } catch (thrown) {
48
51
  const error = errors.BotpressCLIError.map(thrown);
49
- if (error.debug) {
50
- const msg = error.message + " (Run with verbose flag (-v) to see more details)";
51
- this.logger.error(msg);
52
- this.logger.debug(error.debug);
53
- } else {
54
- this.logger.error(error.message);
55
- }
52
+ this.logger.error(error.message);
53
+ const stack = error.stack ?? "No stack trace available";
54
+ this.logger.debug(`[${this._cmdName}] ${stack}`);
56
55
  exitCode = 1;
57
56
  } finally {
58
57
  if (this.teardown) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/command-implementations/base-command.ts"],
4
- "sourcesContent": ["import * as errors from '../errors'\nimport type { Logger } from '../logger'\nimport type { CommandArgv, CommandDefinition } from '../typings'\n\nexport abstract class BaseCommand<C extends CommandDefinition> {\n public constructor(\n protected readonly logger: Logger,\n protected readonly argv: CommandArgv<C>\n ) {}\n\n protected abstract run(): Promise<void>\n protected bootstrap?(): Promise<void>\n protected teardown?(): Promise<void>\n\n public async handler(): Promise<{ exitCode: number }> {\n let exitCode = 0\n try {\n if (this.bootstrap) {\n await this.bootstrap()\n }\n await this.run()\n } catch (thrown) {\n const error = errors.BotpressCLIError.map(thrown)\n\n if (error.debug) {\n const msg = error.message + ' (Run with verbose flag (-v) to see more details)'\n this.logger.error(msg)\n this.logger.debug(error.debug)\n } else {\n this.logger.error(error.message)\n }\n\n exitCode = 1\n } finally {\n if (this.teardown) {\n await this.teardown()\n }\n }\n\n return { exitCode }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAwB;AAIjB,MAAe,YAAyC;AAAA,EACtD,YACc,QACA,MACnB;AAFmB;AACA;AAAA,EAClB;AAAA,EAMH,MAAa,UAAyC;AACpD,QAAI,WAAW;AACf,QAAI;AACF,UAAI,KAAK,WAAW;AAClB,cAAM,KAAK,UAAU;AAAA,MACvB;AACA,YAAM,KAAK,IAAI;AAAA,IACjB,SAAS,QAAQ;AACf,YAAM,QAAQ,OAAO,iBAAiB,IAAI,MAAM;AAEhD,UAAI,MAAM,OAAO;AACf,cAAM,MAAM,MAAM,UAAU;AAC5B,aAAK,OAAO,MAAM,GAAG;AACrB,aAAK,OAAO,MAAM,MAAM,KAAK;AAAA,MAC/B,OAAO;AACL,aAAK,OAAO,MAAM,MAAM,OAAO;AAAA,MACjC;AAEA,iBAAW;AAAA,IACb,UAAE;AACA,UAAI,KAAK,UAAU;AACjB,cAAM,KAAK,SAAS;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,EAAE,SAAS;AAAA,EACpB;AACF;",
4
+ "sourcesContent": ["import * as errors from '../errors'\nimport type { Logger } from '../logger'\nimport type { CommandArgv, CommandDefinition } from '../typings'\n\nexport abstract class BaseCommand<C extends CommandDefinition> {\n public constructor(\n protected readonly logger: Logger,\n protected readonly argv: CommandArgv<C>\n ) {}\n\n protected abstract run(): Promise<void>\n protected bootstrap?(): Promise<void>\n protected teardown?(): Promise<void>\n\n private get _cmdName(): string {\n return this.constructor.name\n }\n\n public async handler(): Promise<{ exitCode: number }> {\n let exitCode = 0\n try {\n if (this.bootstrap) {\n await this.bootstrap()\n }\n await this.run()\n } catch (thrown) {\n const error = errors.BotpressCLIError.map(thrown)\n\n this.logger.error(error.message)\n\n const stack = error.stack ?? 'No stack trace available'\n this.logger.debug(`[${this._cmdName}] ${stack}`)\n\n exitCode = 1\n } finally {\n if (this.teardown) {\n await this.teardown()\n }\n }\n\n return { exitCode }\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAwB;AAIjB,MAAe,YAAyC;AAAA,EACtD,YACc,QACA,MACnB;AAFmB;AACA;AAAA,EAClB;AAAA,EAMH,IAAY,WAAmB;AAC7B,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,MAAa,UAAyC;AACpD,QAAI,WAAW;AACf,QAAI;AACF,UAAI,KAAK,WAAW;AAClB,cAAM,KAAK,UAAU;AAAA,MACvB;AACA,YAAM,KAAK,IAAI;AAAA,IACjB,SAAS,QAAQ;AACf,YAAM,QAAQ,OAAO,iBAAiB,IAAI,MAAM;AAEhD,WAAK,OAAO,MAAM,MAAM,OAAO;AAE/B,YAAM,QAAQ,MAAM,SAAS;AAC7B,WAAK,OAAO,MAAM,IAAI,KAAK,QAAQ,KAAK,KAAK,EAAE;AAE/C,iBAAW;AAAA,IACb,UAAE;AACA,UAAI,KAAK,UAAU;AACjB,cAAM,KAAK,SAAS;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,EAAE,SAAS;AAAA,EACpB;AACF;",
6
6
  "names": []
7
7
  }
package/dist/errors.d.ts CHANGED
@@ -5,11 +5,8 @@ type KnownApiError = Exclude<client.ApiError, client.UnknownError>;
5
5
  export declare class BotpressCLIError extends VError {
6
6
  static wrap(thrown: unknown, message: string): BotpressCLIError;
7
7
  static map(thrown: unknown): BotpressCLIError;
8
- private readonly _debug;
9
8
  constructor(error: BotpressCLIError, message: string);
10
9
  constructor(message: string);
11
- set debug(msg: string);
12
- get debug(): string;
13
10
  }
14
11
  export declare class ExclusiveBotFeatureError extends BotpressCLIError {
15
12
  constructor();
package/dist/errors.js CHANGED
@@ -47,7 +47,8 @@ var client = __toESM(require("@botpress/client"));
47
47
  var import_axios = __toESM(require("axios"));
48
48
  var import_verror = require("verror");
49
49
  var consts = __toESM(require("./consts"));
50
- const isKnownApiError = (e) => client.isApiError(e) && !(e instanceof client.UnknownError);
50
+ const isUnknownApiError = (e) => client.isApiError(e) && e.type === "Unknown";
51
+ const isKnownApiError = (e) => client.isApiError(e) && e.type !== "Unknown";
51
52
  class BotpressCLIError extends import_verror.VError {
52
53
  static wrap(thrown, message) {
53
54
  const err = BotpressCLIError.map(thrown);
@@ -57,16 +58,18 @@ class BotpressCLIError extends import_verror.VError {
57
58
  if (thrown instanceof BotpressCLIError) {
58
59
  return thrown;
59
60
  }
60
- if (thrown instanceof client.UnknownError) {
61
- let inst;
61
+ if (isUnknownApiError(thrown)) {
62
62
  const cause = thrown.error?.cause;
63
63
  if (cause && typeof cause === "object" && "code" in cause && cause.code === "ECONNREFUSED") {
64
- inst = new HTTPError(500, "The connection was refused by the server");
65
- } else {
66
- inst = new HTTPError(500, "An unknown error has occurred.");
64
+ return new HTTPError(500, "The connection was refused by the server");
67
65
  }
68
- inst.debug = thrown.message;
69
- return inst;
66
+ const unknownMessage = "An unknown API error occurred";
67
+ const actualTrimmedMessage = thrown.message.trim();
68
+ if (!actualTrimmedMessage) {
69
+ return new HTTPError(500, unknownMessage);
70
+ }
71
+ const inner = new HTTPError(500, actualTrimmedMessage);
72
+ return new BotpressCLIError(inner, unknownMessage);
70
73
  }
71
74
  if (isKnownApiError(thrown)) {
72
75
  return HTTPError.fromApi(thrown);
@@ -78,27 +81,14 @@ class BotpressCLIError extends import_verror.VError {
78
81
  const { message } = thrown;
79
82
  return new BotpressCLIError(message);
80
83
  }
81
- return new BotpressCLIError(`${thrown}`);
84
+ return new BotpressCLIError(String(thrown));
82
85
  }
83
- _debug;
84
86
  constructor(first, second) {
85
87
  if (typeof first === "string") {
86
88
  super(first);
87
- this._debug = [];
88
89
  return;
89
90
  }
90
91
  super(first, second);
91
- this._debug = [...first._debug];
92
- }
93
- set debug(msg) {
94
- this._debug.push(msg);
95
- }
96
- get debug() {
97
- const dbgMsgs = this._debug.filter((s) => s.length);
98
- if (!dbgMsgs.length) {
99
- return "";
100
- }
101
- return "Error: \n" + dbgMsgs.map((s) => ` ${s}`).join("\n");
102
92
  }
103
93
  }
104
94
  class ExclusiveBotFeatureError extends BotpressCLIError {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/errors.ts"],
4
- "sourcesContent": ["import * as client from '@botpress/client'\nimport axios, { AxiosError } from 'axios'\nimport { VError } from 'verror'\nimport * as consts from './consts'\n\ntype KnownApiError = Exclude<client.ApiError, client.UnknownError>\nconst isKnownApiError = (e: unknown): e is KnownApiError => client.isApiError(e) && !(e instanceof client.UnknownError)\n\nexport class BotpressCLIError extends VError {\n public static wrap(thrown: unknown, message: string): BotpressCLIError {\n const err = BotpressCLIError.map(thrown)\n return new BotpressCLIError(err, message ?? '')\n }\n\n public static map(thrown: unknown): BotpressCLIError {\n if (thrown instanceof BotpressCLIError) {\n return thrown\n }\n if (thrown instanceof client.UnknownError) {\n let inst: HTTPError\n const cause = thrown.error?.cause\n if (cause && typeof cause === 'object' && 'code' in cause && (cause as any).code === 'ECONNREFUSED') {\n inst = new HTTPError(500, 'The connection was refused by the server')\n } else {\n inst = new HTTPError(500, 'An unknown error has occurred.')\n }\n inst.debug = thrown.message\n return inst\n }\n if (isKnownApiError(thrown)) {\n return HTTPError.fromApi(thrown)\n }\n if (axios.isAxiosError(thrown)) {\n return HTTPError.fromAxios(thrown)\n }\n if (thrown instanceof Error) {\n const { message } = thrown\n return new BotpressCLIError(message)\n }\n return new BotpressCLIError(`${thrown}`)\n }\n\n private readonly _debug: string[]\n\n public constructor(error: BotpressCLIError, message: string)\n public constructor(message: string)\n public constructor(first: BotpressCLIError | string, second?: string) {\n if (typeof first === 'string') {\n super(first)\n this._debug = []\n return\n }\n super(first, second!)\n this._debug = [...first._debug]\n }\n\n public set debug(msg: string) {\n this._debug.push(msg)\n }\n\n public get debug(): string {\n const dbgMsgs = this._debug.filter((s) => s.length)\n if (!dbgMsgs.length) {\n return ''\n }\n return 'Error: \\n' + dbgMsgs.map((s) => ` ${s}`).join('\\n')\n }\n}\n\nexport class ExclusiveBotFeatureError extends BotpressCLIError {\n public constructor() {\n const message = 'This feature is only available for bots. This project is an integration or interface.'\n super(message)\n }\n}\n\nexport class ExclusiveIntegrationFeatureError extends BotpressCLIError {\n public constructor() {\n const message = 'This feature is only available for integration. This project is a bot or interface.'\n super(message)\n }\n}\n\nexport class HTTPError extends BotpressCLIError {\n public constructor(\n public readonly status: number | undefined,\n message: string\n ) {\n super(message)\n }\n\n public static fromAxios(e: AxiosError<{ message?: string }>): HTTPError {\n const message = this._axiosMsg(e)\n return new HTTPError(e.response?.status, message)\n }\n\n public static fromApi(e: KnownApiError): HTTPError {\n const { message, code } = e\n return new HTTPError(code, message)\n }\n\n private static _axiosMsg(e: AxiosError<{ message?: string }>): string {\n let message = e.message\n if (e.response?.statusText) {\n message += `\\n ${e.response?.statusText}`\n }\n if (e.response?.status && e.request?.method && e.request?.path) {\n message += `\\n (${e.response?.status}) ${e.request.method} ${e.request.path}`\n }\n if (e.response?.data?.message) {\n message += `\\n ${e.response?.data?.message}`\n }\n return message\n }\n}\n\nexport class NoBundleFoundError extends BotpressCLIError {\n public constructor() {\n const message = 'No bundle found. Please run `bp bundle` first.'\n super(message)\n }\n}\n\nexport class NoBotsFoundError extends BotpressCLIError {\n public constructor() {\n const message = `No Bot found in your Workspace. Please create one first at ${consts.defaultBotpressAppUrl}.`\n super(message)\n }\n}\n\nexport class NoWorkspacesFoundError extends BotpressCLIError {\n public constructor() {\n const message = 'No Workspace found. Please create one first.'\n super(message)\n }\n}\n\nexport class NotLoggedInError extends BotpressCLIError {\n public constructor() {\n const message = 'Not logged in. Please run `bp login` first.'\n super(message)\n }\n}\n\nexport class ParamRequiredError extends BotpressCLIError {\n public constructor(param: string) {\n const message = `${param} is required.`\n super(message)\n }\n}\n\nexport class InvalidPackageReferenceError extends BotpressCLIError {\n public constructor(ref: string) {\n const message = `Invalid package reference \"${ref}\".`\n super(message)\n }\n}\n\nexport class UnsupportedProjectType extends BotpressCLIError {\n public constructor() {\n const message = 'Unsupported project type.'\n super(message)\n }\n}\n\nexport class ProjectDefinitionNotFoundError extends BotpressCLIError {\n public constructor(workdir: string) {\n const message = `No project definition found at \"${workdir}\".`\n super(message)\n }\n}\n\nexport class AbortedOperationError extends BotpressCLIError {\n public constructor() {\n super('Aborted')\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as client from '@botpress/client'\nimport axios, { AxiosError } from 'axios'\nimport { VError } from 'verror'\nimport * as consts from './consts'\n\ntype KnownApiError = Exclude<client.ApiError, client.UnknownError>\nconst isUnknownApiError = (e: unknown): e is client.UnknownError => client.isApiError(e) && e.type === 'Unknown'\nconst isKnownApiError = (e: unknown): e is KnownApiError => client.isApiError(e) && e.type !== 'Unknown'\n\nexport class BotpressCLIError extends VError {\n public static wrap(thrown: unknown, message: string): BotpressCLIError {\n const err = BotpressCLIError.map(thrown)\n return new BotpressCLIError(err, message ?? '')\n }\n\n public static map(thrown: unknown): BotpressCLIError {\n if (thrown instanceof BotpressCLIError) {\n return thrown\n }\n if (isUnknownApiError(thrown)) {\n const cause = thrown.error?.cause\n if (cause && typeof cause === 'object' && 'code' in cause && cause.code === 'ECONNREFUSED') {\n return new HTTPError(500, 'The connection was refused by the server')\n }\n\n const unknownMessage = 'An unknown API error occurred'\n const actualTrimmedMessage = thrown.message.trim()\n if (!actualTrimmedMessage) {\n return new HTTPError(500, unknownMessage)\n }\n\n const inner = new HTTPError(500, actualTrimmedMessage)\n return new BotpressCLIError(inner, unknownMessage)\n }\n if (isKnownApiError(thrown)) {\n return HTTPError.fromApi(thrown)\n }\n if (axios.isAxiosError(thrown)) {\n return HTTPError.fromAxios(thrown)\n }\n if (thrown instanceof Error) {\n const { message } = thrown\n return new BotpressCLIError(message)\n }\n return new BotpressCLIError(String(thrown))\n }\n\n public constructor(error: BotpressCLIError, message: string)\n public constructor(message: string)\n public constructor(first: BotpressCLIError | string, second?: string) {\n if (typeof first === 'string') {\n super(first)\n return\n }\n super(first, second!)\n }\n}\n\nexport class ExclusiveBotFeatureError extends BotpressCLIError {\n public constructor() {\n const message = 'This feature is only available for bots. This project is an integration or interface.'\n super(message)\n }\n}\n\nexport class ExclusiveIntegrationFeatureError extends BotpressCLIError {\n public constructor() {\n const message = 'This feature is only available for integration. This project is a bot or interface.'\n super(message)\n }\n}\n\nexport class HTTPError extends BotpressCLIError {\n public constructor(\n public readonly status: number | undefined,\n message: string\n ) {\n super(message)\n }\n\n public static fromAxios(e: AxiosError<{ message?: string }>): HTTPError {\n const message = this._axiosMsg(e)\n return new HTTPError(e.response?.status, message)\n }\n\n public static fromApi(e: KnownApiError): HTTPError {\n const { message, code } = e\n return new HTTPError(code, message)\n }\n\n private static _axiosMsg(e: AxiosError<{ message?: string }>): string {\n let message = e.message\n if (e.response?.statusText) {\n message += `\\n ${e.response?.statusText}`\n }\n if (e.response?.status && e.request?.method && e.request?.path) {\n message += `\\n (${e.response?.status}) ${e.request.method} ${e.request.path}`\n }\n if (e.response?.data?.message) {\n message += `\\n ${e.response?.data?.message}`\n }\n return message\n }\n}\n\nexport class NoBundleFoundError extends BotpressCLIError {\n public constructor() {\n const message = 'No bundle found. Please run `bp bundle` first.'\n super(message)\n }\n}\n\nexport class NoBotsFoundError extends BotpressCLIError {\n public constructor() {\n const message = `No Bot found in your Workspace. Please create one first at ${consts.defaultBotpressAppUrl}.`\n super(message)\n }\n}\n\nexport class NoWorkspacesFoundError extends BotpressCLIError {\n public constructor() {\n const message = 'No Workspace found. Please create one first.'\n super(message)\n }\n}\n\nexport class NotLoggedInError extends BotpressCLIError {\n public constructor() {\n const message = 'Not logged in. Please run `bp login` first.'\n super(message)\n }\n}\n\nexport class ParamRequiredError extends BotpressCLIError {\n public constructor(param: string) {\n const message = `${param} is required.`\n super(message)\n }\n}\n\nexport class InvalidPackageReferenceError extends BotpressCLIError {\n public constructor(ref: string) {\n const message = `Invalid package reference \"${ref}\".`\n super(message)\n }\n}\n\nexport class UnsupportedProjectType extends BotpressCLIError {\n public constructor() {\n const message = 'Unsupported project type.'\n super(message)\n }\n}\n\nexport class ProjectDefinitionNotFoundError extends BotpressCLIError {\n public constructor(workdir: string) {\n const message = `No project definition found at \"${workdir}\".`\n super(message)\n }\n}\n\nexport class AbortedOperationError extends BotpressCLIError {\n public constructor() {\n super('Aborted')\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["axios"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botpress/cli",
3
- "version": "4.25.3",
3
+ "version": "4.26.0",
4
4
  "description": "Botpress CLI",
5
5
  "scripts": {
6
6
  "build": "pnpm run build:types && pnpm run bundle && pnpm run template:gen",