@hubspot/cli 8.2.0 → 8.2.1-experimental.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/migrate.js +8 -4
- package/api/releases.d.ts +36 -0
- package/api/releases.js +41 -0
- package/bin/cli.js +12 -6
- package/commands/account/auth.d.ts +3 -1
- package/commands/account/auth.js +25 -7
- package/commands/account/clean.js +7 -6
- package/commands/account/createOverride.js +10 -7
- package/commands/account/info.js +36 -17
- package/commands/account/link.d.ts +4 -0
- package/commands/account/link.js +87 -0
- package/commands/account/list.js +32 -76
- package/commands/account/remove.js +4 -3
- package/commands/account/removeOverride.js +11 -10
- package/commands/account/rename.js +5 -6
- package/commands/account/unlink.d.ts +4 -0
- package/commands/account/unlink.js +68 -0
- package/commands/account/use.js +75 -6
- package/commands/account.js +4 -0
- package/commands/api.d.ts +13 -0
- package/commands/api.js +161 -0
- package/commands/app/logDetails.d.ts +9 -0
- package/commands/app/logDetails.js +86 -0
- package/commands/app/logs.d.ts +13 -0
- package/commands/app/logs.js +126 -0
- package/commands/app/migrate.js +13 -13
- package/commands/app/secret/add.js +6 -7
- package/commands/app/secret/delete.js +9 -10
- package/commands/app/secret/list.js +6 -7
- package/commands/app/secret/update.js +8 -9
- package/commands/app.js +8 -1
- package/commands/auth.js +20 -16
- package/commands/cms/app/create.js +9 -5
- package/commands/cms/convertFields.js +8 -8
- package/commands/cms/delete.js +2 -3
- package/commands/cms/fetch.js +7 -7
- package/commands/cms/function/create.js +9 -5
- package/commands/cms/function/deploy.js +2 -3
- package/commands/cms/function/list.js +11 -7
- package/commands/cms/function/logs.js +17 -23
- package/commands/cms/function/server.js +16 -10
- package/commands/cms/getReactModule.js +7 -8
- package/commands/cms/lighthouseScore.js +25 -24
- package/commands/cms/lint.js +4 -5
- package/commands/cms/list.js +5 -6
- package/commands/cms/module/create.js +15 -5
- package/commands/cms/module/marketplace-validate.js +7 -8
- package/commands/cms/mv.js +2 -3
- package/commands/cms/template/create.js +10 -6
- package/commands/cms/theme/create.js +5 -5
- package/commands/cms/theme/generate-selectors.js +5 -4
- package/commands/cms/theme/marketplace-validate.js +8 -9
- package/commands/cms/theme/preview.js +24 -9
- package/commands/cms/upload.js +15 -12
- package/commands/cms/watch.js +5 -5
- package/commands/cms/webpack/create.js +5 -5
- package/commands/completion.js +3 -5
- package/commands/config/migrate.js +6 -7
- package/commands/config/set.js +29 -11
- package/commands/customObject/create.js +4 -5
- package/commands/customObject/createSchema.js +6 -8
- package/commands/customObject/deleteSchema.js +4 -5
- package/commands/customObject/fetchAllSchemas.js +2 -3
- package/commands/customObject/fetchSchema.js +2 -3
- package/commands/customObject/listSchemas.js +2 -3
- package/commands/customObject/updateSchema.js +6 -8
- package/commands/doctor.js +8 -8
- package/commands/feedback.js +6 -4
- package/commands/filemanager/fetch.js +5 -6
- package/commands/filemanager/upload.js +5 -5
- package/commands/getStarted.js +34 -38
- package/commands/hubdb/clear.js +6 -3
- package/commands/hubdb/create.js +4 -5
- package/commands/hubdb/delete.js +9 -6
- package/commands/hubdb/fetch.js +6 -3
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +23 -22
- package/commands/init.js +18 -15
- package/commands/mcp/setup.d.ts +2 -0
- package/commands/mcp/setup.js +35 -8
- package/commands/mcp/start.js +2 -3
- package/commands/open.js +4 -5
- package/commands/project/add.js +19 -13
- package/commands/project/appInstallStatus.d.ts +5 -0
- package/commands/project/appInstallStatus.js +139 -0
- package/commands/project/create.js +37 -22
- package/commands/project/delete.d.ts +7 -0
- package/commands/project/delete.js +74 -0
- package/commands/project/deploy.d.ts +2 -1
- package/commands/project/deploy.js +72 -50
- package/commands/project/dev/index.d.ts +3 -3
- package/commands/project/dev/index.js +40 -73
- package/commands/project/dev/unifiedFlow.js +81 -22
- package/commands/project/download.js +15 -12
- package/commands/project/info.d.ts +5 -0
- package/commands/project/info.js +73 -0
- package/commands/project/installApp.d.ts +8 -0
- package/commands/project/installApp.js +185 -0
- package/commands/project/installDeps.js +17 -11
- package/commands/project/lint.js +57 -19
- package/commands/project/list.d.ts +2 -2
- package/commands/project/list.js +15 -14
- package/commands/project/listBuilds.d.ts +3 -2
- package/commands/project/listBuilds.js +50 -19
- package/commands/project/logs.js +7 -10
- package/commands/project/migrate.js +30 -28
- package/commands/project/open.js +20 -13
- package/commands/project/profile/add.d.ts +2 -1
- package/commands/project/profile/add.js +42 -13
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +23 -15
- package/commands/project/release/create.d.ts +8 -0
- package/commands/project/release/create.js +156 -0
- package/commands/project/release/info.d.ts +7 -0
- package/commands/project/release/info.js +148 -0
- package/commands/project/release/list.d.ts +7 -0
- package/commands/project/release/list.js +119 -0
- package/commands/project/release.d.ts +3 -0
- package/commands/project/release.js +20 -0
- package/commands/project/updateDeps.js +15 -11
- package/commands/project/upload.d.ts +7 -1
- package/commands/project/upload.js +159 -35
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +23 -106
- package/commands/project/watch.js +27 -29
- package/commands/project.js +17 -4
- package/commands/sandbox/create.js +18 -45
- package/commands/sandbox/delete.js +15 -17
- package/commands/secret/addSecret.js +6 -7
- package/commands/secret/deleteSecret.js +5 -6
- package/commands/secret/listSecret.js +2 -3
- package/commands/secret/updateSecret.js +4 -5
- package/commands/testAccount/create.d.ts +3 -2
- package/commands/testAccount/create.js +30 -22
- package/commands/testAccount/createConfig.js +7 -8
- package/commands/testAccount/delete.js +27 -18
- package/commands/testAccount/importData.d.ts +1 -1
- package/commands/testAccount/importData.js +6 -7
- package/commands/upgrade.js +11 -10
- package/lang/en.d.ts +573 -54
- package/lang/en.js +614 -79
- package/lib/CLIWebSocketServer.d.ts +5 -3
- package/lib/CLIWebSocketServer.js +31 -4
- package/lib/accountAuth.d.ts +3 -1
- package/lib/accountAuth.js +47 -17
- package/lib/accountTargetDiscovery.d.ts +15 -0
- package/lib/accountTargetDiscovery.js +175 -0
- package/lib/api/usageTracking.d.ts +30 -0
- package/lib/api/usageTracking.js +11 -0
- package/lib/app/install.d.ts +22 -0
- package/lib/app/install.js +42 -0
- package/lib/app/logs.d.ts +38 -0
- package/lib/app/logs.js +225 -0
- package/lib/app/migrate.js +23 -12
- package/lib/app/urls.d.ts +2 -0
- package/lib/app/urls.js +7 -1
- package/lib/auth/awaitPersonalAccessKeyOverWebsocket.d.ts +4 -0
- package/lib/auth/awaitPersonalAccessKeyOverWebsocket.js +146 -0
- package/lib/buildAccount.d.ts +1 -6
- package/lib/buildAccount.js +10 -43
- package/lib/cms/serverlessDevRuntime.d.ts +1 -0
- package/lib/cms/serverlessDevRuntime.js +72 -0
- package/lib/commonOpts.js +6 -2
- package/lib/configOptions.d.ts +10 -10
- package/lib/configOptions.js +10 -11
- package/lib/constants.d.ts +14 -3
- package/lib/constants.js +16 -3
- package/lib/dependencyManagement.js +10 -17
- package/lib/doctor/Diagnosis.js +5 -5
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -2
- package/lib/doctor/DiagnosticInfoBuilder.js +8 -8
- package/lib/doctor/Doctor.d.ts +1 -0
- package/lib/doctor/Doctor.js +40 -16
- package/lib/errorHandlers/index.js +4 -3
- package/lib/errorHandlers/suppressError.js +4 -0
- package/lib/errors/ProjectErrors.d.ts +0 -6
- package/lib/errors/ProjectErrors.js +0 -12
- package/lib/errors/ProjectValidationError.d.ts +2 -1
- package/lib/errors/ProjectValidationError.js +3 -1
- package/lib/errors/PromptExitError.d.ts +6 -0
- package/lib/errors/PromptExitError.js +11 -0
- package/lib/getStartedV2Actions.js +19 -22
- package/lib/hasFeature.js +1 -2
- package/lib/importData.js +3 -4
- package/lib/jsonOutput.d.ts +195 -0
- package/lib/jsonOutput.js +171 -0
- package/lib/link/accountTableUtils.d.ts +10 -0
- package/lib/link/accountTableUtils.js +39 -0
- package/lib/link/index.d.ts +18 -0
- package/lib/link/index.js +185 -0
- package/lib/link/linkUtils.d.ts +5 -0
- package/lib/link/linkUtils.js +49 -0
- package/lib/link/prompts.d.ts +7 -0
- package/lib/link/prompts.js +126 -0
- package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
- package/lib/link/renderLinkedAccountsTable.js +14 -0
- package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
- package/lib/link/warnIfLinkedDirectory.js +9 -0
- package/lib/links.js +6 -5
- package/lib/mcp/clients.d.ts +13 -0
- package/lib/mcp/clients.js +62 -0
- package/lib/mcp/promotion.d.ts +3 -0
- package/lib/mcp/promotion.js +109 -0
- package/lib/mcp/setup.d.ts +8 -2
- package/lib/mcp/setup.js +123 -38
- package/lib/middleware/autoUpdateMiddleware.js +6 -3
- package/lib/middleware/commandTargetingUtils.js +1 -0
- package/lib/npm/npmCli.d.ts +1 -0
- package/lib/npm/npmCli.js +13 -0
- package/lib/npm/packageJson.js +1 -1
- package/lib/process.d.ts +1 -1
- package/lib/process.js +10 -3
- package/lib/projects/ProjectLogsManager.js +7 -7
- package/lib/projects/builds.d.ts +2 -0
- package/lib/projects/builds.js +22 -0
- package/lib/projects/components.js +15 -4
- package/lib/projects/config.d.ts +6 -5
- package/lib/projects/config.js +7 -38
- package/lib/projects/create/index.js +2 -2
- package/lib/projects/create/legacy.js +2 -2
- package/lib/projects/create/v2.js +5 -5
- package/lib/projects/delete.d.ts +13 -0
- package/lib/projects/delete.js +193 -0
- package/lib/projects/deploy.d.ts +1 -1
- package/lib/projects/deploy.js +2 -2
- package/lib/projects/installApp.d.ts +58 -0
- package/lib/projects/installApp.js +283 -0
- package/lib/projects/localDev/AppDevModeInterface.d.ts +0 -3
- package/lib/projects/localDev/AppDevModeInterface.js +35 -53
- package/lib/projects/localDev/DevSessionManager.d.ts +8 -5
- package/lib/projects/localDev/DevSessionManager.js +35 -49
- package/lib/projects/localDev/LocalDevLogger.d.ts +4 -0
- package/lib/projects/localDev/LocalDevLogger.js +18 -0
- package/lib/projects/localDev/LocalDevProcess.d.ts +11 -1
- package/lib/projects/localDev/LocalDevProcess.js +104 -19
- package/lib/projects/localDev/LocalDevState.d.ts +9 -2
- package/lib/projects/localDev/LocalDevState.js +21 -1
- package/lib/projects/localDev/LocalDevWatcher.js +1 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.js +24 -2
- package/lib/projects/localDev/UIExtensionsDevModeInterface.js +2 -0
- package/lib/projects/localDev/helpers/account.d.ts +1 -7
- package/lib/projects/localDev/helpers/account.js +12 -100
- package/lib/projects/localDev/helpers/process.d.ts +1 -1
- package/lib/projects/localDev/helpers/process.js +4 -10
- package/lib/projects/localDev/helpers/project.d.ts +8 -6
- package/lib/projects/localDev/helpers/project.js +80 -29
- package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +2 -1
- package/lib/projects/localDev/localDevWebsocketServerUtils.js +3 -0
- package/lib/projects/npmAuditOnUpload.d.ts +10 -0
- package/lib/projects/npmAuditOnUpload.js +73 -0
- package/lib/projects/pollProjectBuildAndDeploy.d.ts +5 -1
- package/lib/projects/pollProjectBuildAndDeploy.js +3 -2
- package/lib/projects/preview.d.ts +7 -0
- package/lib/projects/preview.js +48 -0
- package/lib/projects/projectInfo.d.ts +5 -0
- package/lib/projects/projectInfo.js +82 -0
- package/lib/projects/projectProfiles.d.ts +2 -3
- package/lib/projects/projectProfiles.js +5 -20
- package/lib/projects/release.d.ts +4 -0
- package/lib/projects/release.js +90 -0
- package/lib/projects/ui.d.ts +1 -0
- package/lib/projects/ui.js +14 -0
- package/lib/projects/uieLinting.d.ts +21 -3
- package/lib/projects/uieLinting.js +129 -28
- package/lib/projects/upload.d.ts +12 -2
- package/lib/projects/upload.js +59 -13
- package/lib/projects/urls.d.ts +0 -1
- package/lib/projects/urls.js +6 -13
- package/lib/projects/validate.d.ts +9 -0
- package/lib/projects/validate.js +96 -0
- package/lib/projects/validateLintConfigOnUpload.d.ts +9 -0
- package/lib/projects/validateLintConfigOnUpload.js +45 -0
- package/lib/projects/workspaces.d.ts +60 -0
- package/lib/projects/workspaces.js +411 -0
- package/lib/prompts/createApiSamplePrompt.js +4 -0
- package/lib/prompts/downloadProjectPrompt.js +11 -10
- package/lib/prompts/installAppPrompt.js +3 -2
- package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -5
- package/lib/prompts/personalAccessKeyPrompt.js +10 -7
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
- package/lib/prompts/projectDevTargetAccountPrompt.js +26 -18
- package/lib/prompts/projectProfilePrompt.d.ts +2 -0
- package/lib/prompts/projectProfilePrompt.js +46 -0
- package/lib/prompts/projectsLogsPrompt.js +3 -0
- package/lib/prompts/promptUtils.js +4 -2
- package/lib/prompts/selectAppPrompt.js +1 -0
- package/lib/prompts/selectHubDBTablePrompt.js +8 -4
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
- package/lib/prompts/setAsDefaultAccountPrompt.js +2 -1
- package/lib/sandboxes.d.ts +1 -9
- package/lib/sandboxes.js +0 -21
- package/lib/serverlessLogs.js +2 -2
- package/lib/theme/cmsDevServerProcess.d.ts +2 -0
- package/lib/theme/cmsDevServerProcess.js +8 -7
- package/lib/theme/migrate.d.ts +1 -1
- package/lib/theme/migrate.js +2 -9
- package/lib/ui/SpinniesManager.d.ts +1 -0
- package/lib/ui/SpinniesManager.js +22 -6
- package/lib/ui/accountTable.d.ts +8 -0
- package/lib/ui/accountTable.js +67 -0
- package/lib/ui/appLogs.d.ts +32 -0
- package/lib/ui/appLogs.js +175 -0
- package/lib/ui/spinniesUtils.d.ts +0 -1
- package/lib/ui/spinniesUtils.js +6 -16
- package/lib/usageTracking.d.ts +10 -20
- package/lib/usageTracking.js +77 -30
- package/lib/yargs/makeWrappedYargsHandler.d.ts +7 -0
- package/lib/yargs/makeWrappedYargsHandler.js +179 -0
- package/lib/yargs/makeYargsBuilder.d.ts +13 -0
- package/lib/yargs/makeYargsBuilder.js +33 -0
- package/lib/yargs/parseYargsOrExit.d.ts +4 -0
- package/lib/yargs/parseYargsOrExit.js +25 -0
- package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
- package/lib/yargs/strictEnforceBoolean.js +13 -0
- package/lib/yargsUtils.d.ts +3 -16
- package/lib/yargsUtils.js +3 -48
- package/mcp-server/Tool.d.ts +20 -0
- package/mcp-server/Tool.js +79 -0
- package/mcp-server/server.js +47 -3
- package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsCreateFunctionTool.js +18 -23
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsCreateModuleTool.js +21 -26
- package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsCreateTemplateTool.js +16 -16
- package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsFunctionLogsTool.js +16 -15
- package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsListFunctionsTool.js +14 -13
- package/mcp-server/tools/cms/HsListTool.d.ts +5 -3
- package/mcp-server/tools/cms/HsListTool.js +14 -16
- package/mcp-server/tools/index.d.ts +3 -2
- package/mcp-server/tools/index.js +26 -22
- package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +8 -4
- package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -15
- package/mcp-server/tools/project/AuthAccountTool.d.ts +18 -0
- package/mcp-server/tools/project/AuthAccountTool.js +78 -0
- package/mcp-server/tools/project/CreateProjectTool.d.ts +8 -4
- package/mcp-server/tools/project/CreateProjectTool.js +21 -17
- package/mcp-server/tools/project/CreateTestAccountTool.d.ts +5 -3
- package/mcp-server/tools/project/CreateTestAccountTool.js +35 -24
- package/mcp-server/tools/project/DeployProjectTool.d.ts +5 -3
- package/mcp-server/tools/project/DeployProjectTool.js +14 -16
- package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
- package/mcp-server/tools/project/DocFetchTool.js +8 -6
- package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
- package/mcp-server/tools/project/DocsSearchTool.js +39 -15
- package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
- package/mcp-server/tools/project/FindProjectsTool.js +60 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +6 -3
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +16 -13
- package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +6 -3
- package/mcp-server/tools/project/GetApplicationInfoTool.js +19 -14
- package/mcp-server/tools/project/GetBuildLogsTool.d.ts +4 -2
- package/mcp-server/tools/project/GetBuildLogsTool.js +19 -14
- package/mcp-server/tools/project/GetBuildStatusTool.d.ts +4 -2
- package/mcp-server/tools/project/GetBuildStatusTool.js +19 -14
- package/mcp-server/tools/project/GetConfigValuesTool.d.ts +6 -3
- package/mcp-server/tools/project/GetConfigValuesTool.js +20 -13
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +4 -2
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -6
- package/mcp-server/tools/project/UploadProjectTools.d.ts +5 -3
- package/mcp-server/tools/project/UploadProjectTools.js +21 -20
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +5 -3
- package/mcp-server/tools/project/ValidateProjectTool.js +13 -10
- package/mcp-server/tools/project/constants.d.ts +3 -1
- package/mcp-server/tools/project/constants.js +3 -1
- package/mcp-server/types.d.ts +0 -7
- package/mcp-server/types.js +1 -13
- package/mcp-server/utils/command.d.ts +25 -2
- package/mcp-server/utils/command.js +68 -16
- package/mcp-server/utils/config.js +6 -0
- package/mcp-server/utils/logger.d.ts +13 -0
- package/mcp-server/utils/logger.js +59 -0
- package/mcp-server/utils/toolUsageTracking.js +28 -11
- package/package.json +25 -17
- package/types/AccountTargets.d.ts +37 -0
- package/types/AccountTargets.js +12 -0
- package/types/Link.d.ts +32 -0
- package/types/Link.js +5 -0
- package/types/LocalDev.d.ts +15 -2
- package/types/PackageJson.d.ts +1 -0
- package/types/ProjectComponents.d.ts +2 -1
- package/types/Projects.d.ts +25 -5
- package/types/Prompts.d.ts +1 -0
- package/types/Yargs.d.ts +23 -2
- package/ui/components/ActionSection.d.ts +1 -1
- package/ui/components/InputField.d.ts +1 -1
- package/ui/components/SelectInput.d.ts +1 -1
- package/ui/components/StatusIcon.d.ts +1 -1
- package/ui/components/Table.d.ts +5 -5
- package/ui/components/getStarted/GetStartedFlow.d.ts +1 -1
- package/ui/components/getStarted/screens/InstallationScreen.d.ts +1 -1
- package/ui/components/getStarted/screens/ProjectSetupScreen.d.ts +1 -1
- package/ui/components/getStarted/screens/UploadScreen.d.ts +1 -1
- package/api/__tests__/migrate.test.d.ts +0 -1
- package/api/__tests__/migrate.test.js +0 -199
- package/commands/__tests__/account.test.d.ts +0 -1
- package/commands/__tests__/account.test.js +0 -69
- package/commands/__tests__/auth.test.d.ts +0 -1
- package/commands/__tests__/auth.test.js +0 -43
- package/commands/__tests__/cms.test.d.ts +0 -1
- package/commands/__tests__/cms.test.js +0 -87
- package/commands/__tests__/config.test.d.ts +0 -1
- package/commands/__tests__/config.test.js +0 -44
- package/commands/__tests__/customObject.test.d.ts +0 -1
- package/commands/__tests__/customObject.test.js +0 -68
- package/commands/__tests__/doctor.test.d.ts +0 -1
- package/commands/__tests__/doctor.test.js +0 -132
- package/commands/__tests__/feedback.test.d.ts +0 -1
- package/commands/__tests__/feedback.test.js +0 -24
- package/commands/__tests__/filemanager.test.d.ts +0 -1
- package/commands/__tests__/filemanager.test.js +0 -45
- package/commands/__tests__/getStarted.test.d.ts +0 -1
- package/commands/__tests__/getStarted.test.js +0 -173
- package/commands/__tests__/hubdb.test.d.ts +0 -1
- package/commands/__tests__/hubdb.test.js +0 -50
- package/commands/__tests__/init.test.d.ts +0 -1
- package/commands/__tests__/init.test.js +0 -42
- package/commands/__tests__/mcp.test.d.ts +0 -1
- package/commands/__tests__/mcp.test.js +0 -46
- package/commands/__tests__/open.test.d.ts +0 -1
- package/commands/__tests__/open.test.js +0 -58
- package/commands/__tests__/project.test.d.ts +0 -1
- package/commands/__tests__/project.test.js +0 -125
- package/commands/__tests__/sandbox.test.d.ts +0 -1
- package/commands/__tests__/sandbox.test.js +0 -44
- package/commands/__tests__/secret.test.d.ts +0 -1
- package/commands/__tests__/secret.test.js +0 -49
- package/commands/__tests__/testAccount.test.d.ts +0 -1
- package/commands/__tests__/testAccount.test.js +0 -57
- package/commands/__tests__/upgrade.test.d.ts +0 -1
- package/commands/__tests__/upgrade.test.js +0 -309
- package/commands/account/__tests__/auth.test.d.ts +0 -1
- package/commands/account/__tests__/auth.test.js +0 -206
- package/commands/account/__tests__/clean.test.d.ts +0 -1
- package/commands/account/__tests__/clean.test.js +0 -28
- package/commands/account/__tests__/createOverride.test.d.ts +0 -1
- package/commands/account/__tests__/createOverride.test.js +0 -32
- package/commands/account/__tests__/info.test.d.ts +0 -1
- package/commands/account/__tests__/info.test.js +0 -28
- package/commands/account/__tests__/list.test.d.ts +0 -1
- package/commands/account/__tests__/list.test.js +0 -153
- package/commands/account/__tests__/remove.test.d.ts +0 -1
- package/commands/account/__tests__/remove.test.js +0 -36
- package/commands/account/__tests__/removeOverride.d.ts +0 -1
- package/commands/account/__tests__/removeOverride.js +0 -25
- package/commands/account/__tests__/rename.test.d.ts +0 -1
- package/commands/account/__tests__/rename.test.js +0 -82
- package/commands/account/__tests__/use.test.d.ts +0 -1
- package/commands/account/__tests__/use.test.js +0 -170
- package/commands/app/__tests__/migrate.test.d.ts +0 -1
- package/commands/app/__tests__/migrate.test.js +0 -111
- package/commands/app/secret/__tests__/add.test.d.ts +0 -1
- package/commands/app/secret/__tests__/add.test.js +0 -140
- package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
- package/commands/app/secret/__tests__/delete.test.js +0 -28
- package/commands/app/secret/__tests__/list.test.d.ts +0 -1
- package/commands/app/secret/__tests__/list.test.js +0 -25
- package/commands/app/secret/__tests__/update.test.d.ts +0 -1
- package/commands/app/secret/__tests__/update.test.js +0 -28
- package/commands/cms/__tests__/delete.test.d.ts +0 -1
- package/commands/cms/__tests__/delete.test.js +0 -39
- package/commands/cms/__tests__/fetch.test.d.ts +0 -1
- package/commands/cms/__tests__/fetch.test.js +0 -156
- package/commands/cms/__tests__/function.test.d.ts +0 -1
- package/commands/cms/__tests__/function.test.js +0 -50
- package/commands/cms/__tests__/lint.test.d.ts +0 -1
- package/commands/cms/__tests__/lint.test.js +0 -33
- package/commands/cms/__tests__/list.test.d.ts +0 -1
- package/commands/cms/__tests__/list.test.js +0 -42
- package/commands/cms/__tests__/module.test.d.ts +0 -1
- package/commands/cms/__tests__/module.test.js +0 -45
- package/commands/cms/__tests__/mv.test.d.ts +0 -1
- package/commands/cms/__tests__/mv.test.js +0 -46
- package/commands/cms/__tests__/theme.test.d.ts +0 -1
- package/commands/cms/__tests__/theme.test.js +0 -54
- package/commands/cms/__tests__/upload.test.d.ts +0 -1
- package/commands/cms/__tests__/upload.test.js +0 -308
- package/commands/cms/__tests__/watch.test.d.ts +0 -1
- package/commands/cms/__tests__/watch.test.js +0 -204
- package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
- package/commands/cms/function/__tests__/logs.test.js +0 -70
- package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
- package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
- package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/preview.test.js +0 -54
- package/commands/customObject/__tests__/create.test.d.ts +0 -1
- package/commands/customObject/__tests__/create.test.js +0 -40
- package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/createSchema.test.js +0 -28
- package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
- package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
- package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
- package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
- package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
- package/commands/customObject/__tests__/listSchemas.test.js +0 -29
- package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/updateSchema.test.js +0 -40
- package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
- package/commands/filemanager/__tests__/fetch.test.js +0 -32
- package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
- package/commands/filemanager/__tests__/upload.test.js +0 -191
- package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
- package/commands/hubdb/__tests__/clear.test.js +0 -28
- package/commands/hubdb/__tests__/create.test.d.ts +0 -1
- package/commands/hubdb/__tests__/create.test.js +0 -28
- package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
- package/commands/hubdb/__tests__/delete.test.js +0 -28
- package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
- package/commands/hubdb/__tests__/fetch.test.js +0 -28
- package/commands/hubdb/__tests__/list.test.d.ts +0 -1
- package/commands/hubdb/__tests__/list.test.js +0 -88
- package/commands/mcp/__tests__/setup.test.d.ts +0 -1
- package/commands/mcp/__tests__/setup.test.js +0 -26
- package/commands/mcp/__tests__/start.test.d.ts +0 -1
- package/commands/mcp/__tests__/start.test.js +0 -144
- package/commands/project/__tests__/add.test.d.ts +0 -1
- package/commands/project/__tests__/add.test.js +0 -107
- package/commands/project/__tests__/create.test.d.ts +0 -1
- package/commands/project/__tests__/create.test.js +0 -97
- package/commands/project/__tests__/deploy.test.d.ts +0 -1
- package/commands/project/__tests__/deploy.test.js +0 -307
- package/commands/project/__tests__/dev.test.d.ts +0 -1
- package/commands/project/__tests__/dev.test.js +0 -273
- package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
- package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
- package/commands/project/__tests__/download.test.d.ts +0 -1
- package/commands/project/__tests__/download.test.js +0 -39
- package/commands/project/__tests__/installDeps.test.d.ts +0 -1
- package/commands/project/__tests__/installDeps.test.js +0 -140
- package/commands/project/__tests__/lint.test.d.ts +0 -1
- package/commands/project/__tests__/lint.test.js +0 -704
- package/commands/project/__tests__/list.test.d.ts +0 -1
- package/commands/project/__tests__/list.test.js +0 -31
- package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
- package/commands/project/__tests__/listBuilds.test.js +0 -38
- package/commands/project/__tests__/logs.test.d.ts +0 -1
- package/commands/project/__tests__/logs.test.js +0 -202
- package/commands/project/__tests__/migrate.test.d.ts +0 -1
- package/commands/project/__tests__/migrate.test.js +0 -106
- package/commands/project/__tests__/open.test.d.ts +0 -1
- package/commands/project/__tests__/open.test.js +0 -39
- package/commands/project/__tests__/profile.test.d.ts +0 -1
- package/commands/project/__tests__/profile.test.js +0 -42
- package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
- package/commands/project/__tests__/updateDeps.test.js +0 -140
- package/commands/project/__tests__/upload.test.d.ts +0 -1
- package/commands/project/__tests__/upload.test.js +0 -234
- package/commands/project/__tests__/validate.test.d.ts +0 -1
- package/commands/project/__tests__/validate.test.js +0 -381
- package/commands/project/__tests__/watch.test.d.ts +0 -1
- package/commands/project/__tests__/watch.test.js +0 -35
- package/commands/project/dev/deprecatedFlow.d.ts +0 -11
- package/commands/project/dev/deprecatedFlow.js +0 -135
- package/commands/sandbox/__tests__/create.test.d.ts +0 -1
- package/commands/sandbox/__tests__/create.test.js +0 -245
- package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
- package/commands/sandbox/__tests__/delete.test.js +0 -31
- package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/addSecret.test.js +0 -162
- package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/deleteSecret.test.js +0 -41
- package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/listSecret.test.js +0 -29
- package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/updateSecret.test.js +0 -29
- package/commands/testAccount/__tests__/create.test.d.ts +0 -1
- package/commands/testAccount/__tests__/create.test.js +0 -106
- package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
- package/commands/testAccount/__tests__/createConfig.test.js +0 -32
- package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
- package/commands/testAccount/__tests__/delete.test.js +0 -29
- package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
- package/commands/testAccount/__tests__/importData.test.js +0 -92
- package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
- package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
- package/lib/__tests__/accountAuth.test.d.ts +0 -1
- package/lib/__tests__/accountAuth.test.js +0 -258
- package/lib/__tests__/accountTypes.test.d.ts +0 -1
- package/lib/__tests__/accountTypes.test.js +0 -98
- package/lib/__tests__/buildAccount.test.d.ts +0 -1
- package/lib/__tests__/buildAccount.test.js +0 -262
- package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
- package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
- package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
- package/lib/__tests__/commandSuggestion.test.js +0 -121
- package/lib/__tests__/commonOpts.test.d.ts +0 -1
- package/lib/__tests__/commonOpts.test.js +0 -80
- package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
- package/lib/__tests__/dependencyManagement.test.js +0 -1067
- package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
- package/lib/__tests__/developerTestAccounts.test.js +0 -156
- package/lib/__tests__/hasFeature.test.d.ts +0 -1
- package/lib/__tests__/hasFeature.test.js +0 -167
- package/lib/__tests__/http.test.d.ts +0 -1
- package/lib/__tests__/http.test.js +0 -40
- package/lib/__tests__/importData.test.d.ts +0 -1
- package/lib/__tests__/importData.test.js +0 -98
- package/lib/__tests__/npmCli.test.d.ts +0 -1
- package/lib/__tests__/npmCli.test.js +0 -84
- package/lib/__tests__/oauth.test.d.ts +0 -1
- package/lib/__tests__/oauth.test.js +0 -109
- package/lib/__tests__/parsing.test.d.ts +0 -1
- package/lib/__tests__/parsing.test.js +0 -34
- package/lib/__tests__/polling.test.d.ts +0 -1
- package/lib/__tests__/polling.test.js +0 -76
- package/lib/__tests__/process.test.d.ts +0 -1
- package/lib/__tests__/process.test.js +0 -89
- package/lib/__tests__/sandboxSync.test.d.ts +0 -1
- package/lib/__tests__/sandboxSync.test.js +0 -147
- package/lib/__tests__/sandboxes.test.d.ts +0 -1
- package/lib/__tests__/sandboxes.test.js +0 -156
- package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
- package/lib/__tests__/serverlessLogs.test.js +0 -163
- package/lib/__tests__/usageTracking.test.d.ts +0 -1
- package/lib/__tests__/usageTracking.test.js +0 -197
- package/lib/__tests__/validation.test.d.ts +0 -1
- package/lib/__tests__/validation.test.js +0 -143
- package/lib/__tests__/yargsUtils.test.d.ts +0 -1
- package/lib/__tests__/yargsUtils.test.js +0 -124
- package/lib/app/__tests__/migrate.test.d.ts +0 -1
- package/lib/app/__tests__/migrate.test.js +0 -638
- package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
- package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
- package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
- package/lib/doctor/__tests__/Doctor.test.js +0 -560
- package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
- package/lib/errorHandlers/__tests__/index.test.js +0 -278
- package/lib/mcp/__tests__/setup.test.d.ts +0 -1
- package/lib/mcp/__tests__/setup.test.js +0 -523
- package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
- package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
- package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
- package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
- package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
- package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
- package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
- package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
- package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
- package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
- package/lib/projects/__tests__/DevServerManager.test.js +0 -185
- package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
- package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
- package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
- package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
- package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
- package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
- package/lib/projects/__tests__/components.test.d.ts +0 -1
- package/lib/projects/__tests__/components.test.js +0 -426
- package/lib/projects/__tests__/deploy.test.d.ts +0 -1
- package/lib/projects/__tests__/deploy.test.js +0 -231
- package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
- package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
- package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
- package/lib/projects/__tests__/platformVersion.test.js +0 -63
- package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
- package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
- package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
- package/lib/projects/__tests__/projectProfiles.test.js +0 -441
- package/lib/projects/__tests__/projects.test.d.ts +0 -1
- package/lib/projects/__tests__/projects.test.js +0 -58
- package/lib/projects/__tests__/structure.test.d.ts +0 -1
- package/lib/projects/__tests__/structure.test.js +0 -210
- package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
- package/lib/projects/__tests__/uieLinting.test.js +0 -631
- package/lib/projects/__tests__/upload.test.d.ts +0 -1
- package/lib/projects/__tests__/upload.test.js +0 -183
- package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
- package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
- package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
- package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
- package/lib/projects/create/__tests__/legacy.test.js +0 -72
- package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
- package/lib/projects/create/__tests__/v2.test.js +0 -257
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +0 -40
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +0 -128
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +0 -59
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +0 -383
- package/lib/projects/platformVersion.d.ts +0 -9
- package/lib/projects/platformVersion.js +0 -39
- package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
- package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
- package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
- package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
- package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
- package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
- package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
- package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
- package/lib/sandboxSync.d.ts +0 -4
- package/lib/sandboxSync.js +0 -102
- package/lib/theme/__tests__/migrate.test.d.ts +0 -1
- package/lib/theme/__tests__/migrate.test.js +0 -256
- package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
- package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
- package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
- package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
- package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
- package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
- package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
- package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
- package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
- package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -132
- package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
- package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
- package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
- package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
- package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
- package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/command.test.js +0 -275
- package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/content.test.js +0 -164
- package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
package/lang/en.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { mapToUserFriendlyName } from '@hubspot/project-parsing-lib/transform';
|
|
3
|
-
import { PLATFORM_VERSIONS } from '@hubspot/
|
|
3
|
+
import { PLATFORM_VERSIONS } from '@hubspot/project-parsing-lib/constants';
|
|
4
4
|
import { PERSONAL_ACCESS_KEY_AUTH_METHOD } from '@hubspot/local-dev-lib/constants/auth';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, LEGACY_PUBLIC_APP_FILE, LOCAL_DEV_DEFAULT_PORT, PROJECT_CONFIG_FILE, PROJECT_WITH_APP, } from '../lib/constants.js';
|
|
6
|
+
import { ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME, DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, GLOBAL_CONFIG_PATH, } from '@hubspot/local-dev-lib/constants/config';
|
|
7
|
+
import { indent, UI_COLORS, uiAccountDescription, uiAuthCommandReference, uiBetaTag, uiCommandReference, uiDeprecatedTag, uiLink, } from '../lib/ui/index.js';
|
|
8
|
+
import { getLocalDevUiUrl, getProjectDetailUrl, getProjectSettingsUrl, } from '../lib/projects/urls.js';
|
|
8
9
|
import { getProductUpdatesUrl } from '../lib/links.js';
|
|
9
|
-
import { APP_DISTRIBUTION_TYPES, APP_AUTH_TYPES, PROJECT_CONFIG_FILE, PROJECT_WITH_APP, LEGACY_PUBLIC_APP_FILE, } from '../lib/constants.js';
|
|
10
10
|
export const commands = {
|
|
11
11
|
generalErrors: {
|
|
12
12
|
srcIsProject: (src, command) => `"${src}" is in a project folder. Did you mean "hs project ${command}"?`,
|
|
@@ -123,6 +123,9 @@ export const commands = {
|
|
|
123
123
|
options: {
|
|
124
124
|
account: 'HubSpot account to authenticate',
|
|
125
125
|
personalAccessKey: 'Enter existing personal access key',
|
|
126
|
+
default: 'Set the authenticated account as the default account',
|
|
127
|
+
name: 'Set a name for the account in the CLI config',
|
|
128
|
+
useDefaultName: 'Use the account name derived from the HubSpot portal name',
|
|
126
129
|
},
|
|
127
130
|
errors: {
|
|
128
131
|
invalidAccountIdProvided: `--account must be a number.`,
|
|
@@ -137,8 +140,12 @@ export const commands = {
|
|
|
137
140
|
},
|
|
138
141
|
list: {
|
|
139
142
|
accounts: `${chalk.bold('Accounts')}:`,
|
|
143
|
+
allAccounts: `${chalk.bold('All Accounts')}:`,
|
|
144
|
+
linkedAccounts: `${chalk.bold('Linked Accounts')}:`,
|
|
140
145
|
defaultAccountTitle: `${chalk.bold('Default Account')}`,
|
|
146
|
+
linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
|
|
141
147
|
currentResolvedDefaultAccount: (accountId) => `Account: ${uiAccountDescription(accountId)}`,
|
|
148
|
+
directory: (dir) => `Directory: ${dir}`,
|
|
142
149
|
describe: 'List names of accounts defined in config.',
|
|
143
150
|
configPath: (configPath) => `Source: ${configPath}`,
|
|
144
151
|
overrideFilePathTitle: `${chalk.bold('Default Account Override')}`,
|
|
@@ -185,6 +192,70 @@ export const commands = {
|
|
|
185
192
|
success: {
|
|
186
193
|
defaultAccountUpdated: (accountName) => `Default account updated to "${accountName}"`,
|
|
187
194
|
},
|
|
195
|
+
linked: {
|
|
196
|
+
editingLinkedDefault: (dir) => `Editing the default linked account for this directory (not the global default):\n${indent(1)}${dir}`,
|
|
197
|
+
alreadyDefault: (accountId) => `${uiAccountDescription(accountId)} is the only linked account and is already the default.`,
|
|
198
|
+
setLinkedDefault: (account) => `Linked default set to ${chalk.cyan(account)}`,
|
|
199
|
+
accountNotLinked: (account) => `${account} is not linked to this directory.`,
|
|
200
|
+
promptToLink: (account) => `Would you like to link ${account} to this directory?`,
|
|
201
|
+
settingGlobalDefault: 'Setting global default instead.',
|
|
202
|
+
nonInteractiveNotLinked: (account) => `${account} is not linked to this directory. Setting global default instead.`,
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
link: {
|
|
206
|
+
describe: 'Link authenticated HubSpot accounts to the current directory',
|
|
207
|
+
verboseDescribe: `Link one or more authenticated HubSpot accounts to the current directory. Linked accounts are saved in a local ${chalk.bold('.hs/settings.json')} file (added to .gitignore automatically).\n\nThis lets the CLI know which account to use when you run commands from this directory, without changing the global default. Run ${uiCommandReference('hs account current')} to see the active configuration.`,
|
|
208
|
+
shared: {
|
|
209
|
+
noLinkedAccounts: 'No HubSpot accounts are linked in this directory.',
|
|
210
|
+
globalAccountsAvailable: (count) => `You have ${chalk.cyan(count.toString())} ${count === 1 ? 'account' : 'accounts'} in your global config.`,
|
|
211
|
+
configurePrompt: `To configure this directory, run:\n${indent(1)}${uiCommandReference('hs account link')}`,
|
|
212
|
+
deprecatedConfigNotSupported: (command) => `${uiCommandReference(command)} does not support deprecated config. Run ${uiCommandReference('hs config migrate')} to migrate to global config. Then re-run ${uiCommandReference(command)}`,
|
|
213
|
+
writeSettingsFailed: (path, err) => `Failed to write to ${path}: ${err}`,
|
|
214
|
+
savedToSettings: (path) => `Saved to ${path}`,
|
|
215
|
+
usingLinkedAccounts: (settingsPath) => `This directory has linked accounts via ${settingsPath}. Only linked accounts will be available for this command. To manage linked accounts, run ${uiCommandReference('hs account link')}.`,
|
|
216
|
+
accountAutoLinked: (accountId) => `Automatically linked ${uiAccountDescription(accountId)} to this directory.`,
|
|
217
|
+
accountAutoLinkFailed: (accountId) => `Could not automatically link ${uiAccountDescription(accountId)} to this directory. Run ${uiCommandReference('hs account link')} to link it manually.`,
|
|
218
|
+
},
|
|
219
|
+
linkingDirectory: (dir) => `Linking HubSpot account(s) for directory:\n${indent(1)}${dir}`,
|
|
220
|
+
managingLinkedAccounts: (dir) => `Managing linked accounts for:\n${indent(1)}${dir}`,
|
|
221
|
+
settingsInfo: (path) => `\u2139 Accounts linked here are saved in ${path}`,
|
|
222
|
+
success: {
|
|
223
|
+
created: (path) => `Linked to ${path} (created .hs and added to .gitignore).\n${indent(1)}Now when you work within this directory, the CLI will use the linked account(s).`,
|
|
224
|
+
},
|
|
225
|
+
errors: {
|
|
226
|
+
authFailed: `Authentication failed to complete`,
|
|
227
|
+
},
|
|
228
|
+
events: {
|
|
229
|
+
accountsLinked: (count) => `Linked ${count} account${count !== 1 ? 's' : ''}`,
|
|
230
|
+
accountsUnlinked: (count) => `Unlinked ${count} account${count !== 1 ? 's' : ''}`,
|
|
231
|
+
overrideAccountDetected: (accountId) => `\nCurrent default account (from .hsaccount):\n${indent(1)}${uiAccountDescription(accountId)}`,
|
|
232
|
+
defaultAccountSet: (accountId) => `Linked default account set to ${chalk.cyan(uiAccountDescription(accountId))}`,
|
|
233
|
+
defaultAccountRemoved: (isSelectionRequired) => `The linked default account was removed. ${isSelectionRequired ? 'A linked default account is required.\n' : ''}`,
|
|
234
|
+
defaultAccountRemains: (accountId) => `Linked default account remains ${chalk.cyan(uiAccountDescription(accountId))}`,
|
|
235
|
+
updatedLinkedAccounts: 'Updated linked accounts',
|
|
236
|
+
noAccountsLinked: `All accounts have been unlinked. Your global config accounts will be used.\n${indent(1)}The ${chalk.bold('.hs')} directory is no longer needed and can be safely deleted.`,
|
|
237
|
+
overrideFileRemoved: '.hsaccount file removed',
|
|
238
|
+
invalidDefaultAccount: (accountId) => `Default account ${uiAccountDescription(accountId)} is not in the linked accounts list and has been reset. Please select a new default.`,
|
|
239
|
+
},
|
|
240
|
+
prompts: {
|
|
241
|
+
howToProceed: 'How would you like to link an account?',
|
|
242
|
+
whatToDo: 'Which action would you like to perform?',
|
|
243
|
+
linkExisting: 'Link existing authenticated account(s)',
|
|
244
|
+
authenticateNew: 'Authenticate and link a new account',
|
|
245
|
+
cancel: 'Cancel',
|
|
246
|
+
selectDefault: 'Select a linked default account',
|
|
247
|
+
selectToLink: 'Select authenticated account(s) to link:',
|
|
248
|
+
selectToUnlink: 'Select account(s) to unlink',
|
|
249
|
+
alreadyLinked: '- Already linked',
|
|
250
|
+
fromHsAccount: '(from .hsaccount)',
|
|
251
|
+
newlyAuthenticated: '(just authenticated)',
|
|
252
|
+
mustSelectOne: 'You must select at least one account to link',
|
|
253
|
+
keepAsDefault: 'Keep this as the default?',
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
unlink: {
|
|
257
|
+
describe: 'Unlink HubSpot account(s) from the current directory',
|
|
258
|
+
verboseDescribe: `Remove one or more linked accounts from this directory's ${chalk.bold('.hs/settings.json')}. If the default account is removed, you will be prompted to select a new one.\n\nThis does not delete the account from the global config - it only removes the local association.`,
|
|
188
259
|
},
|
|
189
260
|
remove: {
|
|
190
261
|
describe: 'Remove an account from the config.',
|
|
@@ -253,6 +324,9 @@ export const commands = {
|
|
|
253
324
|
},
|
|
254
325
|
name: (name) => `${chalk.bold('Account name')}: ${name}`,
|
|
255
326
|
scopeGroups: `${chalk.bold('Scopes available')}:`,
|
|
327
|
+
linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
|
|
328
|
+
settingsPath: (path) => `Source: ${path}`,
|
|
329
|
+
linkedDefault: (account) => `Account: ${account}`,
|
|
256
330
|
},
|
|
257
331
|
clean: {
|
|
258
332
|
describe: 'Check for inactive accounts and removes them from the CLI config.',
|
|
@@ -1251,22 +1325,34 @@ export const commands = {
|
|
|
1251
1325
|
},
|
|
1252
1326
|
mcp: {
|
|
1253
1327
|
describe: 'Commands for managing HubSpot MCP servers.',
|
|
1328
|
+
promotion: {
|
|
1329
|
+
activeNudge: `${chalk.bold('Tip:')} Work faster with AI coding tools. Run ${uiCommandReference('hs mcp setup')} to connect HubSpot developer context to supported clients.`,
|
|
1330
|
+
},
|
|
1254
1331
|
setup: {
|
|
1255
|
-
describe: '
|
|
1332
|
+
describe: `Run ${uiCommandReference('hs mcp setup')} to connect the HubSpot Dev MCP and work faster with your AI coding tools.`,
|
|
1256
1333
|
installingDocSearch: 'Adding the docs-search mcp server',
|
|
1257
1334
|
codex: 'Codex CLI',
|
|
1258
1335
|
claudeCode: 'Claude Code',
|
|
1259
1336
|
cursor: 'Cursor',
|
|
1337
|
+
devin: 'Devin',
|
|
1260
1338
|
gemini: 'Gemini CLI',
|
|
1261
|
-
|
|
1339
|
+
opencode: 'OpenCode',
|
|
1262
1340
|
vsCode: 'VSCode',
|
|
1341
|
+
other: 'Other (manual setup)',
|
|
1263
1342
|
args: {
|
|
1264
1343
|
client: 'Target apps to configure',
|
|
1344
|
+
standalone: 'Use npx for all of the hs commands run by the MCP server. This allows you to use the MCP server without having the CLI globally installed.',
|
|
1345
|
+
cliVersion: 'Pin a specific CLI version for standalone mode',
|
|
1265
1346
|
docsSearch: 'Should the docs search mcp server be installed',
|
|
1266
1347
|
},
|
|
1348
|
+
examples: {
|
|
1349
|
+
nonInteractive: 'Configure Claude Code without prompts',
|
|
1350
|
+
standalone: 'Configure Cursor in standalone mode with a pinned CLI version',
|
|
1351
|
+
},
|
|
1267
1352
|
success: (derivedTargets) => `You can now use the HubSpot CLI MCP Server in ${derivedTargets.join(', ')}. ${chalk.bold('You may need to restart these tools to apply the changes')}.`,
|
|
1268
1353
|
errors: {
|
|
1269
1354
|
errorParsingJsonFIle: (filename, errorMessage) => `Unable to update ${chalk.bold(filename)} due to invalid JSON: ${errorMessage}`,
|
|
1355
|
+
cliVersionRequiresStandalone: '`--cli-version` requires `--standalone`. Pass `--standalone` to use a specific CLI version.',
|
|
1270
1356
|
},
|
|
1271
1357
|
spinners: {
|
|
1272
1358
|
failedToConfigure: 'Failed to configure the HubSpot mcp server.',
|
|
@@ -1291,17 +1377,28 @@ export const commands = {
|
|
|
1291
1377
|
geminiNotFound: "Gemini CLI is not installed (missing 'gemini' command). Install it and re-run hs mcp setup.",
|
|
1292
1378
|
geminiInstallFailed: 'Failed to configure Gemini CLI',
|
|
1293
1379
|
alreadyInstalled: 'HubSpot CLI mcp server already installed, reinstalling',
|
|
1294
|
-
//
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1380
|
+
// Devin
|
|
1381
|
+
configuringDevin: 'Configuring Devin...',
|
|
1382
|
+
devinNotFound: 'Devin is not installed. Install it and re-run hs mcp setup.',
|
|
1383
|
+
failedToConfigureDevin: 'Failed to configure Devin',
|
|
1384
|
+
configuredDevin: 'Configured Devin',
|
|
1385
|
+
// OpenCode
|
|
1386
|
+
configuringOpenCode: 'Configuring OpenCode...',
|
|
1387
|
+
openCodeNotFound: "OpenCode is not installed (missing 'opencode' command). Install it and re-run hs mcp setup.",
|
|
1388
|
+
openCodeInstallFailed: 'Failed to configure OpenCode',
|
|
1389
|
+
configuredOpenCode: 'Configured OpenCode',
|
|
1299
1390
|
// VS Code
|
|
1300
1391
|
configuringVsCode: 'Configuring VSCode...',
|
|
1301
1392
|
failedToConfigureVsCode: 'Failed to configure VSCode',
|
|
1302
1393
|
configuredVsCode: 'Configured VSCode',
|
|
1303
1394
|
vsCodeNotFound: "VSCode CLI is not installed (missing 'code' command). Install it and re-run hs mcp setup.",
|
|
1304
1395
|
},
|
|
1396
|
+
otherInstructions: {
|
|
1397
|
+
header: 'To connect the HubSpot MCP server to another tool, add the following MCP server configuration.',
|
|
1398
|
+
docsNote: "Each tool handles MCP setup differently. Check your tool's documentation for how to add an MCP server using a command or JSON config.",
|
|
1399
|
+
commandLabel: 'Command:',
|
|
1400
|
+
jsonLabel: 'JSON configuration (for tools that use a config file):',
|
|
1401
|
+
},
|
|
1305
1402
|
prompts: {
|
|
1306
1403
|
targets: '[--client] Which tools would you like to add the HubSpot CLI MCP server to?',
|
|
1307
1404
|
targetsRequired: 'Must choose at least one app to configure.',
|
|
@@ -1320,6 +1417,30 @@ export const commands = {
|
|
|
1320
1417
|
shuttingDown: 'Shutting down MCP server...',
|
|
1321
1418
|
},
|
|
1322
1419
|
},
|
|
1420
|
+
api: {
|
|
1421
|
+
describe: 'Make an authenticated HTTP request to any HubSpot API endpoint that supports PAKs.',
|
|
1422
|
+
verboseDescribe: `Make an authenticated HTTP request to any HubSpot API that supports PAKs using your CLI authentication.\n\nThis command is intended for testing and exploration of HubSpot APIs. It uses the authentication credentials configured in the CLI to make requests on your behalf.\n\nThe endpoint should be the API path, e.g. ${chalk.bold('/crm/v3/objects/contacts')}. The request will be authenticated using the account specified by ${uiCommandReference('--account')} or the default account.\n\nNote: The available endpoints depend on the scopes granted to your personal access key. If you receive a 403 error, check that your key includes the required scopes for the endpoint you are trying to reach. ${uiLink('Learn more about the HubSpot API', 'https://developers.hubspot.com/docs/api-reference/latest/overview')}`,
|
|
1423
|
+
positionals: {
|
|
1424
|
+
endpoint: {
|
|
1425
|
+
describe: 'API endpoint path (e.g. /crm/v3/objects/contacts)',
|
|
1426
|
+
},
|
|
1427
|
+
},
|
|
1428
|
+
options: {
|
|
1429
|
+
method: {
|
|
1430
|
+
describe: 'HTTP method to use. Defaults to GET, or POST if --data is provided',
|
|
1431
|
+
},
|
|
1432
|
+
data: {
|
|
1433
|
+
describe: 'JSON-formatted request body for POST, PUT, and PATCH requests',
|
|
1434
|
+
},
|
|
1435
|
+
},
|
|
1436
|
+
requestLog: (method, url) => `${chalk.bold(method)} ${url}`,
|
|
1437
|
+
requestBodyLog: (body) => `Request body: ${body}`,
|
|
1438
|
+
responseLog: 'Response:',
|
|
1439
|
+
errors: {
|
|
1440
|
+
invalidJson: 'The value passed to --data is not valid JSON. Please provide a valid JSON string.',
|
|
1441
|
+
statusLine: (status, statusText) => `${chalk.red(`${status} ${statusText}`)}`,
|
|
1442
|
+
},
|
|
1443
|
+
},
|
|
1323
1444
|
open: {
|
|
1324
1445
|
describe: 'Open a HubSpot page in your browser.',
|
|
1325
1446
|
options: {
|
|
@@ -1343,6 +1464,7 @@ export const commands = {
|
|
|
1343
1464
|
describe: 'Add a new project profile',
|
|
1344
1465
|
verboseDescribe: `Add a new project profile\n\nProfiles enable you to reference variables in your component configuration files. Use the syntax ${chalk.bold('\${VARIABLE_NAME}')} to reference profile variables in your component configuration files. Then target the profile using the ${uiCommandReference('--profile')} flag when you upload your project.`,
|
|
1345
1466
|
example: 'Add a new project profile named hsprofile.qa.json',
|
|
1467
|
+
exampleCopyFrom: 'Add a profile and copy variables from the staging profile',
|
|
1346
1468
|
logs: {
|
|
1347
1469
|
copyExistingProfile: (profileName) => `Found an existing profile. We can copy the variables from ${chalk.bold(profileName)} into your new profile.`,
|
|
1348
1470
|
copyExistingProfiles: 'We can copy the variables from one of your existing profiles into your new profile.',
|
|
@@ -1360,11 +1482,12 @@ export const commands = {
|
|
|
1360
1482
|
duplicateTargetAccount: (targetAccountId) => `The account ${uiAccountDescription(targetAccountId)} is being used in an existing profile. Make sure to edit your project's name between uploads if you do not want to overwrite the existing project in this account.`,
|
|
1361
1483
|
},
|
|
1362
1484
|
errors: {
|
|
1363
|
-
|
|
1485
|
+
unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
|
|
1364
1486
|
profileExists: (profileName) => `Profile ${chalk.bold(profileName)} already exists. Please choose a different name.`,
|
|
1365
1487
|
invalidTargetAccount: 'Target account is not configured in the CLI',
|
|
1366
1488
|
noAccountsConfigured: 'No accounts configured in the CLI',
|
|
1367
1489
|
failedToLoadProfile: (profileName) => `Unable to copy variables. Failed to load profile ${chalk.bold(profileName)}`,
|
|
1490
|
+
copyFromProfileNotFound: (profileName) => `Profile ${chalk.bold(profileName)} does not exist. Available profiles can be found in your project source directory.`,
|
|
1368
1491
|
failedToCreateProfile: 'Failed to create profile',
|
|
1369
1492
|
},
|
|
1370
1493
|
positionals: {
|
|
@@ -1372,6 +1495,7 @@ export const commands = {
|
|
|
1372
1495
|
},
|
|
1373
1496
|
options: {
|
|
1374
1497
|
targetAccount: 'The target account ID for this profile',
|
|
1498
|
+
copyFrom: 'Copy variables from an existing profile',
|
|
1375
1499
|
},
|
|
1376
1500
|
},
|
|
1377
1501
|
delete: {
|
|
@@ -1390,7 +1514,7 @@ export const commands = {
|
|
|
1390
1514
|
deleteProjectPrompt: (accountId) => `Would you like to delete this project from ${uiAccountDescription(accountId)}?`,
|
|
1391
1515
|
},
|
|
1392
1516
|
errors: {
|
|
1393
|
-
|
|
1517
|
+
unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
|
|
1394
1518
|
noProfileFound: (profileName) => `No profile with filename ${chalk.bold(profileName)} found in your project.`,
|
|
1395
1519
|
noProfilesFound: 'No profiles found in your project.',
|
|
1396
1520
|
failedToDeleteProfile: (profileName) => `Unable to delete profile ${chalk.bold(profileName)}. Please try again.`,
|
|
@@ -1405,27 +1529,20 @@ export const commands = {
|
|
|
1405
1529
|
describe: 'Start local dev for the current project.',
|
|
1406
1530
|
logs: {
|
|
1407
1531
|
header: 'HubSpot projects local development',
|
|
1408
|
-
placeholderAccountSelection: 'Using default account as target account (for now)',
|
|
1409
|
-
accountTypeInformation: 'Testing in a developer test account is strongly recommended, but you can use a sandbox account if your plan allows you to create one.',
|
|
1410
1532
|
learnMoreMessageV2: `Learn more about ${uiLink('HubSpot projects local dev', 'https://developers.hubspot.com/docs/developer-tooling/local-development/hubspot-cli/project-commands#start-a-local-development-server')} | ${uiLink('HubSpot account types', 'https://developers.hubspot.com/docs/getting-started/account-types')}`,
|
|
1411
|
-
learnMoreMessageLegacy: uiLink('Learn more about the projects local dev server', 'https://developers.hubspot.com/docs/developer-tooling/local-development/hubspot-cli/project-commands#start-a-local-development-server'),
|
|
1412
1533
|
profileProjectAccountExplanation: (accountId, profileName) => `Using account ${uiAccountDescription(accountId)} from profile ${chalk.bold(profileName)} for project upload`,
|
|
1413
1534
|
defaultProjectAccountExplanation: (accountId) => `Using default account ${uiAccountDescription(accountId)} for project upload`,
|
|
1414
1535
|
projectAccountFlagExplanation: (accountId) => `Using account ${uiAccountDescription(accountId)} provided by the --project-account flag for project upload`,
|
|
1415
|
-
accountFlagExplanation: (accountId) => `Using account ${uiAccountDescription(accountId)} provided by the --account flag for project upload`,
|
|
1416
1536
|
defaultSandboxOrDevTestTestingAccountExplanation: (accountId) => `Using default account ${uiAccountDescription(accountId)} for testing`,
|
|
1417
1537
|
testingAccountFlagExplanation: (accountId) => `Using account ${uiAccountDescription(accountId)} provided by the --testing-account flag for testing`,
|
|
1418
1538
|
},
|
|
1419
1539
|
errors: {
|
|
1420
|
-
noProjectConfig: 'No project detected. Please run this command again from a project directory.',
|
|
1421
1540
|
noAccount: (accountId) => `An error occurred while reading account ${uiAccountDescription(accountId)} from your config. Run ${uiAuthCommandReference()} to re-auth this account.`,
|
|
1422
|
-
|
|
1423
|
-
invalidProjectComponents: 'Projects cannot contain both private and public apps. Move your apps to separate projects before attempting local development.',
|
|
1541
|
+
unsupportedPlatformVersion: (platformVersion) => `Local development is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
|
|
1424
1542
|
noRunnableComponents: `No supported components were found in this project. Run ${uiCommandReference('hs project add')} to see a list of available components and add one to your project.`,
|
|
1425
1543
|
accountNotCombined: `\nLocal development of unified apps is currently only compatible with accounts that are opted into the unified apps beta. Make sure that this account is opted in or switch accounts using ${uiCommandReference('hs account use')}.`,
|
|
1426
|
-
unsupportedAccountFlagLegacy: 'The --project-account and --testing-account flags are not supported for projects with platform versions earlier than 2025.2.',
|
|
1427
|
-
unsupportedAccountFlagV2: 'The --account flag is is not supported supported for projects with platform versions 2025.2 and newer. Use --testing-account and --project-account flags to specify accounts to use for local dev',
|
|
1428
1544
|
localDevAlreadyRunning: `Another ${uiCommandReference('hs project dev')} process is already running. To proceed with local development of this project, stop the existing process and re-run ${uiCommandReference('hs project dev')}.`,
|
|
1545
|
+
autoUploadRequiresAutoDeploy: `${uiCommandReference('hs project dev --auto-upload')} requires auto-deploy to be enabled for this project, since auto-upload deploys every change. Enable auto-deploy in your project settings, or run ${uiCommandReference('hs project dev')} without it.`,
|
|
1429
1546
|
},
|
|
1430
1547
|
examples: {
|
|
1431
1548
|
default: 'Start local dev for the current project',
|
|
@@ -1435,9 +1552,10 @@ export const commands = {
|
|
|
1435
1552
|
},
|
|
1436
1553
|
options: {
|
|
1437
1554
|
profile: 'The profile to target during local dev',
|
|
1438
|
-
projectAccount: 'The id of the account to upload your project to. Must be used with --testing-account.
|
|
1439
|
-
testingAccount: 'The id of the account to install apps and test on. Must be used with --project-account.
|
|
1440
|
-
|
|
1555
|
+
projectAccount: 'The id of the account to upload your project to. Must be used with --testing-account.',
|
|
1556
|
+
testingAccount: 'The id of the account to install apps and test on. Must be used with --project-account.',
|
|
1557
|
+
port: `The port for the local dev server. Defaults to ${LOCAL_DEV_DEFAULT_PORT}.`,
|
|
1558
|
+
autoUpload: 'Automatically upload local changes to HubSpot as you edit files, instead of uploading manually from the Local Dev Panel.',
|
|
1441
1559
|
},
|
|
1442
1560
|
},
|
|
1443
1561
|
create: {
|
|
@@ -1448,6 +1566,9 @@ export const commands = {
|
|
|
1448
1566
|
failedToFetchProjectList: 'Failed to fetch the list of available project templates. Please try again later.',
|
|
1449
1567
|
cannotNestProjects: (projectDir) => `A project already exists at ${projectDir}. Projects cannot be nested within other projects. Please choose a different destination and try again.`,
|
|
1450
1568
|
},
|
|
1569
|
+
warnings: {
|
|
1570
|
+
betaPlatformVersion: (platformVersion) => `Your portal must be enrolled in the beta to use platform version ${platformVersion}. If you are not enrolled in the beta, your upload will fail. ${uiLink('Enroll in the beta', getProductUpdatesUrl('286886'))}`,
|
|
1571
|
+
},
|
|
1451
1572
|
logs: {
|
|
1452
1573
|
success: (projectName, projectDest) => `Project ${chalk.bold(projectName)} was successfully created in ${projectDest}`,
|
|
1453
1574
|
},
|
|
@@ -1510,7 +1631,6 @@ export const commands = {
|
|
|
1510
1631
|
},
|
|
1511
1632
|
},
|
|
1512
1633
|
header: `This command will migrate an app to the projects framework. It will walk you through the fields required to complete the migration and download the project source code into a directory of your choosing.\n${uiLink('Learn more about migrating apps to the projects framework', 'https://developers.hubspot.com/docs/platform/migrate-a-public-app-to-projects')}`,
|
|
1513
|
-
deprecationWarning: (platformVersion) => `The ${uiCommandReference('hs project migrate-app')} command is deprecated and will be removed. Use ${uiCommandReference(`hs app migrate --platform-version=${platformVersion}`)} going forward.`,
|
|
1514
1634
|
migrationStatus: {
|
|
1515
1635
|
inProgress: () => `Converting app configuration to ${chalk.bold(LEGACY_PUBLIC_APP_FILE)} component definition ...`,
|
|
1516
1636
|
success: () => `${chalk.bold('Your app was converted and build #1 is deployed')}`,
|
|
@@ -1615,13 +1735,16 @@ export const commands = {
|
|
|
1615
1735
|
deploy: {
|
|
1616
1736
|
describe: 'Deploy a project build.',
|
|
1617
1737
|
deployBuildIdPrompt: '[--build] Deploy which build?',
|
|
1738
|
+
profileMessage: (profileName, accountId) => `Deploying with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
|
|
1618
1739
|
debug: {
|
|
1619
1740
|
deploying: (path) => `Deploying project at path: ${path}`,
|
|
1620
1741
|
},
|
|
1621
1742
|
errors: {
|
|
1622
1743
|
deploy: 'Deploy error: an unknown error occurred.',
|
|
1623
1744
|
noBuilds: 'Deploy error: no builds for this project were found.',
|
|
1745
|
+
noSuccessfulBuilds: 'Deploy error: no successful builds for this project were found.',
|
|
1624
1746
|
noBuildId: 'You must specify a build to deploy',
|
|
1747
|
+
notSupportedForBuildVersion: `This build's platform version does not support deploy. Run ${uiCommandReference('hs project release create')} to create a release instead.`,
|
|
1625
1748
|
projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in account ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
|
|
1626
1749
|
buildIdDoesNotExist: (accountId, buildId, projectName) => `Build ${buildId} does not exist for project ${chalk.bold(projectName)}. Run ${uiCommandReference('hs project list-builds')} to view existing builds for this project.`,
|
|
1627
1750
|
buildAlreadyDeployed: (accountId, buildId, projectName) => `Build ${buildId} is already deployed. ${uiLink('View project builds in HubSpot', getProjectDetailUrl(projectName, accountId))}`,
|
|
@@ -1632,7 +1755,7 @@ export const commands = {
|
|
|
1632
1755
|
deployIssueComponentWarning: (uid, componentTypeName, message) => `- [${mapToUserFriendlyName(componentTypeName)}] ${chalk.bold('(' + uid + ')')} ${message}`,
|
|
1633
1756
|
},
|
|
1634
1757
|
examples: {
|
|
1635
|
-
default: 'Deploy the
|
|
1758
|
+
default: 'Deploy the last successful build of the current project',
|
|
1636
1759
|
withOptions: 'Deploy build 5 of the project my-project',
|
|
1637
1760
|
withProfile: 'Deploy using the provided profile',
|
|
1638
1761
|
},
|
|
@@ -1641,7 +1764,77 @@ export const commands = {
|
|
|
1641
1764
|
project: 'Project name',
|
|
1642
1765
|
profile: 'The profile to target with this deploy',
|
|
1643
1766
|
force: 'Skip warnings and force deploy. Use this carefully as it will bypass warnings for destructive actions.',
|
|
1644
|
-
deployLatestBuild: 'Deploy the
|
|
1767
|
+
deployLatestBuild: 'Deploy the last successful build of the current project',
|
|
1768
|
+
},
|
|
1769
|
+
},
|
|
1770
|
+
release: {
|
|
1771
|
+
describe: 'Manage project releases.',
|
|
1772
|
+
create: {
|
|
1773
|
+
describe: 'Create a release for a project build.',
|
|
1774
|
+
verboseDescribe: `Create a release for a project build\n\nReleases mark an uploaded build with an auto-generated semantic version tag (e.g. v1.0.0).\n\nBy default, the latest build is used. Use ${uiCommandReference('--build')} to specify a different build ID.`,
|
|
1775
|
+
confirmPrompt: (projectName, buildId) => `Create a release for project ${chalk.bold(projectName)} using build ${chalk.bold(String(buildId))}?`,
|
|
1776
|
+
success: (releaseTag, buildId) => `Release ${chalk.bold(releaseTag)} created for build ${chalk.bold(String(buildId))}.`,
|
|
1777
|
+
cancelled: 'Release creation cancelled.',
|
|
1778
|
+
buildIdPrompt: '[--build] Select a successful build to release:',
|
|
1779
|
+
noUploadMessage: 'No upload message',
|
|
1780
|
+
buildStatus: {
|
|
1781
|
+
BUILDING: 'Build in progress',
|
|
1782
|
+
FAILURE: 'Build failed',
|
|
1783
|
+
PENDING: 'Pending',
|
|
1784
|
+
PREPARING: 'Preparing',
|
|
1785
|
+
},
|
|
1786
|
+
uploadPrompt: (projectName) => `No successful builds for project ${chalk.bold(projectName)}. Would you like to upload it?`,
|
|
1787
|
+
errors: {
|
|
1788
|
+
projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in account ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
|
|
1789
|
+
buildNotFound: (buildId, projectName) => `Build ${chalk.bold(String(buildId))} was not found for project ${chalk.bold(projectName)}. Run ${uiCommandReference('hs project list-builds')} to view existing builds or ${uiCommandReference('hs project upload')} to upload a build first.`,
|
|
1790
|
+
noSuccessfulBuilds: (projectName) => `No successful builds found for project ${chalk.bold(projectName)}. Run ${uiCommandReference('hs project upload')} to create a new build.`,
|
|
1791
|
+
incompatibleBuildVersion: `This build's platform version does not support releases. Upgrade your project to a newer platform version to use releases.`,
|
|
1792
|
+
},
|
|
1793
|
+
options: {
|
|
1794
|
+
build: 'Build ID to release. Defaults to the latest build.',
|
|
1795
|
+
force: 'Skip all confirmation prompts, including automatic upload when no build exists.',
|
|
1796
|
+
},
|
|
1797
|
+
examples: {
|
|
1798
|
+
default: 'Create a release for the latest build',
|
|
1799
|
+
withBuild: 'Create a release for a specific build',
|
|
1800
|
+
},
|
|
1801
|
+
},
|
|
1802
|
+
list: {
|
|
1803
|
+
describe: 'List releases for the current project.',
|
|
1804
|
+
verboseDescribe: `List releases for the current project\n\nDisplays all releases in sorted order, newest first. Includes the version tag, build ID, and creation date. Use ${uiCommandReference('--limit')} to control how many results are shown.`,
|
|
1805
|
+
noReleases: 'No releases found for this project.',
|
|
1806
|
+
showingReleases: (count, projectName) => `Showing ${count} release${count === 1 ? '' : 's'} for ${chalk.bold(projectName)}:`,
|
|
1807
|
+
continueOrExitPrompt: 'Press <enter> to load more, or ctrl+c to exit',
|
|
1808
|
+
errors: {
|
|
1809
|
+
projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in account ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
|
|
1810
|
+
},
|
|
1811
|
+
options: {
|
|
1812
|
+
limit: 'Number of releases to show',
|
|
1813
|
+
},
|
|
1814
|
+
examples: {
|
|
1815
|
+
default: 'List releases for the current project',
|
|
1816
|
+
withLimit: 'Show only the 5 most recent releases',
|
|
1817
|
+
},
|
|
1818
|
+
},
|
|
1819
|
+
info: {
|
|
1820
|
+
describe: 'Show details about a specific release.',
|
|
1821
|
+
verboseDescribe: `Show details about a specific release\n\nDisplays the release tag, build ID, creation date, and list of components included in the release. Use ${uiCommandReference('--json')} for machine-readable output.`,
|
|
1822
|
+
releaseDetails: (releaseTag, projectName) => `Release ${chalk.bold(releaseTag)} for ${chalk.bold(projectName)}:`,
|
|
1823
|
+
components: 'Components:',
|
|
1824
|
+
noComponents: 'No components found for this release.',
|
|
1825
|
+
moreReleasesHint: `Not all releases are shown. Use ${uiCommandReference('--tag')} to look up an older release directly.`,
|
|
1826
|
+
selectRelease: (projectName) => `Select a release for ${chalk.bold(projectName)}`,
|
|
1827
|
+
errors: {
|
|
1828
|
+
releaseNotFound: (releaseTag, projectName) => `Release ${chalk.bold(releaseTag)} was not found for project ${chalk.bold(projectName)}. Verify the project has been uploaded and the release tag exists. Run ${uiCommandReference('hs project release list')} to view existing releases.`,
|
|
1829
|
+
noReleases: 'No releases found for this project.',
|
|
1830
|
+
},
|
|
1831
|
+
options: {
|
|
1832
|
+
tag: 'Release tag to look up (e.g. v1.0.0)',
|
|
1833
|
+
},
|
|
1834
|
+
examples: {
|
|
1835
|
+
default: 'Show details about a specific release',
|
|
1836
|
+
json: 'Output release details as JSON',
|
|
1837
|
+
},
|
|
1645
1838
|
},
|
|
1646
1839
|
},
|
|
1647
1840
|
listBuilds: {
|
|
@@ -1664,6 +1857,8 @@ export const commands = {
|
|
|
1664
1857
|
},
|
|
1665
1858
|
examples: {
|
|
1666
1859
|
default: 'List the builds for the current project',
|
|
1860
|
+
withLimit: 'List the five most recent builds for the current project',
|
|
1861
|
+
json: 'Output the builds for the current project as JSON',
|
|
1667
1862
|
},
|
|
1668
1863
|
},
|
|
1669
1864
|
logs: {
|
|
@@ -1674,6 +1869,7 @@ export const commands = {
|
|
|
1674
1869
|
noFunctionsLinkText: 'Visit developer docs',
|
|
1675
1870
|
noFunctionsInProject: `There aren't any functions in this project\n\t- Run ${uiCommandReference('hs project logs --help')} to learn more about logs\n\t- ${uiLink('Visit developer docs', 'https://developers.hubspot.com/docs/platform/serverless-functions')} to learn more about serverless functions`,
|
|
1676
1871
|
noFunctionWithName: (name) => `No function with name "${name}"`,
|
|
1872
|
+
functionNameRequired: `A function name is required. Pass ${uiCommandReference('--function=<name>')} or run without it to select one interactively.`,
|
|
1677
1873
|
functionNotDeployed: (name) => `The function with name "${name}" is not deployed`,
|
|
1678
1874
|
projectLogsManagerNotInitialized: 'Function called on ProjectLogsManager before initialization',
|
|
1679
1875
|
noDeployedBuild: 'This project has not been deployed yet. Deploy the project first, then try again.',
|
|
@@ -1719,19 +1915,31 @@ export const commands = {
|
|
|
1719
1915
|
examples: {
|
|
1720
1916
|
default: 'Upload a project into your HubSpot account',
|
|
1721
1917
|
withProfile: 'Upload a project into your HubSpot account when using profiles',
|
|
1918
|
+
withPreview: 'Upload and preview the build on a target portal',
|
|
1722
1919
|
},
|
|
1723
1920
|
logs: {
|
|
1921
|
+
forceCreateDeprecated: `The ${uiCommandReference('--force-create')} flag is deprecated. Use ${uiCommandReference('--force')} instead.`,
|
|
1724
1922
|
buildSucceeded: (buildId) => `Build #${buildId} succeeded\n`,
|
|
1725
1923
|
readyToGoLive: '🚀 Ready to take your project live?',
|
|
1726
1924
|
runCommand: (command) => `Run \`${uiCommandReference(command)}\``,
|
|
1727
1925
|
autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
|
|
1926
|
+
autoDeploySkipped: (deployCommand) => `Auto-deploy was skipped for this build. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
|
|
1927
|
+
releaseManagementRequired: (releaseCommand) => `Run ${uiCommandReference(releaseCommand)} to create a release for this build.`,
|
|
1928
|
+
uploadingWithProfile: (profileName, accountId) => `Initializing project upload with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
|
|
1929
|
+
uploadingToAccount: (accountId) => `Initializing project upload to account ${uiAccountDescription(accountId)}`,
|
|
1930
|
+
uploadedToAccount: (accountId) => `Project uploaded to ${uiAccountDescription(accountId)}`,
|
|
1728
1931
|
},
|
|
1729
1932
|
errors: {
|
|
1730
1933
|
projectLockedError: `Your project is locked. This may mean that another user is running the ${uiCommandReference('hs project dev')} command for this project. If this is you, unlock the project in Projects UI.`,
|
|
1934
|
+
previewRequiresTarget: `${uiCommandReference('--preview')} requires ${uiCommandReference('--target=<portalId>')} to specify the portal to preview on.`,
|
|
1935
|
+
targetRequiresPreview: `${uiCommandReference('--target')} can only be used with ${uiCommandReference('--preview')}.`,
|
|
1731
1936
|
},
|
|
1732
1937
|
options: {
|
|
1938
|
+
force: {
|
|
1939
|
+
describe: 'Skip confirmation prompts and force the upload.',
|
|
1940
|
+
},
|
|
1733
1941
|
forceCreate: {
|
|
1734
|
-
describe:
|
|
1942
|
+
describe: uiDeprecatedTag(`Automatically create project if it does not exist. Use ${uiCommandReference('--force')} instead.`, false),
|
|
1735
1943
|
},
|
|
1736
1944
|
message: {
|
|
1737
1945
|
describe: 'Add a message when you upload your project and create a build',
|
|
@@ -1739,6 +1947,18 @@ export const commands = {
|
|
|
1739
1947
|
profile: {
|
|
1740
1948
|
describe: 'Profile to target for this upload',
|
|
1741
1949
|
},
|
|
1950
|
+
skipNpmAudit: {
|
|
1951
|
+
describe: 'Skip the npm audit security check before uploading',
|
|
1952
|
+
},
|
|
1953
|
+
skipAutoDeploy: {
|
|
1954
|
+
describe: 'Skip automatic deployment after a successful build',
|
|
1955
|
+
},
|
|
1956
|
+
preview: {
|
|
1957
|
+
describe: 'Preview the build on a target portal after a successful upload',
|
|
1958
|
+
},
|
|
1959
|
+
target: {
|
|
1960
|
+
describe: 'Portal ID to preview the build on',
|
|
1961
|
+
},
|
|
1742
1962
|
},
|
|
1743
1963
|
},
|
|
1744
1964
|
watch: {
|
|
@@ -1771,7 +1991,6 @@ export const commands = {
|
|
|
1771
1991
|
fileAlreadyQueued: (filePath) => `File "${filePath}" is already queued for upload`,
|
|
1772
1992
|
},
|
|
1773
1993
|
errors: {
|
|
1774
|
-
projectConfigNotFound: 'No project config found. Please ensure that you are in a project directory.',
|
|
1775
1994
|
projectLockedError: `Your project is locked. This may mean that another user is running the ${chalk.bold(`hs project dev`)} command for this project. If this is you, unlock the project in Projects UI.`,
|
|
1776
1995
|
uploadFailed: (remotePath, filePath) => `Failed to upload file "${filePath}" to "${remotePath}"`,
|
|
1777
1996
|
deleteFileFailed: (remotePath) => `Failed to delete file "${remotePath}"`,
|
|
@@ -1838,7 +2057,6 @@ export const commands = {
|
|
|
1838
2057
|
installationSuccessful: (directory) => `Installed dependencies in ${directory}`,
|
|
1839
2058
|
addingDependenciesToLocation: (dependencies, directory) => `Installing ${dependencies} in ${directory}`,
|
|
1840
2059
|
installingDependenciesFailed: (directory) => `Installing dependencies for ${directory} failed`,
|
|
1841
|
-
noProjectConfig: 'No project detected. Run this command from a project directory.',
|
|
1842
2060
|
noPackageJsonInProject: (projectName) => `No dependencies to install. The project ${projectName} folder might be missing component or subcomponent files. ${uiLink('Learn how to create a project from scratch', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/create-an-app#customize-a-new-project-using-the-cli')}`,
|
|
1843
2061
|
packageManagerNotInstalled: (packageManager) => `This command depends on ${packageManager}, install ${uiLink(packageManager, 'https://docs.npmjs.com/downloading-and-installing-node-js-and-npm')}`,
|
|
1844
2062
|
},
|
|
@@ -1853,15 +2071,16 @@ export const commands = {
|
|
|
1853
2071
|
loading: {
|
|
1854
2072
|
checking: 'Checking lint packages and configuration…',
|
|
1855
2073
|
creatingConfig: 'Creating ESLint configuration files…',
|
|
2074
|
+
addingLintScripts: 'Adding lint scripts to package.json files…',
|
|
1856
2075
|
linting: 'Linting…',
|
|
1857
2076
|
},
|
|
1858
|
-
noProjectConfig: 'No project detected. Run this command from a project directory.',
|
|
1859
2077
|
failedToReadPackageJson: (packageJsonPath) => `Failed to read package.json at ${packageJsonPath}`,
|
|
1860
2078
|
installLintPackagesPrompt: (directories, missingPackages) => {
|
|
1861
2079
|
const uniquePackages = Array.from(new Set(missingPackages)).sort();
|
|
1862
2080
|
return `The dependencies required for linting are missing or outdated.\n\nDependencies:\n${uniquePackages.map(p => ` - ${p}`).join('\n')}\n\n${directories.length === 1 ? 'Directory' : 'Directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}\n\nWould you like to install the required dependencies?`;
|
|
1863
2081
|
},
|
|
1864
2082
|
skippingDirectoriesWarning: (directories) => `Skipping linting for the following ${directories.length === 1 ? 'directory' : 'directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}`,
|
|
2083
|
+
skippedDirectoriesError: (directoryCount) => `Linting could not run for ${directoryCount === 1 ? 'the directory' : 'the directories'} above because the required dependencies are missing. Run ${uiCommandReference('hs project lint --install-missing-deps')} to install them.`,
|
|
1865
2084
|
deprecatedEslintConfigWarning: (details) => {
|
|
1866
2085
|
const dirCount = details.length;
|
|
1867
2086
|
const header = `Deprecated ESLint configuration file${dirCount === 1 ? '' : 's'} detected in the following ${dirCount === 1 ? 'directory' : 'directories'}:`;
|
|
@@ -1872,8 +2091,17 @@ export const commands = {
|
|
|
1872
2091
|
},
|
|
1873
2092
|
createEslintConfigPrompt: (directories) => `ESLint configuration file not found in the following ${directories.length === 1 ? 'directory' : 'directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}\n\nWould you like to set up the required ESLint configuration?`,
|
|
1874
2093
|
eslintConfigCreated: (configPath) => `ESLint configuration created at ${configPath}`,
|
|
2094
|
+
createEslintConfigRequiresV2Platform: (platformVersion) => {
|
|
2095
|
+
if (!platformVersion) {
|
|
2096
|
+
return 'Automatic ESLint configuration requires a Developer Platform project (2025.2 or later) with platformVersion set in hsproject.json. Add an eslint.config.js file manually, or set platformVersion and try again.';
|
|
2097
|
+
}
|
|
2098
|
+
return `Automatic ESLint configuration is not available for platform version ${platformVersion}. Use Developer Platform 2025.2 or later, or add eslint.config.js manually.`;
|
|
2099
|
+
},
|
|
2100
|
+
failedToFetchRemoteEslintConfig: (platformVersion) => `Could not download the ESLint config from HubSpot project components for platform version ${platformVersion}. Check your network connection and try again, or add eslint.config.js manually.`,
|
|
1875
2101
|
failedToCreateEslintConfig: (configPath) => `Failed to create ESLint configuration at ${configPath}`,
|
|
1876
2102
|
eslintConfigRequired: 'ESLint configuration is required to run the lint command. Run the command again to create the configuration.',
|
|
2103
|
+
lintScriptsAdded: (scriptNames, packageJsonPath) => `Added ${scriptNames.map(s => `"${s}"`).join(' and ')} to ${packageJsonPath}`,
|
|
2104
|
+
failedToAddLintScripts: (packageJsonPath) => `Failed to add lint scripts to ${packageJsonPath}`,
|
|
1877
2105
|
},
|
|
1878
2106
|
updateDeps: {
|
|
1879
2107
|
help: {
|
|
@@ -1887,7 +2115,6 @@ export const commands = {
|
|
|
1887
2115
|
updateSuccessful: (directory) => `Updated dependencies in ${directory}`,
|
|
1888
2116
|
updatingDependenciesToLocation: (dependencies, directory) => `Updating ${dependencies} in ${directory}`,
|
|
1889
2117
|
updatingDependenciesFailed: (directory) => `Updating dependencies for ${directory} failed`,
|
|
1890
|
-
noProjectConfig: 'No project detected. Run this command from a project directory.',
|
|
1891
2118
|
noPackageJsonInProject: (projectName) => `No dependencies to update. The project ${projectName} folder might be missing component or subcomponent files. ${uiLink('Learn how to create a project from scratch', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/create-an-app#customize-a-new-project-using-the-cli')}`,
|
|
1892
2119
|
packageManagerNotInstalled: (packageManager) => `This command depends on ${packageManager}, install ${uiLink(packageManager, 'https://docs.npmjs.com/downloading-and-installing-node-js-and-npm')}`,
|
|
1893
2120
|
},
|
|
@@ -1928,6 +2155,137 @@ export const commands = {
|
|
|
1928
2155
|
noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
|
|
1929
2156
|
},
|
|
1930
2157
|
},
|
|
2158
|
+
info: {
|
|
2159
|
+
describe: 'Display information about a project, its app, and its components',
|
|
2160
|
+
verboseDescribe: `Display information about a project, its app, and its components\n\nShows the project's platform version, deployed build ID, auto-deploy status, app metadata, and a list of components.\n\nRun ${uiCommandReference('hs project info --json')} to output the result as JSON for scripting.`,
|
|
2161
|
+
project: {
|
|
2162
|
+
title: (name) => `Project: ${name}`,
|
|
2163
|
+
platformVersion: (version) => `Platform Version: ${version}`,
|
|
2164
|
+
id: (id) => `Project ID: ${id}`,
|
|
2165
|
+
deployedBuild: (buildId) => `Deployed Build: #${buildId}`,
|
|
2166
|
+
autoDeploy: (enabled) => `Auto-deploy: ${enabled ? 'Enabled' : 'Disabled'}`,
|
|
2167
|
+
},
|
|
2168
|
+
app: {
|
|
2169
|
+
title: 'App',
|
|
2170
|
+
name: (name) => `Name: ${name}`,
|
|
2171
|
+
id: (id) => `App ID: ${id}`,
|
|
2172
|
+
uid: (uid) => `UID: ${uid}`,
|
|
2173
|
+
authType: (authType) => `Auth Type: ${authType}`,
|
|
2174
|
+
distributionType: (distributionType) => `Distribution: ${distributionType}`,
|
|
2175
|
+
},
|
|
2176
|
+
examples: {
|
|
2177
|
+
default: 'Display project information',
|
|
2178
|
+
json: 'Output as JSON for scripting',
|
|
2179
|
+
},
|
|
2180
|
+
viewProjectLink: 'View project in HubSpot',
|
|
2181
|
+
componentsHeader: 'Components',
|
|
2182
|
+
labels: {
|
|
2183
|
+
type: 'Type',
|
|
2184
|
+
uid: 'UID',
|
|
2185
|
+
},
|
|
2186
|
+
errors: {
|
|
2187
|
+
projectNotFound: (projectName, accountId) => `Project "${projectName}" was not found in account ${uiAccountDescription(accountId)}. Make sure the project has been uploaded at least once.`,
|
|
2188
|
+
noDeployedBuild: `This project has not been deployed yet.\n\nRun ${uiCommandReference('hs project deploy')} to deploy your project.`,
|
|
2189
|
+
unsupportedPlatformVersion: (platformVersion) => `This command is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
|
|
2190
|
+
},
|
|
2191
|
+
},
|
|
2192
|
+
delete: {
|
|
2193
|
+
describe: 'Delete a project from the current target account',
|
|
2194
|
+
verboseDescribe: `Delete a project from the current target account\n\nThis will permanently delete the project, all deployed components, and any app installations associated with it. Your local project files will not be affected.`,
|
|
2195
|
+
warnings: {
|
|
2196
|
+
irreversibleTitle: 'Warning: This will permanently delete your project',
|
|
2197
|
+
irreversible: 'Deleting this project will also delete all deployed components and app installations. This action cannot be undone. Your local project files will not be affected.',
|
|
2198
|
+
},
|
|
2199
|
+
prompts: {
|
|
2200
|
+
selectProject: (accountId) => `Select a project to delete in ${uiAccountDescription(accountId)}`,
|
|
2201
|
+
confirmDelete: (projectName, accountId) => `[--force] Delete ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}? This cannot be undone.`,
|
|
2202
|
+
validation: {
|
|
2203
|
+
projectRequired: 'Please select a project to delete',
|
|
2204
|
+
},
|
|
2205
|
+
},
|
|
2206
|
+
logs: {
|
|
2207
|
+
deleting: (projectName) => `Deleting project ${chalk.bold(projectName)}...`,
|
|
2208
|
+
deleted: (projectName, accountId) => `Deleted project ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}`,
|
|
2209
|
+
cancelled: 'Deletion cancelled',
|
|
2210
|
+
componentsToDeleteUnified: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c.componentId)} (${mapToUserFriendlyName(c.componentType)})`).join('\n')}`,
|
|
2211
|
+
componentsToDeleteLegacy: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c)}`).join('\n')}`,
|
|
2212
|
+
deletingComponents: (projectName) => `Deleting deployed components from ${chalk.bold(projectName)}...`,
|
|
2213
|
+
componentsDeleted: (projectName) => `Deleted deployed components from ${chalk.bold(projectName)}`,
|
|
2214
|
+
unableToDetermineIfComponentsWereDeleted: (projectName) => `Unable to determine if components were successfully deleted from ${chalk.bold(projectName)}. Please try again.`,
|
|
2215
|
+
installWarning: (installCount) => `This project has ${chalk.bold(String(installCount))} active app ${installCount === 1 ? 'installation' : 'installations'} that will be deleted.`,
|
|
2216
|
+
installCountUnknown: 'Unable to determine the number of active app installations for this project.',
|
|
2217
|
+
},
|
|
2218
|
+
errors: {
|
|
2219
|
+
noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
|
|
2220
|
+
projectNotFound: (projectName, accountId) => `Project ${chalk.bold(projectName)} not found in ${uiAccountDescription(accountId)}`,
|
|
2221
|
+
deleteFailed: (projectName) => `Failed to delete project ${chalk.bold(projectName)}. Run with --debug for details or try again.`,
|
|
2222
|
+
cannotDelete: (projectName, reason) => `Cannot delete project ${chalk.bold(projectName)}: ${reason}`,
|
|
2223
|
+
noPlatformVersion: 'Unable to determine platform version for project',
|
|
2224
|
+
componentDeletionFailed: (projectName) => `Failed to delete deployed components from ${chalk.bold(projectName)}. The project was not deleted.`,
|
|
2225
|
+
},
|
|
2226
|
+
options: {
|
|
2227
|
+
project: 'name of the project to delete',
|
|
2228
|
+
force: 'skip confirmation prompt',
|
|
2229
|
+
},
|
|
2230
|
+
},
|
|
2231
|
+
installApp: {
|
|
2232
|
+
describe: 'Install a static auth app from the current project into the target account',
|
|
2233
|
+
verboseDescribe: `Install a static auth app from the current project into the target account.\n\nRun this command from within the project directory. The project must contain a privately distributed static auth app and must already be uploaded to the target account.`,
|
|
2234
|
+
examples: {
|
|
2235
|
+
default: 'Install the static auth app from the current project',
|
|
2236
|
+
withAccount: 'Install the app into a specific account',
|
|
2237
|
+
withProfile: 'Install the app into the account targeted by a profile',
|
|
2238
|
+
json: 'Output install result as JSON',
|
|
2239
|
+
},
|
|
2240
|
+
options: {
|
|
2241
|
+
force: 'Skip confirmation prompts',
|
|
2242
|
+
profile: 'The profile to target with this install',
|
|
2243
|
+
},
|
|
2244
|
+
errors: {
|
|
2245
|
+
unsupportedPlatformVersion: (platformVersion) => `This command is only supported for projects on platform version 2025.2 or later (detected: ${platformVersion}).`,
|
|
2246
|
+
failedToParseProject: 'Failed to parse the project. Check your project configuration is valid and try again.',
|
|
2247
|
+
noAppInProject: 'No app was found in the local project. This command requires a project that contains an app.',
|
|
2248
|
+
unsupportedAuthType: (authType) => `This command only supports static auth apps. Detected auth type: ${authType}.`,
|
|
2249
|
+
unsupportedDistribution: (distribution) => `This command only supports privately distributed apps. Detected distribution: ${distribution}.`,
|
|
2250
|
+
invalidAppDeveloperAccount: (accountId) => `Static auth apps can't be installed into the app developer account ${uiAccountDescription(accountId)}. Switch to a standard, sandbox, or developer test account with ${uiCommandReference('hs account use')}, or pass ${uiCommandReference('--account')}.`,
|
|
2251
|
+
projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
|
|
2252
|
+
appNotDeployed: (appName, accountId) => `The app ${chalk.bold(appName)} has not been deployed to ${uiAccountDescription(accountId)}. Upload the project with ${uiCommandReference('hs project upload')} and ensure the build succeeds, then try again.`,
|
|
2253
|
+
automaticInstallUnavailable: (appName, accountId) => `${chalk.bold(appName)} could not be installed automatically in ${uiAccountDescription(accountId)}.`,
|
|
2254
|
+
installFailed: (appName, accountId) => `Failed to install ${chalk.bold(appName)} in ${uiAccountDescription(accountId)}.`,
|
|
2255
|
+
},
|
|
2256
|
+
jsonErrors: {
|
|
2257
|
+
automaticInstallUnavailable: 'Automatic install is unavailable for this account.',
|
|
2258
|
+
installFailed: (appName, accountId) => `Failed to install ${appName} in account ${accountId}.`,
|
|
2259
|
+
},
|
|
2260
|
+
profileMessage: (profileName, accountId) => `Installing with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
|
|
2261
|
+
appDeveloperAccountNotice: (accountId) => `${uiAccountDescription(accountId)} is an app developer account, which can't have apps installed into it.`,
|
|
2262
|
+
selectInstallAccountPrompt: 'Select an account to install the app into',
|
|
2263
|
+
uploadAndDeployPrompt: (accountId) => `The app isn't deployed to ${uiAccountDescription(accountId)} yet. Upload and deploy the project now?`,
|
|
2264
|
+
alreadyInstalled: (appName, accountId) => `${chalk.bold(appName)} is already installed in ${uiAccountDescription(accountId)}.`,
|
|
2265
|
+
outdatedScopes: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)} with outdated scopes.`,
|
|
2266
|
+
reinstallPrompt: 'Reinstall the app to grant the latest scopes?',
|
|
2267
|
+
installPrompt: (appName, accountId) => `Install ${chalk.bold(appName)} in ${uiAccountDescription(accountId)}?`,
|
|
2268
|
+
installFromBrowser: (installUrl) => `Install the app in HubSpot: ${uiLink('Open install page', installUrl)}`,
|
|
2269
|
+
success: (appName, accountId) => `${chalk.bold(appName)} installed in ${uiAccountDescription(accountId)}.`,
|
|
2270
|
+
},
|
|
2271
|
+
installStatus: {
|
|
2272
|
+
describe: 'Check whether a static auth app in the current project is installed in the target account. This command must be run from within a HubSpot project directory.',
|
|
2273
|
+
examples: {
|
|
2274
|
+
default: 'Check install status for the static auth app in the current project',
|
|
2275
|
+
json: 'Output install status as JSON',
|
|
2276
|
+
},
|
|
2277
|
+
errors: {
|
|
2278
|
+
unsupportedPlatformVersion: (platformVersion) => `This command is only supported for projects on platform version 2025.2 or later (detected: ${platformVersion}).`,
|
|
2279
|
+
failedToParseProject: 'Failed to parse the project. Check your project configuration is valid and try again.',
|
|
2280
|
+
noAppInProject: 'No app was found in the local project. Install status is only available for projects that contain an app.',
|
|
2281
|
+
unsupportedAuthType: (authType) => `This command only supports static auth apps. Detected auth type: ${authType}.`,
|
|
2282
|
+
},
|
|
2283
|
+
success: {
|
|
2284
|
+
installed: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)}.`,
|
|
2285
|
+
installedWithOutdatedScopes: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)} with outdated scopes. Reinstall the app to grant the latest scopes.`,
|
|
2286
|
+
},
|
|
2287
|
+
notInstalled: (appName, accountId) => `${chalk.bold(appName)} is not installed in ${uiAccountDescription(accountId)}.`,
|
|
2288
|
+
},
|
|
1931
2289
|
},
|
|
1932
2290
|
sandbox: {
|
|
1933
2291
|
describe: 'Commands for managing sandboxes.',
|
|
@@ -2122,6 +2480,111 @@ export const commands = {
|
|
|
2122
2480
|
},
|
|
2123
2481
|
},
|
|
2124
2482
|
},
|
|
2483
|
+
logs: {
|
|
2484
|
+
describe: 'View recent application logs.',
|
|
2485
|
+
verboseDescribe: `View recent application logs for a specific log type.\n\nFilter by time range with ${uiCommandReference('--since')} (e.g. 1h, 30m, 2d, or an ISO timestamp). Use ${uiCommandReference('--tail')} to follow logs in real-time, ${uiCommandReference('--compact')} for one-line-per-log output, or ${uiCommandReference('--json')} for machine-readable output.\n\nRun ${uiCommandReference('hs app log-details <logId>')} to inspect a specific log entry.`,
|
|
2486
|
+
options: {
|
|
2487
|
+
appId: 'App ID',
|
|
2488
|
+
type: 'Log type',
|
|
2489
|
+
json: 'Output logs as JSON',
|
|
2490
|
+
limit: 'Maximum number of logs to return',
|
|
2491
|
+
since: 'Filter logs by time ago (1h, 30m, 2d, or ISO timestamp)',
|
|
2492
|
+
tail: 'Follow logs in real-time',
|
|
2493
|
+
errorsOnly: 'Only show error logs',
|
|
2494
|
+
compact: 'Display logs in compact format (one line per log)',
|
|
2495
|
+
},
|
|
2496
|
+
errors: {
|
|
2497
|
+
noLogs: 'No logs found. Try a wider time range (--since) or remove --errors-only to see all logs.',
|
|
2498
|
+
noApps: `No apps found. Create an app with ${uiCommandReference('hs project create')}.`,
|
|
2499
|
+
},
|
|
2500
|
+
prompts: {
|
|
2501
|
+
selectType: '[--type] Select the type of logs to view:',
|
|
2502
|
+
},
|
|
2503
|
+
examples: {
|
|
2504
|
+
basic: 'Fetch webhook logs for app 123456',
|
|
2505
|
+
since: 'Fetch logs from the last hour',
|
|
2506
|
+
tail: 'Follow logs in real-time',
|
|
2507
|
+
json: 'Output logs as JSON',
|
|
2508
|
+
compact: 'Display logs in compact format',
|
|
2509
|
+
},
|
|
2510
|
+
outputMessages: {
|
|
2511
|
+
viewInHubSpot: (url) => uiLink('View in HubSpot', url),
|
|
2512
|
+
tableHeaders: {
|
|
2513
|
+
appId: 'App ID',
|
|
2514
|
+
type: 'Type',
|
|
2515
|
+
logsFound: 'Logs Found',
|
|
2516
|
+
},
|
|
2517
|
+
logDetails: {
|
|
2518
|
+
id: 'ID',
|
|
2519
|
+
duration: 'Duration',
|
|
2520
|
+
portal: 'Portal',
|
|
2521
|
+
trace: 'Trace',
|
|
2522
|
+
error: 'Error',
|
|
2523
|
+
viewDetails: (logId, appId, systemType) => `To view more details, run: ${uiCommandReference(`hs app log-details ${logId} --app=${appId} --type=${systemType}`)}`,
|
|
2524
|
+
viewInUI: (url) => uiLink('View details in UI', url),
|
|
2525
|
+
},
|
|
2526
|
+
tailMessages: {
|
|
2527
|
+
following: (appId) => `Following logs for app ${appId}`,
|
|
2528
|
+
stop: `> Press ${chalk.bold('q')} to stop following`,
|
|
2529
|
+
},
|
|
2530
|
+
},
|
|
2531
|
+
},
|
|
2532
|
+
logDetails: {
|
|
2533
|
+
describe: 'View details for a specific log entry.',
|
|
2534
|
+
verboseDescribe: `View full details for a specific app log entry, including request/response bodies, context information, and error details.\n\nUse ${uiCommandReference('--json')} for machine-readable output.`,
|
|
2535
|
+
positionals: {
|
|
2536
|
+
logId: 'The log ID to fetch details for',
|
|
2537
|
+
},
|
|
2538
|
+
options: {
|
|
2539
|
+
appId: 'App ID',
|
|
2540
|
+
type: 'Log type',
|
|
2541
|
+
json: 'Output details as JSON',
|
|
2542
|
+
},
|
|
2543
|
+
errors: {
|
|
2544
|
+
noApps: `No apps found. Create an app with ${uiCommandReference('hs project create')}.`,
|
|
2545
|
+
},
|
|
2546
|
+
prompts: {
|
|
2547
|
+
selectType: '[--type] Select the log type:',
|
|
2548
|
+
},
|
|
2549
|
+
examples: {
|
|
2550
|
+
basic: 'Fetch details for log abc-123',
|
|
2551
|
+
json: 'Output log details as JSON',
|
|
2552
|
+
},
|
|
2553
|
+
outputMessages: {
|
|
2554
|
+
viewInHubSpot: (url) => uiLink('View in HubSpot', url),
|
|
2555
|
+
logDetailsHeader: 'Log Details',
|
|
2556
|
+
basicInfo: {
|
|
2557
|
+
id: 'Log ID',
|
|
2558
|
+
timestamp: 'Timestamp',
|
|
2559
|
+
status: 'Status',
|
|
2560
|
+
duration: 'Duration',
|
|
2561
|
+
systemType: 'Type',
|
|
2562
|
+
},
|
|
2563
|
+
contextInfo: {
|
|
2564
|
+
header: 'Context',
|
|
2565
|
+
portalId: 'Portal ID',
|
|
2566
|
+
traceId: 'Trace ID',
|
|
2567
|
+
function: 'Function',
|
|
2568
|
+
location: 'Location',
|
|
2569
|
+
card: 'Card',
|
|
2570
|
+
userId: 'User ID',
|
|
2571
|
+
},
|
|
2572
|
+
requestResponse: {
|
|
2573
|
+
header: 'Request/Response',
|
|
2574
|
+
requestBody: 'Request Body',
|
|
2575
|
+
responseBody: 'Response Body',
|
|
2576
|
+
},
|
|
2577
|
+
errorInfo: {
|
|
2578
|
+
header: 'Error Details',
|
|
2579
|
+
errorType: 'Type',
|
|
2580
|
+
errorMessage: 'Message',
|
|
2581
|
+
stackTrace: 'Stack Trace',
|
|
2582
|
+
},
|
|
2583
|
+
additionalInfo: {
|
|
2584
|
+
header: 'Additional Information',
|
|
2585
|
+
},
|
|
2586
|
+
},
|
|
2587
|
+
},
|
|
2125
2588
|
},
|
|
2126
2589
|
},
|
|
2127
2590
|
secret: {
|
|
@@ -2223,7 +2686,7 @@ export const commands = {
|
|
|
2223
2686
|
configPathPrompt: '[--config-path] Enter the path to the test account config: ',
|
|
2224
2687
|
createTestAccountFromConfigPrompt: 'How would you like to create your test account?',
|
|
2225
2688
|
createFromConfigOption: 'Create test account from config file',
|
|
2226
|
-
createFromScratchOption: '
|
|
2689
|
+
createFromScratchOption: 'Select hub tiers manually',
|
|
2227
2690
|
errors: {
|
|
2228
2691
|
configFileNotFound: (configPath) => `No test account config file exists at ${configPath}. Create a test account config file with the ${uiCommandReference('hs test-account create-config')} command.`,
|
|
2229
2692
|
configFileParseFailed: (configPath) => `Failed to parse test account config file at ${configPath}`,
|
|
@@ -2243,8 +2706,8 @@ export const commands = {
|
|
|
2243
2706
|
opsLevel: 'Operations Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
|
|
2244
2707
|
serviceLevel: 'Service Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
|
|
2245
2708
|
salesLevel: 'Sales Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
|
|
2246
|
-
contentLevel: '
|
|
2247
|
-
commerceLevel: '
|
|
2709
|
+
contentLevel: 'Content Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
|
|
2710
|
+
commerceLevel: 'Revenue Hub tier. Options: FREE, PROFESSIONAL, ENTERPRISE',
|
|
2248
2711
|
},
|
|
2249
2712
|
example: (configPath) => `Create a test account from the config file at ${configPath}`,
|
|
2250
2713
|
examples: {
|
|
@@ -2896,15 +3359,30 @@ export const commands = {
|
|
|
2896
3359
|
},
|
|
2897
3360
|
};
|
|
2898
3361
|
export const lib = {
|
|
3362
|
+
linkedDirectory: {
|
|
3363
|
+
warning: (action, settingsPath) => `This directory has linked accounts via ${settingsPath}. ${uiCommandReference(action)} modifies your global config, not the linked directory settings. Use ${uiCommandReference('hs account link')} to manage linked accounts.\n`,
|
|
3364
|
+
},
|
|
2899
3365
|
parsing: {
|
|
2900
3366
|
unableToParseStringToNumber: 'Unable to parse string to number',
|
|
2901
3367
|
},
|
|
2902
3368
|
configMiddleWare: {
|
|
2903
3369
|
invalidAccountIdEnvironmentVariable: 'Unable to parse `HUBSPOT_ACCOUNT_ID` environment variable into a number',
|
|
2904
3370
|
},
|
|
3371
|
+
accountTargetDiscovery: {
|
|
3372
|
+
errors: {
|
|
3373
|
+
explicitAccountNotFound: (account) => `Account ${chalk.bold(String(account))} was not found in your config. Run ${uiCommandReference('hs account list')} to see available accounts.`,
|
|
3374
|
+
},
|
|
3375
|
+
},
|
|
2905
3376
|
process: {
|
|
2906
3377
|
exitDebug: (signal) => `Attempting to gracefully exit. Triggered by ${signal}`,
|
|
2907
3378
|
},
|
|
3379
|
+
handlerLogFile: {
|
|
3380
|
+
saved: (filePath) => `Debug logs can be viewed at ${filePath}`,
|
|
3381
|
+
},
|
|
3382
|
+
jsonSchema: {
|
|
3383
|
+
noSchemaForCommand: 'No schema defined for this command',
|
|
3384
|
+
validationFailed: 'JSON output may be missing or malformed fields. The output schema may be out of date.',
|
|
3385
|
+
},
|
|
2908
3386
|
DevServerManager: {
|
|
2909
3387
|
portConflict: (port) => `The port ${port} is already in use.`,
|
|
2910
3388
|
notInitialized: 'The Dev Server Manager must be initialized before it is started.',
|
|
@@ -2919,6 +3397,7 @@ export const lib = {
|
|
|
2919
3397
|
learnMoreLocalDevServer: uiLink('Learn more about the projects local dev server', 'https://developers.hubspot.com/docs/developer-tooling/local-development/hubspot-cli/project-commands'),
|
|
2920
3398
|
running: (projectName, accountIdentifier) => chalk.hex(UI_COLORS.SORBET)(`Running ${chalk.bold(projectName)} locally on ${accountIdentifier}, waiting for changes ...`),
|
|
2921
3399
|
quitHelper: `Press ${chalk.bold('q')} to stop the local dev server`,
|
|
3400
|
+
autoUploadEnabled: `${chalk.bold('Auto-upload is on.')} Changes you make locally will be uploaded to HubSpot automatically.`,
|
|
2922
3401
|
viewProjectLink: (name, accountId) => uiLink('View project in HubSpot', getProjectDetailUrl(name, accountId) || ''),
|
|
2923
3402
|
viewLocalDevUILink: (accountId, showWelcomeScreen) => uiLink('View local dev session in HubSpot', getLocalDevUiUrl(accountId, showWelcomeScreen)),
|
|
2924
3403
|
localDevUIAutoMessage: (accountId, showWelcomeScreen) => `Opening your ${uiLink('local dev session in HubSpot', getLocalDevUiUrl(accountId, showWelcomeScreen))}...`,
|
|
@@ -2987,6 +3466,13 @@ export const lib = {
|
|
|
2987
3466
|
appDataNotFound: 'An error occurred while fetching data for your app.',
|
|
2988
3467
|
oauthAppRedirectUrlError: (redirectUrl) => `${chalk.bold('No reponse from your OAuth service:')} ${redirectUrl}\nYour app needs a valid OAuth2 service to be installed for local dev. ${uiLink('Learn more', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth')}`,
|
|
2989
3468
|
},
|
|
3469
|
+
accountAuthWebsocket: {
|
|
3470
|
+
logs: {
|
|
3471
|
+
openingWebBrowser: (url) => `Opening ${uiLink('HubSpot', url)} in your web browser\n`,
|
|
3472
|
+
spinner: 'Waiting for HubSpot to send your personal access key... (press any key to enter it manually)',
|
|
3473
|
+
received: 'Personal access key received',
|
|
3474
|
+
},
|
|
3475
|
+
},
|
|
2990
3476
|
CLIWebsocketServer: {
|
|
2991
3477
|
errors: {
|
|
2992
3478
|
portManagerNotRunning: (prefix) => `${prefix ? `${prefix} ` : ''}PortManagerServing must be running before starting WebsocketServer.`,
|
|
@@ -2994,6 +3480,7 @@ export const lib = {
|
|
|
2994
3480
|
missingTypeField: (data) => `Unsupported message received. Missing type field: ${data}`,
|
|
2995
3481
|
invalidJSON: (data) => `Unsupported message received. Invalid JSON: ${data}`,
|
|
2996
3482
|
unknownMessageType: (type) => `Unsupported message received. Unknown message type: ${type}`,
|
|
3483
|
+
failedToBindEphemeralPort: (prefix) => `${prefix ? `${prefix} ` : ''}Failed to determine the assigned port for the WebsocketServer.`,
|
|
2997
3484
|
},
|
|
2998
3485
|
logs: {
|
|
2999
3486
|
startup: (port) => `WebsocketServer running on port ${port}`,
|
|
@@ -3001,8 +3488,14 @@ export const lib = {
|
|
|
3001
3488
|
},
|
|
3002
3489
|
LocalDevProcess: {
|
|
3003
3490
|
projectConfigMismatch: `Unable to upload project. The project config has been modified since starting ${uiCommandReference('hs project dev')}.`,
|
|
3004
|
-
uploadInitiated: 'Project upload initiated
|
|
3005
|
-
|
|
3491
|
+
uploadInitiated: 'Project upload initiated.',
|
|
3492
|
+
autoUploadScheduled: (filePath) => `Auto-upload: detected change to ${filePath}, upload scheduled.`,
|
|
3493
|
+
autoUploadTriggered: 'Auto-upload: debounce elapsed, uploading now.',
|
|
3494
|
+
autoUploadInProgress: 'Auto-upload: an upload is already running, will re-run after it finishes.',
|
|
3495
|
+
autoUploadToggled: (enabled) => enabled
|
|
3496
|
+
? `${chalk.bold('Auto-upload turned on')} from the Local Dev Panel. Changes you make locally will be uploaded to HubSpot automatically.`
|
|
3497
|
+
: `${chalk.bold('Auto-upload turned off')} from the Local Dev Panel. Upload manually from the Local Dev Panel to push your changes.`,
|
|
3498
|
+
deployInitiated: 'Project deploy initiated from the Local Dev Panel.',
|
|
3006
3499
|
uploadFailed: 'Project upload failed. To proceed with local development, fix any necessary errors, then re-upload your project.',
|
|
3007
3500
|
deployFailed: 'Project deploy failed. To proceed with local development, fix any necessary errors, then re-deploy your project.',
|
|
3008
3501
|
uploadSuccess: 'Project upload completed successfully. Resuming local dev...',
|
|
@@ -3017,7 +3510,21 @@ export const lib = {
|
|
|
3017
3510
|
checking: 'Checking if your deployed build is up to date...',
|
|
3018
3511
|
upToDate: 'Deployed build is up to date.',
|
|
3019
3512
|
notUpToDate: `Your project contains undeployed local changes.`,
|
|
3513
|
+
changedFiles: (changed) => {
|
|
3514
|
+
const sections = [];
|
|
3515
|
+
if (changed.added.length > 0) {
|
|
3516
|
+
sections.push(`${chalk.bold('Features Added:')}\n${changed.added.map(f => ` - ${f}`).join('\n')}`);
|
|
3517
|
+
}
|
|
3518
|
+
if (changed.updated.length > 0) {
|
|
3519
|
+
sections.push(`${chalk.bold('Features Modified:')}\n${changed.updated.map(f => ` - ${f}`).join('\n')}`);
|
|
3520
|
+
}
|
|
3521
|
+
if (changed.removed.length > 0) {
|
|
3522
|
+
sections.push(`${chalk.bold('Features Removed:')}\n${changed.removed.map(f => ` - ${f}`).join('\n')}`);
|
|
3523
|
+
}
|
|
3524
|
+
return sections.join('\n\n');
|
|
3525
|
+
},
|
|
3020
3526
|
notUpToDateExplanation: (profile) => `Run ${uiCommandReference(`hs project upload${profile ? ` --profile ${profile}` : ''}`)} to upload these changes to HubSpot, then re-run ${uiCommandReference(`hs project dev${profile ? ` --profile ${profile}` : ''}`)} to continue local development.`,
|
|
3527
|
+
unableToCompare: `Unable to check if local *-hsmeta.json files match the deployed build. Run ${uiCommandReference('hs project upload')} to upload any local changes before continuing.`,
|
|
3021
3528
|
},
|
|
3022
3529
|
createNewProjectForLocalDev: {
|
|
3023
3530
|
projectMustExistExplanation: (projectName, accountId) => `The project ${projectName} does not exist in the target account ${uiAccountDescription(accountId)}. This command requires the project to exist in the target account.`,
|
|
@@ -3040,19 +3547,6 @@ export const lib = {
|
|
|
3040
3547
|
},
|
|
3041
3548
|
},
|
|
3042
3549
|
account: {
|
|
3043
|
-
checkIfDefaultAccountIsSupported: {
|
|
3044
|
-
publicApp: `This project contains a public app. Local development of public apps is only supported on developer accounts and developer test accounts. Change your default account using ${uiCommandReference('hs account use')}, or link a new account with ${uiAuthCommandReference()}.`,
|
|
3045
|
-
privateApp: `This project contains a private app. Local development of private apps is not supported in developer accounts. Change your default account using ${uiCommandReference('hs account use')}, or link a new account with ${uiAuthCommandReference()}.`,
|
|
3046
|
-
},
|
|
3047
|
-
validateAccountOption: {
|
|
3048
|
-
invalidPublicAppAccount: `This project contains a public app. The "--account" flag must point to a developer test account to develop this project locally. Alternatively, change your default account to an app developer account using ${uiCommandReference('hs account use')} and run ${uiCommandReference('hs project dev')} to set up a new developer test account.`,
|
|
3049
|
-
invalidPrivateAppAccount: `This project contains a private app. The account specified with the "--account" flag points to a developer account, which do not support the local development of private apps. Update the "--account" flag to point to a standard, sandbox, or developer test account, or change your default account by running ${uiCommandReference('hs account use')}.`,
|
|
3050
|
-
nonSandboxWarning: `Testing in a sandbox is strongly recommended. To switch the target account, select an option below or run ${uiCommandReference('hs account use')} before running the command again.`,
|
|
3051
|
-
publicAppNonDeveloperTestAccountWarning: `Local development of public apps is only supported in ${chalk.bold('developer test accounts')}.`,
|
|
3052
|
-
},
|
|
3053
|
-
checkIfParentAccountIsAuthed: {
|
|
3054
|
-
notAuthedError: (parentAccountId, accountIdentifier) => `To develop this project locally, run ${uiAuthCommandReference({ accountId: parentAccountId })} to authenticate the App Developer Account ${parentAccountId} associated with ${accountIdentifier}.`,
|
|
3055
|
-
},
|
|
3056
3550
|
selectAccountTypePrompt: {
|
|
3057
3551
|
message: 'Choose the type of account to test on',
|
|
3058
3552
|
developerTestAccountOption: 'Test on a developer test account (recommended)',
|
|
@@ -3060,10 +3554,7 @@ export const lib = {
|
|
|
3060
3554
|
sandboxAccountOptionDisabled: 'Disabled - requires access to sandbox accounts',
|
|
3061
3555
|
productionAccountOption: (accountId) => `<${chalk.red('!')} Test on your project account: ${uiAccountDescription(accountId, false)} ${chalk.red('!')}>`,
|
|
3062
3556
|
},
|
|
3063
|
-
|
|
3064
|
-
configError: `An error occurred while reading the default account from your config. Run ${uiAuthCommandReference()} to re-auth this account`,
|
|
3065
|
-
declineDefaultAccountExplanation: `To develop on a different account, run ${uiCommandReference('hs account use')} to change your default account, then re-run ${uiCommandReference('hs project dev')}.`,
|
|
3066
|
-
},
|
|
3557
|
+
declineDefaultAccountExplanation: `To develop on a different account, run ${uiCommandReference('hs account use')} to change your default account, then re-run ${uiCommandReference('hs project dev')}.`,
|
|
3067
3558
|
},
|
|
3068
3559
|
},
|
|
3069
3560
|
middleware: {
|
|
@@ -3086,14 +3577,8 @@ export const lib = {
|
|
|
3086
3577
|
profileTargetAccount: (accountId) => `Targeting ${uiAccountDescription(accountId)}`,
|
|
3087
3578
|
profileVariables: 'Profile variables',
|
|
3088
3579
|
},
|
|
3089
|
-
exitIfUsingProfiles: {
|
|
3090
|
-
errors: {
|
|
3091
|
-
noProfileSpecified: `This project is configured to use profiles, but no profile was specified. Target a profile using the ${uiCommandReference('--profile')} flag.`,
|
|
3092
|
-
},
|
|
3093
|
-
},
|
|
3094
3580
|
loadProfile: {
|
|
3095
3581
|
errors: {
|
|
3096
|
-
noProjectConfig: 'No project config found. Please run this command from a project directory.',
|
|
3097
3582
|
profileNotFound: (profileName) => `Profile ${chalk.bold(profileName)} not found.`,
|
|
3098
3583
|
missingAccountId: (profileName) => `Profile ${chalk.bold(profileName)} is missing an account id.`,
|
|
3099
3584
|
listedAccountNotFound: (accountId, profileName) => `The account ${uiAccountDescription(accountId)} is defined in your profile ${chalk.bold(profileName)}, but is missing in your config file`,
|
|
@@ -3135,12 +3620,6 @@ export const lib = {
|
|
|
3135
3620
|
},
|
|
3136
3621
|
validateProjectConfig: {
|
|
3137
3622
|
configNotFound: `Unable to locate a project configuration file. Try running again from a project directory, or run ${uiCommandReference('hs project create')} to create a new project.`,
|
|
3138
|
-
configMissingFields: (missingFields) => `The project configuration file is missing required field${missingFields.length > 1 ? 's' : ''}: ${missingFields.map(f => chalk.bold(f)).join(', ')}`,
|
|
3139
|
-
srcDirNotFound: (srcDir, projectDir) => `Project source directory ${chalk.bold(srcDir)} could not be found in ${chalk.bold(projectDir)}.`,
|
|
3140
|
-
srcOutsideProjectDir: (projectConfig, srcDir) => `Invalid value for 'srcDir' in ${projectConfig}: ${chalk.bold(`srcDir: "${srcDir}"`)}\n\t'srcDir' must be a relative path to a folder under the project root, such as "." or "./src"`,
|
|
3141
|
-
},
|
|
3142
|
-
getProjectConfig: {
|
|
3143
|
-
error: 'Could not read from project config',
|
|
3144
3623
|
},
|
|
3145
3624
|
platformVersion: {
|
|
3146
3625
|
unsupported: (currentCliVersion, latestSupported, platformVersion) => `Platform version${platformVersion ? ' ' + chalk.bold(platformVersion) : ''} is not officially supported by this version of the CLI (${chalk.bold(currentCliVersion)}).\n\nUpdate your CLI to the latest version with ${uiCommandReference('hs upgrade')} or use a compatible platform version (${chalk.bold(latestSupported)} or earlier).`,
|
|
@@ -3158,6 +3637,11 @@ export const lib = {
|
|
|
3158
3637
|
feedbackHeader: "We'd love to hear your feedback!",
|
|
3159
3638
|
feedbackMessage: `How are you liking the new projects and developer tools? \n > Run ${uiCommandReference('hs feedback')} to let us know what you think!\n`,
|
|
3160
3639
|
},
|
|
3640
|
+
skippedHsMetaFiles: {
|
|
3641
|
+
warning: (files) => `The following *-hsmeta.json files will be skipped.\nThis CLI version doesn't support the features they require:\n${files.map(f => ` ${chalk.bold(f)}`).join('\n')}\nRun ${uiCommandReference('hs upgrade')} to update the CLI, which may add support for these features.`,
|
|
3642
|
+
uploadWarning: (files) => `The following *-hsmeta.json files will be skipped during upload.\nThis CLI version doesn't support the features they require:\n${files.map(f => ` ${chalk.bold(f)}`).join('\n')}\nRun ${uiCommandReference('hs upgrade')} to update the CLI, which may add support for these features.`,
|
|
3643
|
+
prompt: '[--force] Continue anyway?',
|
|
3644
|
+
},
|
|
3161
3645
|
components: {
|
|
3162
3646
|
unableToGetUidFromHsmeta: 'Unable to get UID from hsmeta',
|
|
3163
3647
|
buildSuccessMessage: {
|
|
@@ -3165,9 +3649,9 @@ export const lib = {
|
|
|
3165
3649
|
docsUrl: 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/overview',
|
|
3166
3650
|
headerCreated: (projectName, projectDest) => `${chalk.bold(projectName)} was successfully created in ${projectDest}`,
|
|
3167
3651
|
headerAdded: (featureText, uid, plural) => `${featureText} ${plural ? 'were' : 'was'} successfully added to ${uid}:`,
|
|
3168
|
-
docsDetails: (docsLink) =>
|
|
3169
|
-
uploadPrompt:
|
|
3170
|
-
devPrompt:
|
|
3652
|
+
docsDetails: (docsLink) => `${docsLink} for more details about building and testing these features.`,
|
|
3653
|
+
uploadPrompt: `Run ${uiCommandReference('hs project upload')} when you're ready to deploy.`,
|
|
3654
|
+
devPrompt: `Run ${uiCommandReference('hs project dev')} to start local development.`,
|
|
3171
3655
|
},
|
|
3172
3656
|
},
|
|
3173
3657
|
},
|
|
@@ -3203,8 +3687,33 @@ export const lib = {
|
|
|
3203
3687
|
fileFiltered: (filename) => `Ignore rule triggered for "${filename}"`,
|
|
3204
3688
|
legacyFileDetected: (filename, platformVersion) => `The ${chalk.bold(filename)} file is not supported on platform version ${chalk.bold(platformVersion)} and will be ignored.`,
|
|
3205
3689
|
projectDoesNotExist: (accountId) => `Upload cancelled. Run ${uiCommandReference('hs project upload')} again to create the project in ${uiAccountDescription(accountId)}.`,
|
|
3690
|
+
workspaceIncluded: (workspaceDir, archivePath) => `Including workspace: ${workspaceDir} → ${archivePath}`,
|
|
3691
|
+
fileDependencyIncluded: (packageName, localPath, archivePath) => `Including file: dependency ${packageName}: ${localPath} → ${archivePath}`,
|
|
3692
|
+
malformedPackageJson: (packageJsonPath, error) => `Skipping malformed package.json at ${packageJsonPath}: ${error}`,
|
|
3693
|
+
workspaceCollision: (archivePath, workspaceDir, existingWorkspace) => `Workspace collision: ${archivePath} from ${workspaceDir} and ${existingWorkspace}`,
|
|
3694
|
+
fileDependencyAlreadyIncluded: (packageName, archivePath) => `file: dependency ${packageName} already included as workspace: ${archivePath}`,
|
|
3695
|
+
updatingLockfile: (lockfilePath) => `Updating package-lock.json in archive: ${lockfilePath}`,
|
|
3696
|
+
updatingPackageJsonWorkspaces: (packageJsonPath) => `Updating package.json workspaces in archive: ${packageJsonPath}`,
|
|
3697
|
+
updatedWorkspaces: (workspaces) => ` Updated workspaces: ${workspaces}`,
|
|
3698
|
+
updatedFileDependency: (packageName, relativePath) => ` Updated dependencies.${packageName}: file:${relativePath}`,
|
|
3699
|
+
lintPackagesNotConfigured: (packageRoot) => `Project lint: lint packages not installed for ${chalk.bold(packageRoot)}. Run ${uiCommandReference('hs project lint')} to install them.`,
|
|
3700
|
+
lintConfigNotFound: (packageRoot) => `Project lint: ESLint configuration not found for ${chalk.bold(packageRoot)}. Run ${uiCommandReference('hs project lint')} to create an ESLint config.`,
|
|
3701
|
+
lintHubSpotRulesNotActive: (packageRoot) => `Project lint: HubSpot ESLint rules not active for ${chalk.bold(packageRoot)}. Configure ${chalk.bold('@hubspot/eslint-config-ui-extensions')} — see ${uiLink('setup instructions', 'https://www.npmjs.com/package/@hubspot/eslint-config-ui-extensions')}.`,
|
|
3702
|
+
npmAuditClean: (packageRoot) => `npm audit: No npm dependency issues found for ${chalk.bold(packageRoot)}`,
|
|
3703
|
+
npmAuditIssues: (packageRoot, details) => `npm audit: security issues found for ${chalk.bold(packageRoot)}: ${details}`,
|
|
3704
|
+
npmAuditNpmUnavailable: (packageRoot) => `npm audit: skipped for ${chalk.bold(packageRoot)} (npm not available in PATH)`,
|
|
3705
|
+
npmAuditNonZeroExit: (packageRoot, exitCode) => `npm audit: ${chalk.bold(packageRoot)} exited with code ${exitCode}`,
|
|
3206
3706
|
},
|
|
3207
3707
|
},
|
|
3708
|
+
projectPreview: {
|
|
3709
|
+
triggeringPreview: (buildId, targetPortalId) => `Previewing build #${buildId} on ${uiAccountDescription(targetPortalId)}`,
|
|
3710
|
+
pollingStatus: (releaseTag, targetPortalId) => `Previewing ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
|
|
3711
|
+
succeeded: (releaseTag, targetPortalId) => `Previewed ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
|
|
3712
|
+
triggerFailed: 'Failed to trigger preview',
|
|
3713
|
+
pollFailed: 'Failed to poll preview status',
|
|
3714
|
+
warning: 'The build succeeded but the preview failed. You can manually preview this build from the project UI.',
|
|
3715
|
+
missingProjectId: 'Unable to preview: could not resolve the project ID.',
|
|
3716
|
+
},
|
|
3208
3717
|
importData: {
|
|
3209
3718
|
errors: {
|
|
3210
3719
|
incorrectAccountType: (derivedAccountId) => `The account ${uiAccountDescription(derivedAccountId)} is not a standard account, developer test account, or app developer account.`,
|
|
@@ -3313,6 +3822,9 @@ export const lib = {
|
|
|
3313
3822
|
pakFailure: 'Failed to generate personal access key for developer test account',
|
|
3314
3823
|
},
|
|
3315
3824
|
},
|
|
3825
|
+
usageTracking: {
|
|
3826
|
+
transparencyMessage: `HubSpot CLI collects anonymous usage data to improve the product. Run ${uiCommandReference('hs config set --enable-usage-tracking=false', false)} to opt out.\n`,
|
|
3827
|
+
},
|
|
3316
3828
|
configOptions: {
|
|
3317
3829
|
enableOrDisableBooleanFieldPrompt: {
|
|
3318
3830
|
message: (fieldName) => `Choose to enable or disable ${fieldName}`,
|
|
@@ -3358,6 +3870,7 @@ export const lib = {
|
|
|
3358
3870
|
qa: 'Run command in QA mode',
|
|
3359
3871
|
useEnv: 'Use environment variable config',
|
|
3360
3872
|
jsonOutput: 'Format output as JSON',
|
|
3873
|
+
jsonSchema: 'Print the JSON output schema and exit',
|
|
3361
3874
|
debug: 'Set log level to debug',
|
|
3362
3875
|
},
|
|
3363
3876
|
},
|
|
@@ -3401,8 +3914,14 @@ export const lib = {
|
|
|
3401
3914
|
promptUtils: {
|
|
3402
3915
|
errors: {
|
|
3403
3916
|
noSelectableChoices: 'Exiting prompt because no selectable choices are available',
|
|
3917
|
+
userCancelled: 'User cancelled prompt',
|
|
3404
3918
|
},
|
|
3405
3919
|
},
|
|
3920
|
+
projectProfilePrompt: {
|
|
3921
|
+
message: '[--profile] This project is configured to use profiles. Select a profile to use:',
|
|
3922
|
+
exitMessage: `This project is configured to use profiles, but no profile was specified. Try again using ${uiCommandReference('--profile')}`,
|
|
3923
|
+
noValidProfilesMessage: 'There are no valid profiles in this project. Ensure the accounts they are targeting are authenticated and try again.',
|
|
3924
|
+
},
|
|
3406
3925
|
importDataFilePathPrompt: {
|
|
3407
3926
|
promptContext: `To view the JSON schema for data imports, visit ${uiLink('the docs', 'https://developers.hubspot.com/docs/guides/api/crm/imports')}`,
|
|
3408
3927
|
promptMessage: '[--file-path] Select the JSON file that will be used to import your data.',
|
|
@@ -3426,13 +3945,15 @@ export const lib = {
|
|
|
3426
3945
|
developerTestAccountLimit: (limit) => `Your account reached the limit of ${limit} developer test accounts.`,
|
|
3427
3946
|
confirmDefaultAccount: (accountName, accountType) => `Continue testing on ${chalk.bold(`${accountName} (${accountType})`)}? (Y/n)`,
|
|
3428
3947
|
confirmUseExistingDeveloperTestAccount: (accountName) => `Continue with ${accountName}? This account isn't currently connected to the HubSpot CLI. By continuing, you'll be prompted to generate a personal access key and connect it.`,
|
|
3948
|
+
confirmLinkExistingDeveloperTestAccount: (accountName) => `${accountName} is not linked to this directory. Would you like to link it?`,
|
|
3429
3949
|
noAccountId: 'No account ID found for the selected account. Please try again.',
|
|
3950
|
+
fetchDeveloperTestAccountsError: 'Unable to fetch developer test accounts. Please try again.',
|
|
3430
3951
|
},
|
|
3431
3952
|
projectLogsPrompt: {
|
|
3432
3953
|
functionName: (projectName) => `[--function] Select function in ${chalk.bold(projectName)} project`,
|
|
3433
3954
|
},
|
|
3434
3955
|
setAsDefaultAccountPrompt: {
|
|
3435
|
-
setAsDefaultAccountMessage:
|
|
3956
|
+
setAsDefaultAccountMessage: (accountName) => `Set ${accountName} as your default account? [--default]`,
|
|
3436
3957
|
setAsDefaultAccount: (accountName) => `Account "${accountName}" set as the default account`,
|
|
3437
3958
|
keepingCurrentDefault: (accountName) => `Account "${accountName}" will continue to be the default account`,
|
|
3438
3959
|
},
|
|
@@ -3497,6 +4018,7 @@ export const lib = {
|
|
|
3497
4018
|
invalidOauthClientSecretCopy: 'Please copy the actual OAuth2 client secret rather than the asterisks that mask it.',
|
|
3498
4019
|
invalidPersonalAccessKey: 'You did not enter a valid access key. Please try again.',
|
|
3499
4020
|
invalidPersonalAccessKeyCopy: 'Please copy the actual access key rather than the bullets that mask it.',
|
|
4021
|
+
authCancelled: 'Authentication cancelled.',
|
|
3500
4022
|
},
|
|
3501
4023
|
},
|
|
3502
4024
|
createTemplatePrompt: {
|
|
@@ -3830,6 +4352,11 @@ export const lib = {
|
|
|
3830
4352
|
installed: (npmVersion) => `npm v${npmVersion} is installed`,
|
|
3831
4353
|
unableToDetermine: 'Unable to determine if npm is installed',
|
|
3832
4354
|
},
|
|
4355
|
+
mcpChecks: {
|
|
4356
|
+
configured: (clients) => `HubSpot MCP server configured in ${clients.join(', ')}`,
|
|
4357
|
+
notConfigured: (clients) => `HubSpot MCP server not configured in ${clients.join(', ')}`,
|
|
4358
|
+
notConfiguredSecondary: `Run ${uiCommandReference('hs mcp setup')} to connect AI coding tools to HubSpot developer context`,
|
|
4359
|
+
},
|
|
3833
4360
|
hsChecks: {
|
|
3834
4361
|
notLatest: (hsVersion) => `Version ${hsVersion} outdated`,
|
|
3835
4362
|
notLatestSecondary: (command, hsVersion) => `Run ${uiCommandReference(command)} to upgrade to the latest version ${hsVersion}`,
|
|
@@ -3848,9 +4375,9 @@ export const lib = {
|
|
|
3848
4375
|
validJson: 'JSON files valid',
|
|
3849
4376
|
},
|
|
3850
4377
|
port: {
|
|
3851
|
-
inUse: (port) => `
|
|
3852
|
-
inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}`,
|
|
3853
|
-
available: (port) => `
|
|
4378
|
+
inUse: (port) => `Default port ${port} is in use`,
|
|
4379
|
+
inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}, or use ${uiCommandReference('--port')} to specify a different port`,
|
|
4380
|
+
available: (port) => `Default port ${port} available for local development`,
|
|
3854
4381
|
},
|
|
3855
4382
|
projectValidation: {
|
|
3856
4383
|
valid: 'Project configuration and structure is valid',
|
|
@@ -3939,11 +4466,12 @@ export const lib = {
|
|
|
3939
4466
|
fileInvalidJson: (path) => `The file "${path}" contains invalid JSON`,
|
|
3940
4467
|
},
|
|
3941
4468
|
migrate: {
|
|
3942
|
-
componentsToBeMigrated: (components) =>
|
|
4469
|
+
componentsToBeMigrated: (components) => `${chalk.bold('The following features will be migrated:')} ${components}`,
|
|
3943
4470
|
componentsThatWillNotBeMigrated: (components) => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
|
|
4471
|
+
legacyCrmCardMigrationDocs: () => `For more information on migrating legacy-crm-card components, follow ${uiLink('these docs', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-legacy-crm-cards-to-app-cards')}`,
|
|
3944
4472
|
sourceContentsMoved: (newLocation) => `The contents of your old source directory have been moved to ${newLocation}, move any required files to the new source directory.`,
|
|
3945
|
-
projectMigrationWarningTitle:
|
|
3946
|
-
projectMigrationWarning: uiBetaTag(`Running the ${uiCommandReference('hs project migrate')} command will permanently upgrade your project to platformVersion
|
|
4473
|
+
projectMigrationWarningTitle: (platformVersion) => `Important: Migrating to platformVersion ${platformVersion} is irreversible`,
|
|
4474
|
+
projectMigrationWarning: (platformVersion) => uiBetaTag(`Running the ${uiCommandReference('hs project migrate')} command will permanently upgrade your project to platformVersion ${platformVersion}. This action cannot be undone. To ensure you have access to your original files, they will be copied to a new directory (archive) for safekeeping.\n\nThis command will guide you through the process, prompting you to enter the required fields and will download the new project source code into your project source directory.`, false),
|
|
3947
4475
|
exitWithoutMigrating: 'Exiting without migrating',
|
|
3948
4476
|
success: {
|
|
3949
4477
|
downloadedProject: (projectName, projectDest) => `Saved ${projectName} to ${projectDest}`,
|
|
@@ -3955,7 +4483,7 @@ export const lib = {
|
|
|
3955
4483
|
doesNotExist: (account) => `Project does not exist in ${uiAccountDescription(account)}. Migrations are only supported for existing projects.`,
|
|
3956
4484
|
themesAlreadyMigrated: 'This project has already been migrated to the latest platform version.',
|
|
3957
4485
|
noProjectForThemesMigration: 'Theme migrations are only supported for projects. Please try again from a project directory.',
|
|
3958
|
-
themesAndAppsNotAllowed: '
|
|
4486
|
+
themesAndAppsNotAllowed: 'Projects containing both themes and apps cannot be migrated together. To migrate, split the project into separate theme-only and app-only projects, then run migrate on each individually.',
|
|
3959
4487
|
multipleApps: 'Multiple apps found in project, this is not allowed in 2025.2',
|
|
3960
4488
|
alreadyExists: (projectName) => `A project with name ${projectName} already exists. Please choose another name.`,
|
|
3961
4489
|
failedToMigrateThemes: 'Failed to migrate project themes. Please verify that your themes are properly formatted before trying again.',
|
|
@@ -4000,6 +4528,13 @@ export const lib = {
|
|
|
4000
4528
|
copyingProjectFilesFailed: 'Unable to copy migrated project files',
|
|
4001
4529
|
},
|
|
4002
4530
|
},
|
|
4531
|
+
cms: {
|
|
4532
|
+
serverlessDevRuntime: {
|
|
4533
|
+
installStarted: (targetVersion) => `Installing serverless-dev-runtime ${targetVersion}...`,
|
|
4534
|
+
installSucceeded: 'serverless-dev-runtime setup complete',
|
|
4535
|
+
installFailed: 'Failed to install serverless-dev-runtime',
|
|
4536
|
+
},
|
|
4537
|
+
},
|
|
4003
4538
|
theme: {
|
|
4004
4539
|
cmsDevServerProcess: {
|
|
4005
4540
|
installStarted: (targetVersion) => `Installing cms-dev-server ${targetVersion}...`,
|