npm package diff

Package: @forge/cli

Versions: 10.12.1-next.2 - 10.13.0-next.18

Removed:package/out/deploy/packager/nativeui-bundler.js

Removed:package/out/deploy/packager/nativeui-bundler.d.ts.map

Removed:package/out/deploy/packager/nativeui-bundler.d.ts

Added:package/out/command-line/controller/eligibility-controller.js

Added:package/out/command-line/view/eligibility-view.js

Added:package/out/eligibility/graphql-client.js

Added:package/out/command-line/register-eligibility-commands.js

Added:package/out/service/roa-service.js

Added:package/out/command-line/controller/eligibility-controller.d.ts.map

Added:package/out/command-line/view/eligibility-view.d.ts.map

Added:package/out/eligibility/graphql-client.d.ts.map

Added:package/out/command-line/register-eligibility-commands.d.ts.map

Added:package/out/service/roa-service.d.ts.map

Added:package/out/command-line/controller/eligibility-controller.d.ts

Added:package/out/command-line/view/eligibility-view.d.ts

Added:package/out/eligibility/graphql-client.d.ts

Added:package/out/command-line/register-eligibility-commands.d.ts

Added:package/out/service/roa-service.d.ts

Modified:package/out/command-line/dependency-injection.js

Index: package/out/command-line/dependency-injection.js
===================================================================
--- package/out/command-line/dependency-injection.js
+++ package/out/command-line/dependency-injection.js
@@ -62,11 +62,14 @@
 const graphql_client_7 = require("../webtrigger/graphql-client");
 const stubController_1 = require("./controller/stubController");
 const prerequisites_controller_1 = require("./controller/prerequisites-controller");
 const runtime_bundler_1 = require("../deploy/packager/runtime-bundler");
-const nativeui_bundler_1 = require("../deploy/packager/nativeui-bundler");
 const sentry_1 = require("./sentry");
 const default_environment_controller_1 = require("./controller/default-environment-controller");
+const graphql_client_8 = require("../eligibility/graphql-client");
+const roa_service_1 = require("../service/roa-service");
+const eligibility_controller_1 = require("./controller/eligibility-controller");
+const eligibility_view_1 = require("./view/eligibility-view");
 const getDependencies = async (cliDetails) => {
     let cmd;
     const ui = new cli_shared_1.CommandLineUI(() => cmd.verbose);
     const cachedConf = cli_shared_1.CachedConf.getCache(cli_shared_1.CONFIG_PROJECT_NAME);
@@ -146,21 +149,22 @@
     const uploaderArtifactClient = new deploy_1.ArtifactGraphQLClient(graphQLClient);
     const triggerDeployClient = new deploy_1.TriggerDeployGraphQLClient(graphQLClient);
     const archiveUploader = new deploy_1.AppArchiveUploader(assertiveAppConfigReader, uploaderArtifactClient, fileUploader, ui, new resources_uploader_service_1.ResourcesUploaderService(fileReader));
     const deployer = new deploy_1.ArtifactDeployer(assertiveAppConfigReader, triggerDeployClient, deployMonitorClient, cli_shared_1.pause, ui);
-    const sandboxBundle = (0, bundler_1.getSandboxBundler)();
-    const nodeBundle = (0, bundler_1.getNodeBundler)((0, bundler_1.getWrapperProvider)({ fileSystemReader: fileReader, statsigService }));
+    const sandboxBundle = new bundler_1.SandboxBundler(ui);
+    const nodeBundle = new bundler_1.NodeBundler(ui, (0, bundler_1.getWrapperProvider)({ fileSystemReader: fileReader, statsigService }));
     const sandboxRuntimeBundler = new runtime_bundler_1.SandboxRuntimeBundler(archiverFactory, ui, sandboxBundle, fileReader, configFile);
     const nodeRuntimeBundler = new runtime_bundler_1.NodeRuntimeBundler(archiverFactory, ui, nodeBundle, fileReader, configFile);
-    const nativeUiBundler = new nativeui_bundler_1.NativeUIBundler(ui, bundler_1.nativeUiBundle);
+    const nativeUiBundler = new bundler_1.NativeUIBundler(ui);
     const sandboxAppPackager = new deploy_1.AppPackager(sandboxRuntimeBundler, nativeUiBundler, ui);
     const nodeAppPackager = new deploy_1.AppPackager(nodeRuntimeBundler, nativeUiBundler, ui);
     const getWebTriggerURLCommand = new get_webtrigger_url_1.GetWebTriggerURLCommand(assertiveAppConfigReader, installationsClient, appEnvironmentClient, webTriggerGraphqlClient);
     const autocompleteController = new autocomplete_controller_1.AutocompleteController(ui);
     const installationsService = new installation_service_1.InstallationService(assertiveAppConfigReader, installationsClient, installationsClient);
     const installView = new install_view_1.InstallView(ui);
     const installController = new install_controller_1.InstallController(assertiveAppConfigReader, configFile, ui, installAppSiteCommand, installationsService, installView, statsigService);
     const feedbackController = new feedback_controller_1.FeedbackController(credentialStore, feedbackPostClient);
+    const eligibilityController = new eligibility_controller_1.EligibilityController(new roa_service_1.RoaService(assertiveAppConfigReader, new graphql_client_8.RoaEligibilityClient(graphQLClient)), new eligibility_view_1.EligibilityView(ui));
     const lintService = new lint_service_1.LintService(configFile, fileReader);
     const lintView = new lint_view_1.LintView(ui);
     const lintController = new lint_controller_1.LintController(lintService, lintView);
     const deployView = new deploy_view_1.DeployView(ui);
@@ -169,9 +173,10 @@
     const resourcePackagingService = new resource_packaging_service_1.ResourcePackagingService(archiverFactory, fileReader, process.cwd(), bridgeScriptService, iframeResizerScriptService);
     const i18nResourceBundlingService = new cli_shared_1.I18nResourceBundlingService();
     const sandboxPackageUploadDeployCommand = new deploy_1.PackageUploadDeployCommand(sandboxAppPackager, archiveUploader, deployer, resourcePackagingService, i18nResourceBundlingService);
     const nodePackageUploadDeployCommand = new deploy_1.PackageUploadDeployCommand(nodeAppPackager, archiveUploader, deployer, resourcePackagingService, i18nResourceBundlingService);
-    const deployController = new deploy_controller_1.DeployController(assertiveAppConfigReader, configFile, lintService, installationsService, migrationKeysService, customEntitiesService, appEnvironmentClient, deployView, sandboxPackageUploadDeployCommand, nodePackageUploadDeployCommand, createEnvironmentCommand);
+    const roaService = new roa_service_1.RoaService(assertiveAppConfigReader, new graphql_client_8.RoaEligibilityClient(graphQLClient));
+    const deployController = new deploy_controller_1.DeployController(assertiveAppConfigReader, configFile, lintService, installationsService, roaService, migrationKeysService, customEntitiesService, appEnvironmentClient, deployView, sandboxPackageUploadDeployCommand, nodePackageUploadDeployCommand, createEnvironmentCommand);
     const createSandbox = async (cfg) => new tunnel_2.NodeSandbox(cfg);
     const functionHost = new tunnel_1.LocalFunctionHost(configFile, ui, null, createSandbox);
     const localInvocationService = new tunnel_1.LocalInvocationService(configFile, ui, runtime_1.notImplementedInspector);
     const startTunnelCommand = new tunnel_1.StartTunnelCommand(assertiveAppConfigReader, new tunnel_1.LocalDevelopmentServer(localInvocationService, ui, configFile, fileReader, statsigService), new tunnel_1.CloudflareCreateTunnelService(ui), new tunnel_1.RegisterTunnelServiceImpl(new tunnel_1.TunnelGraphqlClient(graphQLClient)), functionHost, runtime_1.notImplementedInspector, ui, configFile);
@@ -227,8 +232,9 @@
         },
         controllers: {
             autocompleteController,
             deployController,
+            eligibilityController,
             feedbackController,
             installController,
             lintController,
             preCommandController,

Modified:package/out/command-line/controller/deploy-controller.js

Index: package/out/command-line/controller/deploy-controller.js
===================================================================
--- package/out/command-line/controller/deploy-controller.js
+++ package/out/command-line/controller/deploy-controller.js
@@ -41,20 +41,22 @@
     appConfigProvider;
     configFile;
     lintService;
     installationsService;
+    roaService;
     migrationKeysService;
     customEntitiesService;
     appEnvironmentClient;
     deployView;
     sandboxPackageUploadDeployCommand;
     nodePackageUploadDeployCommand;
     createEnvironmentCommand;
-    constructor(appConfigProvider, configFile, lintService, installationsService, migrationKeysService, customEntitiesService, appEnvironmentClient, deployView, sandboxPackageUploadDeployCommand, nodePackageUploadDeployCommand, createEnvironmentCommand) {
+    constructor(appConfigProvider, configFile, lintService, installationsService, roaService, migrationKeysService, customEntitiesService, appEnvironmentClient, deployView, sandboxPackageUploadDeployCommand, nodePackageUploadDeployCommand, createEnvironmentCommand) {
         this.appConfigProvider = appConfigProvider;
         this.configFile = configFile;
         this.lintService = lintService;
         this.installationsService = installationsService;
+        this.roaService = roaService;
         this.migrationKeysService = migrationKeysService;
         this.customEntitiesService = customEntitiesService;
         this.appEnvironmentClient = appEnvironmentClient;
         this.deployView = deployView;
@@ -125,19 +127,26 @@
                 }
             }
         }
     }
-    async verifyPostDeployment(environment) {
-        const needsVersionUpdate = await this.installationsService.hasOutdatedProductInstallation(environment);
+    async verifyPostDeployment(environmentKey, environmentType, majorVersion) {
+        const needsVersionUpdate = await this.installationsService.hasOutdatedProductInstallation(environmentKey);
         if (needsVersionUpdate) {
             this.deployView.displayOutdatedInstallationsMessage();
         }
+        const roaEligibility = await this.roaService.getEligibilityStatus(environmentKey, majorVersion);
+        if (!roaEligibility.isEligible) {
+            this.deployView.displayRoaEligibilityFailureMessage(roaEligibility.appVersion, environmentKey, environmentType);
+        }
+        else {
+            this.deployView.displayRoaEligibilitySuccessMessage(roaEligibility.appVersion, environmentKey, environmentType);
+        }
         const manifest = await this.configFile.readConfig();
         if (manifest?.app?.storage?.entities) {
-            if (await this.customEntitiesService.isReindexingInProgress(environment)) {
+            if (await this.customEntitiesService.isReindexingInProgress(environmentKey)) {
                 this.deployView.displaySuccessfulDeploymentWhileReindexing();
             }
-            this.deployView.displayIndexingCommand(environment);
+            this.deployView.displayIndexingCommand(environmentKey);
         }
     }
     async confirmAndCreateEnvironment(environment, nonInteractive) {
         if (!nonInteractive) {
@@ -215,9 +224,9 @@
             modules: config.modules,
             i18nConfig: config.translations
         }));
         if (verify) {
-            await this.verifyPostDeployment(environment);
+            await this.verifyPostDeployment(environment, appDetails.environmentType, majorVersion);
         }
         try {
             analytics.analytics.egressPermissionList = await this.configFile.getEgressPermissions();
             analytics.analytics.connectKey = hasConnectKeyChanged

Modified:package/out/command-line/view/deploy-view.js

Index: package/out/command-line/view/deploy-view.js
===================================================================
--- package/out/command-line/view/deploy-view.js
+++ package/out/command-line/view/deploy-view.js
@@ -24,8 +24,16 @@
     displayOutdatedInstallationsMessage() {
         this.ui.emptyLine();
         this.ui.warn(cli_shared_1.Text.deploy.outdatedInstallations);
     }
+    displayRoaEligibilityFailureMessage(appVersion, envKey, envType) {
+        this.ui.emptyLine();
+        this.ui.warn(cli_shared_1.Text.deploy.postDeploymentRoaEligibilityFailure(appVersion, envKey, envType));
+    }
+    displayRoaEligibilitySuccessMessage(appVersion, envKey, envType) {
+        this.ui.emptyLine();
+        this.ui.info(cli_shared_1.Text.deploy.postDeploymentRoaEligibilitySuccess(appVersion, envKey, envType));
+    }
     displayIndexingCommand(environment) {
         this.ui.emptyLine();
         this.ui.info(cli_shared_1.Text.deploy.listIndexes(environment));
     }

Modified:package/out/installations/graphql-client.js

Index: package/out/installations/graphql-client.js
===================================================================
--- package/out/installations/graphql-client.js
+++ package/out/installations/graphql-client.js
@@ -101,9 +101,9 @@
             return this.bitbucketTranslator;
         }
         return this.cloudIdTranslator;
     }
