import * as plugins from '../plugins.js'; import type { IIdentity } from '../data/user.js'; import type { IService } from '../data/service.js'; import type { IAppStoreApp, IAppStoreAppMeta, IAppStoreInstallRequest, IAppStoreVersionConfig, IUpgradeableAppStoreService } from '../appstore/index.js'; export type TAppStoreUpgradeStatus = 'running' | 'success' | 'failed'; export type TAppStoreUpgradeStep = 'queued' | 'validating' | 'migration' | 'applying' | 'updating-service' | 'pushing-config' | 'complete' | 'failed'; export interface IAppStoreUpgradeChange { field: string; currentValue: string; targetValue: string; } export interface IAppStoreUpgradePreview { serviceId: string; serviceName: string; appTemplateId: string; fromVersion: string; targetVersion: string; resolvedTargetVersion: string; hasMigration: boolean; requiresManualReview: boolean; changes: IAppStoreUpgradeChange[]; warnings: string[]; blockers: string[]; config: IAppStoreVersionConfig; appMeta: IAppStoreAppMeta; } export interface IAppStoreUpgradeOperation { id: string; serviceId: string; serviceName: string; appTemplateId: string; fromVersion: string; targetVersion: string; status: TAppStoreUpgradeStatus; step: TAppStoreUpgradeStep; progressLines: string[]; warnings: string[]; error?: string; startedAt: number; updatedAt: number; completedAt?: number; service?: IService; } export interface IReq_Any_GetAppStoreTemplates extends plugins.typedrequestInterfaces.implementsTR { method: 'getAppStoreTemplates'; request: { identity: IIdentity; }; response: { apps: IAppStoreApp[]; }; } export interface IReq_Any_GetAppStoreConfig extends plugins.typedrequestInterfaces.implementsTR { method: 'getAppStoreConfig'; request: { identity: IIdentity; appId: string; version: string; }; response: { config: IAppStoreVersionConfig; appMeta: IAppStoreAppMeta; }; } export interface IReq_Any_InstallAppStoreApp extends plugins.typedrequestInterfaces.implementsTR { method: 'installAppStoreApp'; request: { identity: IIdentity; install: IAppStoreInstallRequest; }; response: { service: IService; }; } export interface IReq_Any_GetUpgradeableAppStoreServices extends plugins.typedrequestInterfaces.implementsTR { method: 'getUpgradeableAppStoreServices'; request: { identity: IIdentity; }; response: { services: IUpgradeableAppStoreService[]; }; } export interface IReq_Any_GetAppStoreUpgradePreview extends plugins.typedrequestInterfaces.implementsTR { method: 'getAppStoreUpgradePreview'; request: { identity: IIdentity; serviceId: string; targetVersion?: string; }; response: { preview: IAppStoreUpgradePreview; }; } export interface IReq_Any_UpgradeAppStoreService extends plugins.typedrequestInterfaces.implementsTR { method: 'upgradeAppStoreService'; request: { identity: IIdentity; serviceId: string; targetVersion: string; }; response: { service: IService; warnings: string[]; }; } export interface IReq_Any_StartAppStoreServiceUpgrade extends plugins.typedrequestInterfaces.implementsTR { method: 'startAppStoreServiceUpgrade'; request: { identity: IIdentity; serviceId: string; targetVersion: string; }; response: { operation: IAppStoreUpgradeOperation; }; } export interface IReq_Any_GetAppStoreUpgradeOperations extends plugins.typedrequestInterfaces.implementsTR { method: 'getAppStoreUpgradeOperations'; request: { identity: IIdentity; }; response: { operations: IAppStoreUpgradeOperation[]; }; } export interface IReq_Any_PushAppStoreUpgradeProgress extends plugins.typedrequestInterfaces.implementsTR { method: 'pushAppStoreUpgradeProgress'; request: { operation: IAppStoreUpgradeOperation; }; response: Record; }