@hubspot/cli 8.1.0 → 8.1.2-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 (681) hide show
  1. package/api/migrate.js +8 -4
  2. package/api/releases.d.ts +36 -0
  3. package/api/releases.js +41 -0
  4. package/bin/cli.js +12 -6
  5. package/commands/account/auth.js +7 -7
  6. package/commands/account/clean.js +7 -6
  7. package/commands/account/createOverride.js +10 -7
  8. package/commands/account/info.js +36 -17
  9. package/commands/account/link.d.ts +4 -0
  10. package/commands/account/link.js +89 -0
  11. package/commands/account/list.js +32 -76
  12. package/commands/account/remove.js +4 -3
  13. package/commands/account/removeOverride.js +11 -10
  14. package/commands/account/rename.js +5 -6
  15. package/commands/account/unlink.d.ts +4 -0
  16. package/commands/account/unlink.js +70 -0
  17. package/commands/account/use.js +75 -6
  18. package/commands/account.js +4 -0
  19. package/commands/api.d.ts +10 -0
  20. package/commands/api.js +164 -0
  21. package/commands/app/migrate.js +13 -13
  22. package/commands/app/secret/add.js +6 -7
  23. package/commands/app/secret/delete.js +9 -10
  24. package/commands/app/secret/list.js +6 -7
  25. package/commands/app/secret/update.js +8 -9
  26. package/commands/auth.js +19 -15
  27. package/commands/cms/app/create.js +9 -5
  28. package/commands/cms/convertFields.js +8 -8
  29. package/commands/cms/delete.js +2 -3
  30. package/commands/cms/fetch.js +7 -7
  31. package/commands/cms/function/create.js +9 -5
  32. package/commands/cms/function/deploy.js +2 -3
  33. package/commands/cms/function/list.js +11 -7
  34. package/commands/cms/function/logs.js +17 -22
  35. package/commands/cms/function/server.js +2 -3
  36. package/commands/cms/getReactModule.js +7 -8
  37. package/commands/cms/lighthouseScore.js +25 -24
  38. package/commands/cms/lint.js +4 -5
  39. package/commands/cms/list.js +5 -6
  40. package/commands/cms/module/create.js +14 -5
  41. package/commands/cms/module/marketplace-validate.js +7 -8
  42. package/commands/cms/mv.js +2 -3
  43. package/commands/cms/template/create.js +10 -6
  44. package/commands/cms/theme/create.js +5 -5
  45. package/commands/cms/theme/generate-selectors.js +5 -4
  46. package/commands/cms/theme/marketplace-validate.js +8 -9
  47. package/commands/cms/theme/preview.js +23 -70
  48. package/commands/cms/upload.js +15 -12
  49. package/commands/cms/watch.d.ts +0 -1
  50. package/commands/cms/watch.js +6 -12
  51. package/commands/cms/webpack/create.js +5 -5
  52. package/commands/completion.js +3 -5
  53. package/commands/config/migrate.js +6 -7
  54. package/commands/config/set.js +5 -6
  55. package/commands/customObject/create.js +4 -5
  56. package/commands/customObject/createSchema.js +4 -5
  57. package/commands/customObject/deleteSchema.js +4 -5
  58. package/commands/customObject/fetchAllSchemas.js +2 -3
  59. package/commands/customObject/fetchSchema.js +2 -3
  60. package/commands/customObject/listSchemas.js +2 -3
  61. package/commands/customObject/updateSchema.js +4 -5
  62. package/commands/doctor.js +8 -8
  63. package/commands/feedback.js +7 -5
  64. package/commands/filemanager/fetch.js +5 -6
  65. package/commands/filemanager/upload.js +5 -5
  66. package/commands/getStarted.js +17 -19
  67. package/commands/hubdb/clear.js +6 -3
  68. package/commands/hubdb/create.js +4 -5
  69. package/commands/hubdb/delete.js +9 -6
  70. package/commands/hubdb/fetch.js +6 -3
  71. package/commands/hubdb/list.js +16 -14
  72. package/commands/init.js +15 -14
  73. package/commands/mcp/setup.js +5 -14
  74. package/commands/mcp/start.js +2 -4
  75. package/commands/open.js +4 -5
  76. package/commands/project/add.js +13 -8
  77. package/commands/project/appInstallStatus.d.ts +4 -0
  78. package/commands/project/appInstallStatus.js +132 -0
  79. package/commands/project/create.js +28 -17
  80. package/commands/project/delete.d.ts +7 -0
  81. package/commands/project/delete.js +74 -0
  82. package/commands/project/deploy.js +39 -36
  83. package/commands/project/dev/deprecatedFlow.js +62 -17
  84. package/commands/project/dev/index.d.ts +3 -3
  85. package/commands/project/dev/index.js +59 -48
  86. package/commands/project/dev/unifiedFlow.js +70 -21
  87. package/commands/project/download.js +12 -9
  88. package/commands/project/info.d.ts +4 -0
  89. package/commands/project/info.js +67 -0
  90. package/commands/project/installDeps.js +9 -6
  91. package/commands/project/lint.js +33 -10
  92. package/commands/project/list.d.ts +2 -2
  93. package/commands/project/list.js +15 -14
  94. package/commands/project/listBuilds.js +8 -6
  95. package/commands/project/logs.js +5 -6
  96. package/commands/project/migrate.js +18 -18
  97. package/commands/project/open.js +5 -6
  98. package/commands/project/profile/add.js +12 -8
  99. package/commands/project/profile/delete.js +15 -11
  100. package/commands/project/updateDeps.js +9 -6
  101. package/commands/project/upload.d.ts +3 -0
  102. package/commands/project/upload.js +98 -25
  103. package/commands/project/validate.js +12 -12
  104. package/commands/project/watch.js +32 -19
  105. package/commands/project.js +12 -3
  106. package/commands/sandbox/create.js +18 -45
  107. package/commands/sandbox/delete.js +13 -14
  108. package/commands/secret/addSecret.js +6 -7
  109. package/commands/secret/deleteSecret.js +5 -6
  110. package/commands/secret/listSecret.js +2 -3
  111. package/commands/secret/updateSecret.js +4 -5
  112. package/commands/testAccount/create.d.ts +1 -1
  113. package/commands/testAccount/create.js +25 -17
  114. package/commands/testAccount/createConfig.js +7 -8
  115. package/commands/testAccount/delete.js +27 -18
  116. package/commands/testAccount/importData.js +6 -7
  117. package/commands/upgrade.js +9 -10
  118. package/lang/en.d.ts +276 -14
  119. package/lang/en.js +293 -28
  120. package/lib/accountAuth.js +4 -0
  121. package/lib/api/usageTracking.d.ts +29 -0
  122. package/lib/api/usageTracking.js +28 -0
  123. package/lib/app/migrate.js +18 -5
  124. package/lib/buildAccount.d.ts +1 -6
  125. package/lib/buildAccount.js +9 -42
  126. package/lib/commandSuggestion.js +1 -7
  127. package/lib/constants.d.ts +3 -4
  128. package/lib/constants.js +5 -4
  129. package/lib/doctor/Diagnosis.js +5 -5
  130. package/lib/doctor/Doctor.js +7 -7
  131. package/lib/errorHandlers/index.js +4 -3
  132. package/lib/errorHandlers/suppressError.js +4 -0
  133. package/lib/errors/PromptExitError.d.ts +6 -0
  134. package/lib/errors/PromptExitError.js +11 -0
  135. package/lib/generateSelectors.js +1 -2
  136. package/lib/getStartedV2Actions.d.ts +13 -0
  137. package/lib/getStartedV2Actions.js +56 -3
  138. package/lib/hasFeature.js +1 -2
  139. package/lib/link/accountTableUtils.d.ts +10 -0
  140. package/lib/link/accountTableUtils.js +39 -0
  141. package/lib/link/index.d.ts +18 -0
  142. package/lib/link/index.js +185 -0
  143. package/lib/link/linkUtils.d.ts +5 -0
  144. package/lib/link/linkUtils.js +49 -0
  145. package/lib/link/prompts.d.ts +7 -0
  146. package/lib/link/prompts.js +126 -0
  147. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  148. package/lib/link/renderLinkedAccountsTable.js +14 -0
  149. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  150. package/lib/link/warnIfLinkedDirectory.js +9 -0
  151. package/lib/mcp/setup.d.ts +1 -0
  152. package/lib/mcp/setup.js +77 -30
  153. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  154. package/lib/process.d.ts +1 -1
  155. package/lib/process.js +10 -3
  156. package/lib/projects/ProjectLogsManager.js +6 -3
  157. package/lib/projects/components.js +15 -4
  158. package/lib/projects/create/index.js +3 -6
  159. package/lib/projects/create/legacy.js +5 -10
  160. package/lib/projects/create/v2.js +5 -14
  161. package/lib/projects/delete.d.ts +13 -0
  162. package/lib/projects/delete.js +193 -0
  163. package/lib/projects/deploy.d.ts +1 -1
  164. package/lib/projects/deploy.js +2 -2
  165. package/lib/projects/ensureProjectExists.js +1 -2
  166. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  167. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  168. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  169. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  170. package/lib/projects/localDev/DevSessionManager.js +31 -19
  171. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  172. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  173. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  174. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  175. package/lib/projects/localDev/LocalDevState.js +3 -1
  176. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  177. package/lib/projects/localDev/helpers/account.js +21 -30
  178. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  179. package/lib/projects/localDev/helpers/process.js +4 -10
  180. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  181. package/lib/projects/localDev/helpers/project.js +32 -16
  182. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  183. package/lib/projects/npmAuditOnUpload.js +73 -0
  184. package/lib/projects/pollProjectBuildAndDeploy.d.ts +5 -1
  185. package/lib/projects/pollProjectBuildAndDeploy.js +93 -87
  186. package/lib/projects/preview.d.ts +7 -0
  187. package/lib/projects/preview.js +48 -0
  188. package/lib/projects/projectInfo.d.ts +5 -0
  189. package/lib/projects/projectInfo.js +82 -0
  190. package/lib/projects/projectProfiles.d.ts +1 -2
  191. package/lib/projects/projectProfiles.js +5 -17
  192. package/lib/projects/uieLinting.d.ts +17 -3
  193. package/lib/projects/uieLinting.js +93 -28
  194. package/lib/projects/upload.d.ts +4 -1
  195. package/lib/projects/upload.js +71 -50
  196. package/lib/projects/watch.d.ts +2 -1
  197. package/lib/projects/watch.js +32 -24
  198. package/lib/projects/workspaces.d.ts +52 -0
  199. package/lib/projects/workspaces.js +365 -0
  200. package/lib/prompts/createApiSamplePrompt.js +4 -0
  201. package/lib/prompts/downloadProjectPrompt.js +11 -10
  202. package/lib/prompts/installAppPrompt.js +3 -2
  203. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  204. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  205. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  206. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  207. package/lib/prompts/projectProfilePrompt.js +46 -0
  208. package/lib/prompts/projectsLogsPrompt.js +3 -0
  209. package/lib/prompts/promptUtils.js +4 -2
  210. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  211. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  212. package/lib/sandboxes.d.ts +1 -9
  213. package/lib/sandboxes.js +0 -21
  214. package/lib/serverlessLogs.js +50 -44
  215. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  216. package/lib/theme/cmsDevServerProcess.js +149 -0
  217. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  218. package/lib/theme/cmsDevServerRunner.js +90 -0
  219. package/lib/theme/migrate.d.ts +1 -1
  220. package/lib/theme/migrate.js +1 -5
  221. package/lib/ui/SpinniesManager.d.ts +1 -0
  222. package/lib/ui/SpinniesManager.js +22 -6
  223. package/lib/ui/accountTable.d.ts +8 -0
  224. package/lib/ui/accountTable.js +67 -0
  225. package/lib/ui/spinniesUtils.d.ts +0 -1
  226. package/lib/ui/spinniesUtils.js +6 -16
  227. package/lib/usageTracking.d.ts +9 -20
  228. package/lib/usageTracking.js +51 -34
  229. package/lib/yargs/makeWrappedYargsHandler.d.ts +3 -0
  230. package/lib/yargs/makeWrappedYargsHandler.js +121 -0
  231. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  232. package/lib/yargs/makeYargsBuilder.js +33 -0
  233. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  234. package/lib/yargs/parseYargsOrExit.js +25 -0
  235. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  236. package/lib/yargs/strictEnforceBoolean.js +13 -0
  237. package/lib/yargsUtils.d.ts +3 -16
  238. package/lib/yargsUtils.js +3 -48
  239. package/mcp-server/Tool.d.ts +15 -0
  240. package/mcp-server/Tool.js +53 -0
  241. package/mcp-server/server.js +43 -3
  242. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  243. package/mcp-server/tools/cms/HsCreateFunctionTool.js +11 -9
  244. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  245. package/mcp-server/tools/cms/HsCreateModuleTool.js +12 -11
  246. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  247. package/mcp-server/tools/cms/HsCreateTemplateTool.js +11 -9
  248. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  249. package/mcp-server/tools/cms/HsFunctionLogsTool.js +10 -9
  250. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  251. package/mcp-server/tools/cms/HsListFunctionsTool.js +10 -9
  252. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  253. package/mcp-server/tools/cms/HsListTool.js +11 -9
  254. package/mcp-server/tools/index.d.ts +3 -2
  255. package/mcp-server/tools/index.js +24 -22
  256. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  257. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  258. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  259. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  260. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  261. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  262. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  263. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  264. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  265. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  266. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  267. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  268. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  269. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  270. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  271. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  272. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  273. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  274. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  275. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  276. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  277. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  278. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  279. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  280. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  281. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  282. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  283. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  284. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  285. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  286. package/mcp-server/tools/project/constants.d.ts +13 -1
  287. package/mcp-server/tools/project/constants.js +13 -16
  288. package/mcp-server/types.d.ts +0 -7
  289. package/mcp-server/types.js +1 -13
  290. package/mcp-server/utils/command.d.ts +5 -0
  291. package/mcp-server/utils/command.js +24 -0
  292. package/mcp-server/utils/feedbackTracking.js +2 -17
  293. package/mcp-server/utils/logger.d.ts +10 -0
  294. package/mcp-server/utils/logger.js +29 -0
  295. package/mcp-server/utils/toolUsageTracking.js +10 -8
  296. package/package.json +15 -11
  297. package/types/Link.d.ts +32 -0
  298. package/types/Link.js +5 -0
  299. package/types/LocalDev.d.ts +5 -0
  300. package/types/PackageJson.d.ts +1 -0
  301. package/types/Projects.d.ts +19 -0
  302. package/types/Prompts.d.ts +1 -0
  303. package/types/Yargs.d.ts +19 -1
  304. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  305. package/ui/components/getStarted/reducer.d.ts +20 -0
  306. package/ui/components/getStarted/reducer.js +36 -0
  307. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  308. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  309. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  310. package/ui/lib/constants.d.ts +1 -0
  311. package/ui/lib/constants.js +1 -0
  312. package/api/__tests__/migrate.test.d.ts +0 -1
  313. package/api/__tests__/migrate.test.js +0 -199
  314. package/commands/__tests__/account.test.d.ts +0 -1
  315. package/commands/__tests__/account.test.js +0 -69
  316. package/commands/__tests__/auth.test.d.ts +0 -1
  317. package/commands/__tests__/auth.test.js +0 -43
  318. package/commands/__tests__/cms.test.d.ts +0 -1
  319. package/commands/__tests__/cms.test.js +0 -87
  320. package/commands/__tests__/config.test.d.ts +0 -1
  321. package/commands/__tests__/config.test.js +0 -44
  322. package/commands/__tests__/customObject.test.d.ts +0 -1
  323. package/commands/__tests__/customObject.test.js +0 -68
  324. package/commands/__tests__/doctor.test.d.ts +0 -1
  325. package/commands/__tests__/doctor.test.js +0 -132
  326. package/commands/__tests__/feedback.test.d.ts +0 -1
  327. package/commands/__tests__/feedback.test.js +0 -24
  328. package/commands/__tests__/filemanager.test.d.ts +0 -1
  329. package/commands/__tests__/filemanager.test.js +0 -45
  330. package/commands/__tests__/getStarted.test.d.ts +0 -1
  331. package/commands/__tests__/getStarted.test.js +0 -173
  332. package/commands/__tests__/hubdb.test.d.ts +0 -1
  333. package/commands/__tests__/hubdb.test.js +0 -50
  334. package/commands/__tests__/init.test.d.ts +0 -1
  335. package/commands/__tests__/init.test.js +0 -42
  336. package/commands/__tests__/mcp.test.d.ts +0 -1
  337. package/commands/__tests__/mcp.test.js +0 -46
  338. package/commands/__tests__/open.test.d.ts +0 -1
  339. package/commands/__tests__/open.test.js +0 -58
  340. package/commands/__tests__/project.test.d.ts +0 -1
  341. package/commands/__tests__/project.test.js +0 -125
  342. package/commands/__tests__/sandbox.test.d.ts +0 -1
  343. package/commands/__tests__/sandbox.test.js +0 -44
  344. package/commands/__tests__/secret.test.d.ts +0 -1
  345. package/commands/__tests__/secret.test.js +0 -49
  346. package/commands/__tests__/testAccount.test.d.ts +0 -1
  347. package/commands/__tests__/testAccount.test.js +0 -57
  348. package/commands/__tests__/upgrade.test.d.ts +0 -1
  349. package/commands/__tests__/upgrade.test.js +0 -309
  350. package/commands/account/__tests__/auth.test.d.ts +0 -1
  351. package/commands/account/__tests__/auth.test.js +0 -206
  352. package/commands/account/__tests__/clean.test.d.ts +0 -1
  353. package/commands/account/__tests__/clean.test.js +0 -28
  354. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  355. package/commands/account/__tests__/createOverride.test.js +0 -32
  356. package/commands/account/__tests__/info.test.d.ts +0 -1
  357. package/commands/account/__tests__/info.test.js +0 -28
  358. package/commands/account/__tests__/list.test.d.ts +0 -1
  359. package/commands/account/__tests__/list.test.js +0 -153
  360. package/commands/account/__tests__/remove.test.d.ts +0 -1
  361. package/commands/account/__tests__/remove.test.js +0 -36
  362. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  363. package/commands/account/__tests__/removeOverride.js +0 -25
  364. package/commands/account/__tests__/rename.test.d.ts +0 -1
  365. package/commands/account/__tests__/rename.test.js +0 -82
  366. package/commands/account/__tests__/use.test.d.ts +0 -1
  367. package/commands/account/__tests__/use.test.js +0 -170
  368. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  369. package/commands/app/__tests__/migrate.test.js +0 -111
  370. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  371. package/commands/app/secret/__tests__/add.test.js +0 -140
  372. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  373. package/commands/app/secret/__tests__/delete.test.js +0 -28
  374. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  375. package/commands/app/secret/__tests__/list.test.js +0 -25
  376. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  377. package/commands/app/secret/__tests__/update.test.js +0 -28
  378. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  379. package/commands/cms/__tests__/delete.test.js +0 -39
  380. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  381. package/commands/cms/__tests__/fetch.test.js +0 -156
  382. package/commands/cms/__tests__/function.test.d.ts +0 -1
  383. package/commands/cms/__tests__/function.test.js +0 -50
  384. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  385. package/commands/cms/__tests__/lint.test.js +0 -33
  386. package/commands/cms/__tests__/list.test.d.ts +0 -1
  387. package/commands/cms/__tests__/list.test.js +0 -42
  388. package/commands/cms/__tests__/module.test.d.ts +0 -1
  389. package/commands/cms/__tests__/module.test.js +0 -45
  390. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  391. package/commands/cms/__tests__/mv.test.js +0 -46
  392. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  393. package/commands/cms/__tests__/theme.test.js +0 -54
  394. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  395. package/commands/cms/__tests__/upload.test.js +0 -308
  396. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  397. package/commands/cms/__tests__/watch.test.js +0 -212
  398. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  399. package/commands/cms/function/__tests__/logs.test.js +0 -70
  400. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  401. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  402. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  403. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  404. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  405. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  406. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  407. package/commands/customObject/__tests__/create.test.js +0 -40
  408. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  409. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  410. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  411. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  412. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  413. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  414. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  415. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  416. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  417. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  418. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  419. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  420. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  421. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  422. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  423. package/commands/filemanager/__tests__/upload.test.js +0 -191
  424. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  425. package/commands/hubdb/__tests__/clear.test.js +0 -28
  426. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  427. package/commands/hubdb/__tests__/create.test.js +0 -28
  428. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  429. package/commands/hubdb/__tests__/delete.test.js +0 -28
  430. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  431. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  432. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  433. package/commands/hubdb/__tests__/list.test.js +0 -88
  434. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  435. package/commands/mcp/__tests__/setup.test.js +0 -26
  436. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  437. package/commands/mcp/__tests__/start.test.js +0 -137
  438. package/commands/project/__tests__/add.test.d.ts +0 -1
  439. package/commands/project/__tests__/add.test.js +0 -107
  440. package/commands/project/__tests__/create.test.d.ts +0 -1
  441. package/commands/project/__tests__/create.test.js +0 -97
  442. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  443. package/commands/project/__tests__/deploy.test.js +0 -307
  444. package/commands/project/__tests__/dev.test.d.ts +0 -1
  445. package/commands/project/__tests__/dev.test.js +0 -273
  446. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  447. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  448. package/commands/project/__tests__/download.test.d.ts +0 -1
  449. package/commands/project/__tests__/download.test.js +0 -39
  450. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  451. package/commands/project/__tests__/installDeps.test.js +0 -140
  452. package/commands/project/__tests__/lint.test.d.ts +0 -1
  453. package/commands/project/__tests__/lint.test.js +0 -704
  454. package/commands/project/__tests__/list.test.d.ts +0 -1
  455. package/commands/project/__tests__/list.test.js +0 -31
  456. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  457. package/commands/project/__tests__/listBuilds.test.js +0 -38
  458. package/commands/project/__tests__/logs.test.d.ts +0 -1
  459. package/commands/project/__tests__/logs.test.js +0 -202
  460. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  461. package/commands/project/__tests__/migrate.test.js +0 -106
  462. package/commands/project/__tests__/open.test.d.ts +0 -1
  463. package/commands/project/__tests__/open.test.js +0 -39
  464. package/commands/project/__tests__/profile.test.d.ts +0 -1
  465. package/commands/project/__tests__/profile.test.js +0 -42
  466. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  467. package/commands/project/__tests__/updateDeps.test.js +0 -140
  468. package/commands/project/__tests__/upload.test.d.ts +0 -1
  469. package/commands/project/__tests__/upload.test.js +0 -234
  470. package/commands/project/__tests__/validate.test.d.ts +0 -1
  471. package/commands/project/__tests__/validate.test.js +0 -381
  472. package/commands/project/__tests__/watch.test.d.ts +0 -1
  473. package/commands/project/__tests__/watch.test.js +0 -35
  474. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  475. package/commands/sandbox/__tests__/create.test.js +0 -245
  476. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  477. package/commands/sandbox/__tests__/delete.test.js +0 -31
  478. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  479. package/commands/secret/__tests__/addSecret.test.js +0 -162
  480. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  481. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  482. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  483. package/commands/secret/__tests__/listSecret.test.js +0 -29
  484. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  485. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  486. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  487. package/commands/testAccount/__tests__/create.test.js +0 -106
  488. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  489. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  490. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  491. package/commands/testAccount/__tests__/delete.test.js +0 -29
  492. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  493. package/commands/testAccount/__tests__/importData.test.js +0 -92
  494. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  495. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  496. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  497. package/lib/__tests__/accountAuth.test.js +0 -258
  498. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  499. package/lib/__tests__/accountTypes.test.js +0 -98
  500. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  501. package/lib/__tests__/buildAccount.test.js +0 -262
  502. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  503. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  504. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  505. package/lib/__tests__/commandSuggestion.test.js +0 -119
  506. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  507. package/lib/__tests__/commonOpts.test.js +0 -80
  508. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  509. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  510. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  511. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  512. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  513. package/lib/__tests__/hasFeature.test.js +0 -167
  514. package/lib/__tests__/http.test.d.ts +0 -1
  515. package/lib/__tests__/http.test.js +0 -40
  516. package/lib/__tests__/importData.test.d.ts +0 -1
  517. package/lib/__tests__/importData.test.js +0 -98
  518. package/lib/__tests__/npmCli.test.d.ts +0 -1
  519. package/lib/__tests__/npmCli.test.js +0 -84
  520. package/lib/__tests__/oauth.test.d.ts +0 -1
  521. package/lib/__tests__/oauth.test.js +0 -109
  522. package/lib/__tests__/parsing.test.d.ts +0 -1
  523. package/lib/__tests__/parsing.test.js +0 -34
  524. package/lib/__tests__/polling.test.d.ts +0 -1
  525. package/lib/__tests__/polling.test.js +0 -76
  526. package/lib/__tests__/process.test.d.ts +0 -1
  527. package/lib/__tests__/process.test.js +0 -89
  528. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  529. package/lib/__tests__/sandboxSync.test.js +0 -147
  530. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  531. package/lib/__tests__/sandboxes.test.js +0 -156
  532. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  533. package/lib/__tests__/serverlessLogs.test.js +0 -148
  534. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  535. package/lib/__tests__/usageTracking.test.js +0 -197
  536. package/lib/__tests__/validation.test.d.ts +0 -1
  537. package/lib/__tests__/validation.test.js +0 -143
  538. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  539. package/lib/__tests__/yargsUtils.test.js +0 -124
  540. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  541. package/lib/app/__tests__/migrate.test.js +0 -638
  542. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  543. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  544. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  545. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  546. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  547. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  548. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  549. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  550. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  551. package/lib/mcp/__tests__/setup.test.js +0 -194
  552. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  553. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  554. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  555. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  556. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  557. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  558. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  559. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  560. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  561. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  562. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  563. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  564. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  565. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  566. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  567. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  568. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  569. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  570. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  571. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  572. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  573. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  574. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  575. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  576. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  577. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  578. package/lib/projects/__tests__/components.test.d.ts +0 -1
  579. package/lib/projects/__tests__/components.test.js +0 -426
  580. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  581. package/lib/projects/__tests__/deploy.test.js +0 -231
  582. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  583. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  584. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  585. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  586. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  587. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  588. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  589. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  590. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  591. package/lib/projects/__tests__/projects.test.js +0 -58
  592. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  593. package/lib/projects/__tests__/structure.test.js +0 -210
  594. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  595. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  596. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  597. package/lib/projects/__tests__/upload.test.js +0 -183
  598. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  599. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  600. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  601. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  602. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  603. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  604. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  605. package/lib/projects/create/__tests__/v2.test.js +0 -257
  606. package/lib/projects/platformVersion.d.ts +0 -9
  607. package/lib/projects/platformVersion.js +0 -39
  608. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  609. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  610. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  611. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  612. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  613. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  614. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  615. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  616. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  617. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  618. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  619. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  620. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  621. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  622. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  623. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  624. package/lib/sandboxSync.d.ts +0 -4
  625. package/lib/sandboxSync.js +0 -102
  626. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  627. package/lib/theme/__tests__/migrate.test.js +0 -256
  628. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  629. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  630. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  631. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  632. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  633. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  634. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  635. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  636. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  637. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  638. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  639. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  640. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  641. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  642. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  643. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  644. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  645. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  646. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  647. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  648. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  649. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  650. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  651. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  652. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  653. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  654. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  655. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  656. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  657. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  658. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  659. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  660. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  661. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  662. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  663. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  664. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  665. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  666. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  667. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  668. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  669. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  670. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  671. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  672. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  673. package/mcp-server/utils/__tests__/command.test.js +0 -45
  674. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  675. package/mcp-server/utils/__tests__/content.test.js +0 -164
  676. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  677. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  678. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  679. package/mcp-server/utils/__tests__/project.test.js +0 -140
  680. package/mcp-server/utils/project.d.ts +0 -5
  681. package/mcp-server/utils/project.js +0 -18
