@hubspot/cli 8.1.0 → 8.1.1-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 (676) hide show
  1. package/api/migrate.js +8 -4
  2. package/bin/cli.js +12 -6
  3. package/commands/account/auth.js +7 -7
  4. package/commands/account/clean.js +7 -6
  5. package/commands/account/createOverride.js +10 -7
  6. package/commands/account/info.js +36 -17
  7. package/commands/account/link.d.ts +4 -0
  8. package/commands/account/link.js +89 -0
  9. package/commands/account/list.js +32 -76
  10. package/commands/account/remove.js +4 -3
  11. package/commands/account/removeOverride.js +11 -10
  12. package/commands/account/rename.js +5 -6
  13. package/commands/account/unlink.d.ts +4 -0
  14. package/commands/account/unlink.js +70 -0
  15. package/commands/account/use.js +75 -6
  16. package/commands/account.js +4 -0
  17. package/commands/api.d.ts +10 -0
  18. package/commands/api.js +164 -0
  19. package/commands/app/migrate.js +13 -13
  20. package/commands/app/secret/add.js +6 -7
  21. package/commands/app/secret/delete.js +9 -10
  22. package/commands/app/secret/list.js +6 -7
  23. package/commands/app/secret/update.js +8 -9
  24. package/commands/auth.js +19 -15
  25. package/commands/cms/app/create.js +9 -5
  26. package/commands/cms/convertFields.js +8 -8
  27. package/commands/cms/delete.js +2 -3
  28. package/commands/cms/fetch.js +7 -7
  29. package/commands/cms/function/create.js +9 -5
  30. package/commands/cms/function/deploy.js +2 -3
  31. package/commands/cms/function/list.js +11 -7
  32. package/commands/cms/function/logs.js +17 -22
  33. package/commands/cms/function/server.js +2 -3
  34. package/commands/cms/getReactModule.js +7 -8
  35. package/commands/cms/lighthouseScore.js +25 -24
  36. package/commands/cms/lint.js +4 -5
  37. package/commands/cms/list.js +5 -6
  38. package/commands/cms/module/create.js +9 -5
  39. package/commands/cms/module/marketplace-validate.js +7 -8
  40. package/commands/cms/mv.js +2 -3
  41. package/commands/cms/template/create.js +10 -6
  42. package/commands/cms/theme/create.js +5 -5
  43. package/commands/cms/theme/generate-selectors.js +5 -4
  44. package/commands/cms/theme/marketplace-validate.js +8 -9
  45. package/commands/cms/theme/preview.js +23 -70
  46. package/commands/cms/upload.js +15 -12
  47. package/commands/cms/watch.d.ts +0 -1
  48. package/commands/cms/watch.js +6 -12
  49. package/commands/cms/webpack/create.js +5 -5
  50. package/commands/completion.js +3 -5
  51. package/commands/config/migrate.js +6 -7
  52. package/commands/config/set.js +5 -6
  53. package/commands/customObject/create.js +4 -5
  54. package/commands/customObject/createSchema.js +4 -5
  55. package/commands/customObject/deleteSchema.js +4 -5
  56. package/commands/customObject/fetchAllSchemas.js +2 -3
  57. package/commands/customObject/fetchSchema.js +2 -3
  58. package/commands/customObject/listSchemas.js +2 -3
  59. package/commands/customObject/updateSchema.js +4 -5
  60. package/commands/doctor.js +8 -8
  61. package/commands/feedback.js +7 -5
  62. package/commands/filemanager/fetch.js +5 -6
  63. package/commands/filemanager/upload.js +5 -5
  64. package/commands/getStarted.js +17 -19
  65. package/commands/hubdb/clear.js +6 -3
  66. package/commands/hubdb/create.js +4 -5
  67. package/commands/hubdb/delete.js +9 -6
  68. package/commands/hubdb/fetch.js +6 -3
  69. package/commands/hubdb/list.js +16 -14
  70. package/commands/init.js +15 -14
  71. package/commands/mcp/setup.js +5 -14
  72. package/commands/mcp/start.js +2 -4
  73. package/commands/open.js +4 -5
  74. package/commands/project/add.js +13 -8
  75. package/commands/project/appInstallStatus.d.ts +4 -0
  76. package/commands/project/appInstallStatus.js +132 -0
  77. package/commands/project/create.js +28 -17
  78. package/commands/project/delete.d.ts +7 -0
  79. package/commands/project/delete.js +74 -0
  80. package/commands/project/deploy.js +39 -36
  81. package/commands/project/dev/deprecatedFlow.js +62 -17
  82. package/commands/project/dev/index.d.ts +3 -3
  83. package/commands/project/dev/index.js +59 -48
  84. package/commands/project/dev/unifiedFlow.js +70 -21
  85. package/commands/project/download.js +12 -9
  86. package/commands/project/info.d.ts +4 -0
  87. package/commands/project/info.js +67 -0
  88. package/commands/project/installDeps.js +9 -6
  89. package/commands/project/lint.js +31 -10
  90. package/commands/project/list.d.ts +2 -2
  91. package/commands/project/list.js +15 -14
  92. package/commands/project/listBuilds.js +8 -6
  93. package/commands/project/logs.js +5 -6
  94. package/commands/project/migrate.js +18 -18
  95. package/commands/project/open.js +5 -6
  96. package/commands/project/profile/add.js +12 -8
  97. package/commands/project/profile/delete.js +15 -11
  98. package/commands/project/updateDeps.js +9 -6
  99. package/commands/project/upload.d.ts +1 -0
  100. package/commands/project/upload.js +39 -19
  101. package/commands/project/validate.js +12 -12
  102. package/commands/project/watch.js +32 -19
  103. package/commands/project.js +12 -3
  104. package/commands/sandbox/create.js +18 -45
  105. package/commands/sandbox/delete.js +13 -14
  106. package/commands/secret/addSecret.js +6 -7
  107. package/commands/secret/deleteSecret.js +5 -6
  108. package/commands/secret/listSecret.js +2 -3
  109. package/commands/secret/updateSecret.js +4 -5
  110. package/commands/testAccount/create.d.ts +1 -1
  111. package/commands/testAccount/create.js +25 -17
  112. package/commands/testAccount/createConfig.js +7 -8
  113. package/commands/testAccount/delete.js +27 -18
  114. package/commands/testAccount/importData.js +6 -7
  115. package/commands/upgrade.js +9 -10
  116. package/lang/en.d.ts +258 -14
  117. package/lang/en.js +275 -28
  118. package/lib/accountAuth.js +4 -0
  119. package/lib/api/usageTracking.d.ts +29 -0
  120. package/lib/api/usageTracking.js +28 -0
  121. package/lib/app/migrate.js +18 -5
  122. package/lib/buildAccount.d.ts +1 -6
  123. package/lib/buildAccount.js +9 -42
  124. package/lib/commandSuggestion.js +1 -7
  125. package/lib/constants.d.ts +2 -4
  126. package/lib/constants.js +4 -4
  127. package/lib/doctor/Diagnosis.js +5 -5
  128. package/lib/doctor/Doctor.js +7 -7
  129. package/lib/errorHandlers/index.js +4 -3
  130. package/lib/errorHandlers/suppressError.js +4 -0
  131. package/lib/errors/PromptExitError.d.ts +6 -0
  132. package/lib/errors/PromptExitError.js +11 -0
  133. package/lib/generateSelectors.js +1 -2
  134. package/lib/getStartedV2Actions.d.ts +13 -0
  135. package/lib/getStartedV2Actions.js +56 -3
  136. package/lib/hasFeature.js +1 -2
  137. package/lib/link/accountTableUtils.d.ts +10 -0
  138. package/lib/link/accountTableUtils.js +39 -0
  139. package/lib/link/index.d.ts +18 -0
  140. package/lib/link/index.js +185 -0
  141. package/lib/link/linkUtils.d.ts +5 -0
  142. package/lib/link/linkUtils.js +49 -0
  143. package/lib/link/prompts.d.ts +7 -0
  144. package/lib/link/prompts.js +126 -0
  145. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  146. package/lib/link/renderLinkedAccountsTable.js +14 -0
  147. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  148. package/lib/link/warnIfLinkedDirectory.js +9 -0
  149. package/lib/mcp/setup.d.ts +1 -0
  150. package/lib/mcp/setup.js +77 -30
  151. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  152. package/lib/process.d.ts +1 -1
  153. package/lib/process.js +10 -3
  154. package/lib/projects/ProjectLogsManager.js +6 -3
  155. package/lib/projects/components.js +15 -4
  156. package/lib/projects/create/index.js +3 -6
  157. package/lib/projects/create/legacy.js +5 -10
  158. package/lib/projects/create/v2.js +5 -14
  159. package/lib/projects/delete.d.ts +13 -0
  160. package/lib/projects/delete.js +193 -0
  161. package/lib/projects/deploy.d.ts +1 -1
  162. package/lib/projects/deploy.js +2 -2
  163. package/lib/projects/ensureProjectExists.js +1 -2
  164. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  165. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  166. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  167. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  168. package/lib/projects/localDev/DevSessionManager.js +31 -19
  169. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  170. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  171. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  172. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  173. package/lib/projects/localDev/LocalDevState.js +3 -1
  174. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  175. package/lib/projects/localDev/helpers/account.js +21 -30
  176. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  177. package/lib/projects/localDev/helpers/process.js +4 -10
  178. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  179. package/lib/projects/localDev/helpers/project.js +31 -15
  180. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  181. package/lib/projects/npmAuditOnUpload.js +73 -0
  182. package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
  183. package/lib/projects/projectInfo.d.ts +5 -0
  184. package/lib/projects/projectInfo.js +82 -0
  185. package/lib/projects/projectProfiles.d.ts +1 -2
  186. package/lib/projects/projectProfiles.js +5 -17
  187. package/lib/projects/uieLinting.d.ts +17 -3
  188. package/lib/projects/uieLinting.js +93 -28
  189. package/lib/projects/upload.d.ts +3 -1
  190. package/lib/projects/upload.js +70 -50
  191. package/lib/projects/watch.d.ts +2 -1
  192. package/lib/projects/watch.js +32 -24
  193. package/lib/projects/workspaces.d.ts +42 -0
  194. package/lib/projects/workspaces.js +350 -0
  195. package/lib/prompts/createApiSamplePrompt.js +4 -0
  196. package/lib/prompts/downloadProjectPrompt.js +11 -10
  197. package/lib/prompts/installAppPrompt.js +3 -2
  198. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  199. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  200. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  201. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  202. package/lib/prompts/projectProfilePrompt.js +46 -0
  203. package/lib/prompts/projectsLogsPrompt.js +3 -0
  204. package/lib/prompts/promptUtils.js +4 -2
  205. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  206. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  207. package/lib/sandboxes.d.ts +1 -9
  208. package/lib/sandboxes.js +0 -21
  209. package/lib/serverlessLogs.js +50 -44
  210. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  211. package/lib/theme/cmsDevServerProcess.js +149 -0
  212. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  213. package/lib/theme/cmsDevServerRunner.js +90 -0
  214. package/lib/theme/migrate.d.ts +1 -1
  215. package/lib/theme/migrate.js +1 -5
  216. package/lib/ui/SpinniesManager.d.ts +1 -0
  217. package/lib/ui/SpinniesManager.js +22 -6
  218. package/lib/ui/accountTable.d.ts +8 -0
  219. package/lib/ui/accountTable.js +67 -0
  220. package/lib/ui/spinniesUtils.d.ts +0 -1
  221. package/lib/ui/spinniesUtils.js +6 -16
  222. package/lib/usageTracking.d.ts +9 -20
  223. package/lib/usageTracking.js +51 -34
  224. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  225. package/lib/yargs/makeYargsBuilder.js +33 -0
  226. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  227. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +121 -0
  228. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  229. package/lib/yargs/parseYargsOrExit.js +25 -0
  230. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  231. package/lib/yargs/strictEnforceBoolean.js +13 -0
  232. package/lib/yargsUtils.d.ts +3 -16
  233. package/lib/yargsUtils.js +3 -48
  234. package/mcp-server/Tool.d.ts +15 -0
  235. package/mcp-server/Tool.js +53 -0
  236. package/mcp-server/server.js +43 -3
  237. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  238. package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
  239. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  240. package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
  241. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  242. package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
  243. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  244. package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
  245. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  246. package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
  247. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  248. package/mcp-server/tools/cms/HsListTool.js +9 -7
  249. package/mcp-server/tools/index.d.ts +3 -2
  250. package/mcp-server/tools/index.js +24 -22
  251. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  252. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  253. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  254. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  255. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  256. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  257. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  258. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  259. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  260. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  261. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  262. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  263. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  264. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  265. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  266. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  267. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  268. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  269. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  270. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  271. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  272. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  273. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  274. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  275. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  276. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  277. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  278. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  279. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  280. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  281. package/mcp-server/tools/project/constants.d.ts +13 -1
  282. package/mcp-server/tools/project/constants.js +13 -16
  283. package/mcp-server/types.d.ts +0 -7
  284. package/mcp-server/types.js +1 -13
  285. package/mcp-server/utils/command.d.ts +5 -0
  286. package/mcp-server/utils/command.js +24 -0
  287. package/mcp-server/utils/feedbackTracking.js +2 -17
  288. package/mcp-server/utils/logger.d.ts +10 -0
  289. package/mcp-server/utils/logger.js +29 -0
  290. package/mcp-server/utils/toolUsageTracking.js +10 -8
  291. package/package.json +15 -11
  292. package/types/Link.d.ts +32 -0
  293. package/types/Link.js +5 -0
  294. package/types/LocalDev.d.ts +5 -0
  295. package/types/PackageJson.d.ts +1 -0
  296. package/types/Projects.d.ts +19 -0
  297. package/types/Prompts.d.ts +1 -0
  298. package/types/Yargs.d.ts +19 -1
  299. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  300. package/ui/components/getStarted/reducer.d.ts +20 -0
  301. package/ui/components/getStarted/reducer.js +36 -0
  302. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  303. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  304. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  305. package/ui/lib/constants.d.ts +1 -0
  306. package/ui/lib/constants.js +1 -0
  307. package/api/__tests__/migrate.test.d.ts +0 -1
  308. package/api/__tests__/migrate.test.js +0 -199
  309. package/commands/__tests__/account.test.d.ts +0 -1
  310. package/commands/__tests__/account.test.js +0 -69
  311. package/commands/__tests__/auth.test.d.ts +0 -1
  312. package/commands/__tests__/auth.test.js +0 -43
  313. package/commands/__tests__/cms.test.d.ts +0 -1
  314. package/commands/__tests__/cms.test.js +0 -87
  315. package/commands/__tests__/config.test.d.ts +0 -1
  316. package/commands/__tests__/config.test.js +0 -44
  317. package/commands/__tests__/customObject.test.d.ts +0 -1
  318. package/commands/__tests__/customObject.test.js +0 -68
  319. package/commands/__tests__/doctor.test.d.ts +0 -1
  320. package/commands/__tests__/doctor.test.js +0 -132
  321. package/commands/__tests__/feedback.test.d.ts +0 -1
  322. package/commands/__tests__/feedback.test.js +0 -24
  323. package/commands/__tests__/filemanager.test.d.ts +0 -1
  324. package/commands/__tests__/filemanager.test.js +0 -45
  325. package/commands/__tests__/getStarted.test.d.ts +0 -1
  326. package/commands/__tests__/getStarted.test.js +0 -173
  327. package/commands/__tests__/hubdb.test.d.ts +0 -1
  328. package/commands/__tests__/hubdb.test.js +0 -50
  329. package/commands/__tests__/init.test.d.ts +0 -1
  330. package/commands/__tests__/init.test.js +0 -42
  331. package/commands/__tests__/mcp.test.d.ts +0 -1
  332. package/commands/__tests__/mcp.test.js +0 -46
  333. package/commands/__tests__/open.test.d.ts +0 -1
  334. package/commands/__tests__/open.test.js +0 -58
  335. package/commands/__tests__/project.test.d.ts +0 -1
  336. package/commands/__tests__/project.test.js +0 -125
  337. package/commands/__tests__/sandbox.test.d.ts +0 -1
  338. package/commands/__tests__/sandbox.test.js +0 -44
  339. package/commands/__tests__/secret.test.d.ts +0 -1
  340. package/commands/__tests__/secret.test.js +0 -49
  341. package/commands/__tests__/testAccount.test.d.ts +0 -1
  342. package/commands/__tests__/testAccount.test.js +0 -57
  343. package/commands/__tests__/upgrade.test.d.ts +0 -1
  344. package/commands/__tests__/upgrade.test.js +0 -309
  345. package/commands/account/__tests__/auth.test.d.ts +0 -1
  346. package/commands/account/__tests__/auth.test.js +0 -206
  347. package/commands/account/__tests__/clean.test.d.ts +0 -1
  348. package/commands/account/__tests__/clean.test.js +0 -28
  349. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  350. package/commands/account/__tests__/createOverride.test.js +0 -32
  351. package/commands/account/__tests__/info.test.d.ts +0 -1
  352. package/commands/account/__tests__/info.test.js +0 -28
  353. package/commands/account/__tests__/list.test.d.ts +0 -1
  354. package/commands/account/__tests__/list.test.js +0 -153
  355. package/commands/account/__tests__/remove.test.d.ts +0 -1
  356. package/commands/account/__tests__/remove.test.js +0 -36
  357. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  358. package/commands/account/__tests__/removeOverride.js +0 -25
  359. package/commands/account/__tests__/rename.test.d.ts +0 -1
  360. package/commands/account/__tests__/rename.test.js +0 -82
  361. package/commands/account/__tests__/use.test.d.ts +0 -1
  362. package/commands/account/__tests__/use.test.js +0 -170
  363. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  364. package/commands/app/__tests__/migrate.test.js +0 -111
  365. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  366. package/commands/app/secret/__tests__/add.test.js +0 -140
  367. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  368. package/commands/app/secret/__tests__/delete.test.js +0 -28
  369. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  370. package/commands/app/secret/__tests__/list.test.js +0 -25
  371. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  372. package/commands/app/secret/__tests__/update.test.js +0 -28
  373. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  374. package/commands/cms/__tests__/delete.test.js +0 -39
  375. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  376. package/commands/cms/__tests__/fetch.test.js +0 -156
  377. package/commands/cms/__tests__/function.test.d.ts +0 -1
  378. package/commands/cms/__tests__/function.test.js +0 -50
  379. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  380. package/commands/cms/__tests__/lint.test.js +0 -33
  381. package/commands/cms/__tests__/list.test.d.ts +0 -1
  382. package/commands/cms/__tests__/list.test.js +0 -42
  383. package/commands/cms/__tests__/module.test.d.ts +0 -1
  384. package/commands/cms/__tests__/module.test.js +0 -45
  385. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  386. package/commands/cms/__tests__/mv.test.js +0 -46
  387. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  388. package/commands/cms/__tests__/theme.test.js +0 -54
  389. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  390. package/commands/cms/__tests__/upload.test.js +0 -308
  391. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  392. package/commands/cms/__tests__/watch.test.js +0 -212
  393. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  394. package/commands/cms/function/__tests__/logs.test.js +0 -70
  395. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  396. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  397. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  398. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  399. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  400. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  401. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  402. package/commands/customObject/__tests__/create.test.js +0 -40
  403. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  404. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  405. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  406. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  407. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  408. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  409. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  410. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  411. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  412. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  413. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  414. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  415. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  416. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  417. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  418. package/commands/filemanager/__tests__/upload.test.js +0 -191
  419. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  420. package/commands/hubdb/__tests__/clear.test.js +0 -28
  421. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  422. package/commands/hubdb/__tests__/create.test.js +0 -28
  423. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  424. package/commands/hubdb/__tests__/delete.test.js +0 -28
  425. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  426. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  427. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  428. package/commands/hubdb/__tests__/list.test.js +0 -88
  429. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  430. package/commands/mcp/__tests__/setup.test.js +0 -26
  431. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  432. package/commands/mcp/__tests__/start.test.js +0 -137
  433. package/commands/project/__tests__/add.test.d.ts +0 -1
  434. package/commands/project/__tests__/add.test.js +0 -107
  435. package/commands/project/__tests__/create.test.d.ts +0 -1
  436. package/commands/project/__tests__/create.test.js +0 -97
  437. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  438. package/commands/project/__tests__/deploy.test.js +0 -307
  439. package/commands/project/__tests__/dev.test.d.ts +0 -1
  440. package/commands/project/__tests__/dev.test.js +0 -273
  441. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  442. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  443. package/commands/project/__tests__/download.test.d.ts +0 -1
  444. package/commands/project/__tests__/download.test.js +0 -39
  445. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  446. package/commands/project/__tests__/installDeps.test.js +0 -140
  447. package/commands/project/__tests__/lint.test.d.ts +0 -1
  448. package/commands/project/__tests__/lint.test.js +0 -704
  449. package/commands/project/__tests__/list.test.d.ts +0 -1
  450. package/commands/project/__tests__/list.test.js +0 -31
  451. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  452. package/commands/project/__tests__/listBuilds.test.js +0 -38
  453. package/commands/project/__tests__/logs.test.d.ts +0 -1
  454. package/commands/project/__tests__/logs.test.js +0 -202
  455. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  456. package/commands/project/__tests__/migrate.test.js +0 -106
  457. package/commands/project/__tests__/open.test.d.ts +0 -1
  458. package/commands/project/__tests__/open.test.js +0 -39
  459. package/commands/project/__tests__/profile.test.d.ts +0 -1
  460. package/commands/project/__tests__/profile.test.js +0 -42
  461. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  462. package/commands/project/__tests__/updateDeps.test.js +0 -140
  463. package/commands/project/__tests__/upload.test.d.ts +0 -1
  464. package/commands/project/__tests__/upload.test.js +0 -234
  465. package/commands/project/__tests__/validate.test.d.ts +0 -1
  466. package/commands/project/__tests__/validate.test.js +0 -381
  467. package/commands/project/__tests__/watch.test.d.ts +0 -1
  468. package/commands/project/__tests__/watch.test.js +0 -35
  469. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  470. package/commands/sandbox/__tests__/create.test.js +0 -245
  471. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  472. package/commands/sandbox/__tests__/delete.test.js +0 -31
  473. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  474. package/commands/secret/__tests__/addSecret.test.js +0 -162
  475. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  476. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  477. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  478. package/commands/secret/__tests__/listSecret.test.js +0 -29
  479. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  480. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  481. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  482. package/commands/testAccount/__tests__/create.test.js +0 -106
  483. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  484. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  485. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  486. package/commands/testAccount/__tests__/delete.test.js +0 -29
  487. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  488. package/commands/testAccount/__tests__/importData.test.js +0 -92
  489. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  490. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  491. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  492. package/lib/__tests__/accountAuth.test.js +0 -258
  493. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  494. package/lib/__tests__/accountTypes.test.js +0 -98
  495. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  496. package/lib/__tests__/buildAccount.test.js +0 -262
  497. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  498. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  499. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  500. package/lib/__tests__/commandSuggestion.test.js +0 -119
  501. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  502. package/lib/__tests__/commonOpts.test.js +0 -80
  503. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  504. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  505. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  506. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  507. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  508. package/lib/__tests__/hasFeature.test.js +0 -167
  509. package/lib/__tests__/http.test.d.ts +0 -1
  510. package/lib/__tests__/http.test.js +0 -40
  511. package/lib/__tests__/importData.test.d.ts +0 -1
  512. package/lib/__tests__/importData.test.js +0 -98
  513. package/lib/__tests__/npmCli.test.d.ts +0 -1
  514. package/lib/__tests__/npmCli.test.js +0 -84
  515. package/lib/__tests__/oauth.test.d.ts +0 -1
  516. package/lib/__tests__/oauth.test.js +0 -109
  517. package/lib/__tests__/parsing.test.d.ts +0 -1
  518. package/lib/__tests__/parsing.test.js +0 -34
  519. package/lib/__tests__/polling.test.d.ts +0 -1
  520. package/lib/__tests__/polling.test.js +0 -76
  521. package/lib/__tests__/process.test.d.ts +0 -1
  522. package/lib/__tests__/process.test.js +0 -89
  523. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  524. package/lib/__tests__/sandboxSync.test.js +0 -147
  525. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  526. package/lib/__tests__/sandboxes.test.js +0 -156
  527. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  528. package/lib/__tests__/serverlessLogs.test.js +0 -148
  529. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  530. package/lib/__tests__/usageTracking.test.js +0 -197
  531. package/lib/__tests__/validation.test.d.ts +0 -1
  532. package/lib/__tests__/validation.test.js +0 -143
  533. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  534. package/lib/__tests__/yargsUtils.test.js +0 -124
  535. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  536. package/lib/app/__tests__/migrate.test.js +0 -638
  537. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  538. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  539. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  540. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  541. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  542. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  543. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  544. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  545. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  546. package/lib/mcp/__tests__/setup.test.js +0 -194
  547. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  548. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  549. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  550. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  551. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  552. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  553. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  554. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  555. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  556. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  557. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  558. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  559. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  560. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  561. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  562. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  563. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  564. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  565. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  566. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  567. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  568. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  569. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  570. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  571. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  572. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  573. package/lib/projects/__tests__/components.test.d.ts +0 -1
  574. package/lib/projects/__tests__/components.test.js +0 -426
  575. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  576. package/lib/projects/__tests__/deploy.test.js +0 -231
  577. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  578. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  579. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  580. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  581. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  582. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  583. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  584. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  585. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  586. package/lib/projects/__tests__/projects.test.js +0 -58
  587. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  588. package/lib/projects/__tests__/structure.test.js +0 -210
  589. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  590. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  591. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  592. package/lib/projects/__tests__/upload.test.js +0 -183
  593. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  594. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  595. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  596. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  597. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  598. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  599. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  600. package/lib/projects/create/__tests__/v2.test.js +0 -257
  601. package/lib/projects/platformVersion.d.ts +0 -9
  602. package/lib/projects/platformVersion.js +0 -39
  603. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  604. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  605. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  606. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  607. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  608. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  609. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  610. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  611. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  612. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  613. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  614. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  615. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  616. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  617. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  618. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  619. package/lib/sandboxSync.d.ts +0 -4
  620. package/lib/sandboxSync.js +0 -102
  621. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  622. package/lib/theme/__tests__/migrate.test.js +0 -256
  623. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  624. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  625. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  626. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  627. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  628. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  629. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  630. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  631. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  632. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  633. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  634. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  635. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  636. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  637. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  638. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  639. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  640. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  641. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  642. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  643. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  644. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  645. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  646. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  647. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  648. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  649. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  650. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  651. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  652. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  653. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  654. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  655. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  656. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  657. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  658. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  659. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  660. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  661. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  662. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  663. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  664. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  665. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  666. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  667. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  668. package/mcp-server/utils/__tests__/command.test.js +0 -45
  669. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  670. package/mcp-server/utils/__tests__/content.test.js +0 -164
  671. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  672. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  673. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  674. package/mcp-server/utils/__tests__/project.test.js +0 -140
  675. package/mcp-server/utils/project.d.ts +0 -5
  676. 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.',
