@hubspot/cli 7.7.27-experimental.2 → 7.7.29-experimental.0

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.
Files changed (130) hide show
  1. package/README.md +0 -4
  2. package/api/__tests__/migrate.test.js +5 -5
  3. package/api/migrate.d.ts +10 -4
  4. package/api/migrate.js +2 -2
  5. package/commands/__tests__/create.test.js +20 -0
  6. package/commands/__tests__/testAccount.test.js +2 -0
  7. package/commands/app/__tests__/migrate.test.js +1 -0
  8. package/commands/create/function.js +2 -2
  9. package/commands/create/module.js +2 -2
  10. package/commands/create/template.js +2 -2
  11. package/commands/create.js +47 -0
  12. package/commands/getStarted.js +66 -4
  13. package/commands/mcp/setup.d.ts +0 -1
  14. package/commands/mcp/setup.js +3 -11
  15. package/commands/project/__tests__/create.test.js +57 -0
  16. package/commands/project/__tests__/devUnifiedFlow.test.js +18 -30
  17. package/commands/project/create.js +6 -1
  18. package/commands/project/deploy.js +31 -1
  19. package/commands/project/dev/deprecatedFlow.js +2 -1
  20. package/commands/project/dev/index.js +32 -12
  21. package/commands/project/dev/unifiedFlow.d.ts +1 -1
  22. package/commands/project/dev/unifiedFlow.js +10 -16
  23. package/commands/project/profile/delete.js +26 -14
  24. package/commands/testAccount/__tests__/importData.test.d.ts +1 -0
  25. package/commands/testAccount/__tests__/importData.test.js +93 -0
  26. package/commands/testAccount/create.js +23 -13
  27. package/commands/testAccount/importData.d.ts +9 -0
  28. package/commands/testAccount/importData.js +61 -0
  29. package/commands/testAccount.js +2 -0
  30. package/lang/en.d.ts +162 -46
  31. package/lang/en.js +177 -59
  32. package/lang/en.lyaml +35 -14
  33. package/lib/__tests__/importData.test.d.ts +1 -0
  34. package/lib/__tests__/importData.test.js +89 -0
  35. package/lib/accountTypes.js +2 -3
  36. package/lib/app/__tests__/migrate.test.js +81 -36
  37. package/lib/app/migrate.d.ts +17 -4
  38. package/lib/app/migrate.js +97 -19
  39. package/lib/constants.d.ts +1 -0
  40. package/lib/constants.js +1 -0
  41. package/lib/hasFeature.d.ts +1 -0
  42. package/lib/hasFeature.js +7 -0
  43. package/lib/importData.d.ts +3 -0
  44. package/lib/importData.js +50 -0
  45. package/lib/mcp/setup.d.ts +3 -5
  46. package/lib/mcp/setup.js +39 -139
  47. package/lib/process.js +15 -4
  48. package/lib/projects/__tests__/AppDevModeInterface.test.js +3 -3
  49. package/lib/projects/__tests__/LocalDevProcess.test.js +5 -95
  50. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +6 -6
  51. package/lib/projects/__tests__/components.test.js +164 -7
  52. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +1 -0
  53. package/lib/projects/__tests__/localDevProjectHelpers.test.js +118 -0
  54. package/lib/projects/add/v3AddComponent.js +16 -4
  55. package/lib/projects/components.d.ts +1 -0
  56. package/lib/projects/components.js +27 -1
  57. package/lib/projects/localDev/AppDevModeInterface.js +35 -3
  58. package/lib/projects/localDev/LocalDevLogger.d.ts +0 -4
  59. package/lib/projects/localDev/LocalDevLogger.js +2 -19
  60. package/lib/projects/localDev/LocalDevManager.js +1 -1
  61. package/lib/projects/localDev/LocalDevProcess.d.ts +1 -2
  62. package/lib/projects/localDev/LocalDevProcess.js +3 -26
  63. package/lib/projects/localDev/LocalDevState.d.ts +6 -7
  64. package/lib/projects/localDev/LocalDevState.js +16 -15
  65. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -0
  66. package/lib/projects/localDev/LocalDevWebsocketServer.js +17 -2
  67. package/lib/projects/localDev/{helpers.d.ts → helpers/account.d.ts} +1 -7
  68. package/lib/projects/localDev/{helpers.js → helpers/account.js} +44 -144
  69. package/lib/projects/localDev/helpers/project.d.ts +12 -0
  70. package/lib/projects/localDev/helpers/project.js +173 -0
  71. package/lib/projects/urls.d.ts +1 -0
  72. package/lib/projects/urls.js +4 -0
  73. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +1 -0
  74. package/lib/prompts/__tests__/createFunctionPrompt.test.js +129 -0
  75. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +1 -0
  76. package/lib/prompts/__tests__/createModulePrompt.test.js +187 -0
  77. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +1 -0
  78. package/lib/prompts/__tests__/createTemplatePrompt.test.js +102 -0
  79. package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
  80. package/lib/prompts/confirmImportDataPrompt.js +12 -0
  81. package/lib/prompts/createFunctionPrompt.d.ts +2 -1
  82. package/lib/prompts/createFunctionPrompt.js +36 -7
  83. package/lib/prompts/createModulePrompt.d.ts +2 -1
  84. package/lib/prompts/createModulePrompt.js +48 -1
  85. package/lib/prompts/createTemplatePrompt.d.ts +3 -24
  86. package/lib/prompts/createTemplatePrompt.js +9 -1
  87. package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
  88. package/lib/prompts/importDataFilePathPrompt.js +24 -0
  89. package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
  90. package/lib/prompts/importDataTestAccountSelectPrompt.js +29 -0
  91. package/lib/prompts/projectDevTargetAccountPrompt.js +1 -0
  92. package/lib/prompts/promptUtils.d.ts +7 -1
  93. package/lib/prompts/promptUtils.js +14 -1
  94. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +1 -0
  95. package/lib/ui/__tests__/removeAnsiCodes.test.js +84 -0
  96. package/lib/ui/index.js +3 -6
  97. package/lib/ui/removeAnsiCodes.d.ts +1 -0
  98. package/lib/ui/removeAnsiCodes.js +4 -0
  99. package/mcp-server/server.js +2 -1
  100. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +38 -0
  101. package/mcp-server/tools/cms/HsCreateModuleTool.js +118 -0
  102. package/mcp-server/tools/cms/HsListTool.d.ts +23 -0
  103. package/mcp-server/tools/cms/HsListTool.js +58 -0
  104. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +1 -0
  105. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +224 -0
  106. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +1 -0
  107. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +120 -0
  108. package/mcp-server/tools/index.d.ts +1 -0
  109. package/mcp-server/tools/index.js +12 -0
  110. package/mcp-server/tools/project/DocFetchTool.d.ts +17 -0
  111. package/mcp-server/tools/project/DocFetchTool.js +49 -0
  112. package/mcp-server/tools/project/DocsSearchTool.d.ts +26 -0
  113. package/mcp-server/tools/project/DocsSearchTool.js +62 -0
  114. package/mcp-server/tools/project/GetConfigValuesTool.js +3 -2
  115. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +1 -0
  116. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +117 -0
  117. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +1 -0
  118. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +190 -0
  119. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +1 -1
  120. package/mcp-server/tools/project/constants.d.ts +2 -0
  121. package/mcp-server/tools/project/constants.js +6 -0
  122. package/mcp-server/utils/toolUsageTracking.d.ts +3 -1
  123. package/mcp-server/utils/toolUsageTracking.js +2 -1
  124. package/package.json +9 -6
  125. package/types/Cms.d.ts +16 -0
  126. package/types/Cms.js +25 -1
  127. package/types/LocalDev.d.ts +0 -3
  128. package/types/Prompts.d.ts +1 -0
  129. package/ui/index.d.ts +1 -0
  130. package/ui/index.js +6 -0
