diff --git a/integrations/zendesk/integration.definition.ts b/integrations/zendesk/integration.definition.ts index 82001b41060..52166fc217f 100644 --- a/integrations/zendesk/integration.definition.ts +++ b/integrations/zendesk/integration.definition.ts @@ -7,7 +7,7 @@ import { actions, events, configuration, channels, states, user } from './src/de export default new sdk.IntegrationDefinition({ name: 'zendesk', title: 'Zendesk', - version: '2.8.1', + version: '2.8.2', icon: 'icon.svg', description: 'Optimize your support workflow. Trigger workflows from ticket updates as well as manage tickets, access conversations, and engage with customers.', diff --git a/integrations/zendesk/src/actions/hitl.ts b/integrations/zendesk/src/actions/hitl.ts index 5bd26d2c8dc..c6b34f30120 100644 --- a/integrations/zendesk/src/actions/hitl.ts +++ b/integrations/zendesk/src/actions/hitl.ts @@ -13,8 +13,18 @@ export const startHitl: bp.IntegrationProps['actions']['startHitl'] = async (pro downstreamBotpressUser.user.pictureUrl ?? 'https://app.botpress.dev/favicon/bp.svg' + const { user } = await client.getUser({ + id: input.userId, + }) + + const zendeskAuthorId = user.tags.id + + if (!zendeskAuthorId) { + throw new sdk.RuntimeError(`User ${user.id} not linked in Zendesk`) + } + const zendeskClient = getZendeskClient(ctx.configuration) - const zendeskBotpressUser = await _retrieveAndUpdateZendeskBotpressUser(props, { + await _updateZendeskBotpressUser(props, { zendeskClient, chatbotName, chatbotPhotoUrl, @@ -24,7 +34,7 @@ export const startHitl: bp.IntegrationProps['actions']['startHitl'] = async (pro input.title ?? 'Untitled Ticket', await _buildTicketBody(props, { chatbotName }), { - id: zendeskBotpressUser, + id: zendeskAuthorId, }, { priority: input.hitlSession?.priority, @@ -48,7 +58,7 @@ export const startHitl: bp.IntegrationProps['actions']['startHitl'] = async (pro } } -const _retrieveAndUpdateZendeskBotpressUser = async ( +const _updateZendeskBotpressUser = async ( { client, ctx }: bp.ActionProps['startHitl'], { zendeskClient, @@ -62,13 +72,11 @@ const _retrieveAndUpdateZendeskBotpressUser = async ( name: chatbotName, }) - const zendeskUser = await zendeskClient.createOrUpdateUser({ + await zendeskClient.createOrUpdateUser({ external_id: ctx.botUserId, name: chatbotName, remote_photo_url: chatbotPhotoUrl, }) - - return String(zendeskUser.id) } const _buildTicketBody = async ( diff --git a/packages/cli/package.json b/packages/cli/package.json index 94e3a3df944..15f2df7c5df 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@botpress/cli", - "version": "4.17.2", + "version": "4.17.3", "description": "Botpress CLI", "scripts": { "build": "pnpm run bundle && pnpm run template:gen", diff --git a/packages/cli/src/command-implementations/add-command.ts b/packages/cli/src/command-implementations/add-command.ts index b57072be7e6..f0be366831f 100644 --- a/packages/cli/src/command-implementations/add-command.ts +++ b/packages/cli/src/command-implementations/add-command.ts @@ -117,7 +117,8 @@ export class AddCommand extends GlobalCommand { if (ref.type === 'name' && ref.version === pkgRef.LATEST_TAG) { // If the semver version expression is 'latest', we assume the project // is compatible with all versions of the latest major: - targetPackage.pkg.version = `^${semver.major(targetPackage.pkg.version)}.0.0` + const major = semver.major(targetPackage.pkg.version) + targetPackage.pkg.version = `>=${major}.0.0 <${major + 1}.0.0` this.logger.log( `Dependency "${packageName}" will be installed with version "${targetPackage.pkg.version}". ` + diff --git a/plugins/file-synchronizer/package.json b/plugins/file-synchronizer/package.json index bbb3a04f7b5..f1665bd4b43 100644 --- a/plugins/file-synchronizer/package.json +++ b/plugins/file-synchronizer/package.json @@ -13,7 +13,9 @@ "devDependencies": { "@botpress/cli": "workspace:*", "@botpresshub/hitl": "workspace:*", - "@types/picomatch": "^3.0.2" + "@types/picomatch": "^3.0.2", + "@types/semver": "^7.3.11", + "semver": "^7.3.8" }, "bpDependencies": { "files-readonly": "../../interfaces/files-readonly" diff --git a/plugins/file-synchronizer/plugin.definition.ts b/plugins/file-synchronizer/plugin.definition.ts index c8cb894e4a9..6f420eae646 100644 --- a/plugins/file-synchronizer/plugin.definition.ts +++ b/plugins/file-synchronizer/plugin.definition.ts @@ -1,4 +1,5 @@ import * as sdk from '@botpress/sdk' +import semver from 'semver' import filesReadonly from './bp_modules/files-readonly' const FILE_FILTER_PROPS = sdk.z.object({ @@ -59,7 +60,7 @@ const FILE_FILTER_PROPS = sdk.z.object({ export default new sdk.PluginDefinition({ name: 'file-synchronizer', - version: '0.7.7', + version: '1.0.0', title: 'File Synchronizer', description: 'Synchronize files from external services to Botpress', icon: 'icon.svg', @@ -197,6 +198,9 @@ export default new sdk.PluginDefinition({ }, }, interfaces: { - 'files-readonly': filesReadonly, + 'files-readonly': { + ...filesReadonly, + version: `>=${semver.major(filesReadonly.version)}.0.0 <${semver.major(filesReadonly.version) + 1}.0.0`, + }, }, }) diff --git a/plugins/hitl/package.json b/plugins/hitl/package.json index f37b7aba36a..d76aba35013 100644 --- a/plugins/hitl/package.json +++ b/plugins/hitl/package.json @@ -13,7 +13,9 @@ "devDependencies": { "@botpress/cli": "workspace:*", "@botpresshub/hitl": "workspace:*", - "@types/lodash": "^4.14.191" + "@types/lodash": "^4.14.191", + "@types/semver": "^7.3.11", + "semver": "^7.3.8" }, "bpDependencies": { "hitl": "../../interfaces/hitl" diff --git a/plugins/hitl/plugin.definition.ts b/plugins/hitl/plugin.definition.ts index b89f60287a3..4878f5a5acc 100644 --- a/plugins/hitl/plugin.definition.ts +++ b/plugins/hitl/plugin.definition.ts @@ -1,4 +1,5 @@ import * as sdk from '@botpress/sdk' +import semver from 'semver' import hitl from './bp_modules/hitl' export const DEFAULT_HITL_HANDOFF_MESSAGE = @@ -85,7 +86,7 @@ const PLUGIN_CONFIG_SCHEMA = sdk.z.object({ export default new sdk.PluginDefinition({ name: 'hitl', - version: '0.13.2', + version: '1.0.0', title: 'Human In The Loop', description: 'Seamlessly transfer conversations to human agents', icon: 'icon.svg', @@ -208,7 +209,7 @@ export default new sdk.PluginDefinition({ }, }, interfaces: { - hitl, + hitl: { ...hitl, version: `>=${semver.major(hitl.version)}.0.0 <${semver.major(hitl.version) + 1}.0.0` }, }, events: { humanAgentAssignedTimeout: { diff --git a/plugins/knowledge/package.json b/plugins/knowledge/package.json index c6a058b98dd..306c2e0205b 100644 --- a/plugins/knowledge/package.json +++ b/plugins/knowledge/package.json @@ -15,7 +15,9 @@ "@botpress/cli": "workspace:*", "@botpress/common": "workspace:*", "@botpresshub/llm": "workspace:*", - "@bpinternal/genenv": "0.0.1" + "@bpinternal/genenv": "0.0.1", + "@types/semver": "^7.3.11", + "semver": "^7.3.8" }, "bpDependencies": { "llm": "../../interfaces/llm" diff --git a/plugins/knowledge/plugin.definition.ts b/plugins/knowledge/plugin.definition.ts index a732add32a2..6767562aa63 100644 --- a/plugins/knowledge/plugin.definition.ts +++ b/plugins/knowledge/plugin.definition.ts @@ -1,11 +1,12 @@ import * as sdk from '@botpress/sdk' +import semver from 'semver' import llm from './bp_modules/llm' export default new sdk.PluginDefinition({ name: 'knowledge', - version: '0.0.1', + version: '1.0.0', configuration: { schema: sdk.z.object({}) }, interfaces: { - llm, + llm: { ...llm, version: `>=${semver.major(llm.version)}.0.0 <${semver.major(llm.version) + 1}.0.0` }, }, }) diff --git a/plugins/personality/package.json b/plugins/personality/package.json index 084c27e4a7e..c92669252c0 100644 --- a/plugins/personality/package.json +++ b/plugins/personality/package.json @@ -16,7 +16,9 @@ "@botpress/cli": "workspace:*", "@botpress/common": "workspace:*", "@botpresshub/llm": "workspace:*", - "@bpinternal/genenv": "0.0.1" + "@bpinternal/genenv": "0.0.1", + "@types/semver": "^7.3.11", + "semver": "^7.3.8" }, "bpDependencies": { "llm": "../../interfaces/llm" diff --git a/plugins/personality/plugin.definition.ts b/plugins/personality/plugin.definition.ts index 8b381b7d626..afe1562d958 100644 --- a/plugins/personality/plugin.definition.ts +++ b/plugins/personality/plugin.definition.ts @@ -1,9 +1,10 @@ import * as sdk from '@botpress/sdk' +import semver from 'semver' import llm from './bp_modules/llm' export default new sdk.PluginDefinition({ name: 'personality', - version: '0.0.1', + version: '1.0.0', configuration: { schema: sdk.z.object({ model: sdk.z.string().describe('Model to use to handle bot personality'), @@ -16,6 +17,6 @@ export default new sdk.PluginDefinition({ }), }, interfaces: { - llm, + llm: { ...llm, version: `>=${semver.major(llm.version)}.0.0 <${semver.major(llm.version) + 1}.0.0` }, }, }) diff --git a/plugins/synchronizer/package.json b/plugins/synchronizer/package.json index f1dcf4dc95a..b93b28d80b9 100644 --- a/plugins/synchronizer/package.json +++ b/plugins/synchronizer/package.json @@ -17,7 +17,9 @@ "@botpresshub/deletable": "workspace:*", "@botpresshub/listable": "workspace:*", "@botpresshub/updatable": "workspace:*", - "@types/lodash": "^4.14.191" + "@types/lodash": "^4.14.191", + "@types/semver": "^7.3.11", + "semver": "^7.3.8" }, "bpDependencies": { "listable": "../../interfaces/listable", diff --git a/plugins/synchronizer/plugin.definition.ts b/plugins/synchronizer/plugin.definition.ts index 0ab49bd8c1e..e1475ee6e60 100644 --- a/plugins/synchronizer/plugin.definition.ts +++ b/plugins/synchronizer/plugin.definition.ts @@ -1,4 +1,5 @@ import * as sdk from '@botpress/sdk' +import semver from 'semver' import deletable from './bp_modules/deletable' import listable from './bp_modules/listable' @@ -6,7 +7,7 @@ const itemSchema = listable.definition.entities.item.schema export default new sdk.PluginDefinition({ name: 'synchronizer', - version: '0.0.1', + version: '1.0.0', configuration: { schema: sdk.z.object({ tableName: sdk.z.string().title('Table Name').describe('The name of the table to store items'), @@ -68,7 +69,13 @@ export default new sdk.PluginDefinition({ }, }, interfaces: { - listable, - deletable, + listable: { + ...listable, + version: `>=${semver.major(listable.version)}.0.0 <${semver.major(listable.version) + 1}.0.0`, + }, + deletable: { + ...deletable, + version: `>=${semver.major(deletable.version)}.0.0 <${semver.major(deletable.version) + 1}.0.0`, + }, }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fb193f3cc3..64ff825c17d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2621,6 +2621,12 @@ importers: '@types/picomatch': specifier: ^3.0.2 version: 3.0.2 + '@types/semver': + specifier: ^7.3.11 + version: 7.5.0 + semver: + specifier: ^7.3.8 + version: 7.5.1 plugins/hitl: dependencies: @@ -2643,6 +2649,12 @@ importers: '@types/lodash': specifier: ^4.14.191 version: 4.14.195 + '@types/semver': + specifier: ^7.3.11 + version: 7.5.0 + semver: + specifier: ^7.3.8 + version: 7.5.1 plugins/knowledge: dependencies: @@ -2671,6 +2683,12 @@ importers: '@bpinternal/genenv': specifier: 0.0.1 version: 0.0.1 + '@types/semver': + specifier: ^7.3.11 + version: 7.5.0 + semver: + specifier: ^7.3.8 + version: 7.5.1 plugins/logger: dependencies: @@ -2721,6 +2739,12 @@ importers: '@bpinternal/genenv': specifier: 0.0.1 version: 0.0.1 + '@types/semver': + specifier: ^7.3.11 + version: 7.5.0 + semver: + specifier: ^7.3.8 + version: 7.5.1 plugins/synchronizer: dependencies: @@ -2755,6 +2779,12 @@ importers: '@types/lodash': specifier: ^4.14.191 version: 4.14.195 + '@types/semver': + specifier: ^7.3.11 + version: 7.5.0 + semver: + specifier: ^7.3.8 + version: 7.5.1 packages: