@botpress/cli 6.8.7 → 6.8.9
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.
- package/.turbo/turbo-build.log +11 -11
- package/dist/api/client.d.ts +2 -0
- package/dist/api/client.js +21 -4
- package/dist/api/client.js.map +2 -2
- package/dist/api/types.d.ts +1 -0
- package/dist/api/types.js.map +1 -1
- package/dist/command-definitions.d.ts +5 -0
- package/dist/command-implementations/deploy-command.js +14 -2
- package/dist/command-implementations/deploy-command.js.map +2 -2
- package/dist/command-implementations/index.d.ts +5 -0
- package/dist/command-implementations/project-command.js +8 -4
- package/dist/command-implementations/project-command.js.map +2 -2
- package/dist/config.d.ts +5 -0
- package/dist/config.js +5 -0
- package/dist/config.js.map +2 -2
- package/dist/index.d.ts +5 -0
- package/dist/tables/schemas.d.ts +20 -20
- package/package.json +4 -4
- package/templates/empty-bot/package.json +2 -2
- package/templates/empty-integration/package.json +2 -2
- package/templates/empty-plugin/package.json +1 -1
- package/templates/hello-world/package.json +2 -2
- package/templates/webhook-message/package.json +2 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
|
|
2
|
-
> @botpress/cli@6.8.
|
|
2
|
+
> @botpress/cli@6.8.9 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@6.8.
|
|
6
|
+
> @botpress/cli@6.8.9 build:types /home/runner/work/botpress/botpress/packages/cli
|
|
7
7
|
> tsc -p ./tsconfig.build.json
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
> @botpress/cli@6.8.
|
|
10
|
+
> @botpress/cli@6.8.9 bundle /home/runner/work/botpress/botpress/packages/cli
|
|
11
11
|
> ts-node -T build.ts
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
> @botpress/cli@6.8.
|
|
14
|
+
> @botpress/cli@6.8.9 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 v6.8.
|
|
17
|
+
🤖 Botpress CLI v6.8.9
|
|
18
18
|
● Checking if cli is up to date
|
|
19
|
-
🤖 Botpress CLI v6.8.
|
|
19
|
+
🤖 Botpress CLI v6.8.9
|
|
20
20
|
● Checking if cli is up to date
|
|
21
|
-
🤖 Botpress CLI v6.8.
|
|
21
|
+
🤖 Botpress CLI v6.8.9
|
|
22
22
|
● Checking if cli is up to date
|
|
23
|
-
🤖 Botpress CLI v6.8.
|
|
23
|
+
🤖 Botpress CLI v6.8.9
|
|
24
24
|
● Checking if cli is up to date
|
|
25
25
|
● Checking if sdk is up to date
|
|
26
26
|
● Checking if sdk is up to date
|
|
@@ -28,8 +28,6 @@
|
|
|
28
28
|
● Checking if sdk is up to date
|
|
29
29
|
○ Generating typings for integration hello-world...
|
|
30
30
|
○ Generating typings for plugin empty-plugin...
|
|
31
|
-
✓ Typings available at .botpress
|
|
32
|
-
|
|
33
31
|
○ Generating typings for bot...
|
|
34
32
|
✓ Typings available at .botpress
|
|
35
33
|
|
|
@@ -38,7 +36,9 @@
|
|
|
38
36
|
○ Generating typings for integration empty-integration...
|
|
39
37
|
✓ Typings available at .botpress
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
✓ Typings available at .botpress
|
|
40
|
+
|
|
41
|
+
🤖 Botpress CLI v6.8.9
|
|
42
42
|
● Checking if cli is up to date
|
|
43
43
|
● Checking if sdk is up to date
|
|
44
44
|
○ Generating typings for integration webhook-message...
|
package/dist/api/client.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class ApiClient {
|
|
|
15
15
|
readonly token: string;
|
|
16
16
|
readonly workspaceId: string;
|
|
17
17
|
readonly botId?: string;
|
|
18
|
+
readonly extraHeaders: Record<string, string>;
|
|
18
19
|
static newClient: (props: ApiClientProps, logger: Logger) => ApiClient;
|
|
19
20
|
constructor(props: ApiClientProps, _logger: Logger);
|
|
20
21
|
get isBotpressWorkspace(): boolean;
|
|
@@ -27,6 +28,7 @@ export declare class ApiClient {
|
|
|
27
28
|
}>;
|
|
28
29
|
getWorkspace(): Promise<client.ClientOutputs['getWorkspace']>;
|
|
29
30
|
findWorkspaceByHandle(handle: string): Promise<client.ClientOutputs['getWorkspace'] | undefined>;
|
|
31
|
+
withExtraHeaders(headers: Record<string, string>): ApiClient;
|
|
30
32
|
switchWorkspace(workspaceId: string): ApiClient;
|
|
31
33
|
switchBot(botId: string): ApiClient;
|
|
32
34
|
updateWorkspace(props: utils.types.SafeOmit<client.ClientInputs['updateWorkspace'], 'id'>): Promise<client.ClientOutputs['updateWorkspace']>;
|
package/dist/api/client.js
CHANGED
|
@@ -43,25 +43,27 @@ __reExport(client_exports, require("./types"), module.exports);
|
|
|
43
43
|
class ApiClient {
|
|
44
44
|
constructor(props, _logger) {
|
|
45
45
|
this._logger = _logger;
|
|
46
|
-
const { apiUrl, token, workspaceId, botId } = props;
|
|
46
|
+
const { apiUrl, token, workspaceId, botId, extraHeaders = {} } = props;
|
|
47
47
|
this.client = new client.Client({
|
|
48
48
|
apiUrl,
|
|
49
49
|
token,
|
|
50
50
|
workspaceId,
|
|
51
51
|
botId,
|
|
52
52
|
retry: retry.config,
|
|
53
|
-
headers: { "x-multiple-integrations": "true" }
|
|
53
|
+
headers: { "x-multiple-integrations": "true", ...extraHeaders }
|
|
54
54
|
});
|
|
55
55
|
this.url = apiUrl;
|
|
56
56
|
this.token = token;
|
|
57
57
|
this.workspaceId = workspaceId;
|
|
58
58
|
this.botId = botId;
|
|
59
|
+
this.extraHeaders = extraHeaders;
|
|
59
60
|
}
|
|
60
61
|
client;
|
|
61
62
|
url;
|
|
62
63
|
token;
|
|
63
64
|
workspaceId;
|
|
64
65
|
botId;
|
|
66
|
+
extraHeaders;
|
|
65
67
|
static newClient = (props, logger) => new ApiClient(props, logger);
|
|
66
68
|
get isBotpressWorkspace() {
|
|
67
69
|
const isBotpressWorkspace = (0, import_yn.default)(process.env.BP_IS_BOTPRESS_WORKSPACE);
|
|
@@ -90,12 +92,27 @@ class ApiClient {
|
|
|
90
92
|
const { workspaces } = await this.client.listWorkspaces({ handle });
|
|
91
93
|
return workspaces[0];
|
|
92
94
|
}
|
|
95
|
+
withExtraHeaders(headers) {
|
|
96
|
+
return ApiClient.newClient(
|
|
97
|
+
{
|
|
98
|
+
apiUrl: this.url,
|
|
99
|
+
token: this.token,
|
|
100
|
+
workspaceId: this.workspaceId,
|
|
101
|
+
botId: this.botId,
|
|
102
|
+
extraHeaders: { ...this.extraHeaders, ...headers }
|
|
103
|
+
},
|
|
104
|
+
this._logger
|
|
105
|
+
);
|
|
106
|
+
}
|
|
93
107
|
switchWorkspace(workspaceId) {
|
|
94
|
-
return ApiClient.newClient(
|
|
108
|
+
return ApiClient.newClient(
|
|
109
|
+
{ apiUrl: this.url, token: this.token, workspaceId, extraHeaders: this.extraHeaders },
|
|
110
|
+
this._logger
|
|
111
|
+
);
|
|
95
112
|
}
|
|
96
113
|
switchBot(botId) {
|
|
97
114
|
return ApiClient.newClient(
|
|
98
|
-
{ apiUrl: this.url, token: this.token, botId, workspaceId: this.workspaceId },
|
|
115
|
+
{ apiUrl: this.url, token: this.token, botId, workspaceId: this.workspaceId, extraHeaders: this.extraHeaders },
|
|
99
116
|
this._logger
|
|
100
117
|
);
|
|
101
118
|
}
|
package/dist/api/client.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/api/client.ts"],
|
|
4
|
-
"sourcesContent": ["import * as client from '@botpress/client'\nimport semver from 'semver'\nimport yn from 'yn'\nimport * as errors from '../errors'\nimport type { Logger } from '../logger'\nimport { formatPackageRef, ApiPackageRef, NamePackageRef } from '../package-ref'\nimport * as utils from '../utils'\nimport * as paging from './paging'\nimport * as retry from './retry'\n\nimport {\n ApiClientProps,\n PublicOrUnlistedIntegration,\n PrivateIntegration,\n PublicOrPrivateIntegration,\n PublicInterface,\n PrivateInterface,\n PublicOrPrivateInterface,\n PrivatePlugin,\n PublicPlugin,\n PublicOrPrivatePlugin,\n BotSummary,\n} from './types'\n\nexport * from './types'\n\n/**\n * This class is used to wrap the Botpress API and provide a more convenient way to interact with it.\n */\nexport class ApiClient {\n public readonly client: client.Client\n public readonly url: string\n public readonly token: string\n public readonly workspaceId: string\n public readonly botId?: string\n\n public static newClient = (props: ApiClientProps, logger: Logger) => new ApiClient(props, logger)\n\n public constructor(\n props: ApiClientProps,\n private _logger: Logger\n ) {\n const { apiUrl, token, workspaceId, botId } = props\n this.client = new client.Client({\n apiUrl,\n token,\n workspaceId,\n botId,\n retry: retry.config,\n headers: { 'x-multiple-integrations': 'true' },\n })\n this.url = apiUrl\n this.token = token\n this.workspaceId = workspaceId\n this.botId = botId\n }\n\n public get isBotpressWorkspace(): boolean {\n // this environment variable is undocumented and only used internally for dev purposes\n const isBotpressWorkspace = yn(process.env.BP_IS_BOTPRESS_WORKSPACE)\n if (isBotpressWorkspace !== undefined) {\n return isBotpressWorkspace\n }\n return [\n '6a76fa10-e150-4ff6-8f59-a300feec06c1',\n '95de33eb-1551-4af9-9088-e5dcb02efd09',\n '11111111-1111-1111-aaaa-111111111111',\n ].includes(this.workspaceId)\n }\n\n public async safeListTables(req: client.ClientInputs['listTables']): Promise<\n | {\n success: true\n tables: client.ClientOutputs['listTables']['tables']\n }\n | {\n success: false\n error: Error\n }\n > {\n try {\n const result = await this.client.listTables(req)\n return { success: true, tables: result.tables }\n } catch (thrown) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown))\n return { success: false, error }\n }\n }\n\n public async getWorkspace(): Promise<client.ClientOutputs['getWorkspace']> {\n return this.client.getWorkspace({ id: this.workspaceId })\n }\n\n public async findWorkspaceByHandle(handle: string): Promise<client.ClientOutputs['getWorkspace'] | undefined> {\n const { workspaces } = await this.client.listWorkspaces({ handle })\n return workspaces[0] // There should be only one workspace with a given handle\n }\n\n public switchWorkspace(workspaceId: string): ApiClient {\n return ApiClient.newClient({ apiUrl: this.url, token: this.token, workspaceId }, this._logger)\n }\n\n public switchBot(botId: string): ApiClient {\n return ApiClient.newClient(\n { apiUrl: this.url, token: this.token, botId, workspaceId: this.workspaceId },\n this._logger\n )\n }\n\n public async updateWorkspace(\n props: utils.types.SafeOmit<client.ClientInputs['updateWorkspace'], 'id'>\n ): Promise<client.ClientOutputs['updateWorkspace']> {\n return this.client.updateWorkspace({ id: this.workspaceId, ...props })\n }\n\n public async getPublicOrPrivateIntegration(ref: ApiPackageRef): Promise<PublicOrPrivateIntegration> {\n const integration = await this.findPublicOrPrivateIntegration(ref)\n if (!integration) {\n throw new Error(`Integration \"${formatPackageRef(ref)}\" not found`)\n }\n return integration\n }\n\n public async findPublicOrPrivateIntegration(ref: ApiPackageRef): Promise<PublicOrPrivateIntegration | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privateIntegration = await this.findPrivateIntegration(ref)\n if (privateIntegration) {\n this._logger.debug(`Found integration \"${formatted}\" in workspace`)\n return privateIntegration\n }\n\n const publicIntegration = await this.findPublicIntegration(ref)\n if (publicIntegration) {\n this._logger.debug(`Found integration \"${formatted}\" in hub`)\n return publicIntegration\n }\n\n return\n }\n\n public async findPrivateIntegration(ref: ApiPackageRef): Promise<PrivateIntegration | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getIntegration(ref)\n .then((r) => ({ ...r.integration, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getIntegrationByName(ref)\n .then((r) => ({ ...r.integration, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicIntegration(ref: ApiPackageRef): Promise<PublicOrUnlistedIntegration | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicIntegrationById(ref)\n .then((r) => ({ ...r.integration, visibility: r.integration.visibility as 'public' | 'unlisted' }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getPublicIntegration(ref)\n .then((r) => ({ ...r.integration, visibility: r.integration.visibility as 'public' | 'unlisted' }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicOrPrivateInterface(ref: ApiPackageRef): Promise<PublicOrPrivateInterface | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privateInterface = await this.findPrivateInterface(ref)\n if (privateInterface) {\n this._logger.debug(`Found interface \"${formatted}\" in workspace`)\n return privateInterface\n }\n\n const publicInterface = await this.findPublicInterface(ref)\n if (publicInterface) {\n this._logger.debug(`Found interface \"${formatted}\" in hub`)\n return publicInterface\n }\n\n return\n }\n\n public async findPrivateInterface(ref: ApiPackageRef): Promise<PrivateInterface | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getInterface(ref)\n .then((r) => ({ ...r.interface, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getInterfaceByName(ref)\n .then((r) => ({ ...r.interface, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async getPublicInterface(ref: ApiPackageRef): Promise<PublicInterface> {\n const intrface = await this.findPublicInterface(ref)\n if (!intrface) {\n throw new Error(`Interface \"${formatPackageRef(ref)}\" not found`)\n }\n return intrface\n }\n\n public async findPublicInterface(ref: ApiPackageRef): Promise<PublicInterface | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicInterfaceById(ref)\n .then((r) => ({ ...r.interface, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n return this.client\n .getPublicInterface(ref)\n .then((r) => ({ ...r.interface, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicPlugin(ref: ApiPackageRef): Promise<PublicPlugin | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicPluginById(ref)\n .then((r) => ({ ...r.plugin, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n return this.client\n .getPublicPlugin(ref)\n .then((r) => ({ ...r.plugin, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async getPublicOrPrivatePlugin(ref: ApiPackageRef): Promise<PublicOrPrivatePlugin> {\n const plugin = await this.findPublicOrPrivatePlugin(ref)\n if (!plugin) {\n throw new Error(`Plugin \"${formatPackageRef(ref)}\" not found`)\n }\n return plugin\n }\n\n public async findPublicOrPrivatePlugin(ref: ApiPackageRef): Promise<PublicOrPrivatePlugin | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privatePlugin = await this.findPrivatePlugin(ref)\n if (privatePlugin) {\n this._logger.debug(`Found plugin \"${formatted}\" in workspace`)\n return privatePlugin\n }\n\n const publicPlugin = await this.findPublicPlugin(ref)\n if (publicPlugin) {\n this._logger.debug(`Found plugin \"${formatted}\" in hub`)\n return publicPlugin\n }\n\n return\n }\n\n public async findPrivatePlugin(ref: ApiPackageRef): Promise<PrivatePlugin | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getPlugin(ref)\n .then((r) => ({ ...r.plugin, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getPluginByName(ref)\n .then((r) => ({ ...r.plugin, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async testLogin(): Promise<void> {\n await this.client.listBots({})\n }\n\n public listAllPages = paging.listAllPages\n\n public async findPreviousIntegrationVersion(ref: NamePackageRef): Promise<PublicOrPrivateIntegration | undefined> {\n const isValidSemverVersion = semver.valid(ref.version)\n\n // Sanity check (this should never happen):\n if (!isValidSemverVersion) {\n throw new errors.BotpressCLIError(`Invalid version \"${ref.version}\" for integration \"${ref.name}\"`)\n }\n\n return this.findPublicOrPrivateIntegration({ ...ref, version: `<${ref.version}` })\n }\n\n public async findBotByName(name: string): Promise<BotSummary | undefined> {\n // api does not allow filtering bots by name\n const allBots = await this.listAllPages(this.client.listBots, (r) => r.bots)\n return allBots.find((b) => b.name === name)\n }\n\n private _returnUndefinedOnError =\n (type: client.ApiError['type']) =>\n (thrown: any): undefined => {\n if (client.isApiError(thrown) && thrown.type === type) {\n return\n }\n throw thrown\n }\n\n public async getOrGenerateShareableId(\n botId: string,\n integrationId: string,\n integrationAlias: string\n ): Promise<string> {\n const { shareableId, isExpired } = await this.client\n .getIntegrationShareableId({\n botId,\n integrationId,\n integrationInstanceAlias: integrationAlias,\n })\n .catch(() => ({ shareableId: undefined, isExpired: true }))\n if (shareableId && !isExpired) {\n return shareableId\n }\n const { shareableId: newShareableId } = await this.client.createIntegrationShareableId({\n botId,\n integrationId,\n integrationInstanceAlias: integrationAlias,\n })\n return newShareableId\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAwB;AACxB,oBAAmB;AACnB,gBAAe;AACf,aAAwB;AAExB,yBAAgE;AAEhE,aAAwB;AACxB,YAAuB;
|
|
4
|
+
"sourcesContent": ["import * as client from '@botpress/client'\nimport semver from 'semver'\nimport yn from 'yn'\nimport * as errors from '../errors'\nimport type { Logger } from '../logger'\nimport { formatPackageRef, ApiPackageRef, NamePackageRef } from '../package-ref'\nimport * as utils from '../utils'\nimport * as paging from './paging'\nimport * as retry from './retry'\n\nimport {\n ApiClientProps,\n PublicOrUnlistedIntegration,\n PrivateIntegration,\n PublicOrPrivateIntegration,\n PublicInterface,\n PrivateInterface,\n PublicOrPrivateInterface,\n PrivatePlugin,\n PublicPlugin,\n PublicOrPrivatePlugin,\n BotSummary,\n} from './types'\nexport * from './types'\n\n/**\n * This class is used to wrap the Botpress API and provide a more convenient way to interact with it.\n */\nexport class ApiClient {\n public readonly client: client.Client\n public readonly url: string\n public readonly token: string\n public readonly workspaceId: string\n public readonly botId?: string\n public readonly extraHeaders: Record<string, string>\n\n public static newClient = (props: ApiClientProps, logger: Logger) => new ApiClient(props, logger)\n\n public constructor(\n props: ApiClientProps,\n private _logger: Logger\n ) {\n const { apiUrl, token, workspaceId, botId, extraHeaders = {} } = props\n this.client = new client.Client({\n apiUrl,\n token,\n workspaceId,\n botId,\n retry: retry.config,\n headers: { 'x-multiple-integrations': 'true', ...extraHeaders },\n })\n this.url = apiUrl\n this.token = token\n this.workspaceId = workspaceId\n this.botId = botId\n this.extraHeaders = extraHeaders\n }\n\n public get isBotpressWorkspace(): boolean {\n // this environment variable is undocumented and only used internally for dev purposes\n const isBotpressWorkspace = yn(process.env.BP_IS_BOTPRESS_WORKSPACE)\n if (isBotpressWorkspace !== undefined) {\n return isBotpressWorkspace\n }\n return [\n '6a76fa10-e150-4ff6-8f59-a300feec06c1',\n '95de33eb-1551-4af9-9088-e5dcb02efd09',\n '11111111-1111-1111-aaaa-111111111111',\n ].includes(this.workspaceId)\n }\n\n public async safeListTables(req: client.ClientInputs['listTables']): Promise<\n | {\n success: true\n tables: client.ClientOutputs['listTables']['tables']\n }\n | {\n success: false\n error: Error\n }\n > {\n try {\n const result = await this.client.listTables(req)\n return { success: true, tables: result.tables }\n } catch (thrown) {\n const error = thrown instanceof Error ? thrown : new Error(String(thrown))\n return { success: false, error }\n }\n }\n\n public async getWorkspace(): Promise<client.ClientOutputs['getWorkspace']> {\n return this.client.getWorkspace({ id: this.workspaceId })\n }\n\n public async findWorkspaceByHandle(handle: string): Promise<client.ClientOutputs['getWorkspace'] | undefined> {\n const { workspaces } = await this.client.listWorkspaces({ handle })\n return workspaces[0] // There should be only one workspace with a given handle\n }\n\n public withExtraHeaders(headers: Record<string, string>): ApiClient {\n return ApiClient.newClient(\n {\n apiUrl: this.url,\n token: this.token,\n workspaceId: this.workspaceId,\n botId: this.botId,\n extraHeaders: { ...this.extraHeaders, ...headers },\n },\n this._logger\n )\n }\n\n public switchWorkspace(workspaceId: string): ApiClient {\n return ApiClient.newClient(\n { apiUrl: this.url, token: this.token, workspaceId, extraHeaders: this.extraHeaders },\n this._logger\n )\n }\n\n public switchBot(botId: string): ApiClient {\n return ApiClient.newClient(\n { apiUrl: this.url, token: this.token, botId, workspaceId: this.workspaceId, extraHeaders: this.extraHeaders },\n this._logger\n )\n }\n\n public async updateWorkspace(\n props: utils.types.SafeOmit<client.ClientInputs['updateWorkspace'], 'id'>\n ): Promise<client.ClientOutputs['updateWorkspace']> {\n return this.client.updateWorkspace({ id: this.workspaceId, ...props })\n }\n\n public async getPublicOrPrivateIntegration(ref: ApiPackageRef): Promise<PublicOrPrivateIntegration> {\n const integration = await this.findPublicOrPrivateIntegration(ref)\n if (!integration) {\n throw new Error(`Integration \"${formatPackageRef(ref)}\" not found`)\n }\n return integration\n }\n\n public async findPublicOrPrivateIntegration(ref: ApiPackageRef): Promise<PublicOrPrivateIntegration | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privateIntegration = await this.findPrivateIntegration(ref)\n if (privateIntegration) {\n this._logger.debug(`Found integration \"${formatted}\" in workspace`)\n return privateIntegration\n }\n\n const publicIntegration = await this.findPublicIntegration(ref)\n if (publicIntegration) {\n this._logger.debug(`Found integration \"${formatted}\" in hub`)\n return publicIntegration\n }\n\n return\n }\n\n public async findPrivateIntegration(ref: ApiPackageRef): Promise<PrivateIntegration | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getIntegration(ref)\n .then((r) => ({ ...r.integration, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getIntegrationByName(ref)\n .then((r) => ({ ...r.integration, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicIntegration(ref: ApiPackageRef): Promise<PublicOrUnlistedIntegration | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicIntegrationById(ref)\n .then((r) => ({ ...r.integration, visibility: r.integration.visibility as 'public' | 'unlisted' }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getPublicIntegration(ref)\n .then((r) => ({ ...r.integration, visibility: r.integration.visibility as 'public' | 'unlisted' }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicOrPrivateInterface(ref: ApiPackageRef): Promise<PublicOrPrivateInterface | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privateInterface = await this.findPrivateInterface(ref)\n if (privateInterface) {\n this._logger.debug(`Found interface \"${formatted}\" in workspace`)\n return privateInterface\n }\n\n const publicInterface = await this.findPublicInterface(ref)\n if (publicInterface) {\n this._logger.debug(`Found interface \"${formatted}\" in hub`)\n return publicInterface\n }\n\n return\n }\n\n public async findPrivateInterface(ref: ApiPackageRef): Promise<PrivateInterface | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getInterface(ref)\n .then((r) => ({ ...r.interface, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getInterfaceByName(ref)\n .then((r) => ({ ...r.interface, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async getPublicInterface(ref: ApiPackageRef): Promise<PublicInterface> {\n const intrface = await this.findPublicInterface(ref)\n if (!intrface) {\n throw new Error(`Interface \"${formatPackageRef(ref)}\" not found`)\n }\n return intrface\n }\n\n public async findPublicInterface(ref: ApiPackageRef): Promise<PublicInterface | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicInterfaceById(ref)\n .then((r) => ({ ...r.interface, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n return this.client\n .getPublicInterface(ref)\n .then((r) => ({ ...r.interface, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async findPublicPlugin(ref: ApiPackageRef): Promise<PublicPlugin | undefined> {\n if (ref.type === 'id') {\n return this.client\n .getPublicPluginById(ref)\n .then((r) => ({ ...r.plugin, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n return this.client\n .getPublicPlugin(ref)\n .then((r) => ({ ...r.plugin, public: true }) as const)\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async getPublicOrPrivatePlugin(ref: ApiPackageRef): Promise<PublicOrPrivatePlugin> {\n const plugin = await this.findPublicOrPrivatePlugin(ref)\n if (!plugin) {\n throw new Error(`Plugin \"${formatPackageRef(ref)}\" not found`)\n }\n return plugin\n }\n\n public async findPublicOrPrivatePlugin(ref: ApiPackageRef): Promise<PublicOrPrivatePlugin | undefined> {\n const formatted = formatPackageRef(ref)\n\n const privatePlugin = await this.findPrivatePlugin(ref)\n if (privatePlugin) {\n this._logger.debug(`Found plugin \"${formatted}\" in workspace`)\n return privatePlugin\n }\n\n const publicPlugin = await this.findPublicPlugin(ref)\n if (publicPlugin) {\n this._logger.debug(`Found plugin \"${formatted}\" in hub`)\n return publicPlugin\n }\n\n return\n }\n\n public async findPrivatePlugin(ref: ApiPackageRef): Promise<PrivatePlugin | undefined> {\n const { workspaceId } = this\n if (ref.type === 'id') {\n return this.client\n .getPlugin(ref)\n .then((r) => ({ ...r.plugin, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n return this.client\n .getPluginByName(ref)\n .then((r) => ({ ...r.plugin, workspaceId }))\n .catch(this._returnUndefinedOnError('ResourceNotFound'))\n }\n\n public async testLogin(): Promise<void> {\n await this.client.listBots({})\n }\n\n public listAllPages = paging.listAllPages\n\n public async findPreviousIntegrationVersion(ref: NamePackageRef): Promise<PublicOrPrivateIntegration | undefined> {\n const isValidSemverVersion = semver.valid(ref.version)\n\n // Sanity check (this should never happen):\n if (!isValidSemverVersion) {\n throw new errors.BotpressCLIError(`Invalid version \"${ref.version}\" for integration \"${ref.name}\"`)\n }\n\n return this.findPublicOrPrivateIntegration({ ...ref, version: `<${ref.version}` })\n }\n\n public async findBotByName(name: string): Promise<BotSummary | undefined> {\n // api does not allow filtering bots by name\n const allBots = await this.listAllPages(this.client.listBots, (r) => r.bots)\n return allBots.find((b) => b.name === name)\n }\n\n private _returnUndefinedOnError =\n (type: client.ApiError['type']) =>\n (thrown: any): undefined => {\n if (client.isApiError(thrown) && thrown.type === type) {\n return\n }\n throw thrown\n }\n\n public async getOrGenerateShareableId(\n botId: string,\n integrationId: string,\n integrationAlias: string\n ): Promise<string> {\n const { shareableId, isExpired } = await this.client\n .getIntegrationShareableId({\n botId,\n integrationId,\n integrationInstanceAlias: integrationAlias,\n })\n .catch(() => ({ shareableId: undefined, isExpired: true }))\n if (shareableId && !isExpired) {\n return shareableId\n }\n const { shareableId: newShareableId } = await this.client.createIntegrationShareableId({\n botId,\n integrationId,\n integrationInstanceAlias: integrationAlias,\n })\n return newShareableId\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["yn", "semver"]
|
|
7
7
|
}
|
package/dist/api/types.d.ts
CHANGED
package/dist/api/types.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/api/types.ts"],
|
|
4
|
-
"sourcesContent": ["import * as client from '@botpress/client'\nimport { Logger } from '../logger'\nimport { SafeOmit, Merge } from '../utils/type-utils'\nimport { ApiClient } from './client'\n\nexport type ApiClientProps = {\n apiUrl: string\n token: string\n workspaceId: string\n botId?: string\n}\n\nexport type ApiClientFactory = {\n newClient: (props: ApiClientProps, logger: Logger) => ApiClient\n}\n\nexport type PublicOrUnlistedIntegration = client.Integration & { visibility: 'public' | 'unlisted' }\nexport type PrivateIntegration = client.Integration & { workspaceId: string }\nexport type PublicOrPrivateIntegration = client.Integration & { workspaceId?: string }\nexport type IntegrationSummary = (\n | client.ClientOutputs['listIntegrations']\n | client.ClientOutputs['listPublicIntegrations']\n)['integrations'][number]\nexport type BotSummary = client.ClientOutputs['listBots']['bots'][number]\nexport type PublicInterface = client.Interface & { public: true }\nexport type PrivateInterface = client.Interface & { workspaceId: string }\nexport type PublicOrPrivateInterface = client.Interface & { workspaceId?: string }\nexport type PublicPlugin = client.Plugin & { public: true }\nexport type PrivatePlugin = client.Plugin & { workspaceId: string }\nexport type PublicOrPrivatePlugin = client.Plugin & { workspaceId?: string }\n\nexport type CreateBotRequestBody = client.ClientInputs['createBot']\nexport type UpdateBotRequestBody = client.ClientInputs['updateBot']\n\nexport type CreateIntegrationRequestBody = client.ClientInputs['createIntegration']\nexport type UpdateIntegrationRequestBody = client.ClientInputs['updateIntegration']\n\nexport type CreateInterfaceRequestBody = client.ClientInputs['createInterface']\nexport type UpdateInterfaceRequestBody = client.ClientInputs['updateInterface']\n\ntype PluginDependency = client.Plugin['dependencies']['integrations'][string]\n\nexport type CreatePluginRequestBody = Merge<\n SafeOmit<client.ClientInputs['createPlugin'], 'code'>,\n {\n dependencies?: {\n integrations?: Record<string, PluginDependency>\n interfaces?: Record<string, PluginDependency>\n }\n }\n>\n\nexport type UpdatePluginRequestBody = Merge<\n client.ClientInputs['updatePlugin'],\n {\n dependencies?: {\n integrations?: Record<string, PluginDependency | null>\n interfaces?: Record<string, PluginDependency | null>\n }\n }\n>\n"],
|
|
4
|
+
"sourcesContent": ["import * as client from '@botpress/client'\nimport { Logger } from '../logger'\nimport { SafeOmit, Merge } from '../utils/type-utils'\nimport { ApiClient } from './client'\n\nexport type ApiClientProps = {\n apiUrl: string\n token: string\n workspaceId: string\n botId?: string\n extraHeaders?: Record<string, string>\n}\n\nexport type ApiClientFactory = {\n newClient: (props: ApiClientProps, logger: Logger) => ApiClient\n}\n\nexport type PublicOrUnlistedIntegration = client.Integration & { visibility: 'public' | 'unlisted' }\nexport type PrivateIntegration = client.Integration & { workspaceId: string }\nexport type PublicOrPrivateIntegration = client.Integration & { workspaceId?: string }\nexport type IntegrationSummary = (\n | client.ClientOutputs['listIntegrations']\n | client.ClientOutputs['listPublicIntegrations']\n)['integrations'][number]\nexport type BotSummary = client.ClientOutputs['listBots']['bots'][number]\nexport type PublicInterface = client.Interface & { public: true }\nexport type PrivateInterface = client.Interface & { workspaceId: string }\nexport type PublicOrPrivateInterface = client.Interface & { workspaceId?: string }\nexport type PublicPlugin = client.Plugin & { public: true }\nexport type PrivatePlugin = client.Plugin & { workspaceId: string }\nexport type PublicOrPrivatePlugin = client.Plugin & { workspaceId?: string }\n\nexport type CreateBotRequestBody = client.ClientInputs['createBot']\nexport type UpdateBotRequestBody = client.ClientInputs['updateBot']\n\nexport type CreateIntegrationRequestBody = client.ClientInputs['createIntegration']\nexport type UpdateIntegrationRequestBody = client.ClientInputs['updateIntegration']\n\nexport type CreateInterfaceRequestBody = client.ClientInputs['createInterface']\nexport type UpdateInterfaceRequestBody = client.ClientInputs['updateInterface']\n\ntype PluginDependency = client.Plugin['dependencies']['integrations'][string]\n\nexport type CreatePluginRequestBody = Merge<\n SafeOmit<client.ClientInputs['createPlugin'], 'code'>,\n {\n dependencies?: {\n integrations?: Record<string, PluginDependency>\n interfaces?: Record<string, PluginDependency>\n }\n }\n>\n\nexport type UpdatePluginRequestBody = Merge<\n client.ClientInputs['updatePlugin'],\n {\n dependencies?: {\n integrations?: Record<string, PluginDependency | null>\n interfaces?: Record<string, PluginDependency | null>\n }\n }\n>\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1098,6 +1098,11 @@ declare const _default: {
|
|
|
1098
1098
|
readonly type: "string";
|
|
1099
1099
|
readonly description: "Custom URL for the integration. Only used when deploying an integration";
|
|
1100
1100
|
};
|
|
1101
|
+
readonly bypassBreakingChangeDetection: {
|
|
1102
|
+
readonly type: "boolean";
|
|
1103
|
+
readonly hidden: true;
|
|
1104
|
+
readonly default: false;
|
|
1105
|
+
};
|
|
1101
1106
|
readonly secrets: {
|
|
1102
1107
|
type: "string";
|
|
1103
1108
|
description: string;
|
|
@@ -31,6 +31,7 @@ __export(deploy_command_exports, {
|
|
|
31
31
|
DeployCommand: () => DeployCommand
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(deploy_command_exports);
|
|
34
|
+
var client = __toESM(require("@botpress/client"));
|
|
34
35
|
var import_chalk = __toESM(require("chalk"));
|
|
35
36
|
var fs = __toESM(require("fs"));
|
|
36
37
|
var import_semver = __toESM(require("semver"));
|
|
@@ -86,6 +87,9 @@ class DeployCommand extends import_project_command.ProjectCommand {
|
|
|
86
87
|
if (workspaceId) {
|
|
87
88
|
api = api.switchWorkspace(workspaceId);
|
|
88
89
|
}
|
|
90
|
+
if (this.argv.bypassBreakingChangeDetection) {
|
|
91
|
+
api = api.withExtraHeaders({ "x-bypass-breaking-changes-detection": "true" });
|
|
92
|
+
}
|
|
89
93
|
const { name, version } = integrationDef;
|
|
90
94
|
if (integrationDef.icon && !integrationDef.icon.toLowerCase().endsWith(".svg")) {
|
|
91
95
|
throw new errors.BotpressCLIError("Icon must be an SVG file");
|
|
@@ -146,7 +150,11 @@ class DeployCommand extends import_project_command.ProjectCommand {
|
|
|
146
150
|
});
|
|
147
151
|
} else {
|
|
148
152
|
await api.client.updateIntegration(updateBody).catch((thrown) => {
|
|
149
|
-
|
|
153
|
+
const error = errors.BotpressCLIError.wrap(thrown, `Could not update integration "${name}"`);
|
|
154
|
+
if (api.isBotpressWorkspace && !this.argv.bypassBreakingChangeDetection && client.isApiError(thrown) && thrown.type === "BreakingChanges") {
|
|
155
|
+
this.logger.warn("Tip: redeploy with --bypassBreakingChangeDetection to skip this check");
|
|
156
|
+
}
|
|
157
|
+
throw error;
|
|
150
158
|
});
|
|
151
159
|
}
|
|
152
160
|
line.success(successMessage);
|
|
@@ -172,7 +180,11 @@ class DeployCommand extends import_project_command.ProjectCommand {
|
|
|
172
180
|
});
|
|
173
181
|
} else {
|
|
174
182
|
await api.client.createIntegration(createBody).catch((thrown) => {
|
|
175
|
-
|
|
183
|
+
const error = errors.BotpressCLIError.wrap(thrown, `Could not create integration "${name}"`);
|
|
184
|
+
if (api.isBotpressWorkspace && !this.argv.bypassBreakingChangeDetection && client.isApiError(thrown) && thrown.type === "BreakingChanges") {
|
|
185
|
+
this.logger.warn("Tip: redeploy with --bypassBreakingChangeDetection to skip this check");
|
|
186
|
+
}
|
|
187
|
+
throw error;
|
|
176
188
|
});
|
|
177
189
|
}
|
|
178
190
|
line.success(successMessage);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/command-implementations/deploy-command.ts"],
|
|
4
|
-
"sourcesContent": ["import type * as client from '@botpress/client'\nimport * as sdk from '@botpress/sdk'\nimport chalk from 'chalk'\nimport * as fs from 'fs'\nimport semver from 'semver'\nimport * as apiUtils from '../api'\nimport type commandDefinitions from '../command-definitions'\nimport * as errors from '../errors'\nimport * as tables from '../tables'\nimport * as utils from '../utils'\nimport { BuildCommand } from './build-command'\nimport { ProjectCommand } from './project-command'\n\nexport type DeployCommandDefinition = typeof commandDefinitions.deploy\nexport class DeployCommand extends ProjectCommand<DeployCommandDefinition> {\n public async run(): Promise<void> {\n const api = await this.ensureLoginAndCreateClient(this.argv)\n\n if (!this.argv.noBuild) {\n await this._runBuild() // This ensures the bundle is always synced with source code\n }\n\n const { projectType, resolveProjectDefinition } = this.readProjectDefinitionFromFS()\n\n if (projectType === 'integration') {\n const projectDef = await resolveProjectDefinition()\n return this._deployIntegration(api, projectDef.definition)\n }\n if (projectType === 'interface') {\n const projectDef = await resolveProjectDefinition()\n return this._deployInterface(api, projectDef.definition)\n }\n if (projectType === 'plugin') {\n const projectDef = await resolveProjectDefinition()\n return this._deployPlugin(api, projectDef.definition)\n }\n if (projectType === 'bot') {\n const projectDef = await resolveProjectDefinition()\n return this._deployBot(api, projectDef.definition, this.argv.botId, this.argv.createNewBot)\n }\n throw new errors.UnsupportedProjectType()\n }\n\n private async _runBuild() {\n return new BuildCommand(this.api, this.prompt, this.logger, this.argv).setProjectContext(this.projectContext).run()\n }\n\n private get _visibility(): 'public' | 'private' | 'unlisted' {\n if (this.argv.public && this.argv.visibility === 'private') {\n this.logger.warn('The --public flag is deprecated. Please use \"--visibility public\" instead.')\n return 'public'\n }\n\n if (this.argv.public && this.argv.visibility !== 'private') {\n this.logger.warn('The --public flag and --visibility option are both present. Ignoring the --public flag...')\n }\n\n return this.argv.visibility\n }\n\n private async _deployIntegration(api: apiUtils.ApiClient, integrationDef: sdk.IntegrationDefinition) {\n const res = await this.manageWorkspaceHandle(api, { type: 'integration', definition: integrationDef })\n if (!res) return\n const { definition: updatedIntegrationDef, workspaceId } = res\n integrationDef = updatedIntegrationDef\n if (workspaceId) {\n api = api.switchWorkspace(workspaceId)\n }\n\n const { name, version } = integrationDef\n\n if (integrationDef.icon && !integrationDef.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (integrationDef.readme && !integrationDef.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const integration = await api.findPublicOrPrivateIntegration({ type: 'name', name, version })\n if (integration && integration.workspaceId !== api.workspaceId) {\n throw new errors.BotpressCLIError(\n `Public integration ${name} v${version} is already deployed in another workspace.`\n )\n }\n\n if (integration && integration.visibility !== 'private' && !api.isBotpressWorkspace) {\n this.logger.warn(\n `Integration ${name} v${version} is already deployed publicly and cannot be updated. You should publish a new version instead.`\n )\n }\n\n let message: string\n if (integration) {\n this.logger.warn('Integration already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override integration ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy integration ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n this.logger.debug('Preparing integration request body...')\n\n const createBody = {\n ...(await this.prepareCreateIntegrationBody(integrationDef)),\n ...(await this.prepareIntegrationDependencies(integrationDef, api)),\n visibility: this._visibility,\n sdkVersion: integrationDef.metadata?.sdkVersion,\n url: this.argv.url,\n }\n\n const startedMessage = `Deploying integration ${chalk.bold(name)} v${version}...`\n const successMessage = 'Integration deployed'\n if (integration) {\n const updateBody = apiUtils.prepareUpdateIntegrationBody(\n {\n id: integration.id,\n ...createBody,\n },\n integration\n )\n\n const { secrets: knownSecrets } = integration\n updateBody.secrets = await this.promptSecrets(integrationDef, this.argv, { knownSecrets })\n this._detectDeprecatedFeatures(integrationDef, { allowDeprecated: true })\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.log('Dry-run mode is active. Simulating integration update...')\n\n await api.client.validateIntegrationUpdate(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update integration \"${name}\"`)\n })\n } else {\n await api.client.updateIntegration(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update integration \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n } else {\n this.logger.debug(`looking for previous version of integration \"${name}\"`)\n const previousVersion = await api.findPreviousIntegrationVersion({ type: 'name', name, version })\n\n if (previousVersion) {\n this.logger.debug(`previous version found: ${previousVersion.version}`)\n } else {\n this.logger.debug('no previous version found')\n }\n\n const knownSecrets = previousVersion?.secrets\n\n createBody.secrets = await this.promptSecrets(integrationDef, this.argv, { knownSecrets })\n this._detectDeprecatedFeatures(integrationDef, {\n allowDeprecated: this._allowDeprecatedFeatures(integrationDef, previousVersion),\n })\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.log('Dry-run mode is active. Simulating integration creation...')\n\n await api.client.validateIntegrationCreation(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create integration \"${name}\"`)\n })\n } else {\n await api.client.createIntegration(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create integration \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private async _deployInterface(api: apiUtils.ApiClient, interfaceDeclaration: sdk.InterfaceDefinition) {\n if (this._visibility === 'unlisted') {\n throw new errors.BotpressCLIError(\n 'Unlisted visibility is not supported for interfaces. Please use \"public\" or \"private\".'\n )\n }\n\n if (interfaceDeclaration.icon && !interfaceDeclaration.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (interfaceDeclaration.readme && !interfaceDeclaration.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const { name, version } = interfaceDeclaration\n const intrface = await api.findPublicOrPrivateInterface({ type: 'name', name, version })\n\n let message: string\n if (intrface) {\n this.logger.warn('Interface already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override interface ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy interface ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n const icon = await this.readProjectFile(interfaceDeclaration.icon, 'base64')\n const readme = await this.readProjectFile(interfaceDeclaration.readme, 'base64')\n\n if (this._visibility !== 'public') {\n this.logger.warn(\n 'You are currently publishing a private interface, which cannot be used by integrations and plugins. To fix this, change the visibility to \"public\"'\n )\n }\n\n const createBody = {\n ...(await apiUtils.prepareCreateInterfaceBody(interfaceDeclaration)),\n public: this._visibility === 'public',\n icon,\n readme,\n sdkVersion: interfaceDeclaration.metadata?.sdkVersion,\n }\n\n const startedMessage = `Deploying interface ${chalk.bold(name)} v${version}...`\n const successMessage = 'Interface deployed'\n if (intrface) {\n const updateBody = apiUtils.prepareUpdateInterfaceBody(\n {\n id: intrface.id,\n ...createBody,\n },\n intrface\n )\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for interface updates. Skipping deployment...')\n } else {\n await api.client.updateInterface(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update interface \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n } else {\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for interface creation. Skipping deployment...')\n } else {\n await api.client.createInterface(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create interface \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private async _deployPlugin(api: apiUtils.ApiClient, pluginDef: sdk.PluginDefinition) {\n const res = await this.manageWorkspaceHandle(api, { type: 'plugin', definition: pluginDef })\n if (!res) return\n const { definition: updatedPluginDef, workspaceId } = res\n pluginDef = updatedPluginDef\n if (workspaceId) {\n api = api.switchWorkspace(workspaceId)\n }\n\n const codeCJS = await fs.promises.readFile(this.projectPaths.abs.outFileCJS, 'utf-8')\n const codeESM = await fs.promises.readFile(this.projectPaths.abs.outFileESM, 'utf-8')\n\n const { name, version } = pluginDef\n\n if (pluginDef.icon && !pluginDef.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (pluginDef.readme && !pluginDef.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const plugin = await api.findPublicOrPrivatePlugin({ type: 'name', name, version })\n\n let message: string\n if (plugin) {\n this.logger.warn('Plugin already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override plugin ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy plugin ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n this.logger.debug('Preparing plugin request body...')\n\n const icon = await this.readProjectFile(pluginDef.icon, 'base64')\n const readme = await this.readProjectFile(pluginDef.readme, 'base64')\n\n const createBody = {\n ...(await apiUtils.prepareCreatePluginBody(pluginDef)),\n ...(await this.preparePluginDependencies(pluginDef, api)),\n visibility: this._visibility,\n icon,\n readme,\n code: {\n node: codeCJS,\n browser: codeESM,\n },\n sdkVersion: pluginDef.metadata?.sdkVersion,\n }\n\n const startedMessage = `Deploying plugin ${chalk.bold(name)} v${version}...`\n const successMessage = 'Plugin deployed'\n if (plugin) {\n const updateBody = apiUtils.prepareUpdatePluginBody(\n {\n id: plugin.id,\n ...createBody,\n },\n plugin\n )\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for plugin updates. Skipping deployment...')\n } else {\n await api.client.updatePlugin(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update plugin \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n } else {\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for plugin creation. Skipping deployment...')\n } else {\n await api.client.createPlugin(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create plugin \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private _allowDeprecatedFeatures(\n integrationDef: sdk.IntegrationDefinition,\n previousVersion: client.Integration | undefined\n ): boolean {\n if (this.argv.allowDeprecated) {\n return true\n }\n\n if (!previousVersion) {\n return false\n }\n\n const versionDiff = semver.diff(integrationDef.version, previousVersion.version)\n if (!versionDiff) {\n return false\n }\n\n return utils.semver.releases.lt(versionDiff, 'major')\n }\n\n private _detectDeprecatedFeatures(\n integrationDef: sdk.IntegrationDefinition,\n opts: { allowDeprecated?: boolean } = {}\n ) {\n const deprecatedFields: string[] = []\n const { user, channels } = integrationDef\n if (user?.creation?.enabled) {\n deprecatedFields.push('user.creation')\n }\n\n for (const [channelName, channel] of Object.entries(channels ?? {})) {\n if (channel?.conversation?.creation?.enabled) {\n deprecatedFields.push(`channels.${channelName}.creation`)\n }\n }\n\n if (!deprecatedFields.length) {\n return\n }\n\n const errorMessage = `The following fields of the integration's definition are deprecated: ${deprecatedFields.join(\n ', '\n )}`\n\n if (opts.allowDeprecated) {\n this.logger.warn(errorMessage)\n } else {\n throw new errors.BotpressCLIError(errorMessage)\n }\n }\n\n private async _deployBot(\n api: apiUtils.ApiClient,\n botDefinition: sdk.BotDefinition,\n argvBotId: string | undefined,\n argvCreateNew: boolean | undefined\n ) {\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for bot deployments. Skipping deployment...')\n return\n }\n\n const outfile = this.projectPaths.abs.outFileCJS\n const code = await fs.promises.readFile(outfile, 'utf-8')\n\n let bot: client.Bot\n if (argvBotId && argvCreateNew) {\n throw new errors.BotpressCLIError('Cannot specify both --botId and --createNew')\n } else if (argvCreateNew) {\n const confirm = await this.prompt.confirm('Are you sure you want to create a new bot ?')\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n bot = await this._createNewBot(api)\n } else {\n bot = await this._getExistingBot(api, argvBotId)\n\n const confirm = await this.prompt.confirm(`Are you sure you want to deploy the bot \"${bot.name}\"?`)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n }\n\n const line = this.logger.line()\n line.started(`Deploying bot ${chalk.bold(bot.name)}...`)\n\n const updateBotBody = apiUtils.prepareUpdateBotBody(\n {\n ...(await apiUtils.prepareCreateBotBody(botDefinition)),\n ...(await this.prepareBotDependencies(botDefinition, api)),\n id: bot.id,\n code,\n },\n bot\n )\n\n updateBotBody.secrets = await this.promptSecrets(botDefinition, this.argv, { knownSecrets: bot.secrets })\n\n const { bot: updatedBot } = await api.client.updateBot(updateBotBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update bot \"${bot.name}\"`)\n })\n\n this.validateIntegrationRegistration(updatedBot, (failedIntegrations) =>\n this.logger.warn(\n `Some integrations failed to register:\\n${Object.entries(failedIntegrations)\n .map(([key, int]) => `\u2022 ${key}: ${int.statusReason}`)\n .join('\\n')}`\n )\n )\n\n const tablesPublisher = new tables.TablesPublisher({ api, logger: this.logger, prompt: this.prompt })\n await tablesPublisher.deployTables({ botId: updatedBot.id, botDefinition })\n\n line.success('Bot deployed')\n await this.displayIntegrationUrls({ api, bot: updatedBot })\n }\n\n private async _createNewBot(api: apiUtils.ApiClient): Promise<client.Bot> {\n const line = this.logger.line()\n const { bot: createdBot } = await api.client.createBot({}).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not create bot')\n })\n line.success(`Bot created with ID \"${createdBot.id}\" and name \"${createdBot.name}\"`)\n await this.projectCache.set('botId', createdBot.id)\n return createdBot\n }\n\n private async _getExistingBot(api: apiUtils.ApiClient, botId: string | undefined): Promise<client.Bot> {\n const promptedBotId = await this.projectCache.sync('botId', botId, async (defaultId) => {\n const userBots = await api\n .listAllPages(api.client.listBots, (r) => r.bots)\n .catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not fetch existing bots')\n })\n\n if (!userBots.length) {\n throw new errors.NoBotsFoundError()\n }\n\n const initial = userBots.find((bot) => bot.id === defaultId)\n\n const prompted = await this.prompt.select('Which bot do you want to deploy?', {\n initial: initial && { title: initial.name, value: initial.id },\n choices: userBots.map((bot) => ({ title: bot.name, value: bot.id })),\n })\n\n if (!prompted) {\n throw new errors.ParamRequiredError('Bot Id')\n }\n\n return prompted\n })\n\n const { bot: fetchedBot } = await api.client.getBot({ id: promptedBotId }).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not get bot info')\n })\n\n return fetchedBot\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import * as client from '@botpress/client'\nimport * as sdk from '@botpress/sdk'\nimport chalk from 'chalk'\nimport * as fs from 'fs'\nimport semver from 'semver'\nimport * as apiUtils from '../api'\nimport type commandDefinitions from '../command-definitions'\nimport * as errors from '../errors'\nimport * as tables from '../tables'\nimport * as utils from '../utils'\nimport { BuildCommand } from './build-command'\nimport { ProjectCommand } from './project-command'\n\nexport type DeployCommandDefinition = typeof commandDefinitions.deploy\nexport class DeployCommand extends ProjectCommand<DeployCommandDefinition> {\n public async run(): Promise<void> {\n const api = await this.ensureLoginAndCreateClient(this.argv)\n\n if (!this.argv.noBuild) {\n await this._runBuild() // This ensures the bundle is always synced with source code\n }\n\n const { projectType, resolveProjectDefinition } = this.readProjectDefinitionFromFS()\n\n if (projectType === 'integration') {\n const projectDef = await resolveProjectDefinition()\n return this._deployIntegration(api, projectDef.definition)\n }\n if (projectType === 'interface') {\n const projectDef = await resolveProjectDefinition()\n return this._deployInterface(api, projectDef.definition)\n }\n if (projectType === 'plugin') {\n const projectDef = await resolveProjectDefinition()\n return this._deployPlugin(api, projectDef.definition)\n }\n if (projectType === 'bot') {\n const projectDef = await resolveProjectDefinition()\n return this._deployBot(api, projectDef.definition, this.argv.botId, this.argv.createNewBot)\n }\n throw new errors.UnsupportedProjectType()\n }\n\n private async _runBuild() {\n return new BuildCommand(this.api, this.prompt, this.logger, this.argv).setProjectContext(this.projectContext).run()\n }\n\n private get _visibility(): 'public' | 'private' | 'unlisted' {\n if (this.argv.public && this.argv.visibility === 'private') {\n this.logger.warn('The --public flag is deprecated. Please use \"--visibility public\" instead.')\n return 'public'\n }\n\n if (this.argv.public && this.argv.visibility !== 'private') {\n this.logger.warn('The --public flag and --visibility option are both present. Ignoring the --public flag...')\n }\n\n return this.argv.visibility\n }\n\n private async _deployIntegration(api: apiUtils.ApiClient, integrationDef: sdk.IntegrationDefinition) {\n const res = await this.manageWorkspaceHandle(api, { type: 'integration', definition: integrationDef })\n if (!res) return\n const { definition: updatedIntegrationDef, workspaceId } = res\n integrationDef = updatedIntegrationDef\n if (workspaceId) {\n api = api.switchWorkspace(workspaceId)\n }\n if (this.argv.bypassBreakingChangeDetection) {\n api = api.withExtraHeaders({ 'x-bypass-breaking-changes-detection': 'true' })\n }\n\n const { name, version } = integrationDef\n\n if (integrationDef.icon && !integrationDef.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (integrationDef.readme && !integrationDef.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const integration = await api.findPublicOrPrivateIntegration({ type: 'name', name, version })\n if (integration && integration.workspaceId !== api.workspaceId) {\n throw new errors.BotpressCLIError(\n `Public integration ${name} v${version} is already deployed in another workspace.`\n )\n }\n\n if (integration && integration.visibility !== 'private' && !api.isBotpressWorkspace) {\n this.logger.warn(\n `Integration ${name} v${version} is already deployed publicly and cannot be updated. You should publish a new version instead.`\n )\n }\n\n let message: string\n if (integration) {\n this.logger.warn('Integration already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override integration ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy integration ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n this.logger.debug('Preparing integration request body...')\n\n const createBody = {\n ...(await this.prepareCreateIntegrationBody(integrationDef)),\n ...(await this.prepareIntegrationDependencies(integrationDef, api)),\n visibility: this._visibility,\n sdkVersion: integrationDef.metadata?.sdkVersion,\n url: this.argv.url,\n }\n\n const startedMessage = `Deploying integration ${chalk.bold(name)} v${version}...`\n const successMessage = 'Integration deployed'\n if (integration) {\n const updateBody = apiUtils.prepareUpdateIntegrationBody(\n {\n id: integration.id,\n ...createBody,\n },\n integration\n )\n\n const { secrets: knownSecrets } = integration\n updateBody.secrets = await this.promptSecrets(integrationDef, this.argv, { knownSecrets })\n this._detectDeprecatedFeatures(integrationDef, { allowDeprecated: true })\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.log('Dry-run mode is active. Simulating integration update...')\n\n await api.client.validateIntegrationUpdate(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update integration \"${name}\"`)\n })\n } else {\n await api.client.updateIntegration(updateBody).catch((thrown) => {\n const error = errors.BotpressCLIError.wrap(thrown, `Could not update integration \"${name}\"`)\n if (\n api.isBotpressWorkspace &&\n !this.argv.bypassBreakingChangeDetection &&\n client.isApiError(thrown) &&\n thrown.type === 'BreakingChanges'\n ) {\n this.logger.warn('Tip: redeploy with --bypassBreakingChangeDetection to skip this check')\n }\n throw error\n })\n }\n\n line.success(successMessage)\n } else {\n this.logger.debug(`looking for previous version of integration \"${name}\"`)\n const previousVersion = await api.findPreviousIntegrationVersion({ type: 'name', name, version })\n\n if (previousVersion) {\n this.logger.debug(`previous version found: ${previousVersion.version}`)\n } else {\n this.logger.debug('no previous version found')\n }\n\n const knownSecrets = previousVersion?.secrets\n\n createBody.secrets = await this.promptSecrets(integrationDef, this.argv, { knownSecrets })\n this._detectDeprecatedFeatures(integrationDef, {\n allowDeprecated: this._allowDeprecatedFeatures(integrationDef, previousVersion),\n })\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.log('Dry-run mode is active. Simulating integration creation...')\n\n await api.client.validateIntegrationCreation(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create integration \"${name}\"`)\n })\n } else {\n await api.client.createIntegration(createBody).catch((thrown) => {\n const error = errors.BotpressCLIError.wrap(thrown, `Could not create integration \"${name}\"`)\n if (\n api.isBotpressWorkspace &&\n !this.argv.bypassBreakingChangeDetection &&\n client.isApiError(thrown) &&\n thrown.type === 'BreakingChanges'\n ) {\n this.logger.warn('Tip: redeploy with --bypassBreakingChangeDetection to skip this check')\n }\n throw error\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private async _deployInterface(api: apiUtils.ApiClient, interfaceDeclaration: sdk.InterfaceDefinition) {\n if (this._visibility === 'unlisted') {\n throw new errors.BotpressCLIError(\n 'Unlisted visibility is not supported for interfaces. Please use \"public\" or \"private\".'\n )\n }\n\n if (interfaceDeclaration.icon && !interfaceDeclaration.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (interfaceDeclaration.readme && !interfaceDeclaration.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const { name, version } = interfaceDeclaration\n const intrface = await api.findPublicOrPrivateInterface({ type: 'name', name, version })\n\n let message: string\n if (intrface) {\n this.logger.warn('Interface already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override interface ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy interface ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n const icon = await this.readProjectFile(interfaceDeclaration.icon, 'base64')\n const readme = await this.readProjectFile(interfaceDeclaration.readme, 'base64')\n\n if (this._visibility !== 'public') {\n this.logger.warn(\n 'You are currently publishing a private interface, which cannot be used by integrations and plugins. To fix this, change the visibility to \"public\"'\n )\n }\n\n const createBody = {\n ...(await apiUtils.prepareCreateInterfaceBody(interfaceDeclaration)),\n public: this._visibility === 'public',\n icon,\n readme,\n sdkVersion: interfaceDeclaration.metadata?.sdkVersion,\n }\n\n const startedMessage = `Deploying interface ${chalk.bold(name)} v${version}...`\n const successMessage = 'Interface deployed'\n if (intrface) {\n const updateBody = apiUtils.prepareUpdateInterfaceBody(\n {\n id: intrface.id,\n ...createBody,\n },\n intrface\n )\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for interface updates. Skipping deployment...')\n } else {\n await api.client.updateInterface(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update interface \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n } else {\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for interface creation. Skipping deployment...')\n } else {\n await api.client.createInterface(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create interface \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private async _deployPlugin(api: apiUtils.ApiClient, pluginDef: sdk.PluginDefinition) {\n const res = await this.manageWorkspaceHandle(api, { type: 'plugin', definition: pluginDef })\n if (!res) return\n const { definition: updatedPluginDef, workspaceId } = res\n pluginDef = updatedPluginDef\n if (workspaceId) {\n api = api.switchWorkspace(workspaceId)\n }\n\n const codeCJS = await fs.promises.readFile(this.projectPaths.abs.outFileCJS, 'utf-8')\n const codeESM = await fs.promises.readFile(this.projectPaths.abs.outFileESM, 'utf-8')\n\n const { name, version } = pluginDef\n\n if (pluginDef.icon && !pluginDef.icon.toLowerCase().endsWith('.svg')) {\n throw new errors.BotpressCLIError('Icon must be an SVG file')\n }\n\n if (pluginDef.readme && !pluginDef.readme.toLowerCase().endsWith('.md')) {\n throw new errors.BotpressCLIError('Readme must be a Markdown file')\n }\n\n const plugin = await api.findPublicOrPrivatePlugin({ type: 'name', name, version })\n\n let message: string\n if (plugin) {\n this.logger.warn('Plugin already exists. If you decide to deploy, it will override the existing one.')\n message = `Are you sure you want to override plugin ${name} v${version}?`\n } else {\n message = `Are you sure you want to deploy plugin ${name} v${version}?`\n }\n\n const confirm = await this.prompt.confirm(message)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n this.logger.debug('Preparing plugin request body...')\n\n const icon = await this.readProjectFile(pluginDef.icon, 'base64')\n const readme = await this.readProjectFile(pluginDef.readme, 'base64')\n\n const createBody = {\n ...(await apiUtils.prepareCreatePluginBody(pluginDef)),\n ...(await this.preparePluginDependencies(pluginDef, api)),\n visibility: this._visibility,\n icon,\n readme,\n code: {\n node: codeCJS,\n browser: codeESM,\n },\n sdkVersion: pluginDef.metadata?.sdkVersion,\n }\n\n const startedMessage = `Deploying plugin ${chalk.bold(name)} v${version}...`\n const successMessage = 'Plugin deployed'\n if (plugin) {\n const updateBody = apiUtils.prepareUpdatePluginBody(\n {\n id: plugin.id,\n ...createBody,\n },\n plugin\n )\n\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for plugin updates. Skipping deployment...')\n } else {\n await api.client.updatePlugin(updateBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update plugin \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n } else {\n const line = this.logger.line()\n line.started(startedMessage)\n\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for plugin creation. Skipping deployment...')\n } else {\n await api.client.createPlugin(createBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not create plugin \"${name}\"`)\n })\n }\n\n line.success(successMessage)\n }\n }\n\n private _allowDeprecatedFeatures(\n integrationDef: sdk.IntegrationDefinition,\n previousVersion: client.Integration | undefined\n ): boolean {\n if (this.argv.allowDeprecated) {\n return true\n }\n\n if (!previousVersion) {\n return false\n }\n\n const versionDiff = semver.diff(integrationDef.version, previousVersion.version)\n if (!versionDiff) {\n return false\n }\n\n return utils.semver.releases.lt(versionDiff, 'major')\n }\n\n private _detectDeprecatedFeatures(\n integrationDef: sdk.IntegrationDefinition,\n opts: { allowDeprecated?: boolean } = {}\n ) {\n const deprecatedFields: string[] = []\n const { user, channels } = integrationDef\n if (user?.creation?.enabled) {\n deprecatedFields.push('user.creation')\n }\n\n for (const [channelName, channel] of Object.entries(channels ?? {})) {\n if (channel?.conversation?.creation?.enabled) {\n deprecatedFields.push(`channels.${channelName}.creation`)\n }\n }\n\n if (!deprecatedFields.length) {\n return\n }\n\n const errorMessage = `The following fields of the integration's definition are deprecated: ${deprecatedFields.join(\n ', '\n )}`\n\n if (opts.allowDeprecated) {\n this.logger.warn(errorMessage)\n } else {\n throw new errors.BotpressCLIError(errorMessage)\n }\n }\n\n private async _deployBot(\n api: apiUtils.ApiClient,\n botDefinition: sdk.BotDefinition,\n argvBotId: string | undefined,\n argvCreateNew: boolean | undefined\n ) {\n if (this.argv.dryRun) {\n this.logger.warn('Dry-run mode is not supported for bot deployments. Skipping deployment...')\n return\n }\n\n const outfile = this.projectPaths.abs.outFileCJS\n const code = await fs.promises.readFile(outfile, 'utf-8')\n\n let bot: client.Bot\n if (argvBotId && argvCreateNew) {\n throw new errors.BotpressCLIError('Cannot specify both --botId and --createNew')\n } else if (argvCreateNew) {\n const confirm = await this.prompt.confirm('Are you sure you want to create a new bot ?')\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n\n bot = await this._createNewBot(api)\n } else {\n bot = await this._getExistingBot(api, argvBotId)\n\n const confirm = await this.prompt.confirm(`Are you sure you want to deploy the bot \"${bot.name}\"?`)\n if (!confirm) {\n this.logger.log('Aborted')\n return\n }\n }\n\n const line = this.logger.line()\n line.started(`Deploying bot ${chalk.bold(bot.name)}...`)\n\n const updateBotBody = apiUtils.prepareUpdateBotBody(\n {\n ...(await apiUtils.prepareCreateBotBody(botDefinition)),\n ...(await this.prepareBotDependencies(botDefinition, api)),\n id: bot.id,\n code,\n },\n bot\n )\n\n updateBotBody.secrets = await this.promptSecrets(botDefinition, this.argv, { knownSecrets: bot.secrets })\n\n const { bot: updatedBot } = await api.client.updateBot(updateBotBody).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, `Could not update bot \"${bot.name}\"`)\n })\n\n this.validateIntegrationRegistration(updatedBot, (failedIntegrations) =>\n this.logger.warn(\n `Some integrations failed to register:\\n${Object.entries(failedIntegrations)\n .map(([key, int]) => `\u2022 ${key}: ${int.statusReason}`)\n .join('\\n')}`\n )\n )\n\n const tablesPublisher = new tables.TablesPublisher({ api, logger: this.logger, prompt: this.prompt })\n await tablesPublisher.deployTables({ botId: updatedBot.id, botDefinition })\n\n line.success('Bot deployed')\n await this.displayIntegrationUrls({ api, bot: updatedBot })\n }\n\n private async _createNewBot(api: apiUtils.ApiClient): Promise<client.Bot> {\n const line = this.logger.line()\n const { bot: createdBot } = await api.client.createBot({}).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not create bot')\n })\n line.success(`Bot created with ID \"${createdBot.id}\" and name \"${createdBot.name}\"`)\n await this.projectCache.set('botId', createdBot.id)\n return createdBot\n }\n\n private async _getExistingBot(api: apiUtils.ApiClient, botId: string | undefined): Promise<client.Bot> {\n const promptedBotId = await this.projectCache.sync('botId', botId, async (defaultId) => {\n const userBots = await api\n .listAllPages(api.client.listBots, (r) => r.bots)\n .catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not fetch existing bots')\n })\n\n if (!userBots.length) {\n throw new errors.NoBotsFoundError()\n }\n\n const initial = userBots.find((bot) => bot.id === defaultId)\n\n const prompted = await this.prompt.select('Which bot do you want to deploy?', {\n initial: initial && { title: initial.name, value: initial.id },\n choices: userBots.map((bot) => ({ title: bot.name, value: bot.id })),\n })\n\n if (!prompted) {\n throw new errors.ParamRequiredError('Bot Id')\n }\n\n return prompted\n })\n\n const { bot: fetchedBot } = await api.client.getBot({ id: promptedBotId }).catch((thrown) => {\n throw errors.BotpressCLIError.wrap(thrown, 'Could not get bot info')\n })\n\n return fetchedBot\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["chalk", "semver"]
|
|
7
7
|
}
|
|
@@ -1137,6 +1137,11 @@ declare const _default: {
|
|
|
1137
1137
|
readonly type: "string";
|
|
1138
1138
|
readonly description: "Custom URL for the integration. Only used when deploying an integration";
|
|
1139
1139
|
};
|
|
1140
|
+
readonly bypassBreakingChangeDetection: {
|
|
1141
|
+
readonly type: "boolean";
|
|
1142
|
+
readonly hidden: true;
|
|
1143
|
+
readonly default: false;
|
|
1144
|
+
};
|
|
1140
1145
|
readonly secrets: {
|
|
1141
1146
|
type: "string";
|
|
1142
1147
|
description: string;
|
|
@@ -771,16 +771,20 @@ class ProjectCommand extends import_global_command.GlobalCommand {
|
|
|
771
771
|
}
|
|
772
772
|
_cloneDefinition = (def, props) => {
|
|
773
773
|
if (def.type === "integration") {
|
|
774
|
-
|
|
774
|
+
const overrides = props;
|
|
775
|
+
return def.definition.clone?.(overrides) ?? new sdk.IntegrationDefinition({ ...def.definition.props, ...overrides });
|
|
775
776
|
}
|
|
776
777
|
if (def.type === "plugin") {
|
|
777
|
-
|
|
778
|
+
const overrides = props;
|
|
779
|
+
return def.definition.clone?.(overrides) ?? new sdk.PluginDefinition({ ...def.definition.props, ...overrides });
|
|
778
780
|
}
|
|
779
781
|
if (def.type === "interface") {
|
|
780
|
-
|
|
782
|
+
const overrides = props;
|
|
783
|
+
return def.definition.clone?.(overrides) ?? new sdk.InterfaceDefinition({ ...def.definition.props, ...overrides });
|
|
781
784
|
}
|
|
782
785
|
if (def.type === "bot") {
|
|
783
|
-
|
|
786
|
+
const overrides = props;
|
|
787
|
+
return def.definition.clone?.(overrides) ?? new sdk.BotDefinition({ ...def.definition.props, ...overrides });
|
|
784
788
|
}
|
|
785
789
|
def;
|
|
786
790
|
throw new errors.BotpressCLIError("Unsupported definition type");
|