-    async installAppIntoSite({ environmentKey, site, product, appId, licenseOverride }) {
+    async installAppIntoSite({ environmentKey, site, product, appId, licenseOverride, overrides }) {
         const workspaceAri = await this.buildInstallationContext(product, site);
         const query = `
       mutation forge_cli_installApplication($input: AppInstallationInput!) {
         installApp(input: $input) {
@@ -124,9 +124,10 @@
                 installationContext: workspaceAri,
                 appId,
                 environmentKey,
                 async: true,
-                licenseOverride
+                licenseOverride,
+                overrides
             }
         };
         const { response: { installApp: { success, taskId, errors } }, requestId } = await this.graphqlClient.mutate(query, variables);
         const error = (0, cli_shared_1.getError)(errors);

Modified:package/out/command-line/index.js

Index: package/out/command-line/index.js
===================================================================
--- package/out/command-line/index.js
+++ package/out/command-line/index.js
@@ -18,8 +18,9 @@
 const register_settings_commands_1 = require("./register-settings-commands");
 const register_providers_commands_1 = require("./register-providers-commands");
 const register_environments_commands_1 = require("./register-environments-commands");
 const register_storage_commands_1 = require("./register-storage-commands");
+const register_eligibility_commands_1 = require("./register-eligibility-commands");
 function registerCommands(deps) {
     (0, register_autocomplete_commands_1.registerCommands)(deps);
     (0, register_authentication_command_1.registerCommands)(deps);
     (0, register_app_commands_1.registerCommands)(deps);
@@ -34,8 +35,9 @@
     (0, register_feedback_commands_1.registerCommands)(deps);
     (0, register_settings_commands_1.registerCommands)(deps);
     (0, register_providers_commands_1.registerCommands)(deps);
     (0, register_storage_commands_1.registerCommands)(deps);
+    (0, register_eligibility_commands_1.registerCommands)(deps);
 }
 exports.registerCommands = registerCommands;
 const registerEvents = ({ ui }) => {
     process.on('unhandledRejection', async (reason) => {

Modified:package/out/installations/install-app-site.js

Index: package/out/installations/install-app-site.js
===================================================================
--- package/out/installations/install-app-site.js
+++ package/out/installations/install-app-site.js
@@ -7,16 +7,17 @@
     constructor(getAppConfig, installAppClient) {
         this.getAppConfig = getAppConfig;
         this.installAppClient = installAppClient;
     }
-    async execute({ environmentKey, site, product, licenseOverride }) {
+    async execute({ environmentKey, site, product, licenseOverride, overrides }) {
         const { id: appId } = await this.getAppConfig();
         return await this.installAppClient.installAppIntoSite({
             appId,
             environmentKey,
             site,
             product,
-            licenseOverride
+            licenseOverride,
+            overrides
         });
     }
 }
 exports.InstallAppSiteCommand = InstallAppSiteCommand;

Modified:package/out/command-line/controller/install-controller.js

Index: package/out/command-line/controller/install-controller.js
===================================================================
--- package/out/command-line/controller/install-controller.js
+++ package/out/command-line/controller/install-controller.js
@@ -41,9 +41,9 @@
                 return;
             }
         }
     }
-    async installOrUpgrade(upgrade, environment, environmentType, site, product, appId, text, license) {
+    async installOrUpgrade(upgrade, environment, environmentType, site, product, appId, text, license, overrides) {
         return this.ui.displayProgress(async () => {
             if (upgrade) {
                 const isAlreadyUpdated = await this.installationService.upgradeInstallation(site, product, environment, appId);
                 return isAlreadyUpdated;
@@ -52,9 +52,10 @@
                 await this.installAppSiteCommand.execute({
                     environmentKey: environment,
                     site,
                     product,
-                    licenseOverride: license
+                    licenseOverride: license,
+                    overrides
                 });
                 return false;
             }
         }, text.cmd.start(environment, environmentType), (alreadyUpdated) => {
@@ -134,12 +135,13 @@
             throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseOverrideErrors.prodSupport);
         }
         return upperCaseLicense;
     }
-    async run({ environment, site, product, upgrade, confirmScopes, license, nonInteractive }) {
+    async run({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) {
         const { id } = await this.appConfigProvider();
         const text = upgrade ? cli_shared_1.Text.upgrade : cli_shared_1.Text.install;
         const validLicense = this.validateLicenseOption(license, environment);
+        const overrides = await this.validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment);
         if (upgrade && (!site || !product)) {
             const upgradeResult = await this.promptForUpgrade(site, product, environment);
             environment = upgradeResult.environment;
             site = upgradeResult.site;
@@ -170,9 +172,9 @@
         const addedScopes = await this.extractAddedScopes(environmentPermissions);
         const scopesConfirmationResult = await this.installView.promptForPermissionsConfirmation(environmentPermissions, addedScopes, [...manifestScopes], manifestEgressAddresses, environment, confirmScopes, !!nonInteractive, text);
         if (!scopesConfirmationResult)
             return;
-        const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense);
+        const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense, overrides);
         if (isAlreadyUpdated) {
             this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(environment, product, site.host));
         }
         else {
@@ -201,6 +203,55 @@
             name: scope,
             requiresInteractiveConsent: scopesWithInteractiveConsent.has(scope)
         }));
     }
+    isValidLicenseMode(value) {
+        return Object.values(cli_shared_1.EcosystemLicenseMode).includes(value);
+    }
+    validateLicenseModes(licenseModes, usersWithAccess, environment) {
+        if (licenseModes === undefined) {
+            return undefined;
+        }
+        if (usersWithAccess === undefined) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.userWithAccessRequired);
+        }
+        if (environment === cli_shared_1.PRODUCTION_ENVIRONMENT_KEY) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.prodEnvNotSupported);
+        }
+        if (!Array.isArray(licenseModes) || licenseModes.length === 0) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.empty);
+        }
+        const ecosystemLicenseModes = new Set();
+        for (const licenseMode of licenseModes) {
+            const upperCaseLicenseMode = licenseMode.toUpperCase();
+            if (!this.isValidLicenseMode(upperCaseLicenseMode)) {
+                throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.invalid);
+            }
+            ecosystemLicenseModes.add(upperCaseLicenseMode);
+        }
+        return Array.from(ecosystemLicenseModes);
+    }
+    validateUsersWithAccess(licenseModes, usersWithAccess, environment) {
+        if (usersWithAccess === undefined)
+            return;
+        if (licenseModes === undefined) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.licenseModeRequired);
+        }
+        if (environment === cli_shared_1.PRODUCTION_ENVIRONMENT_KEY) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.prodEnvNotSupported);
+        }
+        if (!Array.isArray(usersWithAccess) || usersWithAccess.length === 0) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.empty);
+        }
+        if (usersWithAccess.length > cli_shared_1.Text.maxSizeOfUsersWithAccess) {
+            throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.countSize(cli_shared_1.Text.maxSizeOfUsersWithAccess));
+        }
+    }
+    async validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment) {
+        const ecosystemLicenseModes = this.validateLicenseModes(licenseModes, usersWithAccess, environment);
+        this.validateUsersWithAccess(ecosystemLicenseModes, usersWithAccess, environment);
+        return ecosystemLicenseModes && usersWithAccess
+            ? { licenseModes: ecosystemLicenseModes, usersWithAccess }
+            : undefined;
+    }
 }
 exports.InstallController = InstallController;

Modified:package/out/deploy/packager/packager.js

Index: package/out/deploy/packager/packager.js
===================================================================
--- package/out/deploy/packager/packager.js
+++ package/out/deploy/packager/packager.js
@@ -1,11 +1,8 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.AppPackager = exports.BundlerError = void 0;
+exports.AppPackager = void 0;
 const cli_shared_1 = require("@forge/cli-shared");
-class BundlerError extends cli_shared_1.UserError {
-}
-exports.BundlerError = BundlerError;
 class AppPackager {
     runtimeBundler;
     nativeUiBundler;
     logger;
@@ -16,9 +13,9 @@
     }
     async package(handlers, resources, packageConfig, i18nResourceBundle, i18nConfig) {
         this.logger.info(cli_shared_1.Text.deploy.taskPackage.title);
         const runtimeBundle = await this.runtimeBundler.bundle(handlers, i18nResourceBundle, packageConfig);
-        const nativeUiBundle = await this.nativeUiBundler.bundle(resources, i18nConfig);
+        const nativeUiBundle = await this.nativeUiBundler.bundleResources(resources, i18nConfig);
         return {
             ...runtimeBundle,
             ...nativeUiBundle
         };

Modified:package/out/command-line/register-installation-commands.js

Index: package/out/command-line/register-installation-commands.js
===================================================================
--- package/out/command-line/register-installation-commands.js
+++ package/out/command-line/register-installation-commands.js
@@ -26,18 +26,22 @@
         .precondition(validateContext)
         .option('--upgrade', cli_shared_1.Text.install.optionUpgrade, false)
         .option('--confirm-scopes', cli_shared_1.Text.install.optionConfirmScopes, false)
         .option('-l, --license [license]', cli_shared_1.Text.install.optionLicense)
+        .option('--license-modes [licenseModes...]', cli_shared_1.Text.install.optionLicenseModes)
+        .option('--users-with-access [user...]', cli_shared_1.Text.install.optionUsersWithAccess)
         .nonInteractiveOption('--site', '--product', '--environment')
         .description(cli_shared_1.Text.install.cmd.description)
-        .action(async ({ environment, siteURL, product, upgrade, confirmScopes, license, nonInteractive }) => {
+        .action(async ({ environment, siteURL, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) => {
         await installController.run({
             environment,
             site: siteURL,
             product,
             upgrade,
             confirmScopes,
             license,
+            licenseModes,
+            usersWithAccess,
             nonInteractive
         });
     });
 };

Modified:package/out/deploy/packager/runtime-bundler.js

Index: package/out/deploy/packager/runtime-bundler.js
===================================================================
--- package/out/deploy/packager/runtime-bundler.js
+++ package/out/deploy/packager/runtime-bundler.js
@@ -5,10 +5,8 @@
 const path_1 = tslib_1.__importDefault(require("path"));
 const bundler_1 = require("@forge/bundler");
 const cli_shared_1 = require("@forge/cli-shared");
 const i18n_1 = require("@forge/i18n");
-const packager_1 = require("./packager");
-const node_1 = require("@forge/bundler/out/config/node");
 const path_2 = require("path");
 class RuntimeBundler {
     archiverFactory;
     logger;
@@ -26,20 +24,20 @@
         const moduleList = [];
         if (entryPoints.length > 0) {
             let bundlerResponse;
             try {
-                bundlerResponse = await this.bundler(this.logger, process.cwd(), entryPoints);
+                bundlerResponse = await this.bundler.bundle({ appDirectory: process.cwd(), entryPoints });
             }
             catch (e) {
-                throw new packager_1.BundlerError(e.message);
+                throw new bundler_1.BundlerError(e.message);
             }
             const { outputDir, metadata } = bundlerResponse;
             if (metadata) {
                 if (metadata.modules) {
                     moduleList.push(...metadata.modules);
                 }
                 if (metadata.nodeRuntimeVersion) {
-                    archiver.addFile(node_1.NODE_RUNTIME_VERSION_FILE, Buffer.from(metadata.nodeRuntimeVersion));
+                    archiver.addFile(bundler_1.NODE_RUNTIME_VERSION_FILE, Buffer.from(metadata.nodeRuntimeVersion));
                 }
             }
             this.logger.debug(cli_shared_1.Text.deploy.taskPackage.packageBundledFiles);
             for (const name of await this.fileSystemReader.getFileGlobList([`${outputDir}/**`])) {
@@ -80,9 +78,9 @@
 exports.RuntimeBundler = RuntimeBundler;
 class SandboxRuntimeBundler extends RuntimeBundler {
     async bundle(handlers, i18nResourceBundle, packageConfig) {
         if (packageConfig) {
-            throw new packager_1.BundlerError(cli_shared_1.Text.deploy.taskPackage.packageOptionsNotSupported);
+            throw new bundler_1.BundlerError(cli_shared_1.Text.deploy.taskPackage.packageOptionsNotSupported);
         }
         return await super.bundle(handlers, i18nResourceBundle, packageConfig);
     }
 }

Modified:package/out/autocomplete/autocomplete-config.json

Index: package/out/autocomplete/autocomplete-config.json
===================================================================
--- package/out/autocomplete/autocomplete-config.json
+++ package/out/autocomplete/autocomplete-config.json
@@ -104,8 +104,14 @@
       },
       "--license": {
         "requireUserArg": true
       },
+      "--license-modes": {
+        "requireUserArg": true
+      },
+      "--users-with-access": {
+        "requireUserArg": true
+      },
       "--non-interactive": {
         "requireUserArg": false
       },
       "--help": {
@@ -234,8 +240,25 @@
       },
       "--help": {
         "requireUserArg": false
       }
+    },
+    "eligibility": {
+      "--verbose": {
+        "requireUserArg": false
+      },
+      "--environment": {
+        "requireUserArg": true
+      },
+      "--non-interactive": {
+        "requireUserArg": false
+      },
+      "--major-version": {
+        "requireUserArg": true
+      },
+      "--help": {
+        "requireUserArg": false
+      }
     }
   },
   "options": {
     "--version": {

Modified:package/npm-shrinkwrap.json

too-big

Modified:package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/cli",
-  "version": "10.12.1-next.2",
+  "version": "10.13.0-next.18",
   "description": "A command line interface for managing Atlassian-hosted apps",
   "author": "Atlassian",
   "license": "UNLICENSED",
   "bin": {
@@ -17,15 +17,15 @@
     "postbuild": "chmod +x out/bin/*.js && ts-node scripts/configureAutocomplete.ts",
     "postinstall": "node -e \"fs.existsSync('./out/bin/postinstall.js') && require('./out/bin/postinstall.js')\""
   },
   "dependencies": {
-    "@forge/bundler": "4.20.1-next.2",
-    "@forge/cli-shared": "6.4.0-next.2",
+    "@forge/bundler": "4.20.1-next.16",
+    "@forge/cli-shared": "6.4.0-next.13",
     "@forge/egress": "1.2.13",
-    "@forge/lint": "5.6.1-next.2",
-    "@forge/manifest": "8.0.1-next.1",
+    "@forge/lint": "5.6.1-next.13",
+    "@forge/manifest": "8.1.0-next.8",
     "@forge/runtime": "5.10.3",
-    "@forge/tunnel": "5.7.0-next.2",
+    "@forge/tunnel": "5.7.0-next.18",
     "@forge/util": "1.4.5",
     "@sentry/node": "7.106.0",
     "@forge/i18n": "0.0.2",
     "ajv": "^8.12.0",

Modified:package/out/command-line/dependency-injection.d.ts.map

Index: package/out/command-line/dependency-injection.d.ts.map
===================================================================
--- package/out/command-line/dependency-injection.d.ts.map
+++ package/out/command-line/dependency-injection.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAIA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAGlB,gBAAgB,EAQhB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EAElB,kBAAkB,EAKnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAM7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAUlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAE3F,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoWvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAIA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAGlB,gBAAgB,EAQhB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EAElB,kBAAkB,EAKnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAM7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAUlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAGhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAG3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6WvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
\ No newline at end of file

Modified:package/out/command-line/controller/deploy-controller.d.ts.map

Index: package/out/command-line/controller/deploy-controller.d.ts.map
===================================================================
--- package/out/command-line/controller/deploy-controller.d.ts.map
+++ package/out/command-line/controller/deploy-controller.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"deploy-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/deploy-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EAEpB,UAAU,EACV,cAAc,EACd,WAAW,EAIZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAA+B,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,EAAE;IAItC,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAGpC,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iCAAiC;IAClD,OAAO,CAAC,QAAQ,CAAC,8BAA8B;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAVxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,mBAAmB,EACzC,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,EACtB,iCAAiC,EAAE,0BAA0B,EAC7D,8BAA8B,EAAE,0BAA0B,EAC1D,wBAAwB,EAAE,wBAAwB;IAGrE,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,6BAA6B;YAWvB,wBAAwB;YA2BxB,mBAAmB;YA2BnB,oBAAoB;YAgBpB,2BAA2B;YAe3B,wBAAwB;IAkBzB,GAAG,CAAC,EACf,WAAW,EACX,MAAM,EACN,cAAc,EACd,YAAY,EACb,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAkFpD"}
\ No newline at end of file
+{"version":3,"file":"deploy-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/deploy-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EAGpB,UAAU,EACV,cAAc,EACd,WAAW,EAIZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAA+B,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,EAAE;IAItC,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAGpC,aAAa,IAAI,cAAc;IAM/B,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iCAAiC;IAClD,OAAO,CAAC,QAAQ,CAAC,8BAA8B;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAXxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,mBAAmB,EACzC,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,oBAAoB,EAC1C,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,EACtB,iCAAiC,EAAE,0BAA0B,EAC7D,8BAA8B,EAAE,0BAA0B,EAC1D,wBAAwB,EAAE,wBAAwB;IAGrE,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,6BAA6B;YAWvB,wBAAwB;YA2BxB,mBAAmB;YA2BnB,oBAAoB;YA4BpB,2BAA2B;YAe3B,wBAAwB;IAkBzB,GAAG,CAAC,EACf,WAAW,EACX,MAAM,EACN,cAAc,EACd,YAAY,EACb,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAkFpD"}
\ No newline at end of file

Modified:package/out/command-line/view/deploy-view.d.ts.map

Index: package/out/command-line/view/deploy-view.d.ts.map
===================================================================
--- package/out/command-line/view/deploy-view.d.ts.map
+++ package/out/command-line/view/deploy-view.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"deploy-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/deploy-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAkB,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAE5B,SAAS,IAAI,EAAE;IAIf,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,kBAAkB,GAAG,IAAI;IAI5E,gCAAgC,IAAI,IAAI;IAIxC,kBAAkB,IAAI,IAAI;IAI1B,mCAAmC,IAAI,IAAI;IAK3C,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjD,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAKlD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI3C,qBAAqB,IAAI,IAAI;IAI7B,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAInG,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIzD,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjF,0CAA0C,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAIrF,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM5D,wCAAwC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAK7D,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5D,wCAAwC,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI9D,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7C,yCAAyC,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnE,0CAA0C,IAAI,IAAI;IAK5C,wBAAwB,CACnC,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,qBAAqB,EACxE,wBAAwB,EAAE,OAAO,EACjC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAC9C,OAAO,CAAC,gBAAgB,CAAC;CAY7B"}
\ No newline at end of file
+{"version":3,"file":"deploy-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/deploy-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAkB,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAClG,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAE5B,SAAS,IAAI,EAAE;IAIf,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,kBAAkB,GAAG,IAAI;IAI5E,gCAAgC,IAAI,IAAI;IAIxC,kBAAkB,IAAI,IAAI;IAI1B,mCAAmC,IAAI,IAAI;IAK3C,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAK1G,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAK1G,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjD,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAKlD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI3C,qBAAqB,IAAI,IAAI;IAI7B,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAInG,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIzD,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjF,0CAA0C,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAIrF,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM5D,wCAAwC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAK7D,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5D,wCAAwC,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI9D,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7C,yCAAyC,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnE,0CAA0C,IAAI,IAAI;IAK5C,wBAAwB,CACnC,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,qBAAqB,EACxE,wBAAwB,EAAE,OAAO,EACjC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAC9C,OAAO,CAAC,gBAAgB,CAAC;CAY7B"}
\ No newline at end of file

Modified:package/out/installations/graphql-client.d.ts.map

Index: package/out/installations/graphql-client.d.ts.map
===================================================================
--- package/out/installations/graphql-client.d.ts.map
+++ package/out/installations/graphql-client.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/installations/graphql-client.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../../src/installations/graphql-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,sBAAsB,EAKtB,aAAa,EACb,oBAAoB,EAOpB,KAAK,EAGL,SAAS,EACT,SAAS,EAGV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AActD,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AAMrE,qBAAa,qBAAsB,SAAQ,oBAAoB;gBACjD,SAAS,oBAAY,EAAE,KAAK,oBAAY,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS;CAOrF;AAED,qBAAa,qBAAsB,SAAQ,oBAAoB;gBACjD,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS;CAG1E;AAED,qBAAa,iBAAkB,SAAQ,oBAAoB;gBAEvD,OAAO,EAAE,MAAM,EACf,EACE,SAAS,EACT,IAAI,EACJ,UAAU,EACX,EAAE;QACD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC;CAIJ;AAED,qBAAa,YAAa,SAAQ,oBAAoB;gBAElD,OAAO,EAAE,MAAM,EACf,EACE,SAAS,EACT,IAAI,EACJ,UAAU,EACX,EAAE;QACD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC;CAIJ;AAED,qBAAa,wBAAyB,SAAQ,SAAS;gBACzC,cAAc,EAAE,MAAM;CAGnC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,qBAAa,8BAA+B,SAAQ,SAAS;IAEzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,QAAQ,CAAC,IAAI,CAAC;gBADG,SAAS,EAAE,OAAO,EAC1B,IAAI,CAAC,oBAAQ,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS;IAIzB,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAEjD,qBAAa,0BAA2B,SAAQ,KAAK;CAAG;AAExD,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAErD,qBAAa,yBAA0B,SAAQ,SAAS;CAAG;AAE3D,qBAAa,0BACX,YAAW,gBAAgB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,6BAA6B;IAgBxG,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAjBxB,kBAAkB,SAAU;IAC5B,uBAAuB,SAAe;WAExB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;gBAWtF,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,cAAc,EACjC,mBAAmB,EAAE,cAAc,EACnC,KAAK,EAAE,KAAK;YAGjB,wBAAwB;IAKtC,OAAO,CAAC,qBAAqB;IAQhB,kBAAkB,CAAC,EAC9B,cAAc,EACd,IAAI,EACJ,OAAO,EACP,KAAK,EACL,eAAe,EACf,SAAS,EACV,EAAE,qBAAqB;IAyDX,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,qBAAqB;YAiDlF,0BAA0B;IAyB3B,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC7D,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAmB7F,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKzD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAS5E,sBAAsB;YAqCtB,2BAA2B;YAY3B,mBAAmB;IAiBjC,OAAO,CAAC,yBAAyB;YAOnB,sBAAsB;YAoBtB,6BAA6B;YA6B7B,mBAAmB;IAuEpB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAyChH"}
\ No newline at end of file

Modified:package/out/command-line/index.d.ts.map

Index: package/out/command-line/index.d.ts.map
===================================================================
--- package/out/command-line/index.d.ts.map
+++ package/out/command-line/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-line/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAmBvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,QAgBlD;AAQD,eAAO,MAAM,IAAI,QAAa,QAAQ,IAAI,CAUzC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command-line/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAoBvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,QAiBlD;AAQD,eAAO,MAAM,IAAI,QAAa,QAAQ,IAAI,CAUzC,CAAC"}
\ No newline at end of file

Modified:package/out/installations/install-app-site.d.ts.map

Index: package/out/installations/install-app-site.d.ts.map
===================================================================
--- package/out/installations/install-app-site.d.ts.map
+++ package/out/installations/install-app-site.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"install-app-site.d.ts","sourceRoot":"","sources":["../../src/installations/install-app-site.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,EAAE,gBAAgB;IAGxC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,4BAA4B;CAUtG"}
\ No newline at end of file
+{"version":3,"file":"install-app-site.d.ts","sourceRoot":"","sources":["../../src/installations/install-app-site.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,sCAAsC,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEpH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,SAAS,CAAC,EAAE,sCAAsC,CAAC;CACpD;AAED,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,EAAE,gBAAgB;IAGxC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,4BAA4B;CAWjH"}
\ No newline at end of file

Modified:package/out/command-line/controller/install-controller.d.ts.map

Index: package/out/command-line/controller/install-controller.d.ts.map
===================================================================
--- package/out/command-line/controller/install-controller.d.ts.map
+++ package/out/command-line/controller/install-controller.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,iBAAiB,EAEjB,UAAU,EAEV,EAAE,EAYF,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAA6B,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AASD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc;YAGnC,cAAc;YAmBd,gBAAgB;YA2ChB,gBAAgB;YAMhB,aAAa;YAsBb,gBAAgB;IAqB9B,OAAO,CAAC,uCAAuC;IAY/C,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,qBAAqB;IAehB,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAqGrB,kBAAkB;CASjC"}
\ No newline at end of file
+{"version":3,"file":"install-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/install-controller.ts"],"names":[],"mappings":";AAAA,OAAO,EAEL,iBAAiB,EAEjB,UAAU,EAEV,EAAE,EAcF,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAA6B,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAYD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,WAAW,EAAE,MAAM;CAGhC;AASD,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,EAAE,EACN,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc;YAGnC,cAAc;YAmBd,gBAAgB;YA6ChB,gBAAgB;YAMhB,aAAa;YAsBb,gBAAgB;IAqB9B,OAAO,CAAC,uCAAuC;IAY/C,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,qBAAqB;IAehB,GAAG,CAAC,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,OAAO,EACP,aAAa,EACb,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2GrB,kBAAkB;IAUhC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,uBAAuB;YAoBjB,8CAA8C;CAW7D"}
\ No newline at end of file

Modified:package/out/deploy/packager/packager.d.ts.map

Index: package/out/deploy/packager/packager.d.ts.map
===================================================================
--- package/out/deploy/packager/packager.d.ts.map
+++ package/out/deploy/packager/packager.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../../src/deploy/packager/packager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAQ,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,eAAe,EAAE,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,eAAe,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,qBAAa,YAAa,SAAQ,SAAS;CAAG;AAE9C,qBAAa,WAAY,YAAW,QAAQ;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM;IAGpB,OAAO,CAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,eAAe,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,aAAa,CAAC;CAW1B"}
\ No newline at end of file
+{"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../../src/deploy/packager/packager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAQ,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,eAAe,EAAE,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,CACL,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,eAAe,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,qBAAa,WAAY,YAAW,QAAQ;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM;IAGpB,OAAO,CAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,eAAe,EAAE,EAC5B,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,EAC7B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,CAAC,EAAE,YAAY,GACxB,OAAO,CAAC,aAAa,CAAC;CAW1B"}
\ No newline at end of file

Modified:package/out/command-line/register-installation-commands.d.ts.map

Index: package/out/command-line/register-installation-commands.d.ts.map
===================================================================
--- package/out/command-line/register-installation-commands.d.ts.map
+++ package/out/command-line/register-installation-commands.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"register-installation-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-installation-commands.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY1B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM/D,wBAAsB,eAAe,CAAC,EACpC,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AA+DD,eAAO,MAAM,sBAAsB,cACtB,MAAM,6CAC0B,YAAY,kBAuBxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBACnB,YAAY,EAAE,6CACY,YAAY,kBA8CxD,CAAC;AAgEF,eAAO,MAAM,gBAAgB,qBAAsB,YAAY,KAAG,IAejE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"register-installation-commands.d.ts","sourceRoot":"","sources":["../../src/command-line/register-installation-commands.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAY1B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM/D,wBAAsB,eAAe,CAAC,EACpC,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C;AA+ED,eAAO,MAAM,sBAAsB,cACtB,MAAM,6CAC0B,YAAY,kBAuBxD,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBACnB,YAAY,EAAE,6CACY,YAAY,kBA8CxD,CAAC;AAgEF,eAAO,MAAM,gBAAgB,qBAAsB,YAAY,KAAG,IAejE,CAAC"}
\ No newline at end of file

Modified:package/out/deploy/packager/runtime-bundler.d.ts.map

Index: package/out/deploy/packager/runtime-bundler.d.ts.map
===================================================================
--- package/out/deploy/packager/runtime-bundler.d.ts.map
+++ package/out/deploy/packager/runtime-bundler.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"runtime-bundler.d.ts","sourceRoot":"","sources":["../../../src/deploy/packager/runtime-bundler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAiB,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAEL,OAAO,EACP,MAAM,EAEN,gBAAgB,EAEhB,UAAU,EAEV,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAJV,eAAe,EAAE,MAAM,QAAQ,EAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EACd,gBAAgB,EAAE,gBAAgB,EACpC,UAAU,EAAE,UAAU;cAGzB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAkC7E,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAatD,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAMnF,MAAM,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAWhC;AAED,qBAAa,qBAAsB,SAAQ,cAAc;IAC1C,MAAM,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAMhC;AAED,qBAAa,kBAAmB,SAAQ,cAAc;cACpC,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;CASrB"}
\ No newline at end of file
+{"version":3,"file":"runtime-bundler.d.ts","sourceRoot":"","sources":["../../../src/deploy/packager/runtime-bundler.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EAGP,UAAU,EAGX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,OAAO,EACP,MAAM,EAEN,gBAAgB,EAEhB,UAAU,EAEV,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAJV,eAAe,EAAE,MAAM,QAAQ,EAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EACd,gBAAgB,EAAE,gBAAgB,EACpC,UAAU,EAAE,UAAU;cAGzB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;cAkC7E,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAatD,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,IAAI;IAMnF,MAAM,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAWhC;AAED,qBAAa,qBAAsB,SAAQ,cAAc;IAC1C,MAAM,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAC7B,OAAO,CAAC,mBAAmB,CAAC;CAMhC;AAED,qBAAa,kBAAmB,SAAQ,cAAc;cACpC,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,OAAO,EAAE,EACnB,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;CASrB"}
\ No newline at end of file

Modified:package/CHANGELOG.md

too-big

Modified:package/out/command-line/dependency-injection.d.ts

Index: package/out/command-line/dependency-injection.d.ts
===================================================================
--- package/out/command-line/dependency-injection.d.ts
+++ package/out/command-line/dependency-injection.d.ts
@@ -27,8 +27,9 @@
 import { TunnelController } from './controller/tunnel-controller';
 import { StubController } from './controller/stubController';
 import { PrerequisitesController } from './controller/prerequisites-controller';
 import { DefaultEnvironmentController } from './controller/default-environment-controller';
+import { EligibilityController } from './controller/eligibility-controller';
 export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Promise<{
     ui: CommandLineUI;
     cmd: Command<[], import("./command").DefaultOpts>;
     configFile: ConfigFile;
@@ -67,8 +68,9 @@
     };
     controllers: {
         autocompleteController: AutocompleteController;
         deployController: DeployController;
+        eligibilityController: EligibilityController;
         feedbackController: FeedbackController;
         installController: InstallController;
         lintController: LintController;
         preCommandController: PreCommandController;

Modified:package/out/command-line/controller/deploy-controller.d.ts

Index: package/out/command-line/controller/deploy-controller.d.ts
===================================================================
--- package/out/command-line/controller/deploy-controller.d.ts
+++ package/out/command-line/controller/deploy-controller.d.ts
@@ -6,8 +6,9 @@
 import { PackageUploadDeployCommand } from '../../deploy';
 import { DeploymentResult } from '../register-deployment-commands';
 import { CreateEnvironmentCommand } from '../../environment/create-environment';
 import { CustomEntitiesService } from '../../service/custom-entities-service';
+import { RoaService } from '../../service/roa-service';
 interface DeployOptions {
     environment: string;
     verify: boolean;
     nonInteractive?: boolean;
@@ -29,16 +30,17 @@
     private readonly appConfigProvider;
     private readonly configFile;
     private readonly lintService;
     private readonly installationsService;
+    private readonly roaService;
     private readonly migrationKeysService;
     private readonly customEntitiesService;
     private readonly appEnvironmentClient;
     private readonly deployView;
     private readonly sandboxPackageUploadDeployCommand;
     private readonly nodePackageUploadDeployCommand;
     private readonly createEnvironmentCommand;
-    constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, lintService: LintService, installationsService: InstallationService, migrationKeysService: MigrationKeysService, customEntitiesService: CustomEntitiesService, appEnvironmentClient: AppEnvironmentClient, deployView: DeployView, sandboxPackageUploadDeployCommand: PackageUploadDeployCommand, nodePackageUploadDeployCommand: PackageUploadDeployCommand, createEnvironmentCommand: CreateEnvironmentCommand);
+    constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, lintService: LintService, installationsService: InstallationService, roaService: RoaService, migrationKeysService: MigrationKeysService, customEntitiesService: CustomEntitiesService, appEnvironmentClient: AppEnvironmentClient, deployView: DeployView, sandboxPackageUploadDeployCommand: PackageUploadDeployCommand, nodePackageUploadDeployCommand: PackageUploadDeployCommand, createEnvironmentCommand: CreateEnvironmentCommand);
     private isMpacProductionApp;
     private connectKeyDeleted;
     private connectKeyChanged;
     private connectKeyMutatedInProduction;

Modified:package/out/command-line/view/deploy-view.d.ts

Index: package/out/command-line/view/deploy-view.d.ts
===================================================================
--- package/out/command-line/view/deploy-view.d.ts
+++ package/out/command-line/view/deploy-view.d.ts
@@ -8,8 +8,10 @@
     displayStart(environment: string, environmentType: AppEnvironmentType): void;
     displayListAppInstallationsError(): void;
     displayLintRunning(): void;
     displayOutdatedInstallationsMessage(): void;
+    displayRoaEligibilityFailureMessage(appVersion: string, envKey: string, envType: AppEnvironmentType): void;
+    displayRoaEligibilitySuccessMessage(appVersion: string, envKey: string, envType: AppEnvironmentType): void;
     displayIndexingCommand(environment: string): void;
     displayLintErrors(lintResults: LintResult[]): void;
     displayLintWarnings(warnings: number): void;
     displayNoLintProblems(): void;

Modified:package/out/installations/graphql-client.d.ts

Index: package/out/installations/graphql-client.d.ts
===================================================================
--- package/out/installations/graphql-client.d.ts
+++ package/out/installations/graphql-client.d.ts
@@ -54,9 +54,9 @@
     static buildInstallationContext(product: string, resourceId: string, resourceType: string): string;
     constructor(graphqlClient: GraphQLClient, cloudIdTranslator: SiteTranslator, bitbucketTranslator: SiteTranslator, pause: Pause);
     private buildInstallationContext;
     private getProductTranslation;
-    installAppIntoSite({ environmentKey, site, product, appId, licenseOverride }: AppInstallSiteDetails): Promise<void>;
+    installAppIntoSite({ environmentKey, site, product, appId, licenseOverride, overrides }: AppInstallSiteDetails): Promise<void>;
     upgradeInstallation({ site, product, environmentKey, appId }: AppInstallSiteDetails): Promise<void>;
     private monitorAppInstallOrUpgrade;
     uninstallApp(input: AppUninstallationInput): Promise<boolean>;
     uninstallMultipleApps(apps: AppUninstallationInput[]): Promise<Partial<UninstallAppOutput>[]>;

Modified:package/out/installations/install-app-site.d.ts

Index: package/out/installations/install-app-site.d.ts
===================================================================
--- package/out/installations/install-app-site.d.ts
+++ package/out/installations/install-app-site.d.ts
@@ -1,12 +1,13 @@
 /// <reference types="node" />
 import { URL } from 'url';
-import { AppConfigProvider, LicenseOverrideState } from '@forge/cli-shared';
+import { AppConfigProvider, EcosystemAppInstallationOverridesInput, LicenseOverrideState } from '@forge/cli-shared';
 export interface TriggerAppSiteInstallDetails {
     site: URL;
     product: string;
     environmentKey: string;
     licenseOverride?: LicenseOverrideState;
+    overrides?: EcosystemAppInstallationOverridesInput;
 }
 export interface AppInstallSiteDetails extends TriggerAppSiteInstallDetails {
     appId: string;
 }
@@ -16,7 +17,7 @@
 export declare class InstallAppSiteCommand {
     private readonly getAppConfig;
     private readonly installAppClient;
     constructor(getAppConfig: AppConfigProvider, installAppClient: InstallAppClient);
-    execute({ environmentKey, site, product, licenseOverride }: TriggerAppSiteInstallDetails): Promise<void>;
+    execute({ environmentKey, site, product, licenseOverride, overrides }: TriggerAppSiteInstallDetails): Promise<void>;
 }
 //# sourceMappingURL=install-app-site.d.ts.map
\ No newline at end of file

Modified:package/out/command-line/controller/install-controller.d.ts

Index: package/out/command-line/controller/install-controller.d.ts
===================================================================
--- package/out/command-line/controller/install-controller.d.ts
+++ package/out/command-line/controller/install-controller.d.ts
@@ -11,8 +11,10 @@
     upgrade: boolean;
     nonInteractive?: boolean;
     confirmScopes: boolean;
     license?: string;
+    licenseModes?: string[];
+    usersWithAccess?: string[];
 }
 export declare class NoDeploymentError extends Error {
     constructor(environment: string);
 }
@@ -32,9 +34,13 @@
     private promptForUpgrade;
     private getUniqueInstallationProductsFromScopes;
     private isValidLicense;
     private validateLicenseOption;
-    run({ environment, site, product, upgrade, confirmScopes, license, nonInteractive }: InstallViewProps): Promise<void>;
+    run({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }: InstallViewProps): Promise<void>;
     private extractAddedScopes;
+    private isValidLicenseMode;
+    private validateLicenseModes;
+    private validateUsersWithAccess;
+    private validateEcosystemAppInstallationOverridesInput;
 }
 export {};
 //# sourceMappingURL=install-controller.d.ts.map
\ No newline at end of file

Modified:package/out/deploy/packager/packager.d.ts

Index: package/out/deploy/packager/packager.d.ts
===================================================================
--- package/out/deploy/packager/packager.d.ts
+++ package/out/deploy/packager/packager.d.ts
@@ -1,7 +1,7 @@
-import { Handler, type I18nResourceBundle, Logger, ResourceDetails, UserError } from '@forge/cli-shared';
+import { Handler, type I18nResourceBundle, Logger, ResourceDetails } from '@forge/cli-shared';
+import { NativeUIBundler } from '@forge/bundler';
 import { App, Translations } from '@forge/manifest';
-import { NativeUIBundler } from './nativeui-bundler';
 import { RuntimeBundler } from './runtime-bundler';
 export interface PackageResult {
     runtimeArchivePath: string;
     nativeUiBundlesDetails: ResourceDetails[];
@@ -9,10 +9,8 @@
 }
 export interface Packager {
     package(handlers: Handler[], resources: ResourceDetails[], packageConfig: App['package'], i18nResourceBundle: I18nResourceBundle, i18nConfig?: Translations): Promise<PackageResult>;
 }
-export declare class BundlerError extends UserError {
-}
 export declare class AppPackager implements Packager {
     private readonly runtimeBundler;
     private readonly nativeUiBundler;
     private readonly logger;