@@ -1726,6 +1830,7 @@ export const commands = {
1726
1830
  autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
1727
1831
  },
1728
1832
  errors: {
1833
+ noProjectConfig: 'No project detected. Run this command from a project directory.',
1729
1834
  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.`,
1730
1835
  },
1731
1836
  options: {
@@ -1738,6 +1843,9 @@ export const commands = {
1738
1843
  profile: {
1739
1844
  describe: 'Profile to target for this upload',
1740
1845
  },
1846
+ skipNpmAudit: {
1847
+ describe: 'Skip the npm audit security check before uploading',
1848
+ },
1741
1849
  },
1742
1850
  },
1743
1851
  watch: {
@@ -1852,6 +1960,7 @@ export const commands = {
1852
1960
  loading: {
1853
1961
  checking: 'Checking lint packages and configuration…',
1854
1962
  creatingConfig: 'Creating ESLint configuration files…',
1963
+ addingLintScripts: 'Adding lint scripts to package.json files…',
1855
1964
  linting: 'Linting…',
1856
1965
  },
1857
1966
  noProjectConfig: 'No project detected. Run this command from a project directory.',
@@ -1871,8 +1980,17 @@ export const commands = {
1871
1980
  },
1872
1981
  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
1982
  eslintConfigCreated: (configPath) => `ESLint configuration created at ${configPath}`,
1983
+ createEslintConfigRequiresV2Platform: (platformVersion) => {
1984
+ if (!platformVersion) {
1985
+ 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.';
1986
+ }
1987
+ return `Automatic ESLint configuration is not available for platform version ${platformVersion}. Use Developer Platform 2025.2 or later, or add eslint.config.js manually.`;
1988
+ },
1989
+ 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
1990
  failedToCreateEslintConfig: (configPath) => `Failed to create ESLint configuration at ${configPath}`,
1875
1991
  eslintConfigRequired: 'ESLint configuration is required to run the lint command. Run the command again to create the configuration.',
1992
+ lintScriptsAdded: (scriptNames, packageJsonPath) => `Added ${scriptNames.map(s => `"${s}"`).join(' and ')} to ${packageJsonPath}`,
1993
+ failedToAddLintScripts: (packageJsonPath) => `Failed to add lint scripts to ${packageJsonPath}`,
1876
1994
  },
1877
1995
  updateDeps: {
1878
1996
  help: {
@@ -1927,6 +2045,99 @@ export const commands = {
1927
2045
  noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
1928
2046
  },
1929
2047
  },
2048
+ info: {
2049
+ describe: 'Display information about a project, its app, and its components',
2050
+ 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.`,
2051
+ project: {
2052
+ title: (name) => `Project: ${name}`,
2053
+ platformVersion: (version) => `Platform Version: ${version}`,
2054
+ id: (id) => `Project ID: ${id}`,
2055
+ deployedBuild: (buildId) => `Deployed Build: #${buildId}`,
2056
+ autoDeploy: (enabled) => `Auto-deploy: ${enabled ? 'Enabled' : 'Disabled'}`,
2057
+ },
2058
+ app: {
2059
+ title: 'App',
2060
+ name: (name) => `Name: ${name}`,
2061
+ id: (id) => `App ID: ${id}`,
2062
+ uid: (uid) => `UID: ${uid}`,
2063
+ authType: (authType) => `Auth Type: ${authType}`,
2064
+ distributionType: (distributionType) => `Distribution: ${distributionType}`,
2065
+ },
2066
+ examples: {
2067
+ default: 'Display project information',
2068
+ json: 'Output as JSON for scripting',
2069
+ },
2070
+ viewProjectLink: 'View project in HubSpot',
2071
+ componentsHeader: 'Components',
2072
+ labels: {
2073
+ type: 'Type',
2074
+ uid: 'UID',
2075
+ },
2076
+ errors: {
2077
+ 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.`,
2078
+ projectNotFound: (projectName, accountId) => `Project "${projectName}" was not found in account ${uiAccountDescription(accountId)}. Make sure the project has been uploaded at least once.`,
2079
+ noDeployedBuild: `This project has not been deployed yet.\n\nRun ${uiCommandReference('hs project deploy')} to deploy your project.`,
2080
+ unsupportedPlatformVersion: (platformVersion) => `This command is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
2081
+ },
2082
+ },
2083
+ delete: {
2084
+ describe: 'Delete a project from the current target account',
2085
+ 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.`,
2086
+ warnings: {
2087
+ irreversibleTitle: 'Warning: This will permanently delete your project',
2088
+ 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.',
2089
+ },
2090
+ prompts: {
2091
+ selectProject: (accountId) => `Select a project to delete in ${uiAccountDescription(accountId)}`,
2092
+ confirmDelete: (projectName, accountId) => `[--force] Delete ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}? This cannot be undone.`,
2093
+ validation: {
2094
+ projectRequired: 'Please select a project to delete',
2095
+ },
2096
+ },
2097
+ logs: {
2098
+ deleting: (projectName) => `Deleting project ${chalk.bold(projectName)}...`,
2099
+ deleted: (projectName, accountId) => `Deleted project ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}`,
2100
+ cancelled: 'Deletion cancelled',
2101
+ componentsToDeleteUnified: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c.componentId)} (${mapToUserFriendlyName(c.componentType)})`).join('\n')}`,
2102
+ componentsToDeleteLegacy: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c)}`).join('\n')}`,
2103
+ deletingComponents: (projectName) => `Deleting deployed components from ${chalk.bold(projectName)}...`,
2104
+ componentsDeleted: (projectName) => `Deleted deployed components from ${chalk.bold(projectName)}`,
2105
+ unableToDetermineIfComponentsWereDeleted: (projectName) => `Unable to determine if components were successfully deleted from ${chalk.bold(projectName)}. Please try again.`,
2106
+ installWarning: (installCount) => `This project has ${chalk.bold(String(installCount))} active app ${installCount === 1 ? 'installation' : 'installations'} that will be deleted.`,
2107
+ installCountUnknown: 'Unable to determine the number of active app installations for this project.',
2108
+ },
2109
+ errors: {
2110
+ noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
2111
+ projectNotFound: (projectName, accountId) => `Project ${chalk.bold(projectName)} not found in ${uiAccountDescription(accountId)}`,
2112
+ deleteFailed: (projectName) => `Failed to delete project ${chalk.bold(projectName)}. Run with --debug for details or try again.`,
2113
+ cannotDelete: (projectName, reason) => `Cannot delete project ${chalk.bold(projectName)}: ${reason}`,
2114
+ noPlatformVersion: 'Unable to determine platform version for project',
2115
+ componentDeletionFailed: (projectName) => `Failed to delete deployed components from ${chalk.bold(projectName)}. The project was not deleted.`,
2116
+ },
2117
+ options: {
2118
+ project: 'name of the project to delete',
2119
+ force: 'skip confirmation prompt',
2120
+ },
2121
+ },
2122
+ installStatus: {
2123
+ 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.',
2124
+ examples: {
2125
+ default: 'Check install status for the static auth app in the current project',
2126
+ json: 'Output install status as JSON',
2127
+ },
2128
+ errors: {
2129
+ 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.`,
2130
+ unsupportedPlatformVersion: (platformVersion) => `This command is only supported for projects on platform version 2025.2 or later (detected: ${platformVersion}).`,
2131
+ failedToParseProject: 'Failed to parse the project. Check your project configuration is valid and try again.',
2132
+ noAppInProject: 'No app was found in the local project. Install status is only available for projects that contain an app.',
2133
+ unsupportedAuthType: (authType) => `This command only supports static auth apps. Detected auth type: ${authType}.`,
2134
+ },
2135
+ success: {
2136
+ installed: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)}.`,
2137
+ installedWithOutdatedScopes: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)} with outdated scopes. Reinstall the app to grant the latest scopes.`,
2138
+ },
2139
+ notInstalled: (appName, accountId) => `${chalk.bold(appName)} is not installed in ${uiAccountDescription(accountId)}.`,
2140
+ },
1930
2141
  },
