Upgrade call-recorder, people-data-labs, last-contact and partners apps to twenty-sdk 2.23.0-alpha.1 (#23098)

## What

Upgrades the two breaking-change-prone apps to `twenty-sdk` /
`twenty-client-sdk` `2.23.0-alpha.1`, and adds the server-side hook that
lets the 2.23 upgrade install them:

- **people-data-labs**
- **partners**

Follows up on #22882 (System side effect relations), which re-derived
the system relation field universal identifiers name-free and shipped
`getSystemRelationFieldUniversalIdentifier` in the SDK.

## How

- **people-data-labs**: bump the SDK to `2.23.0-alpha.1`. The enriched
views temporarily hardcoded the new system relation identifiers with a
TODO because the SDK still embedded the old values; now that the
name-free identifiers ship in `2.23`, derive them from
`STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.{company,person}.fields.{noteTargets,taskTargets,attachments,timelineActivities}.universalIdentifier`
(identical to the previously pinned values, verified). Engine already
pinned `twenty >=2.23.0`; app stays `1.0.7` (manifest unchanged).
- **partners**: bump the SDK to `2.23.0-alpha.1`. The partner role
references
`opportunity.fields.{taskTargets,noteTargets,attachments,timelineActivities}`
universal identifiers, which the SDK now resolves to the `2.23`
name-free values. Pin `engines.twenty >=2.23.0` and bump the app to
`1.3.1`.
- **server**: add an opt-in `skipWorkspaceCompatibilityCheck` to the
install/upgrade path. The `upgrade-people-data-labs-application` 2.23
command runs mid-upgrade, before the workspace is marked as having
completed 2.23, so the workspace-compatibility check would otherwise
reject installing `1.0.7` (`engines >=2.23.0`). The server is already on
2.23, so the command passes the flag to install `1.0.7` and close the
desync window. Version-progression (downgrade/same-version) checks still
run.
- **call-recorder** and **last-contact** are intentionally left
unchanged (reverted): they don't define custom objects and don't
reference the system relation identifiers, so they aren't
breaking-change-prone and need no SDK bump.

## Breaking change constraints

- **people-data-labs** and **partners** reference system relation
identifiers that only exist on a `2.23` server, so both pin
`engines.twenty >=2.23.0`. Their `dockerhub-latest` integration leg is
red by design until a >=2.23 server image is published (same accepted
state as #22882); the `local` leg is green.

## Validation

- Regenerated the app lockfiles against the published `2.23.0-alpha.1`.
- `people-data-labs` typechecks cleanly against the real `2.23` SDK
types.
- CI: people-data-labs and partners green on `local`, red on
`dockerhub-latest` by design; server/SDK/all other checks green.
- Rebased onto latest `main`.
This commit is contained in:
Paul Rastoin
2026-07-21 15:40:14 +02:00
committed by GitHub
parent bc3112a999
commit 2ef7b7824e
9 changed files with 94 additions and 74 deletions
@@ -1,12 +1,12 @@
{
"name": "twenty-partners",
"version": "1.3.0",
"version": "1.3.1",
"license": "MIT",
"engines": {
"node": "^24.5.0",
"npm": "please-use-yarn",
"yarn": ">=4.0.2",
"twenty": ">=2.19.0"
"twenty": ">=2.23.0"
},
"keywords": [],
"packageManager": "yarn@4.13.0",
@@ -26,8 +26,8 @@
},
"dependencies": {
"react-markdown": "^10.1.0",
"twenty-client-sdk": "2.21.0",
"twenty-sdk": "2.21.0",
"twenty-client-sdk": "2.23.0-alpha.1",
"twenty-sdk": "2.23.0-alpha.1",
"zod": "^4.1.11"
},
"devDependencies": {
@@ -3500,16 +3500,16 @@ __metadata:
languageName: node
linkType: hard
"twenty-client-sdk@npm:2.21.0":
version: 2.21.0
resolution: "twenty-client-sdk@npm:2.21.0"
"twenty-client-sdk@npm:2.23.0-alpha.1":
version: 2.23.0-alpha.1
resolution: "twenty-client-sdk@npm:2.23.0-alpha.1"
dependencies:
"@genql/runtime": "npm:^2.10.0"
esbuild: "npm:^0.28.1"
graphql: "npm:^16.8.1"
lodash: "npm:^4.17.21"
prettier: "npm:^3.8.3"
checksum: 10c0/b411ce14c606830f63df27e7fa8efff6bc82968baabfbb0d6d5725cd6f6b023862102a22ce8baed4ae5c99ac5a50c10915e4f983c97e0fb138db9837c76be80a
checksum: 10c0/b55c1e4eee7cdf24d68b9318924f428ad2d26a96052b5ed7d2a6da21a88bb216326fb979e8f7e99765e6495b9f98c0334ed6fb0452beb49a135f88bfb09c70cc
languageName: node
linkType: hard
@@ -3526,8 +3526,8 @@ __metadata:
react-dom: "npm:^19.0.0"
react-markdown: "npm:^10.1.0"
tsx: "npm:^4.0.0"
twenty-client-sdk: "npm:2.21.0"
twenty-sdk: "npm:2.21.0"
twenty-client-sdk: "npm:2.23.0-alpha.1"
twenty-sdk: "npm:2.23.0-alpha.1"
typescript: "npm:^5.9.3"
vite-tsconfig-paths: "npm:^4.2.1"
vitest: "npm:^4.0.0"
@@ -3535,9 +3535,9 @@ __metadata:
languageName: unknown
linkType: soft
"twenty-sdk@npm:2.21.0":
version: 2.21.0
resolution: "twenty-sdk@npm:2.21.0"
"twenty-sdk@npm:2.23.0-alpha.1":
version: 2.23.0-alpha.1
resolution: "twenty-sdk@npm:2.23.0-alpha.1"
dependencies:
"@sniptt/guards": "npm:^0.2.0"
axios: "npm:^1.16.0"
@@ -3556,12 +3556,12 @@ __metadata:
semver: "npm:7.6.3"
sharp: "npm:^0.34.5"
tinyglobby: "npm:^0.2.15"
twenty-client-sdk: "npm:2.21.0"
twenty-client-sdk: "npm:2.23.0-alpha.1"
typescript: "npm:^5.9.3"
uuid: "npm:^13.0.2"
bin:
twenty: dist/cli.cjs
checksum: 10c0/ea03d59ca549054b1c065feb0800a103eb707c1755cb250356bbe5c59e7af576ce9f8480c1f658637ded8d3930b110bac7b57305255ff9ce02f8a587963e140c
checksum: 10c0/c11830007c6bbf3bc0447c9e7ba2df9d3d3eac9593cb9b0236757e92fbf94cb9f24eecc150b663e435e65dc0bee48baf1833ff2d06333e84845c8b47464bcdce
languageName: node
linkType: hard
@@ -29,8 +29,8 @@
"oxlint": "^0.16.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"twenty-client-sdk": "2.20.0",
"twenty-sdk": "2.20.0",
"twenty-client-sdk": "2.23.0-alpha.1",
"twenty-sdk": "2.23.0-alpha.1",
"typescript": "^5.9.3",
"vite-tsconfig-paths": "^4.2.1",
"vitest": "^4.0.0"
@@ -52,14 +52,10 @@ export default defineView({
{ universalIdentifier: '0c027ae2-7e63-4354-8962-6922923929c0', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.company.pdlAlternativeDomains, position: 32, isVisible: true },
{ universalIdentifier: '0814427e-6699-44fd-9d57-7af6f2389f7d', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.company.pdlTags, position: 33, isVisible: true },
{ universalIdentifier: '65ca68c9-589f-44dc-bf57-d0a2152cb09c', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.company.pdlAffiliatedProfiles, position: 34, isVisible: true },
// TODO: derive these with getSystemRelationFieldUniversalIdentifier once
// the next twenty-sdk is released. The system relation field universal
// identifiers were re-derived name-free in twenty v2.23 and the pinned
// twenty-sdk still embeds the old values.
{ universalIdentifier: '3f0e5a60-3f49-4872-8451-5344a3715374', fieldMetadataUniversalIdentifier: '0b28db77-8099-5ce3-a11f-86a5778d7740', position: 35, isVisible: true }, // company.noteTargets
{ universalIdentifier: '70ab74e1-d2ff-4f15-81ef-196e223a783e', fieldMetadataUniversalIdentifier: '9d7b0087-7037-55dc-bb59-456064455694', position: 36, isVisible: true }, // company.taskTargets
{ universalIdentifier: '035b3904-59b9-4fce-a366-ee0139770346', fieldMetadataUniversalIdentifier: 'a4399ae3-fe89-59fe-a282-aec77d4e63a8', position: 37, isVisible: true }, // company.attachments
{ universalIdentifier: '617b7343-1ae5-4813-b4f5-6e99d0a833bb', fieldMetadataUniversalIdentifier: '28ec0f8f-ad23-5317-b2d9-1a487bcefee2', position: 38, isVisible: true }, // company.timelineActivities
{ universalIdentifier: '3f0e5a60-3f49-4872-8451-5344a3715374', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.noteTargets.universalIdentifier, position: 35, isVisible: true },
{ universalIdentifier: '70ab74e1-d2ff-4f15-81ef-196e223a783e', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.taskTargets.universalIdentifier, position: 36, isVisible: true },
{ universalIdentifier: '035b3904-59b9-4fce-a366-ee0139770346', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.attachments.universalIdentifier, position: 37, isVisible: true },
{ universalIdentifier: '617b7343-1ae5-4813-b4f5-6e99d0a833bb', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.timelineActivities.universalIdentifier, position: 38, isVisible: true },
{ universalIdentifier: '24d0411e-23d2-4cf8-9781-6efc8443efdc', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.createdBy.universalIdentifier, position: 39, isVisible: true },
{ universalIdentifier: '4036071d-e527-46c8-940c-401f33803aa9', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.updatedBy.universalIdentifier, position: 40, isVisible: true },
{ universalIdentifier: 'ab123fcd-ec53-4d33-b43c-c7319db72be4', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.fields.createdAt.universalIdentifier, position: 41, isVisible: true },
@@ -56,14 +56,10 @@ export default defineView({
{ universalIdentifier: '730dfb73-0ff7-429a-a70b-fefc6080b537', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.person.pdlSex, position: 36, isVisible: true },
{ universalIdentifier: '1620bf1d-0b12-4f69-ad0e-ba7dd1d8aa44', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.person.pdlBirthDate, position: 37, isVisible: true },
{ universalIdentifier: '029770cb-9353-4b5f-8395-b217cc95402e', fieldMetadataUniversalIdentifier: PDL_FIELD_UNIVERSAL_IDENTIFIERS.person.pdlBirthYear, position: 38, isVisible: true },
// TODO: derive these with getSystemRelationFieldUniversalIdentifier once
// the next twenty-sdk is released. The system relation field universal
// identifiers were re-derived name-free in twenty v2.23 and the pinned
// twenty-sdk still embeds the old values.
{ universalIdentifier: 'ef6e496c-de6c-47ed-bd44-886736f942ec', fieldMetadataUniversalIdentifier: '1c0e0dfe-a01f-58d6-8948-08b93164d03c', position: 39, isVisible: true }, // person.noteTargets
{ universalIdentifier: '3758ed96-f76d-49a0-b37b-7c5c9aa4c1c1', fieldMetadataUniversalIdentifier: 'ddea86e6-5766-5798-ac32-14fbab6089f6', position: 40, isVisible: true }, // person.taskTargets
{ universalIdentifier: 'a5bf7046-8fc9-4704-91a5-ba6c1b0f4b58', fieldMetadataUniversalIdentifier: '54dd92e1-67bf-5381-86f3-c747976dcdaf', position: 41, isVisible: true }, // person.attachments
{ universalIdentifier: 'f6ed39c3-aff2-4ccf-b4e8-57de72b64cdd', fieldMetadataUniversalIdentifier: '32d7483f-6227-528b-bc65-62d9cf858cd8', position: 42, isVisible: true }, // person.timelineActivities
{ universalIdentifier: 'ef6e496c-de6c-47ed-bd44-886736f942ec', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.noteTargets.universalIdentifier, position: 39, isVisible: true },
{ universalIdentifier: '3758ed96-f76d-49a0-b37b-7c5c9aa4c1c1', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.taskTargets.universalIdentifier, position: 40, isVisible: true },
{ universalIdentifier: 'a5bf7046-8fc9-4704-91a5-ba6c1b0f4b58', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.attachments.universalIdentifier, position: 41, isVisible: true },
{ universalIdentifier: 'f6ed39c3-aff2-4ccf-b4e8-57de72b64cdd', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.timelineActivities.universalIdentifier, position: 42, isVisible: true },
{ universalIdentifier: '45159f0c-bac0-439c-ad8d-c7e4fce4b457', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.createdBy.universalIdentifier, position: 43, isVisible: true },
{ universalIdentifier: '8a5f1742-317f-4b01-b0c1-5d0866f78fa9', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.updatedBy.universalIdentifier, position: 44, isVisible: true },
{ universalIdentifier: '1614c9fb-3566-481f-9dfb-bbba37b1c8aa', fieldMetadataUniversalIdentifier: STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.person.fields.createdAt.universalIdentifier, position: 45, isVisible: true },
@@ -953,8 +953,8 @@ __metadata:
oxlint: "npm:^0.16.0"
react: "npm:^18.2.0"
react-dom: "npm:^18.2.0"
twenty-client-sdk: "npm:2.20.0"
twenty-sdk: "npm:2.20.0"
twenty-client-sdk: "npm:2.23.0-alpha.1"
twenty-sdk: "npm:2.23.0-alpha.1"
typescript: "npm:^5.9.3"
vite-tsconfig-paths: "npm:^4.2.1"
vitest: "npm:^4.0.0"
@@ -2871,22 +2871,22 @@ __metadata:
languageName: node
linkType: hard
"twenty-client-sdk@npm:2.20.0":
version: 2.20.0
resolution: "twenty-client-sdk@npm:2.20.0"
"twenty-client-sdk@npm:2.23.0-alpha.1":
version: 2.23.0-alpha.1
resolution: "twenty-client-sdk@npm:2.23.0-alpha.1"
dependencies:
"@genql/runtime": "npm:^2.10.0"
esbuild: "npm:^0.28.1"
graphql: "npm:^16.8.1"
lodash: "npm:^4.17.21"
prettier: "npm:^3.8.3"
checksum: 10c0/925a5ad99bbccb7290365536b6d7ded6a8d02a064b175a195b6439732db6848a0a3aaa762f5c30ad0b79f48921a6cbd203fe442a0b9f93d1d902812c0d83aa17
checksum: 10c0/b55c1e4eee7cdf24d68b9318924f428ad2d26a96052b5ed7d2a6da21a88bb216326fb979e8f7e99765e6495b9f98c0334ed6fb0452beb49a135f88bfb09c70cc
languageName: node
linkType: hard
"twenty-sdk@npm:2.20.0":
version: 2.20.0
resolution: "twenty-sdk@npm:2.20.0"
"twenty-sdk@npm:2.23.0-alpha.1":
version: 2.23.0-alpha.1
resolution: "twenty-sdk@npm:2.23.0-alpha.1"
dependencies:
"@sniptt/guards": "npm:^0.2.0"
axios: "npm:^1.16.0"
@@ -2905,12 +2905,12 @@ __metadata:
semver: "npm:7.6.3"
sharp: "npm:^0.34.5"
tinyglobby: "npm:^0.2.15"
twenty-client-sdk: "npm:2.20.0"
twenty-client-sdk: "npm:2.23.0-alpha.1"
typescript: "npm:^5.9.3"
uuid: "npm:^13.0.2"
bin:
twenty: dist/cli.cjs
checksum: 10c0/7fe50f229470e370473e7555f0eb284b59424cb51369ce0fa88723681bd6a662879268f953599b0e3c5fc97b73f1e756352df80605185ed6b4e9c85fa186feef
checksum: 10c0/c11830007c6bbf3bc0447c9e7ba2df9d3d3eac9593cb9b0236757e92fbf94cb9f24eecc150b663e435e65dc0bee48baf1833ff2d06333e84845c8b47464bcdce
languageName: node
linkType: hard
@@ -95,6 +95,11 @@ export class UpgradePeopleDataLabsApplicationCommand extends ProvisionedWorkspac
appRegistrationId: applicationRegistration.id,
targetVersion: PEOPLE_DATA_LABS_TARGET_VERSION,
workspaceId,
// 1.0.7 pins engines.twenty >=2.23.0, but this command runs as part of
// the 2.23 workspace upgrade itself, so the workspace has not yet been
// marked as completing 2.23 and the compatibility check would reject
// the install. The server is already on 2.23, so skip the check here.
skipWorkspaceCompatibilityCheck: true,
});
this.logger.log(
@@ -9,27 +9,27 @@ import { FileFolder } from 'twenty-shared/types';
import { isDefined } from 'twenty-shared/utils';
import { Repository } from 'typeorm';
import { buildApplicationFileList } from 'src/engine/core-modules/application/application-install/utils/build-application-file-list.util';
import { ApplicationManifestApplyService } from 'src/engine/core-modules/application/application-manifest/application-manifest-apply.service';
import { ApplicationSyncService } from 'src/engine/core-modules/application/application-manifest/application-sync.service';
import {
ApplicationException,
ApplicationExceptionCode,
} from 'src/engine/core-modules/application/application.exception';
import { isImageFilePath } from 'src/engine/core-modules/application/application-registration/utils/is-image-file-path.util';
import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
import { ApplicationRegistrationSourceType } from 'src/engine/core-modules/application/application-registration/enums/application-registration-source-type.enum';
import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import {
type ResolvedPackage,
ApplicationPackageFetcherService,
type ResolvedPackage,
} from 'src/engine/core-modules/application/application-package/application-package-fetcher.service';
import { ApplicationVersionValidationService } from 'src/engine/core-modules/application/application-package/application-version-validation.service';
import {
VERSION_PROGRESSION_REASON_TO_INSTALL_EXCEPTION_CODE,
VERSION_REASON_TO_APPLICATION_EXCEPTION_CODE,
} from 'src/engine/core-modules/application/application-package/constants/version-reason-to-exception-code.constant';
import { buildApplicationFileList } from 'src/engine/core-modules/application/application-install/utils/build-application-file-list.util';
import { ApplicationManifestApplyService } from 'src/engine/core-modules/application/application-manifest/application-manifest-apply.service';
import { ApplicationSyncService } from 'src/engine/core-modules/application/application-manifest/application-sync.service';
import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
import { ApplicationRegistrationSourceType } from 'src/engine/core-modules/application/application-registration/enums/application-registration-source-type.enum';
import { isImageFilePath } from 'src/engine/core-modules/application/application-registration/utils/is-image-file-path.util';
import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity';
import {
ApplicationException,
ApplicationExceptionCode,
} from 'src/engine/core-modules/application/application.exception';
import { ApplicationService } from 'src/engine/core-modules/application/application.service';
import { CacheLockService } from 'src/engine/core-modules/cache-lock/cache-lock.service';
import { FileStorageService } from 'src/engine/core-modules/file-storage/services/file-storage.service';
import { LogicFunctionExecutorService } from 'src/engine/core-modules/logic-function/logic-function-executor/logic-function-executor.service';
@@ -69,6 +69,7 @@ export class ApplicationInstallService {
appRegistrationId: string;
version?: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
}): Promise<boolean> {
const appRegistration = await this.appRegistrationRepository.findOne({
where: { id: params.appRegistrationId },
@@ -109,6 +110,8 @@ export class ApplicationInstallService {
this.doInstallApplication(appRegistration, {
version: params.version,
workspaceId: params.workspaceId,
skipWorkspaceCompatibilityCheck:
params.skipWorkspaceCompatibilityCheck,
}),
lockKey,
{ ttl: 60_000, ms: 500, maxRetries: 120 },
@@ -117,7 +120,11 @@ export class ApplicationInstallService {
private async doInstallApplication(
preLockAppRegistration: ApplicationRegistrationEntity,
params: { version?: string; workspaceId: string },
params: {
version?: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
},
): Promise<boolean> {
// Re-read inside the lock so the authorization below cannot act on stale
// listing or ownership state.
@@ -184,7 +191,11 @@ export class ApplicationInstallService {
existingApplication,
}: {
appRegistration: ApplicationRegistrationEntity;
params: { version?: string; workspaceId: string };
params: {
version?: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
};
resolvedPackage: ResolvedPackage;
existingApplication: ApplicationEntity | null;
}): Promise<boolean> {
@@ -238,28 +249,36 @@ export class ApplicationInstallService {
existingApplication,
}: {
appRegistration: ApplicationRegistrationEntity;
params: { version?: string; workspaceId: string };
params: {
version?: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
};
resolvedPackage: ResolvedPackage;
existingApplication: ApplicationEntity | null;
}): Promise<boolean> {
const universalIdentifier = appRegistration.universalIdentifier;
const requiredServerVersion =
resolvedPackage.packageJson.engines?.['twenty'];
if (params.skipWorkspaceCompatibilityCheck !== true) {
const requiredServerVersion =
resolvedPackage.packageJson.engines?.['twenty'];
const versionValidation =
await this.applicationVersionValidationService.validateWorkspaceCompatibility(
{
requiredServerVersion,
workspaceId: params.workspaceId,
},
);
const versionValidation =
await this.applicationVersionValidationService.validateWorkspaceCompatibility(
{
requiredServerVersion,
workspaceId: params.workspaceId,
},
);
if (!versionValidation.compatible) {
throw new ApplicationException(
versionValidation.message,
VERSION_REASON_TO_APPLICATION_EXCEPTION_CODE[versionValidation.reason],
);
if (!versionValidation.compatible) {
throw new ApplicationException(
versionValidation.message,
VERSION_REASON_TO_APPLICATION_EXCEPTION_CODE[
versionValidation.reason
],
);
}
}
const isVersionUpgrade = isDefined(existingApplication);
@@ -172,6 +172,7 @@ export class ApplicationUpgradeService {
appRegistrationId: string;
targetVersion: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
}): Promise<boolean> {
const appRegistration = await this.appRegistrationRepository.findOneOrFail({
where: { id: params.appRegistrationId },
@@ -181,6 +182,7 @@ export class ApplicationUpgradeService {
appRegistration,
targetVersion: params.targetVersion,
workspaceId: params.workspaceId,
skipWorkspaceCompatibilityCheck: params.skipWorkspaceCompatibilityCheck,
});
}
@@ -188,6 +190,7 @@ export class ApplicationUpgradeService {
appRegistration: ApplicationRegistrationEntity;
targetVersion: string;
workspaceId: string;
skipWorkspaceCompatibilityCheck?: boolean;
}): Promise<boolean> {
const { appRegistration } = params;
@@ -209,6 +212,7 @@ export class ApplicationUpgradeService {
appRegistrationId: appRegistration.id,
version: params.targetVersion,
workspaceId: params.workspaceId,
skipWorkspaceCompatibilityCheck: params.skipWorkspaceCompatibilityCheck,
});
} catch (error) {
const appName =