package/lang/en.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
1
2
  export declare const commands: {
2
3
  readonly generalErrors: {
3
4
  readonly srcIsProject: (src: string, command: string) => string;
@@ -31,12 +32,12 @@ export declare const commands: {
31
32
  readonly openInstallUrl: "Open HubSpot to install your app in your account?";
32
33
  readonly openedDeveloperOverview: "HubSpot opened!";
33
34
  readonly prompts: {
34
- readonly selectOption: "Are you looking to build apps or CMS?";
35
+ readonly selectOption: "Are you looking to build apps or CMS assets?";
35
36
  readonly options: {
36
37
  readonly app: "App";
37
- readonly cms: "CMS";
38
+ readonly cms: "CMS assets";
38
39
  };
39
- readonly uploadProject: "Would you like to upload your project to HubSpot now?";
40
+ readonly uploadProject: (accountName: string) => string;
40
41
  readonly projectCreated: {
41
42
  readonly title: string;
42
43
  readonly description: `Let's prepare and upload your project to HubSpot.
@@ -45,7 +46,7 @@ You can use ${string} to ${string} and ${string} to ${string} your project.`;
45
46
  };
46
47
  readonly logs: {
47
48
  readonly appSelected: `We'll create a new project with a sample app for you.
48
- Projects are what you can use to create apps, themes, and more at HubSpot.
49
+ Projects are what you can use to create apps with HubSpot.
49
50
  Usually you'll use the ${string} command, but we'll go ahead and make one now.`;
50
51
  readonly dependenciesInstalled: "Dependencies installed successfully.";
51
52
  readonly uploadingProject: "Uploading your project to HubSpot...";
@@ -336,6 +337,38 @@ Global configuration replaces hubspot.config.yml, and you will be prompted to mi
336
337
  readonly describe: "Type of asset";
337
338
  };
338
339
  };
340
+ readonly flags: {
341
+ readonly templateType: {
342
+ readonly describe: "Template type for template creation - only used when type is template";
343
+ };
344
+ readonly moduleLabel: {
345
+ readonly describe: "Label for module creation - only used when type is module";
346
+ };
347
+ readonly reactType: {
348
+ readonly describe: "Whether to create a React module - only used when type is module";
349
+ };
350
+ readonly contentTypes: {
351
+ readonly describe: (contentTypes: readonly string[]) => string;
352
+ };
353
+ readonly global: {
354
+ readonly describe: "Whether to create a global module - only used when type is module";
355
+ };
356
+ readonly availableForNewContent: {
357
+ readonly describe: "Whether the template is available for new content - only used when type is template";
358
+ };
359
+ readonly functionsFolder: {
360
+ readonly describe: "Folder to create functions in - only used when type is function";
361
+ };
362
+ readonly filename: {
363
+ readonly describe: "Filename for the function - only used when type is function";
364
+ };
365
+ readonly endpointMethod: {
366
+ readonly describe: "HTTP method for the function endpoint - only used when type is function";
367
+ };
368
+ readonly endpointPath: {
369
+ readonly describe: "API endpoint path for the function - only used when type is function";
370
+ };
371
+ };
339
372
  readonly subcommands: {
340
373
  readonly apiSample: {
341
374
  readonly folderOverwritePrompt: (folderName: string) => string;
@@ -851,10 +884,12 @@ Global configuration replaces hubspot.config.yml, and you will be prompted to mi
851
884
  readonly configuringCursor: "Configuring Cursor...";
852
885
  readonly failedToConfigureCursor: "Failed to configure Cursor";
853
886
  readonly configuredCursor: "Configured Cursor";
887
+ readonly cursorNotFound: "Cursor not found - skipping configuration";
854
888
  readonly alreadyInstalled: "HubSpot CLI mcp server already installed, reinstalling";
855
889
  readonly configuringWindsurf: "Configuring Windsurf...";
856
890
  readonly failedToConfigureWindsurf: "Failed to configure Windsurf";
857
891
  readonly configuredWindsurf: "Configured Windsurf";
892
+ readonly windsurfNotFound: "Windsurf not found - skipping configuration";
858
893
  readonly configuringVsCode: "Configuring VSCode...";
859
894
  readonly failedToConfigureVsCode: "Failed to configure VSCode";
860
895
  readonly configuredVsCode: "Configured VSCode";
@@ -964,6 +999,7 @@ Profiles enable you to reference variables in your component configuration files
964
999
  readonly noProfileFound: (profileName: string) => string;
965
1000
  readonly noProfilesFound: "No profiles found in your project.";
966
1001
  readonly failedToDeleteProfile: (profileName: string) => string;
1002
+ readonly failedToDeleteProject: (accountId: number) => string;
967
1003
  };
968
1004
  readonly positionals: {
969
1005
  readonly name: "The name of the project profile";
@@ -975,10 +1011,15 @@ Profiles enable you to reference variables in your component configuration files
975
1011
  readonly logs: {
976
1012
  readonly betaMessage: "HubSpot projects local development";
977
1013
  readonly placeholderAccountSelection: "Using default account as target account (for now)";
978
- readonly learnMoreLocalDevServer: "Learn more about the projects local dev server";
979
1014
  readonly 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.";
980
- readonly learnMoreMessage: `
981
- Visit our ${string} to learn more.`;
1015
+ readonly learnMoreMessageV3: `Learn more about ${string} | ${string}`;
1016
+ readonly learnMoreMessageLegacy: string;
1017
+ readonly profileProjectAccountExplanation: (accountId: number, profileName: string) => string;
1018
+ readonly defaultProjectAccountExplanation: (accountId: number) => string;
1019
+ readonly projectAccountFlagExplanation: (accountId: number) => string;
1020
+ readonly accountFlagExplanation: (accountId: number) => string;
1021
+ readonly defaultSandboxOrDevTestTestingAccountExplanation: (accountId: number) => string;
1022
+ readonly testingAccountFlagExplanation: (accountId: number) => string;
982
1023
  };
983
1024
  readonly errors: {
984
1025
  readonly noProjectConfig: "No project detected. Please run this command again from a project directory.";
@@ -988,8 +1029,8 @@ Visit our ${string} to learn more.`;
988
1029
  readonly noRunnableComponents: `No supported components were found in this project. Run ${string} to see a list of available components and add one to your project.`;
989
1030
  readonly accountNotCombined: `
990
1031
  Local 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 ${string}.`;
991
- readonly unsupportedAccountFlagLegacy: "The --projectAccount and --testingAccount flags are not supported for projects with platform versions earlier than 2025.2.";
992
- readonly unsupportedAccountFlagV3: "The --account flag is is not supported supported for projects with platform versions 2025.2 and newer. Use --testingAccount and --projectAccount flags to specify accounts to use for local dev";
1032
+ readonly unsupportedAccountFlagLegacy: "The --project-account and --testing-account flags are not supported for projects with platform versions earlier than 2025.2.";
1033
+ readonly unsupportedAccountFlagV3: "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";
993
1034
  };
994
1035
  readonly examples: {
995
1036
  readonly default: "Start local dev for the current project";
@@ -1175,6 +1216,10 @@ ${string}`;
1175
1216
  readonly buildIdDoesNotExist: (accountId: number, buildId: number, projectName: string) => string;
1176
1217
  readonly buildAlreadyDeployed: (accountId: number, buildId: number, projectName: string) => string;
1177
1218
  readonly deployContainsRemovals: (componentName: string) => string;
1219
+ readonly deployBlockedHeader: "This build couldn't be deployed because it will be too disruptive for existing users. Fix the following issues and try again:";
1220
+ readonly deployWarningsHeader: `Deploying this build might have unintended consequences for users. Review the following issues and run ${string} to try again:`;
1221
+ readonly deployIssueComponentGeneric: (uid: string, componentTypeName: string) => string;
1222
+ readonly deployIssueComponentWarning: (uid: string, componentTypeName: string, message: string) => string;
1178
1223
  };
1179
1224
  readonly examples: {
1180
1225
  readonly default: "Deploy the latest build of the current project";
@@ -1802,6 +1847,19 @@ ${string}`;
1802
1847
  };
1803
1848
  readonly testAccount: {
1804
1849
  readonly describe: "Commands for working with test accounts.";
1850
+ readonly subcommands: {
1851
+ readonly importData: {
1852
+ readonly describe: "Import data into the CRM";
1853
+ readonly options: {
1854
+ readonly skipConfirm: {
1855
+ readonly describe: "Skip the confirmation prompt";
1856
+ };
1857
+ readonly filePath: {
1858
+ readonly describe: "The path to the JSON file containing the import schema";
1859
+ };
1860
+ };
1861
+ };
1862
+ };
1805
1863
  readonly create: {
1806
1864
  readonly describe: "Create a test account from a config file";
1807
1865
  readonly configPathPrompt: "[--config-path] Enter the path to the test account config: ";
@@ -1811,6 +1869,7 @@ ${string}`;
1811
1869
  readonly errors: {
1812
1870
  readonly configFileNotFound: (configPath: string) => string;
1813
1871
  readonly configFileParseFailed: (configPath: string) => string;
1872
+ readonly saveAccountToConfigFailure: (accountName: string) => string;
1814
1873
  };
1815
1874
  readonly polling: {
1816
1875
  readonly start: (testAccountName: string) => string;
@@ -2505,6 +2564,13 @@ export declare const lib: {
2505
2564
  readonly autoInstallDeclined: "You must install your app on your target test account to proceed with local development.";
2506
2565
  readonly autoInstallSuccess: (appName: string, targetTestAccountId: number) => string;
2507
2566
  readonly autoInstallError: (appName: string, targetTestAccountId: number) => string;
2567
+ readonly fetchAppData: {
2568
+ readonly checking: (appName: string) => string;
2569
+ readonly success: (appName: string, accountId: number) => string;
2570
+ readonly notInstalled: (appName: string, accountId: number) => string;
2571
+ readonly activeInstallations: (appName: string, installCount: number) => string;
2572
+ readonly error: "An error occurred while checking installations for your app";
2573
+ };
2508
2574
  };
2509
2575
  readonly LocalDevWebsocketServer: {
2510
2576
  readonly errors: {
@@ -2526,43 +2592,54 @@ export declare const lib: {
2526
2592
  readonly uploadSuccess: "Project upload completed successfully. Resuming local dev...";
2527
2593
  };
2528
2594
  readonly localDevHelpers: {
2529
- readonly confirmDefaultAccountIsTarget: {
2530
- readonly configError: `An error occurred while reading the default account from your config. Run ${string} to re-auth this account`;
2531
- readonly declineDefaultAccountExplanation: `To develop on a different account, run ${string} to change your default account, then re-run ${string}.`;
2532
- };
2533
- readonly checkIfDefaultAccountIsSupported: {
2534
- readonly 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 ${string}, or link a new account with ${string}.`;
2535
- readonly privateApp: `This project contains a private app. Local development of private apps is not supported in developer accounts. Change your default account using ${string}, or link a new account with ${string}.`;
2536
- };
2537
- readonly validateAccountOption: {
2538
- readonly 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 ${string} and run ${string} to set up a new Developer Test Account.`;
2539
- readonly 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 ${string}.`;
2540
- readonly nonSandboxWarning: `Testing in a sandbox is strongly recommended. To switch the target account, select an option below or run ${string} before running the command again.`;
2541
- readonly publicAppNonDeveloperTestAccountWarning: `Local development of public apps is only supported in ${string}.`;
2542
- };
2543
- readonly createNewProjectForLocalDev: {
2544
- readonly projectMustExistExplanation: (projectName: string, accountId: number) => string;
2545
- readonly publicAppProjectMustExistExplanation: (projectName: string, accountId: number) => string;
2546
- readonly createProject: (projectName: string, accountIdentifier: string) => string;
2547
- readonly choseNotToCreateProject: "Exiting because this command requires the project to exist in the target account.";
2548
- readonly creatingProject: (projectName: string, accountIdentifier: string) => string;
2549
- readonly createdProject: (projectName: string, accountIdentifier: string) => string;
2550
- readonly failedToCreateProject: "Failed to create project in the target account.";
2551
- };
2552
- readonly createInitialBuildForNewProject: {
2553
- readonly initialUploadMessage: "HubSpot Local Dev Server Startup";
2554
- readonly projectLockedError: "Your project is locked. This may mean that another user is running the `hs project watch` command for this project. If this is you, unlock the project in Projects UI.";
2555
- readonly genericError: `An error occurred while creating the initial build for this project. Run ${string} to try again.`;
2556
- };
2557
- readonly checkIfParentAccountIsAuthed: {
2558
- readonly notAuthedError: (parentAccountId: number | string, accountIdentifier: string) => string;
2559
- };
2560
- readonly selectAccountTypePrompt: {
2561
- readonly message: "[--account] Choose the type of account to test on";
2562
- readonly developerTestAccountOption: "Test on a developer test account";
2563
- readonly sandboxAccountOption: "Test on a sandbox account";
2564
- readonly sandboxAccountOptionDisabled: "Disabled - requires access to sandbox accounts";
2565
- readonly productionAccountOption: `<${string} Test on this account ${string}>`;
2595
+ readonly project: {
2596
+ readonly compareLocalProjectToDeployed: {
2597
+ readonly noDeployedBuild: (projectName: string, accountIdentifier: string) => string;
2598
+ readonly checking: "Checking if your deployed build is up to date...";
2599
+ readonly upToDate: "Deployed build is up to date.";
2600
+ readonly notUpToDate: "Your project contains undeployed local changes.";
2601
+ readonly notUpToDateExplanation: `Run ${string} to upload these changes to HubSpot, then re-run ${string} to continue local development.`;
2602
+ };
2603
+ readonly createNewProjectForLocalDev: {
2604
+ readonly projectMustExistExplanation: (projectName: string, accountId: number) => string;
2605
+ readonly publicAppProjectMustExistExplanation: (projectName: string, accountId: number) => string;
2606
+ readonly createProject: (projectName: string, accountIdentifier: string) => string;
2607
+ readonly choseNotToCreateProject: "Exiting because this command requires the project to exist in the target account.";
2608
+ readonly creatingProject: (projectName: string, accountIdentifier: string) => string;
2609
+ readonly createdProject: (projectName: string, accountIdentifier: string) => string;
2610
+ readonly failedToCreateProject: "Failed to create project in the target account.";
2611
+ };
2612
+ readonly createInitialBuildForNewProject: {
2613
+ readonly initialUploadMessage: "HubSpot Local Dev Server Startup";
2614
+ readonly projectLockedError: "Your project is locked. This may mean that another user is running the `hs project watch` command for this project. If this is you, unlock the project in Projects UI.";
2615
+ readonly genericError: `An error occurred while creating the initial build for this project. Run ${string} to try again.`;
2616
+ };
2617
+ };
2618
+ readonly account: {
2619
+ readonly checkIfDefaultAccountIsSupported: {
2620
+ readonly 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 ${string}, or link a new account with ${string}.`;
2621
+ readonly privateApp: `This project contains a private app. Local development of private apps is not supported in developer accounts. Change your default account using ${string}, or link a new account with ${string}.`;
2622
+ };
2623
+ readonly validateAccountOption: {
2624
+ readonly 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 ${string} and run ${string} to set up a new Developer Test Account.`;
2625
+ readonly 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 ${string}.`;
2626
+ readonly nonSandboxWarning: `Testing in a sandbox is strongly recommended. To switch the target account, select an option below or run ${string} before running the command again.`;
2627
+ readonly publicAppNonDeveloperTestAccountWarning: `Local development of public apps is only supported in ${string}.`;
2628
+ };
2629
+ readonly checkIfParentAccountIsAuthed: {
2630
+ readonly notAuthedError: (parentAccountId: number | string, accountIdentifier: string) => string;
2631
+ };
2632
+ readonly selectAccountTypePrompt: {
2633
+ readonly message: "[--testing-account] Choose the type of account to test on";
2634
+ readonly developerTestAccountOption: "Test on a developer test account (recommended)";
2635
+ readonly sandboxAccountOption: "Test on a sandbox account";
2636
+ readonly sandboxAccountOptionDisabled: "Disabled - requires access to sandbox accounts";
2637
+ readonly productionAccountOption: (accountId?: number) => string;
2638
+ };
2639
+ readonly confirmDefaultAccountIsTarget: {
2640
+ readonly configError: `An error occurred while reading the default account from your config. Run ${string} to re-auth this account`;
2641
+ readonly declineDefaultAccountExplanation: `To develop on a different account, run ${string} to change your default account, then re-run ${string}.`;
2642
+ };
2566
2643
  };
2567
2644
  };
2568
2645
  readonly middleware: {
@@ -2621,6 +2698,11 @@ Run ${string} to upgrade to version ${string}`;
2621
2698
  readonly add: {
2622
2699
  readonly nothingAdded: "No features added.";
2623
2700
  };
2701
+ readonly updateHsMetaFilesWithAutoGeneratedFields: {
2702
+ readonly header: "Created the following components and features:";
2703
+ readonly applicationLog: (componentType: string, uid: string, name: string) => string;
2704
+ readonly componentLog: (componentType: string, uid: string) => string;
2705
+ };
2624
2706
  readonly validateProjectConfig: {
2625
2707
  readonly configNotFound: `Unable to locate a project configuration file. Try running again from a project directory, or run ${string} to create a new project.`;
2626
2708
  readonly configMissingFields: "The project configuration file is missing required fields.";
@@ -2681,6 +2763,16 @@ Run ${string} to upgrade to version ${string}`;
2681
2763
  readonly boxen: {
2682
2764
  readonly failedToLoad: "Failed to load boxen util.";
2683
2765
  };
2766
+ readonly importData: {
2767
+ readonly errors: {
2768
+ readonly incorrectAccountType: (derivedAccountId: number) => string;
2769
+ readonly failedToImportData: "Failed to import data into portal.";
2770
+ readonly notDeveloperTestAccount: "The account is not a developer test account.";
2771
+ readonly noAccountConfig: (accountId: number) => string;
2772
+ };
2773
+ readonly inProgress: (portalId: number, fileNames: string[]) => string;
2774
+ readonly viewImportLink: (baseUrl: string, accountId: number, importId: string) => string;
2775
+ };
2684
2776
  readonly ui: {
2685
2777
  readonly betaTag: string;
2686
2778
  readonly betaWarning: {
@@ -2840,6 +2932,19 @@ Run ${string} to upgrade to version ${string}`;
2840
2932
  };
2841
2933
  };
2842
2934
  readonly prompts: {
2935
+ readonly importDataFilePathPrompt: {
2936
+ readonly promptContext: `To view the JSON schema for data imports, visit ${string}`;
2937
+ readonly promptMessage: "[--file-path] Select the JSON file that will be used to import your data.";
2938
+ };
2939
+ readonly confirmImportDataPrompt: {
2940
+ readonly message: (dataFileNames: string[], cliAccount: CLIAccount | null) => string;
2941
+ };
2942
+ readonly importDataTestAccountSelectPrompt: {
2943
+ readonly errors: {
2944
+ readonly noAccountsFound: "No accounts found.";
2945
+ readonly noChildTestAccountsFound: (parentAccountId: number) => string;
2946
+ };
2947
+ };
2843
2948
  readonly projectDevTargetAccountPrompt: {
2844
2949
  readonly createNewSandboxOption: "<Test on a new development sandbox>";
2845
2950
  readonly createNewDeveloperTestAccountOption: "<Test on a new developer test account>";
@@ -3279,12 +3384,21 @@ Run ${string} to upgrade to version ${string}`;
3279
3384
  readonly sourceContentsMoved: (newLocation: string) => string;
3280
3385
  readonly projectMigrationWarningTitle: "⚠️ Important: Migrating to platformVersion 2025.2 is irreversible ⚠️";
3281
3386
  readonly projectMigrationWarning: string;
3387
+ readonly success: {
3388
+ readonly downloadedProject: (projectName: string, projectDest: string) => string;
3389
+ readonly themesMigrationSuccess: (platformVersion: string) => string;
3390
+ };
3282
3391
  readonly errors: {
3283
3392
  readonly project: {
3284
3393
  readonly invalidConfig: "The project configuration file is invalid. Please check the config file and try again.";
3285
3394
  readonly doesNotExist: (account: number) => string;
3395
+ readonly themesAlreadyMigrated: "This project has already been migrated to the latest platform version.";
3396
+ readonly noProjectForThemesMigration: "Theme migrations are only supported for projects. Please try again from a project directory.";
3397
+ readonly themesAndAppsNotAllowed: "Support for migrating projects containing both themes and apps to the latest platform version is coming soon. Try again later.";
3286
3398
  readonly multipleApps: "Multiple apps found in project, this is not allowed in 2025.2";
3287
3399
  readonly alreadyExists: (projectName: string) => string;
3400
+ readonly failedToMigrateThemes: "Failed to migrate project themes. Please verify that you have propoerly formatted themes before trying again.";
3401
+ readonly failedToUpdateProjectConfig: "Failed to update project config file. Please update the platformVersion in the project config file manually.";
3288
3402
  };
3289
3403
  readonly unmigratableReasons: {
3290
3404
  readonly upToDate: "App is already up to date";
@@ -3303,6 +3417,7 @@ Run ${string} to upgrade to version ${string}`;
3303
3417
  readonly notUngatedForUnifiedApps: (account: string) => string;
3304
3418
  };
3305
3419
  readonly prompt: {
3420
+ readonly themesMigration: (count: number) => string;
3306
3421
  readonly chooseApp: "Which app would you like to migrate?";
3307
3422
  readonly inputName: "[--name] What would you like to name the project?";
3308
3423
  readonly inputDest: "[--dest] Where would you like to save the project?";
@@ -3310,6 +3425,7 @@ Run ${string} to upgrade to version ${string}`;
3310
3425
  readonly proceed: "Would you like to proceed?";
3311
3426
  };
3312
3427
  readonly spinners: {
3428
+ readonly checkingForMigratableComponents: "Checking project for migratable components...";
3313
3429
  readonly beginningMigration: "Beginning migration";
3314
3430
  readonly unableToStartMigration: "Unable to begin migration";
3315
3431
  readonly finishingMigration: "Wrapping up migration";