1931
2142
  sandbox: {
1932
2143
  describe: 'Commands for managing sandboxes.',
@@ -2222,7 +2433,7 @@ export const commands = {
2222
2433
  configPathPrompt: '[--config-path] Enter the path to the test account config: ',
2223
2434
  createTestAccountFromConfigPrompt: 'How would you like to create your test account?',
2224
2435
  createFromConfigOption: 'Create test account from config file',
2225
- createFromScratchOption: 'Create test account from scratch',
2436
+ createFromScratchOption: 'Select hub tiers manually',
2226
2437
  errors: {
2227
2438
  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
2439
  configFileParseFailed: (configPath) => `Failed to parse test account config file at ${configPath}`,
@@ -2242,7 +2453,7 @@ export const commands = {
2242
2453
  opsLevel: 'Operations Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2243
2454
  serviceLevel: 'Service Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2244
2455
  salesLevel: 'Sales Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2245
- contentLevel: 'CMS Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2456
+ contentLevel: 'Content Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2246
2457
  commerceLevel: 'Commerce Hub tier. Options: FREE, PROFESSIONAL, ENTERPRISE',
2247
2458
  },
2248
2459
  example: (configPath) => `Create a test account from the config file at ${configPath}`,
@@ -2895,6 +3106,9 @@ export const commands = {
2895
3106
  },
2896
3107
  };
2897
3108
  export const lib = {
3109
+ linkedDirectory: {
3110
+ 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`,
3111
+ },
2898
3112
  parsing: {
2899
3113
  unableToParseStringToNumber: 'Unable to parse string to number',
2900
3114
  },
@@ -2904,6 +3118,9 @@ export const lib = {
2904
3118
  process: {
2905
3119
  exitDebug: (signal) => `Attempting to gracefully exit. Triggered by ${signal}`,
2906
3120
  },
3121
+ handlerLogFile: {
3122
+ saved: (filePath) => `Debug logs can be viewed at ${filePath}`,
3123
+ },
2907
3124
  DevServerManager: {
2908
3125
  portConflict: (port) => `The port ${port} is already in use.`,
2909
3126
  notInitialized: 'The Dev Server Manager must be initialized before it is started.',
@@ -3076,7 +3293,7 @@ export const lib = {
3076
3293
  updateSucceeded: (latestVersion) => `Successfully updated HubSpot CLI to version ${chalk.bold(latestVersion)}`,
3077
3294
  notInstalledGlobally: 'Cannot auto-update the HubSpot CLI because NPM is not installed globally',
3078
3295
  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')}`,
3296
+ 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
3297
  },
3081
3298
  },
3082
3299
  projectProfiles: {
@@ -3085,11 +3302,6 @@ export const lib = {
3085
3302
  profileTargetAccount: (accountId) => `Targeting ${uiAccountDescription(accountId)}`,
3086
3303
  profileVariables: 'Profile variables',
3087
3304
  },
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
3305
  loadProfile: {
3094
3306
  errors: {
3095
3307
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
@@ -3202,6 +3414,19 @@ export const lib = {
3202
3414
  fileFiltered: (filename) => `Ignore rule triggered for "${filename}"`,
3203
3415
  legacyFileDetected: (filename, platformVersion) => `The ${chalk.bold(filename)} file is not supported on platform version ${chalk.bold(platformVersion)} and will be ignored.`,
3204
3416
  projectDoesNotExist: (accountId) => `Upload cancelled. Run ${uiCommandReference('hs project upload')} again to create the project in ${uiAccountDescription(accountId)}.`,
3417
+ workspaceIncluded: (workspaceDir, archivePath) => `Including workspace: ${workspaceDir} → ${archivePath}`,
3418
+ fileDependencyIncluded: (packageName, localPath, archivePath) => `Including file: dependency ${packageName}: ${localPath} → ${archivePath}`,
3419
+ malformedPackageJson: (packageJsonPath, error) => `Skipping malformed package.json at ${packageJsonPath}: ${error}`,
3420
+ workspaceCollision: (archivePath, workspaceDir, existingWorkspace) => `Workspace collision: ${archivePath} from ${workspaceDir} and ${existingWorkspace}`,
3421
+ fileDependencyAlreadyIncluded: (packageName, archivePath) => `file: dependency ${packageName} already included as workspace: ${archivePath}`,
3422
+ updatingLockfile: (lockfilePath) => `Updating package-lock.json in archive: ${lockfilePath}`,
3423
+ updatingPackageJsonWorkspaces: (packageJsonPath) => `Updating package.json workspaces in archive: ${packageJsonPath}`,
3424
+ updatedWorkspaces: (workspaces) => ` Updated workspaces: ${workspaces}`,
3425
+ updatedFileDependency: (packageName, relativePath) => ` Updated dependencies.${packageName}: file:${relativePath}`,
3426
+ npmAuditClean: (packageRoot) => `npm audit: No npm dependency issues found for ${chalk.bold(packageRoot)}`,
3427
+ npmAuditIssues: (packageRoot, details) => `npm audit: security issues found for ${chalk.bold(packageRoot)}: ${details}`,
3428
+ npmAuditNpmUnavailable: (packageRoot) => `npm audit: skipped for ${chalk.bold(packageRoot)} (npm not available in PATH)`,
3429
+ npmAuditNonZeroExit: (packageRoot, exitCode) => `npm audit: ${chalk.bold(packageRoot)} exited with code ${exitCode}`,
3205
3430
  },
3206
3431
  },
3207
3432
  importData: {
@@ -3312,6 +3537,9 @@ export const lib = {
3312
3537
  pakFailure: 'Failed to generate personal access key for developer test account',
3313
3538
  },
3314
3539
  },
3540
+ usageTracking: {
3541
+ 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`,
3542
+ },
3315
3543
  configOptions: {
3316
3544
  enableOrDisableBooleanFieldPrompt: {
3317
3545
  message: (fieldName) => `Choose to enable or disable ${fieldName}`,
@@ -3400,8 +3628,14 @@ export const lib = {
3400
3628
  promptUtils: {
3401
3629
  errors: {
3402
3630
  noSelectableChoices: 'Exiting prompt because no selectable choices are available',
3631
+ userCancelled: 'User cancelled prompt',
3403
3632
  },
3404
3633
  },
3634
+ projectProfilePrompt: {
3635
+ message: '[--profile] This project is configured to use profiles. Select a profile to use:',
3636
+ exitMessage: `This project is configured to use profiles, but no profile was specified. Try again using ${uiCommandReference('--profile')}`,
3637
+ noValidProfilesMessage: 'There are no valid profiles in this project. Ensure the accounts they are targeting are authenticated and try again.',
3638
+ },
3405
3639
  importDataFilePathPrompt: {
3406
3640
  promptContext: `To view the JSON schema for data imports, visit ${uiLink('the docs', 'https://developers.hubspot.com/docs/guides/api/crm/imports')}`,
3407
3641
  promptMessage: '[--file-path] Select the JSON file that will be used to import your data.',
@@ -3425,6 +3659,7 @@ export const lib = {
3425
3659
  developerTestAccountLimit: (limit) => `Your account reached the limit of ${limit} developer test accounts.`,
3426
3660
  confirmDefaultAccount: (accountName, accountType) => `Continue testing on ${chalk.bold(`${accountName} (${accountType})`)}? (Y/n)`,
3427
3661
  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.`,
3662
+ confirmLinkExistingDeveloperTestAccount: (accountName) => `${accountName} is not linked to this directory. Would you like to link it?`,
3428
3663
  noAccountId: 'No account ID found for the selected account. Please try again.',
3429
3664
  },
3430
3665
  projectLogsPrompt: {
@@ -3496,6 +3731,7 @@ export const lib = {
3496
3731
  invalidOauthClientSecretCopy: 'Please copy the actual OAuth2 client secret rather than the asterisks that mask it.',
3497
3732
  invalidPersonalAccessKey: 'You did not enter a valid access key. Please try again.',
3498
3733
  invalidPersonalAccessKeyCopy: 'Please copy the actual access key rather than the bullets that mask it.',
3734
+ authCancelled: 'Authentication cancelled.',
3499
3735
  },
3500
3736
  },
3501
3737
  createTemplatePrompt: {
@@ -3847,9 +4083,9 @@ export const lib = {
3847
4083
  validJson: 'JSON files valid',
3848
4084
  },
3849
4085
  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`,
4086
+ inUse: (port) => `Default port ${port} is in use`,
4087
+ inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}, or use ${uiCommandReference('--port')} to specify a different port`,
4088
+ available: (port) => `Default port ${port} available for local development`,
3853
4089
  },
3854
4090
  projectValidation: {
3855
4091
  valid: 'Project configuration and structure is valid',
@@ -3938,11 +4174,12 @@ export const lib = {
3938
4174
  fileInvalidJson: (path) => `The file "${path}" contains invalid JSON`,
3939
4175
  },
3940
4176
  migrate: {
3941
- componentsToBeMigrated: (components) => `The following features will be migrated: ${components}`,
4177
+ componentsToBeMigrated: (components) => `${chalk.bold('The following features will be migrated:')} ${components}`,
3942
4178
  componentsThatWillNotBeMigrated: (components) => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
4179
+ 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
4180
  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),
4181
+ projectMigrationWarningTitle: (platformVersion) => `Important: Migrating to platformVersion ${platformVersion} is irreversible`,
4182
+ 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
4183
  exitWithoutMigrating: 'Exiting without migrating',
3947
4184
  success: {
3948
4185
  downloadedProject: (projectName, projectDest) => `Saved ${projectName} to ${projectDest}`,
@@ -3954,7 +4191,7 @@ export const lib = {
3954
4191
  doesNotExist: (account) => `Project does not exist in ${uiAccountDescription(account)}. Migrations are only supported for existing projects.`,
3955
4192
  themesAlreadyMigrated: 'This project has already been migrated to the latest platform version.',
3956
4193
  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.',
4194
+ 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
4195
  multipleApps: 'Multiple apps found in project, this is not allowed in 2025.2',
3959
4196
  alreadyExists: (projectName) => `A project with name ${projectName} already exists. Please choose another name.`,
3960
4197
  failedToMigrateThemes: 'Failed to migrate project themes. Please verify that your themes are properly formatted before trying again.',
@@ -3999,4 +4236,14 @@ export const lib = {
3999
4236
  copyingProjectFilesFailed: 'Unable to copy migrated project files',
4000
4237
  },
4001
4238
  },
4239
+ theme: {
4240
+ cmsDevServerProcess: {
4241
+ installStarted: (targetVersion) => `Installing cms-dev-server ${targetVersion}...`,
4242
+ installSucceeded: 'cms-dev-server setup complete',
4243
+ installFailed: 'Failed to install cms-dev-server',
4244
+ serverStartError: (error) => `Failed to start dev server: ${error}`,
4245
+ serverExit: (code) => `Dev server exited with code ${code}`,
4246
+ serverKill: (signal) => `Dev server killed with signal ${signal}`,
4247
+ },
4248
+ },
4002
4249
  };
@@ -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
  }
@@ -0,0 +1,29 @@
1
+ export type ConfigType = 'local' | 'global';
2
+ export type ExecutionSource = 'ci' | 'mcp' | 'user';
3
+ export type UsageTrackingMeta = {
4
+ action?: string;
5
+ os?: string;
6
+ nodeVersion?: string;
7
+ nodeMajorVersion?: string;
8
+ version?: string;
9
+ command?: string;
10
+ authType?: string;
11
+ step?: string;
12
+ assetType?: string;
13
+ mode?: string;
14
+ type?: string | number;
15
+ file?: boolean;
16
+ successful?: boolean;
17
+ configType?: ConfigType;
18
+ executionSource?: ExecutionSource;
19
+ platformVersion?: string;
20
+ executionTime?: number;
21
+ };
22
+ export type UsageTrackingRequest = {
23
+ portalId?: number;
24
+ accountId?: number;
25
+ eventName: string;
26
+ eventClass: string;
27
+ meta: UsageTrackingMeta;
28
+ };
29
+ export declare function sendUsageEvent(request: UsageTrackingRequest): Promise<void>;