package/lang/en.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import chalk from 'chalk';
2
2
  import { mapToUserFriendlyName } from '@hubspot/project-parsing-lib/transform';
3
- import { PLATFORM_VERSIONS } from '@hubspot/local-dev-lib/constants/projects';
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 { ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME, GLOBAL_CONFIG_PATH, DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, } from '@hubspot/local-dev-lib/constants/config';
6
- import { uiAccountDescription, uiBetaTag, uiCommandReference, uiLink, UI_COLORS, uiAuthCommandReference, } from '../lib/ui/index.js';
7
- import { getProjectDetailUrl, getProjectSettingsUrl, getLocalDevUiUrl, } from '../lib/projects/urls.js';
5
+ import { LOCAL_DEV_DEFAULT_PORT } 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, 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
+ import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, LEGACY_PUBLIC_APP_FILE, PROJECT_CONFIG_FILE, PROJECT_WITH_APP, } from '../lib/constants.js';
10
11
  export const commands = {
11
12
  generalErrors: {
12
13
  srcIsProject: (src, command) => `"${src}" is in a project folder. Did you mean "hs project ${command}"?`,
@@ -51,6 +52,11 @@ export const commands = {
51
52
  checkOutConfig: (configPath) => `Check out ${chalk.cyan(configPath)} for the full configuration.`,
52
53
  pressEnterToInstall: (accountName) => `? Press ${chalk.bold('<enter>')} to continue installing and previewing this app in ${chalk.bold(accountName)}`,
53
54
  pressKeyToExit: `Press any key to exit...`,
55
+ installingApp: (appName, accountName) => `Installing ${chalk.bold(appName)} in ${chalk.bold(accountName)}...`,
56
+ installInstructions: `We'll take you to your HubSpot account and walk you through installing your app.`,
57
+ browserFailedToOpen: (url) => `⚠️ Failed to open browser automatically. Please open this URL manually:\n${chalk.cyan(url)}`,
58
+ pollingTimeout: (minutes) => `⚠️ Installation polling timed out after ${minutes} minutes. The app may still be installing in the background.`,
59
+ pressEnterToContinueSetup: `Press ${chalk.bold('<enter>')} to continue with card setup...`,
54
60
  prompts: {
55
61
  selectOptionV2: 'Choose a component type to get started',
56
62
  options: {
@@ -132,8 +138,12 @@ export const commands = {
132
138
  },
133
139
  list: {
134
140
  accounts: `${chalk.bold('Accounts')}:`,
141
+ allAccounts: `${chalk.bold('All Accounts')}:`,
142
+ linkedAccounts: `${chalk.bold('Linked Accounts')}:`,
135
143
  defaultAccountTitle: `${chalk.bold('Default Account')}`,
144
+ linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
136
145
  currentResolvedDefaultAccount: (accountId) => `Account: ${uiAccountDescription(accountId)}`,
146
+ directory: (dir) => `Directory: ${dir}`,
137
147
  describe: 'List names of accounts defined in config.',
138
148
  configPath: (configPath) => `Source: ${configPath}`,
139
149
  overrideFilePathTitle: `${chalk.bold('Default Account Override')}`,
@@ -180,6 +190,70 @@ export const commands = {
180
190
  success: {
181
191
  defaultAccountUpdated: (accountName) => `Default account updated to "${accountName}"`,
182
192
  },
193
+ linked: {
194
+ editingLinkedDefault: (dir) => `Editing the default linked account for this directory (not the global default):\n${indent(1)}${dir}`,
195
+ alreadyDefault: (accountId) => `${uiAccountDescription(accountId)} is the only linked account and is already the default.`,
196
+ setLinkedDefault: (account) => `Linked default set to ${chalk.cyan(account)}`,
197
+ accountNotLinked: (account) => `${account} is not linked to this directory.`,
198
+ promptToLink: (account) => `Would you like to link ${account} to this directory?`,
199
+ settingGlobalDefault: 'Setting global default instead.',
200
+ nonInteractiveNotLinked: (account) => `${account} is not linked to this directory. Setting global default instead.`,
201
+ },
202
+ },
203
+ link: {
204
+ describe: 'Link authenticated HubSpot accounts to the current directory',
205
+ 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.`,
206
+ shared: {
207
+ noLinkedAccounts: 'No HubSpot accounts are linked in this directory.',
208
+ globalAccountsAvailable: (count) => `You have ${chalk.cyan(count.toString())} ${count === 1 ? 'account' : 'accounts'} in your global config.`,
209
+ configurePrompt: `To configure this directory, run:\n${indent(1)}${uiCommandReference('hs account link')}`,
210
+ deprecatedConfigNotSupported: (command) => `${uiCommandReference(command)} does not support deprecated config. Run ${uiCommandReference('hs config migrate')} to migrate to global config. Then re-run ${uiCommandReference(command)}`,
211
+ writeSettingsFailed: (path, err) => `Failed to write to ${path}: ${err}`,
212
+ savedToSettings: (path) => `Saved to ${path}`,
213
+ 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')}.`,
214
+ accountAutoLinked: (accountId) => `Automatically linked ${uiAccountDescription(accountId)} to this directory.`,
215
+ accountAutoLinkFailed: (accountId) => `Could not automatically link ${uiAccountDescription(accountId)} to this directory. Run ${uiCommandReference('hs account link')} to link it manually.`,
216
+ },
217
+ linkingDirectory: (dir) => `Linking HubSpot account(s) for directory:\n${indent(1)}${dir}`,
218
+ managingLinkedAccounts: (dir) => `Managing linked accounts for:\n${indent(1)}${dir}`,
219
+ settingsInfo: (path) => `\u2139 Accounts linked here are saved in ${path}`,
220
+ success: {
221
+ 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).`,
222
+ },
223
+ errors: {
224
+ authFailed: `Authentication failed to complete`,
225
+ },
226
+ events: {
227
+ accountsLinked: (count) => `Linked ${count} account${count !== 1 ? 's' : ''}`,
228
+ accountsUnlinked: (count) => `Unlinked ${count} account${count !== 1 ? 's' : ''}`,
229
+ overrideAccountDetected: (accountId) => `\nCurrent default account (from .hsaccount):\n${indent(1)}${uiAccountDescription(accountId)}`,
230
+ defaultAccountSet: (accountId) => `Linked default account set to ${chalk.cyan(uiAccountDescription(accountId))}`,
231
+ defaultAccountRemoved: (isSelectionRequired) => `The linked default account was removed. ${isSelectionRequired ? 'A linked default account is required.\n' : ''}`,
232
+ defaultAccountRemains: (accountId) => `Linked default account remains ${chalk.cyan(uiAccountDescription(accountId))}`,
233
+ updatedLinkedAccounts: 'Updated linked accounts',
234
+ 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.`,
235
+ overrideFileRemoved: '.hsaccount file removed',
236
+ invalidDefaultAccount: (accountId) => `Default account ${uiAccountDescription(accountId)} is not in the linked accounts list and has been reset. Please select a new default.`,
237
+ },
238
+ prompts: {
239
+ howToProceed: 'How would you like to link an account?',
240
+ whatToDo: 'Which action would you like to perform?',
241
+ linkExisting: 'Link existing authenticated account(s)',
242
+ authenticateNew: 'Authenticate and link a new account',
243
+ cancel: 'Cancel',
244
+ selectDefault: 'Select a linked default account',
245
+ selectToLink: 'Select authenticated account(s) to link:',
246
+ selectToUnlink: 'Select account(s) to unlink',
247
+ alreadyLinked: '- Already linked',
248
+ fromHsAccount: '(from .hsaccount)',
249
+ newlyAuthenticated: '(just authenticated)',
250
+ mustSelectOne: 'You must select at least one account to link',
251
+ keepAsDefault: 'Keep this as the default?',
252
+ },
253
+ },
254
+ unlink: {
255
+ describe: 'Unlink HubSpot account(s) from the current directory',
256
+ 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.`,
183
257
  },
184
258
  remove: {
185
259
  describe: 'Remove an account from the config.',
@@ -248,6 +322,9 @@ export const commands = {
248
322
  },
249
323
  name: (name) => `${chalk.bold('Account name')}: ${name}`,
250
324
  scopeGroups: `${chalk.bold('Scopes available')}:`,
325
+ linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
326
+ settingsPath: (path) => `Source: ${path}`,
327
+ linkedDefault: (account) => `Account: ${account}`,
251
328
  },
252
329
  clean: {
253
330
  describe: 'Check for inactive accounts and removes them from the CLI config.',
@@ -604,11 +681,6 @@ export const commands = {
604
681
  src: 'Path to the local directory your files are in, relative to your current working directory',
605
682
  dest: 'Path in HubSpot Design Tools. Can be a net new path',
606
683
  },
607
- warnings: {
608
- disableInitial: `Passing the "${chalk.bold('--disable-initial')}" option is no longer necessary. Running "${uiCommandReference('hs watch')}" no longer uploads the watched directory by default.`,
609
- initialUpload: `To upload the directory run "${uiCommandReference('hs upload')}" beforehand or add the "${chalk.bold('--initial-upload')}" option when running "${uiCommandReference('hs watch')}".`,
610
- notUploaded: (path) => `The "${uiCommandReference('hs watch')}" command no longer uploads the watched directory when started. The directory "${path}" was not uploaded.`,
611
- },
612
684
  },
613
685
  fetch: {
614
686
  describe: 'Fetch a file, directory or module from HubSpot and write to a path on your computer.',
@@ -1266,7 +1338,6 @@ export const commands = {
1266
1338
  },
1267
1339
  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
1340
  errors: {
1269
- needsMcpAccess: (accountId) => `You must opt in to the developer MCP beta to use this feature on ${uiAccountDescription(accountId)}. Try again with a different account or ${uiLink('join the beta now', getProductUpdatesUrl('239890', accountId))}`,
1270
1341
  errorParsingJsonFIle: (filename, errorMessage) => `Unable to update ${chalk.bold(filename)} due to invalid JSON: ${errorMessage}`,
1271
1342
  },
1272
1343
  spinners: {
@@ -1306,6 +1377,8 @@ export const commands = {
1306
1377
  prompts: {
1307
1378
  targets: '[--client] Which tools would you like to add the HubSpot CLI MCP server to?',
1308
1379
  targetsRequired: 'Must choose at least one app to configure.',
1380
+ standaloneMode: 'Do you want to run in standalone mode? (This will use npx @hubspot/cli instead of the installed hs command)',
1381
+ cliVersion: 'Specify a CLI version to pin (leave blank for latest):',
1309
1382
  },
1310
1383
  },
1311
1384
  start: {
@@ -1319,6 +1392,30 @@ export const commands = {
1319
1392
  shuttingDown: 'Shutting down MCP server...',
1320
1393
  },
1321
1394
  },
1395
+ api: {
1396
+ describe: 'Make an authenticated HTTP request to any HubSpot API endpoint that supports PAKs.',
1397
+ 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')}`,
1398
+ positionals: {
1399
+ endpoint: {
1400
+ describe: 'API endpoint path (e.g. /crm/v3/objects/contacts)',
1401
+ },
1402
+ },
1403
+ options: {
1404
+ method: {
1405
+ describe: 'HTTP method to use. Defaults to GET, or POST if --data is provided',
1406
+ },
1407
+ data: {
1408
+ describe: 'JSON-formatted request body for POST, PUT, and PATCH requests',
1409
+ },
1410
+ },
1411
+ requestLog: (method, url) => `${chalk.bold(method)} ${url}`,
1412
+ requestBodyLog: (body) => `Request body: ${body}`,
1413
+ responseLog: 'Response:',
1414
+ errors: {
1415
+ invalidJson: 'The value passed to --data is not valid JSON. Please provide a valid JSON string.',
1416
+ statusLine: (status, statusText) => `${chalk.red(`${status} ${statusText}`)}`,
1417
+ },
1418
+ },
1322
1419
  open: {
1323
1420
  describe: 'Open a HubSpot page in your browser.',
1324
1421
  options: {
@@ -1360,6 +1457,7 @@ export const commands = {
1360
1457
  },
1361
1458
  errors: {
1362
1459
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1460
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1363
1461
  profileExists: (profileName) => `Profile ${chalk.bold(profileName)} already exists. Please choose a different name.`,
1364
1462
  invalidTargetAccount: 'Target account is not configured in the CLI',
1365
1463
  noAccountsConfigured: 'No accounts configured in the CLI',
@@ -1390,6 +1488,7 @@ export const commands = {
1390
1488
  },
1391
1489
  errors: {
1392
1490
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1491
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1393
1492
  noProfileFound: (profileName) => `No profile with filename ${chalk.bold(profileName)} found in your project.`,
1394
1493
  noProfilesFound: 'No profiles found in your project.',
1395
1494
  failedToDeleteProfile: (profileName) => `Unable to delete profile ${chalk.bold(profileName)}. Please try again.`,
@@ -1423,7 +1522,7 @@ export const commands = {
1423
1522
  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.`,
1424
1523
  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')}.`,
1425
1524
  unsupportedAccountFlagLegacy: 'The --project-account and --testing-account flags are not supported for projects with platform versions earlier than 2025.2.',
1426
- 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',
1525
+ unsupportedAccountFlagV2: 'The --account flag is not 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',
1427
1526
  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')}.`,
1428
1527
  },
1429
1528
  examples: {
@@ -1437,6 +1536,7 @@ export const commands = {
1437
1536
  projectAccount: 'The id of the account to upload your project to. Must be used with --testing-account. Supported on platform versions 2025.2 and newer.',
1438
1537
  testingAccount: 'The id of the account to install apps and test on. Must be used with --project-account. Supported on platform versions 2025.2 and newer.',
1439
1538
  account: 'The id of the account to upload your project to. Unsupported on platform versions 2025.2 and newer.',
1539
+ port: `The port for the local dev server. Defaults to ${LOCAL_DEV_DEFAULT_PORT}.`,
1440
1540
  },
1441
1541
  },
1442
1542
  create: {
@@ -1447,6 +1547,9 @@ export const commands = {
1447
1547
  failedToFetchProjectList: 'Failed to fetch the list of available project templates. Please try again later.',
1448
1548
  cannotNestProjects: (projectDir) => `A project already exists at ${projectDir}. Projects cannot be nested within other projects. Please choose a different destination and try again.`,
1449
1549
  },
1550
+ warnings: {
1551
+ 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'))}`,
1552
+ },
1450
1553
  logs: {
1451
1554
  success: (projectName, projectDest) => `Project ${chalk.bold(projectName)} was successfully created in ${projectDest}`,
1452
1555
  },
@@ -1509,7 +1612,6 @@ export const commands = {
1509
1612
  },
1510
1613
  },
1511
1614
  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')}`,
1512
- 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.`,
1513
1615
  migrationStatus: {
1514
1616
  inProgress: () => `Converting app configuration to ${chalk.bold(LEGACY_PUBLIC_APP_FILE)} component definition ...`,
1515
1617
  success: () => `${chalk.bold('Your app was converted and build #1 is deployed')}`,
@@ -1614,6 +1716,7 @@ export const commands = {
1614
1716
  deploy: {
1615
1717
  describe: 'Deploy a project build.',
1616
1718
  deployBuildIdPrompt: '[--build] Deploy which build?',
1719
+ profileMessage: (profileName, accountId) => `Deploying with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
1617
1720
  debug: {
1618
1721
  deploying: (path) => `Deploying project at path: ${path}`,
1619
1722
  },
@@ -1673,6 +1776,7 @@ export const commands = {
1673
1776
  noFunctionsLinkText: 'Visit developer docs',
1674
1777
  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`,
1675
1778
  noFunctionWithName: (name) => `No function with name "${name}"`,
1779
+ functionNameRequired: `A function name is required. Pass ${uiCommandReference('--function=<name>')} or run without it to select one interactively.`,
1676
1780
  functionNotDeployed: (name) => `The function with name "${name}" is not deployed`,
1677
1781
  projectLogsManagerNotInitialized: 'Function called on ProjectLogsManager before initialization',
1678
1782
  noDeployedBuild: 'This project has not been deployed yet. Deploy the project first, then try again.',
@@ -1718,6 +1822,7 @@ export const commands = {
1718
1822
  examples: {
1719
1823
  default: 'Upload a project into your HubSpot account',
1720
1824
  withProfile: 'Upload a project into your HubSpot account when using profiles',
1825
+ withPreview: 'Upload and preview the build on a target portal',
1721
1826
  },
1722
1827
  logs: {
1723
1828
  buildSucceeded: (buildId) => `Build #${buildId} succeeded\n`,
@@ -1726,7 +1831,10 @@ export const commands = {
1726
1831
  autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
1727
1832
  },
1728
1833
  errors: {
1834
+ noProjectConfig: 'No project detected. Run this command from a project directory.',
1729
1835
  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.`,
1836
+ previewRequiresTarget: `${uiCommandReference('--preview')} requires ${uiCommandReference('--target=<portalId>')} to specify the portal to preview on.`,
1837
+ targetRequiresPreview: `${uiCommandReference('--target')} can only be used with ${uiCommandReference('--preview')}.`,
1730
1838
  },
1731
1839
  options: {
1732
1840
  forceCreate: {
@@ -1738,6 +1846,15 @@ export const commands = {
1738
1846
  profile: {
1739
1847
  describe: 'Profile to target for this upload',
1740
1848
  },
1849
+ skipNpmAudit: {
1850
+ describe: 'Skip the npm audit security check before uploading',
1851
+ },
1852
+ preview: {
1853
+ describe: 'Preview the build on a target portal after a successful upload',
1854
+ },
1855
+ target: {
1856
+ describe: 'Portal ID to preview the build on',
1857
+ },
1741
1858
  },
1742
1859
  },
1743
1860
  watch: {
@@ -1852,6 +1969,7 @@ export const commands = {
1852
1969
  loading: {
1853
1970
  checking: 'Checking lint packages and configuration…',
1854
1971
  creatingConfig: 'Creating ESLint configuration files…',
1972
+ addingLintScripts: 'Adding lint scripts to package.json files…',
1855
1973
  linting: 'Linting…',
1856
1974
  },
1857
1975
  noProjectConfig: 'No project detected. Run this command from a project directory.',
@@ -1871,8 +1989,17 @@ export const commands = {
1871
1989
  },
1872
1990
  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?`,
1873
1991
  eslintConfigCreated: (configPath) => `ESLint configuration created at ${configPath}`,
1992
+ createEslintConfigRequiresV2Platform: (platformVersion) => {
1993
+ if (!platformVersion) {
1994
+ 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.';
1995
+ }
1996
+ return `Automatic ESLint configuration is not available for platform version ${platformVersion}. Use Developer Platform 2025.2 or later, or add eslint.config.js manually.`;
1997
+ },
1998
+ 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.`,
1874
1999
  failedToCreateEslintConfig: (configPath) => `Failed to create ESLint configuration at ${configPath}`,
1875
2000
  eslintConfigRequired: 'ESLint configuration is required to run the lint command. Run the command again to create the configuration.',
2001
+ lintScriptsAdded: (scriptNames, packageJsonPath) => `Added ${scriptNames.map(s => `"${s}"`).join(' and ')} to ${packageJsonPath}`,
2002
+ failedToAddLintScripts: (packageJsonPath) => `Failed to add lint scripts to ${packageJsonPath}`,
1876
2003
  },
1877
2004
  updateDeps: {
1878
2005
  help: {
@@ -1927,6 +2054,99 @@ export const commands = {
1927
2054
  noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
1928
2055
  },
1929
2056
  },
2057
+ info: {
2058
+ describe: 'Display information about a project, its app, and its components',
2059
+ 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.`,
2060
+ project: {
2061
+ title: (name) => `Project: ${name}`,
2062
+ platformVersion: (version) => `Platform Version: ${version}`,
2063
+ id: (id) => `Project ID: ${id}`,
2064
+ deployedBuild: (buildId) => `Deployed Build: #${buildId}`,
2065
+ autoDeploy: (enabled) => `Auto-deploy: ${enabled ? 'Enabled' : 'Disabled'}`,
2066
+ },
2067
+ app: {
2068
+ title: 'App',
2069
+ name: (name) => `Name: ${name}`,
2070
+ id: (id) => `App ID: ${id}`,
2071
+ uid: (uid) => `UID: ${uid}`,
2072
+ authType: (authType) => `Auth Type: ${authType}`,
2073
+ distributionType: (distributionType) => `Distribution: ${distributionType}`,
2074
+ },
2075
+ examples: {
2076
+ default: 'Display project information',
2077
+ json: 'Output as JSON for scripting',
2078
+ },
2079
+ viewProjectLink: 'View project in HubSpot',
2080
+ componentsHeader: 'Components',
2081
+ labels: {
2082
+ type: 'Type',
2083
+ uid: 'UID',
2084
+ },
2085
+ errors: {
2086
+ noProjectConfig: `No project found in this directory.\n\nRun ${uiCommandReference('hs project create')} to start a new project, or change to a directory containing hsproject.json.`,
2087
+ projectNotFound: (projectName, accountId) => `Project "${projectName}" was not found in account ${uiAccountDescription(accountId)}. Make sure the project has been uploaded at least once.`,
2088
+ noDeployedBuild: `This project has not been deployed yet.\n\nRun ${uiCommandReference('hs project deploy')} to deploy your project.`,
2089
+ unsupportedPlatformVersion: (platformVersion) => `This command is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
2090
+ },
2091
+ },
2092
+ delete: {
2093
+ describe: 'Delete a project from the current target account',
2094
+ 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.`,
2095
+ warnings: {
2096
+ irreversibleTitle: 'Warning: This will permanently delete your project',
2097
+ 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.',
2098
+ },
2099
+ prompts: {
2100
+ selectProject: (accountId) => `Select a project to delete in ${uiAccountDescription(accountId)}`,
2101
+ confirmDelete: (projectName, accountId) => `[--force] Delete ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}? This cannot be undone.`,
2102
+ validation: {
2103
+ projectRequired: 'Please select a project to delete',
2104
+ },
2105
+ },
2106
+ logs: {
2107
+ deleting: (projectName) => `Deleting project ${chalk.bold(projectName)}...`,
2108
+ deleted: (projectName, accountId) => `Deleted project ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}`,
2109
+ cancelled: 'Deletion cancelled',
2110
+ componentsToDeleteUnified: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c.componentId)} (${mapToUserFriendlyName(c.componentType)})`).join('\n')}`,
2111
+ componentsToDeleteLegacy: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c)}`).join('\n')}`,
2112
+ deletingComponents: (projectName) => `Deleting deployed components from ${chalk.bold(projectName)}...`,
2113
+ componentsDeleted: (projectName) => `Deleted deployed components from ${chalk.bold(projectName)}`,
2114
+ unableToDetermineIfComponentsWereDeleted: (projectName) => `Unable to determine if components were successfully deleted from ${chalk.bold(projectName)}. Please try again.`,
2115
+ installWarning: (installCount) => `This project has ${chalk.bold(String(installCount))} active app ${installCount === 1 ? 'installation' : 'installations'} that will be deleted.`,
2116
+ installCountUnknown: 'Unable to determine the number of active app installations for this project.',
2117
+ },
2118
+ errors: {
2119
+ noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
2120
+ projectNotFound: (projectName, accountId) => `Project ${chalk.bold(projectName)} not found in ${uiAccountDescription(accountId)}`,
2121
+ deleteFailed: (projectName) => `Failed to delete project ${chalk.bold(projectName)}. Run with --debug for details or try again.`,
2122
+ cannotDelete: (projectName, reason) => `Cannot delete project ${chalk.bold(projectName)}: ${reason}`,
2123
+ noPlatformVersion: 'Unable to determine platform version for project',
2124
+ componentDeletionFailed: (projectName) => `Failed to delete deployed components from ${chalk.bold(projectName)}. The project was not deleted.`,
2125
+ },
2126
+ options: {
2127
+ project: 'name of the project to delete',
2128
+ force: 'skip confirmation prompt',
2129
+ },
2130
+ },
2131
+ installStatus: {
2132
+ 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.',
2133
+ examples: {
2134
+ default: 'Check install status for the static auth app in the current project',
2135
+ json: 'Output install status as JSON',
2136
+ },
2137
+ errors: {
2138
+ noProjectConfig: `No project config found. Run this command from within a HubSpot project directory, or use ${uiCommandReference('hs project create')} to create a new one.`,
2139
+ unsupportedPlatformVersion: (platformVersion) => `This command is only supported for projects on platform version 2025.2 or later (detected: ${platformVersion}).`,
2140
+ failedToParseProject: 'Failed to parse the project. Check your project configuration is valid and try again.',
2141
+ noAppInProject: 'No app was found in the local project. Install status is only available for projects that contain an app.',
2142
+ unsupportedAuthType: (authType) => `This command only supports static auth apps. Detected auth type: ${authType}.`,
2143
+ },
2144
+ success: {
2145
+ installed: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)}.`,
2146
+ installedWithOutdatedScopes: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)} with outdated scopes. Reinstall the app to grant the latest scopes.`,
2147
+ },
2148
+ notInstalled: (appName, accountId) => `${chalk.bold(appName)} is not installed in ${uiAccountDescription(accountId)}.`,
2149
+ },
1930
2150
  },
1931
2151
  sandbox: {
1932
2152
  describe: 'Commands for managing sandboxes.',
@@ -2222,7 +2442,7 @@ export const commands = {
2222
2442
  configPathPrompt: '[--config-path] Enter the path to the test account config: ',
2223
2443
  createTestAccountFromConfigPrompt: 'How would you like to create your test account?',
2224
2444
  createFromConfigOption: 'Create test account from config file',
2225
- createFromScratchOption: 'Create test account from scratch',
2445
+ createFromScratchOption: 'Select hub tiers manually',
2226
2446
  errors: {
2227
2447
  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.`,
2228
2448
  configFileParseFailed: (configPath) => `Failed to parse test account config file at ${configPath}`,
@@ -2242,7 +2462,7 @@ export const commands = {
2242
2462
  opsLevel: 'Operations Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2243
2463
  serviceLevel: 'Service Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2244
2464
  salesLevel: 'Sales Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2245
- contentLevel: 'CMS Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2465
+ contentLevel: 'Content Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2246
2466
  commerceLevel: 'Commerce Hub tier. Options: FREE, PROFESSIONAL, ENTERPRISE',
2247
2467
  },
2248
2468
  example: (configPath) => `Create a test account from the config file at ${configPath}`,
@@ -2895,6 +3115,9 @@ export const commands = {
2895
3115
  },
2896
3116
  };
2897
3117
  export const lib = {
3118
+ linkedDirectory: {
3119
+ 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`,
3120
+ },
2898
3121
  parsing: {
2899
3122
  unableToParseStringToNumber: 'Unable to parse string to number',
2900
3123
  },
@@ -2904,6 +3127,9 @@ export const lib = {
2904
3127
  process: {
2905
3128
  exitDebug: (signal) => `Attempting to gracefully exit. Triggered by ${signal}`,
2906
3129
  },
3130
+ handlerLogFile: {
3131
+ saved: (filePath) => `Debug logs can be viewed at ${filePath}`,
3132
+ },
2907
3133
  DevServerManager: {
2908
3134
  portConflict: (port) => `The port ${port} is already in use.`,
2909
3135
  notInitialized: 'The Dev Server Manager must be initialized before it is started.',
@@ -3076,7 +3302,7 @@ export const lib = {
3076
3302
  updateSucceeded: (latestVersion) => `Successfully updated HubSpot CLI to version ${chalk.bold(latestVersion)}`,
3077
3303
  notInstalledGlobally: 'Cannot auto-update the HubSpot CLI because NPM is not installed globally',
3078
3304
  updateFailed: (latestVersion) => `Failed to update HubSpot CLI to version ${chalk.bold(latestVersion)}`,
3079
- enableAutoUpdatesMessage: `The HubSpot CLI can automatically keep itself up to date.\n\nThis helps ensure compatibility with the HubSpot platform. You can change this later at any time.\n\nRun${uiCommandReference('hs config set --allow-auto-updates=true')}`,
3305
+ enableAutoUpdatesMessage: `The HubSpot CLI can automatically keep itself up to date.\n\nThis helps ensure compatibility with the HubSpot platform. You can change this later at any time.\n\nRun ${uiCommandReference('hs config set --allow-auto-updates=true')}`,
3080
3306
  },
3081
3307
  },
3082
3308
  projectProfiles: {
@@ -3085,11 +3311,6 @@ export const lib = {
3085
3311
  profileTargetAccount: (accountId) => `Targeting ${uiAccountDescription(accountId)}`,
3086
3312
  profileVariables: 'Profile variables',
3087
3313
  },
3088
- exitIfUsingProfiles: {
3089
- errors: {
3090
- noProfileSpecified: `This project is configured to use profiles, but no profile was specified. Target a profile using the ${uiCommandReference('--profile')} flag.`,
3091
- },
3092
- },
3093
3314
  loadProfile: {
3094
3315
  errors: {
3095
3316
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
@@ -3202,8 +3423,30 @@ export const lib = {
3202
3423
  fileFiltered: (filename) => `Ignore rule triggered for "${filename}"`,
3203
3424
  legacyFileDetected: (filename, platformVersion) => `The ${chalk.bold(filename)} file is not supported on platform version ${chalk.bold(platformVersion)} and will be ignored.`,
3204
3425
  projectDoesNotExist: (accountId) => `Upload cancelled. Run ${uiCommandReference('hs project upload')} again to create the project in ${uiAccountDescription(accountId)}.`,
3426
+ workspaceIncluded: (workspaceDir, archivePath) => `Including workspace: ${workspaceDir} → ${archivePath}`,
3427
+ fileDependencyIncluded: (packageName, localPath, archivePath) => `Including file: dependency ${packageName}: ${localPath} → ${archivePath}`,
3428
+ malformedPackageJson: (packageJsonPath, error) => `Skipping malformed package.json at ${packageJsonPath}: ${error}`,
3429
+ workspaceCollision: (archivePath, workspaceDir, existingWorkspace) => `Workspace collision: ${archivePath} from ${workspaceDir} and ${existingWorkspace}`,
3430
+ fileDependencyAlreadyIncluded: (packageName, archivePath) => `file: dependency ${packageName} already included as workspace: ${archivePath}`,
3431
+ updatingLockfile: (lockfilePath) => `Updating package-lock.json in archive: ${lockfilePath}`,
3432
+ updatingPackageJsonWorkspaces: (packageJsonPath) => `Updating package.json workspaces in archive: ${packageJsonPath}`,
3433
+ updatedWorkspaces: (workspaces) => ` Updated workspaces: ${workspaces}`,
3434
+ updatedFileDependency: (packageName, relativePath) => ` Updated dependencies.${packageName}: file:${relativePath}`,
3435
+ npmAuditClean: (packageRoot) => `npm audit: No npm dependency issues found for ${chalk.bold(packageRoot)}`,
3436
+ npmAuditIssues: (packageRoot, details) => `npm audit: security issues found for ${chalk.bold(packageRoot)}: ${details}`,
3437
+ npmAuditNpmUnavailable: (packageRoot) => `npm audit: skipped for ${chalk.bold(packageRoot)} (npm not available in PATH)`,
3438
+ npmAuditNonZeroExit: (packageRoot, exitCode) => `npm audit: ${chalk.bold(packageRoot)} exited with code ${exitCode}`,
3205
3439
  },
3206
3440
  },
3441
+ projectPreview: {
3442
+ triggeringPreview: (buildId, targetPortalId) => `Previewing build #${buildId} on ${uiAccountDescription(targetPortalId)}`,
3443
+ pollingStatus: (releaseTag, targetPortalId) => `Previewing ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
3444
+ succeeded: (releaseTag, targetPortalId) => `Previewed ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
3445
+ triggerFailed: 'Failed to trigger preview',
3446
+ pollFailed: 'Failed to poll preview status',
3447
+ warning: 'The build succeeded but the preview failed. You can manually preview this build from the project UI.',
3448
+ missingProjectId: 'Unable to preview: could not resolve the project ID.',
3449
+ },
3207
3450
  importData: {
3208
3451
  errors: {
3209
3452
  incorrectAccountType: (derivedAccountId) => `The account ${uiAccountDescription(derivedAccountId)} is not a standard account, developer test account, or app developer account.`,
@@ -3312,6 +3555,9 @@ export const lib = {
3312
3555
  pakFailure: 'Failed to generate personal access key for developer test account',
3313
3556
  },
3314
3557
  },
3558
+ usageTracking: {
3559
+ 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`,
3560
+ },
3315
3561
  configOptions: {
3316
3562
  enableOrDisableBooleanFieldPrompt: {
3317
3563
  message: (fieldName) => `Choose to enable or disable ${fieldName}`,
@@ -3400,8 +3646,14 @@ export const lib = {
3400
3646
  promptUtils: {
3401
3647
  errors: {
3402
3648
  noSelectableChoices: 'Exiting prompt because no selectable choices are available',
3649
+ userCancelled: 'User cancelled prompt',
3403
3650
  },
3404
3651
  },
3652
+ projectProfilePrompt: {
3653
+ message: '[--profile] This project is configured to use profiles. Select a profile to use:',
3654
+ exitMessage: `This project is configured to use profiles, but no profile was specified. Try again using ${uiCommandReference('--profile')}`,
3655
+ noValidProfilesMessage: 'There are no valid profiles in this project. Ensure the accounts they are targeting are authenticated and try again.',
3656
+ },
3405
3657
  importDataFilePathPrompt: {
3406
3658
  promptContext: `To view the JSON schema for data imports, visit ${uiLink('the docs', 'https://developers.hubspot.com/docs/guides/api/crm/imports')}`,
3407
3659
  promptMessage: '[--file-path] Select the JSON file that will be used to import your data.',
@@ -3425,6 +3677,7 @@ export const lib = {
3425
3677
  developerTestAccountLimit: (limit) => `Your account reached the limit of ${limit} developer test accounts.`,
3426
3678
  confirmDefaultAccount: (accountName, accountType) => `Continue testing on ${chalk.bold(`${accountName} (${accountType})`)}? (Y/n)`,
3427
3679
  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.`,
3680
+ confirmLinkExistingDeveloperTestAccount: (accountName) => `${accountName} is not linked to this directory. Would you like to link it?`,
3428
3681
  noAccountId: 'No account ID found for the selected account. Please try again.',
3429
3682
  },
3430
3683
  projectLogsPrompt: {
@@ -3496,6 +3749,7 @@ export const lib = {
3496
3749
  invalidOauthClientSecretCopy: 'Please copy the actual OAuth2 client secret rather than the asterisks that mask it.',
3497
3750
  invalidPersonalAccessKey: 'You did not enter a valid access key. Please try again.',
3498
3751
  invalidPersonalAccessKeyCopy: 'Please copy the actual access key rather than the bullets that mask it.',
3752
+ authCancelled: 'Authentication cancelled.',
3499
3753
  },
3500
3754
  },
3501
3755
  createTemplatePrompt: {
@@ -3847,9 +4101,9 @@ export const lib = {
3847
4101
  validJson: 'JSON files valid',
3848
4102
  },
3849
4103
  port: {
3850
- inUse: (port) => `Port ${port} is in use`,
3851
- inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}`,
3852
- available: (port) => `Port ${port} available for local development`,
4104
+ inUse: (port) => `Default port ${port} is in use`,
4105
+ inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}, or use ${uiCommandReference('--port')} to specify a different port`,
4106
+ available: (port) => `Default port ${port} available for local development`,
3853
4107
  },
3854
4108
  projectValidation: {
3855
4109
  valid: 'Project configuration and structure is valid',
@@ -3938,11 +4192,12 @@ export const lib = {
3938
4192
  fileInvalidJson: (path) => `The file "${path}" contains invalid JSON`,
3939
4193
  },
3940
4194
  migrate: {
3941
- componentsToBeMigrated: (components) => `The following features will be migrated: ${components}`,
4195
+ componentsToBeMigrated: (components) => `${chalk.bold('The following features will be migrated:')} ${components}`,
3942
4196
  componentsThatWillNotBeMigrated: (components) => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
4197
+ 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')}`,
3943
4198
  sourceContentsMoved: (newLocation) => `The contents of your old source directory have been moved to ${newLocation}, move any required files to the new source directory.`,
3944
- projectMigrationWarningTitle: 'Important: Migrating to platformVersion 2025.2 is irreversible',
3945
- projectMigrationWarning: uiBetaTag(`Running the ${uiCommandReference('hs project migrate')} command will permanently upgrade your project to platformVersion 2025.2. 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),
4199
+ projectMigrationWarningTitle: (platformVersion) => `Important: Migrating to platformVersion ${platformVersion} is irreversible`,
4200
+ 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),
3946
4201
  exitWithoutMigrating: 'Exiting without migrating',
3947
4202
  success: {
3948
4203
  downloadedProject: (projectName, projectDest) => `Saved ${projectName} to ${projectDest}`,
@@ -3954,7 +4209,7 @@ export const lib = {
3954
4209
  doesNotExist: (account) => `Project does not exist in ${uiAccountDescription(account)}. Migrations are only supported for existing projects.`,
3955
4210
  themesAlreadyMigrated: 'This project has already been migrated to the latest platform version.',
3956
4211
  noProjectForThemesMigration: 'Theme migrations are only supported for projects. Please try again from a project directory.',
3957
- themesAndAppsNotAllowed: 'Support for migrating projects containing both themes and apps to the latest platform version is coming soon. Try again later.',
4212
+ 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.',
3958
4213
  multipleApps: 'Multiple apps found in project, this is not allowed in 2025.2',
3959
4214
  alreadyExists: (projectName) => `A project with name ${projectName} already exists. Please choose another name.`,
3960
4215
  failedToMigrateThemes: 'Failed to migrate project themes. Please verify that your themes are properly formatted before trying again.',
@@ -3999,4 +4254,14 @@ export const lib = {
3999
4254
  copyingProjectFilesFailed: 'Unable to copy migrated project files',
4000
4255
  },
4001
4256
  },
4257
+ theme: {
4258
+ cmsDevServerProcess: {
4259
+ installStarted: (targetVersion) => `Installing cms-dev-server ${targetVersion}...`,
4260
+ installSucceeded: 'cms-dev-server setup complete',
4261
+ installFailed: 'Failed to install cms-dev-server',
4262
+ serverStartError: (error) => `Failed to start dev server: ${error}`,
4263
+ serverExit: (code) => `Dev server exited with code ${code}`,
4264
+ serverKill: (signal) => `Dev server killed with signal ${signal}`,
4265
+ },
4266
+ },
4002
4267
  };
@@ -3,6 +3,7 @@ import { getAccessToken, updateConfigWithAccessToken, } from '@hubspot/local-dev
3
3
  import { toKebabCase } from '@hubspot/local-dev-lib/text';
4
4
  import { handleMerge, handleMigration } from './configMigrate.js';
5
5
  import { debugError, logError } from './errorHandlers/index.js';
6
+ import { isPromptExitError } from './errors/PromptExitError.js';
6
7
  import { personalAccessKeyPrompt } from './prompts/personalAccessKeyPrompt.js';
7
8
  import { cliAccountNamePrompt } from './prompts/accountNamePrompt.js';
8
9
  import { setAsDefaultAccountPrompt } from './prompts/setAsDefaultAccountPrompt.js';
@@ -36,6 +37,9 @@ async function updateConfigWithNewAccount(env, configAlreadyExists, providedPers
36
37
  return updatedConfig;
37
38
  }
38
39
  catch (e) {
40
+ if (isPromptExitError(e)) {
41
+ throw e;
42
+ }
39
43
  debugError(e);
40
44
  return null;
41
45
  }