@hubspot/cli 8.2.0-beta.0 → 8.2.0-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) 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.d.ts +3 -1
  6. package/commands/account/auth.js +23 -7
  7. package/commands/account/clean.js +7 -6
  8. package/commands/account/createOverride.js +10 -7
  9. package/commands/account/info.js +36 -17
  10. package/commands/account/link.d.ts +4 -0
  11. package/commands/account/link.js +87 -0
  12. package/commands/account/list.js +32 -76
  13. package/commands/account/remove.js +4 -3
  14. package/commands/account/removeOverride.js +11 -10
  15. package/commands/account/rename.js +5 -6
  16. package/commands/account/unlink.d.ts +4 -0
  17. package/commands/account/unlink.js +68 -0
  18. package/commands/account/use.js +75 -6
  19. package/commands/account.js +4 -0
  20. package/commands/api.d.ts +10 -0
  21. package/commands/api.js +164 -0
  22. package/commands/app/logDetails.d.ts +9 -0
  23. package/commands/app/logDetails.js +86 -0
  24. package/commands/app/logs.d.ts +13 -0
  25. package/commands/app/logs.js +122 -0
  26. package/commands/app/migrate.js +13 -13
  27. package/commands/app/secret/add.js +6 -7
  28. package/commands/app/secret/delete.js +9 -10
  29. package/commands/app/secret/list.js +6 -7
  30. package/commands/app/secret/update.js +8 -9
  31. package/commands/app.js +8 -1
  32. package/commands/auth.js +20 -16
  33. package/commands/cms/app/create.js +9 -5
  34. package/commands/cms/convertFields.js +8 -8
  35. package/commands/cms/delete.js +2 -3
  36. package/commands/cms/fetch.js +7 -7
  37. package/commands/cms/function/create.js +9 -5
  38. package/commands/cms/function/deploy.js +2 -3
  39. package/commands/cms/function/list.js +11 -7
  40. package/commands/cms/function/logs.js +17 -23
  41. package/commands/cms/function/server.js +2 -3
  42. package/commands/cms/getReactModule.js +7 -8
  43. package/commands/cms/lighthouseScore.js +25 -24
  44. package/commands/cms/lint.js +4 -5
  45. package/commands/cms/list.js +5 -6
  46. package/commands/cms/module/create.js +15 -5
  47. package/commands/cms/module/marketplace-validate.js +7 -8
  48. package/commands/cms/mv.js +2 -3
  49. package/commands/cms/template/create.js +10 -6
  50. package/commands/cms/theme/create.js +5 -5
  51. package/commands/cms/theme/generate-selectors.js +5 -4
  52. package/commands/cms/theme/marketplace-validate.js +8 -9
  53. package/commands/cms/theme/preview.js +16 -8
  54. package/commands/cms/upload.js +15 -12
  55. package/commands/cms/watch.js +5 -5
  56. package/commands/cms/webpack/create.js +5 -5
  57. package/commands/completion.js +3 -5
  58. package/commands/config/migrate.js +6 -7
  59. package/commands/config/set.js +5 -6
  60. package/commands/customObject/create.js +4 -5
  61. package/commands/customObject/createSchema.js +4 -5
  62. package/commands/customObject/deleteSchema.js +4 -5
  63. package/commands/customObject/fetchAllSchemas.js +2 -3
  64. package/commands/customObject/fetchSchema.js +2 -3
  65. package/commands/customObject/listSchemas.js +2 -3
  66. package/commands/customObject/updateSchema.js +4 -5
  67. package/commands/doctor.js +8 -8
  68. package/commands/feedback.js +6 -4
  69. package/commands/filemanager/fetch.js +5 -6
  70. package/commands/filemanager/upload.js +5 -5
  71. package/commands/getStarted.js +17 -19
  72. package/commands/hubdb/clear.js +6 -3
  73. package/commands/hubdb/create.js +4 -5
  74. package/commands/hubdb/delete.js +9 -6
  75. package/commands/hubdb/fetch.js +6 -3
  76. package/commands/hubdb/list.js +16 -14
  77. package/commands/init.js +16 -15
  78. package/commands/mcp/setup.js +5 -6
  79. package/commands/mcp/start.js +2 -3
  80. package/commands/open.js +4 -5
  81. package/commands/project/add.js +13 -8
  82. package/commands/project/appInstallStatus.d.ts +4 -0
  83. package/commands/project/appInstallStatus.js +133 -0
  84. package/commands/project/create.js +28 -17
  85. package/commands/project/delete.d.ts +7 -0
  86. package/commands/project/delete.js +74 -0
  87. package/commands/project/deploy.js +39 -36
  88. package/commands/project/dev/deprecatedFlow.js +62 -17
  89. package/commands/project/dev/index.d.ts +3 -3
  90. package/commands/project/dev/index.js +59 -48
  91. package/commands/project/dev/unifiedFlow.js +70 -21
  92. package/commands/project/download.js +12 -9
  93. package/commands/project/info.d.ts +4 -0
  94. package/commands/project/info.js +68 -0
  95. package/commands/project/installDeps.js +9 -6
  96. package/commands/project/lint.js +43 -12
  97. package/commands/project/list.d.ts +2 -2
  98. package/commands/project/list.js +15 -14
  99. package/commands/project/listBuilds.js +8 -6
  100. package/commands/project/logs.js +5 -6
  101. package/commands/project/migrate.js +18 -18
  102. package/commands/project/open.js +5 -6
  103. package/commands/project/profile/add.js +12 -8
  104. package/commands/project/profile/delete.js +15 -11
  105. package/commands/project/release/create.d.ts +7 -0
  106. package/commands/project/release/create.js +159 -0
  107. package/commands/project/release/info.d.ts +6 -0
  108. package/commands/project/release/info.js +147 -0
  109. package/commands/project/release/list.d.ts +6 -0
  110. package/commands/project/release/list.js +111 -0
  111. package/commands/project/release.d.ts +3 -0
  112. package/commands/project/release.js +20 -0
  113. package/commands/project/updateDeps.js +9 -6
  114. package/commands/project/upload.d.ts +3 -0
  115. package/commands/project/upload.js +107 -25
  116. package/commands/project/validate.js +12 -12
  117. package/commands/project/watch.js +22 -22
  118. package/commands/project.js +14 -3
  119. package/commands/sandbox/create.js +18 -45
  120. package/commands/sandbox/delete.js +13 -14
  121. package/commands/secret/addSecret.js +6 -7
  122. package/commands/secret/deleteSecret.js +5 -6
  123. package/commands/secret/listSecret.js +2 -3
  124. package/commands/secret/updateSecret.js +4 -5
  125. package/commands/testAccount/create.d.ts +1 -1
  126. package/commands/testAccount/create.js +25 -17
  127. package/commands/testAccount/createConfig.js +7 -8
  128. package/commands/testAccount/delete.js +27 -18
  129. package/commands/testAccount/importData.js +6 -7
  130. package/commands/upgrade.js +9 -10
  131. package/lang/en.d.ts +441 -9
  132. package/lang/en.js +456 -22
  133. package/lib/CLIWebSocketServer.d.ts +5 -3
  134. package/lib/CLIWebSocketServer.js +31 -4
  135. package/lib/accountAuth.d.ts +3 -1
  136. package/lib/accountAuth.js +47 -17
  137. package/lib/api/usageTracking.d.ts +30 -0
  138. package/lib/api/usageTracking.js +11 -0
  139. package/lib/app/logs.d.ts +38 -0
  140. package/lib/app/logs.js +225 -0
  141. package/lib/app/migrate.js +18 -5
  142. package/lib/app/urls.d.ts +2 -0
  143. package/lib/app/urls.js +7 -0
  144. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.d.ts +4 -0
  145. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.js +145 -0
  146. package/lib/buildAccount.d.ts +1 -6
  147. package/lib/buildAccount.js +10 -43
  148. package/lib/commonOpts.js +0 -1
  149. package/lib/constants.d.ts +10 -3
  150. package/lib/constants.js +12 -3
  151. package/lib/doctor/Diagnosis.js +5 -5
  152. package/lib/doctor/Doctor.js +7 -7
  153. package/lib/errorHandlers/index.js +4 -3
  154. package/lib/errorHandlers/suppressError.js +4 -0
  155. package/lib/errors/PromptExitError.d.ts +6 -0
  156. package/lib/errors/PromptExitError.js +11 -0
  157. package/lib/getStartedV2Actions.js +3 -3
  158. package/lib/hasFeature.js +1 -2
  159. package/lib/link/accountTableUtils.d.ts +10 -0
  160. package/lib/link/accountTableUtils.js +39 -0
  161. package/lib/link/index.d.ts +18 -0
  162. package/lib/link/index.js +185 -0
  163. package/lib/link/linkUtils.d.ts +5 -0
  164. package/lib/link/linkUtils.js +49 -0
  165. package/lib/link/prompts.d.ts +7 -0
  166. package/lib/link/prompts.js +126 -0
  167. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  168. package/lib/link/renderLinkedAccountsTable.js +14 -0
  169. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  170. package/lib/link/warnIfLinkedDirectory.js +9 -0
  171. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  172. package/lib/middleware/commandTargetingUtils.js +1 -0
  173. package/lib/process.d.ts +1 -1
  174. package/lib/process.js +10 -3
  175. package/lib/projects/ProjectLogsManager.js +6 -3
  176. package/lib/projects/components.js +15 -4
  177. package/lib/projects/create/index.js +2 -2
  178. package/lib/projects/create/legacy.js +2 -2
  179. package/lib/projects/create/v2.js +4 -5
  180. package/lib/projects/delete.d.ts +13 -0
  181. package/lib/projects/delete.js +193 -0
  182. package/lib/projects/deploy.d.ts +1 -1
  183. package/lib/projects/deploy.js +2 -2
  184. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  185. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  186. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  187. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  188. package/lib/projects/localDev/DevSessionManager.js +31 -19
  189. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  190. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  191. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  192. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  193. package/lib/projects/localDev/LocalDevState.js +3 -1
  194. package/lib/projects/localDev/LocalDevWebsocketServer.js +1 -1
  195. package/lib/projects/localDev/UIExtensionsDevModeInterface.js +2 -0
  196. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  197. package/lib/projects/localDev/helpers/account.js +21 -30
  198. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  199. package/lib/projects/localDev/helpers/process.js +4 -10
  200. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  201. package/lib/projects/localDev/helpers/project.js +32 -16
  202. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  203. package/lib/projects/npmAuditOnUpload.js +73 -0
  204. package/lib/projects/pollProjectBuildAndDeploy.d.ts +5 -1
  205. package/lib/projects/pollProjectBuildAndDeploy.js +3 -2
  206. package/lib/projects/preview.d.ts +7 -0
  207. package/lib/projects/preview.js +48 -0
  208. package/lib/projects/projectInfo.d.ts +5 -0
  209. package/lib/projects/projectInfo.js +82 -0
  210. package/lib/projects/projectProfiles.d.ts +1 -2
  211. package/lib/projects/projectProfiles.js +5 -17
  212. package/lib/projects/uieLinting.d.ts +21 -3
  213. package/lib/projects/uieLinting.js +132 -28
  214. package/lib/projects/upload.d.ts +3 -1
  215. package/lib/projects/upload.js +46 -7
  216. package/lib/projects/validateLintConfigOnUpload.d.ts +9 -0
  217. package/lib/projects/validateLintConfigOnUpload.js +45 -0
  218. package/lib/projects/workspaces.d.ts +60 -0
  219. package/lib/projects/workspaces.js +411 -0
  220. package/lib/prompts/createApiSamplePrompt.js +4 -0
  221. package/lib/prompts/downloadProjectPrompt.js +11 -10
  222. package/lib/prompts/installAppPrompt.js +3 -2
  223. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -5
  224. package/lib/prompts/personalAccessKeyPrompt.js +10 -7
  225. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  226. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  227. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  228. package/lib/prompts/projectProfilePrompt.js +46 -0
  229. package/lib/prompts/projectsLogsPrompt.js +3 -0
  230. package/lib/prompts/promptUtils.js +4 -2
  231. package/lib/prompts/selectAppPrompt.js +1 -0
  232. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  233. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  234. package/lib/prompts/setAsDefaultAccountPrompt.js +2 -1
  235. package/lib/sandboxes.d.ts +1 -9
  236. package/lib/sandboxes.js +0 -21
  237. package/lib/serverlessLogs.js +2 -2
  238. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  239. package/lib/theme/cmsDevServerProcess.js +8 -7
  240. package/lib/theme/migrate.d.ts +1 -1
  241. package/lib/theme/migrate.js +1 -5
  242. package/lib/ui/SpinniesManager.d.ts +1 -0
  243. package/lib/ui/SpinniesManager.js +22 -6
  244. package/lib/ui/accountTable.d.ts +8 -0
  245. package/lib/ui/accountTable.js +67 -0
  246. package/lib/ui/appLogs.d.ts +32 -0
  247. package/lib/ui/appLogs.js +175 -0
  248. package/lib/ui/spinniesUtils.d.ts +0 -1
  249. package/lib/ui/spinniesUtils.js +6 -16
  250. package/lib/usageTracking.d.ts +9 -20
  251. package/lib/usageTracking.js +68 -30
  252. package/lib/yargs/makeWrappedYargsHandler.d.ts +3 -0
  253. package/lib/yargs/makeWrappedYargsHandler.js +121 -0
  254. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  255. package/lib/yargs/makeYargsBuilder.js +33 -0
  256. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  257. package/lib/yargs/parseYargsOrExit.js +25 -0
  258. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  259. package/lib/yargs/strictEnforceBoolean.js +13 -0
  260. package/lib/yargsUtils.d.ts +3 -16
  261. package/lib/yargsUtils.js +3 -48
  262. package/mcp-server/Tool.d.ts +15 -0
  263. package/mcp-server/Tool.js +53 -0
  264. package/mcp-server/server.js +43 -3
  265. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  266. package/mcp-server/tools/cms/HsCreateFunctionTool.js +10 -8
  267. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  268. package/mcp-server/tools/cms/HsCreateModuleTool.js +12 -11
  269. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  270. package/mcp-server/tools/cms/HsCreateTemplateTool.js +10 -8
  271. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  272. package/mcp-server/tools/cms/HsFunctionLogsTool.js +10 -9
  273. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  274. package/mcp-server/tools/cms/HsListFunctionsTool.js +10 -9
  275. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  276. package/mcp-server/tools/cms/HsListTool.js +10 -8
  277. package/mcp-server/tools/index.d.ts +3 -2
  278. package/mcp-server/tools/index.js +24 -22
  279. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +6 -3
  280. package/mcp-server/tools/project/AddFeatureToProjectTool.js +9 -7
  281. package/mcp-server/tools/project/CreateProjectTool.d.ts +6 -3
  282. package/mcp-server/tools/project/CreateProjectTool.js +10 -7
  283. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  284. package/mcp-server/tools/project/CreateTestAccountTool.js +21 -9
  285. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  286. package/mcp-server/tools/project/DeployProjectTool.js +5 -7
  287. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  288. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  289. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  290. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  291. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  292. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  293. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  294. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +8 -6
  295. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  296. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  297. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +4 -2
  298. package/mcp-server/tools/project/GetBuildLogsTool.js +9 -7
  299. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +4 -2
  300. package/mcp-server/tools/project/GetBuildStatusTool.js +9 -7
  301. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  302. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  303. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +4 -2
  304. package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -6
  305. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  306. package/mcp-server/tools/project/UploadProjectTools.js +10 -8
  307. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  308. package/mcp-server/tools/project/ValidateProjectTool.js +9 -7
  309. package/mcp-server/tools/project/constants.d.ts +2 -1
  310. package/mcp-server/tools/project/constants.js +2 -1
  311. package/mcp-server/types.d.ts +0 -7
  312. package/mcp-server/types.js +1 -13
  313. package/mcp-server/utils/command.js +3 -1
  314. package/mcp-server/utils/config.js +1 -0
  315. package/mcp-server/utils/logger.d.ts +10 -0
  316. package/mcp-server/utils/logger.js +29 -0
  317. package/mcp-server/utils/toolUsageTracking.js +10 -8
  318. package/package.json +16 -11
  319. package/types/Link.d.ts +32 -0
  320. package/types/Link.js +5 -0
  321. package/types/LocalDev.d.ts +5 -0
  322. package/types/PackageJson.d.ts +1 -0
  323. package/types/Projects.d.ts +19 -0
  324. package/types/Prompts.d.ts +1 -0
  325. package/types/Yargs.d.ts +19 -1
  326. package/ui/components/ActionSection.d.ts +1 -1
  327. package/ui/components/InputField.d.ts +1 -1
  328. package/ui/components/SelectInput.d.ts +1 -1
  329. package/ui/components/StatusIcon.d.ts +1 -1
  330. package/ui/components/Table.d.ts +5 -5
  331. package/ui/components/getStarted/GetStartedFlow.d.ts +1 -1
  332. package/ui/components/getStarted/screens/InstallationScreen.d.ts +1 -1
  333. package/ui/components/getStarted/screens/ProjectSetupScreen.d.ts +1 -1
  334. package/ui/components/getStarted/screens/UploadScreen.d.ts +1 -1
  335. package/api/__tests__/migrate.test.d.ts +0 -1
  336. package/api/__tests__/migrate.test.js +0 -199
  337. package/commands/__tests__/account.test.d.ts +0 -1
  338. package/commands/__tests__/account.test.js +0 -69
  339. package/commands/__tests__/auth.test.d.ts +0 -1
  340. package/commands/__tests__/auth.test.js +0 -43
  341. package/commands/__tests__/cms.test.d.ts +0 -1
  342. package/commands/__tests__/cms.test.js +0 -87
  343. package/commands/__tests__/config.test.d.ts +0 -1
  344. package/commands/__tests__/config.test.js +0 -44
  345. package/commands/__tests__/customObject.test.d.ts +0 -1
  346. package/commands/__tests__/customObject.test.js +0 -68
  347. package/commands/__tests__/doctor.test.d.ts +0 -1
  348. package/commands/__tests__/doctor.test.js +0 -132
  349. package/commands/__tests__/feedback.test.d.ts +0 -1
  350. package/commands/__tests__/feedback.test.js +0 -24
  351. package/commands/__tests__/filemanager.test.d.ts +0 -1
  352. package/commands/__tests__/filemanager.test.js +0 -45
  353. package/commands/__tests__/getStarted.test.d.ts +0 -1
  354. package/commands/__tests__/getStarted.test.js +0 -173
  355. package/commands/__tests__/hubdb.test.d.ts +0 -1
  356. package/commands/__tests__/hubdb.test.js +0 -50
  357. package/commands/__tests__/init.test.d.ts +0 -1
  358. package/commands/__tests__/init.test.js +0 -42
  359. package/commands/__tests__/mcp.test.d.ts +0 -1
  360. package/commands/__tests__/mcp.test.js +0 -46
  361. package/commands/__tests__/open.test.d.ts +0 -1
  362. package/commands/__tests__/open.test.js +0 -58
  363. package/commands/__tests__/project.test.d.ts +0 -1
  364. package/commands/__tests__/project.test.js +0 -125
  365. package/commands/__tests__/sandbox.test.d.ts +0 -1
  366. package/commands/__tests__/sandbox.test.js +0 -44
  367. package/commands/__tests__/secret.test.d.ts +0 -1
  368. package/commands/__tests__/secret.test.js +0 -49
  369. package/commands/__tests__/testAccount.test.d.ts +0 -1
  370. package/commands/__tests__/testAccount.test.js +0 -57
  371. package/commands/__tests__/upgrade.test.d.ts +0 -1
  372. package/commands/__tests__/upgrade.test.js +0 -309
  373. package/commands/account/__tests__/auth.test.d.ts +0 -1
  374. package/commands/account/__tests__/auth.test.js +0 -206
  375. package/commands/account/__tests__/clean.test.d.ts +0 -1
  376. package/commands/account/__tests__/clean.test.js +0 -28
  377. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  378. package/commands/account/__tests__/createOverride.test.js +0 -32
  379. package/commands/account/__tests__/info.test.d.ts +0 -1
  380. package/commands/account/__tests__/info.test.js +0 -28
  381. package/commands/account/__tests__/list.test.d.ts +0 -1
  382. package/commands/account/__tests__/list.test.js +0 -153
  383. package/commands/account/__tests__/remove.test.d.ts +0 -1
  384. package/commands/account/__tests__/remove.test.js +0 -36
  385. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  386. package/commands/account/__tests__/removeOverride.js +0 -25
  387. package/commands/account/__tests__/rename.test.d.ts +0 -1
  388. package/commands/account/__tests__/rename.test.js +0 -82
  389. package/commands/account/__tests__/use.test.d.ts +0 -1
  390. package/commands/account/__tests__/use.test.js +0 -170
  391. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  392. package/commands/app/__tests__/migrate.test.js +0 -111
  393. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  394. package/commands/app/secret/__tests__/add.test.js +0 -140
  395. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  396. package/commands/app/secret/__tests__/delete.test.js +0 -28
  397. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  398. package/commands/app/secret/__tests__/list.test.js +0 -25
  399. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  400. package/commands/app/secret/__tests__/update.test.js +0 -28
  401. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  402. package/commands/cms/__tests__/delete.test.js +0 -39
  403. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  404. package/commands/cms/__tests__/fetch.test.js +0 -156
  405. package/commands/cms/__tests__/function.test.d.ts +0 -1
  406. package/commands/cms/__tests__/function.test.js +0 -50
  407. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  408. package/commands/cms/__tests__/lint.test.js +0 -33
  409. package/commands/cms/__tests__/list.test.d.ts +0 -1
  410. package/commands/cms/__tests__/list.test.js +0 -42
  411. package/commands/cms/__tests__/module.test.d.ts +0 -1
  412. package/commands/cms/__tests__/module.test.js +0 -45
  413. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  414. package/commands/cms/__tests__/mv.test.js +0 -46
  415. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  416. package/commands/cms/__tests__/theme.test.js +0 -54
  417. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  418. package/commands/cms/__tests__/upload.test.js +0 -308
  419. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  420. package/commands/cms/__tests__/watch.test.js +0 -204
  421. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  422. package/commands/cms/function/__tests__/logs.test.js +0 -70
  423. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  424. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  425. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  426. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  427. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  428. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  429. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  430. package/commands/customObject/__tests__/create.test.js +0 -40
  431. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  432. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  433. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  434. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  435. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  436. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  437. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  438. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  439. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  440. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  441. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  442. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  443. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  444. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  445. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  446. package/commands/filemanager/__tests__/upload.test.js +0 -191
  447. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  448. package/commands/hubdb/__tests__/clear.test.js +0 -28
  449. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  450. package/commands/hubdb/__tests__/create.test.js +0 -28
  451. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  452. package/commands/hubdb/__tests__/delete.test.js +0 -28
  453. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  454. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  455. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  456. package/commands/hubdb/__tests__/list.test.js +0 -88
  457. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  458. package/commands/mcp/__tests__/setup.test.js +0 -26
  459. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  460. package/commands/mcp/__tests__/start.test.js +0 -144
  461. package/commands/project/__tests__/add.test.d.ts +0 -1
  462. package/commands/project/__tests__/add.test.js +0 -107
  463. package/commands/project/__tests__/create.test.d.ts +0 -1
  464. package/commands/project/__tests__/create.test.js +0 -97
  465. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  466. package/commands/project/__tests__/deploy.test.js +0 -307
  467. package/commands/project/__tests__/dev.test.d.ts +0 -1
  468. package/commands/project/__tests__/dev.test.js +0 -273
  469. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  470. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  471. package/commands/project/__tests__/download.test.d.ts +0 -1
  472. package/commands/project/__tests__/download.test.js +0 -39
  473. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  474. package/commands/project/__tests__/installDeps.test.js +0 -140
  475. package/commands/project/__tests__/lint.test.d.ts +0 -1
  476. package/commands/project/__tests__/lint.test.js +0 -704
  477. package/commands/project/__tests__/list.test.d.ts +0 -1
  478. package/commands/project/__tests__/list.test.js +0 -31
  479. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  480. package/commands/project/__tests__/listBuilds.test.js +0 -38
  481. package/commands/project/__tests__/logs.test.d.ts +0 -1
  482. package/commands/project/__tests__/logs.test.js +0 -202
  483. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  484. package/commands/project/__tests__/migrate.test.js +0 -106
  485. package/commands/project/__tests__/open.test.d.ts +0 -1
  486. package/commands/project/__tests__/open.test.js +0 -39
  487. package/commands/project/__tests__/profile.test.d.ts +0 -1
  488. package/commands/project/__tests__/profile.test.js +0 -42
  489. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  490. package/commands/project/__tests__/updateDeps.test.js +0 -140
  491. package/commands/project/__tests__/upload.test.d.ts +0 -1
  492. package/commands/project/__tests__/upload.test.js +0 -234
  493. package/commands/project/__tests__/validate.test.d.ts +0 -1
  494. package/commands/project/__tests__/validate.test.js +0 -381
  495. package/commands/project/__tests__/watch.test.d.ts +0 -1
  496. package/commands/project/__tests__/watch.test.js +0 -35
  497. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  498. package/commands/sandbox/__tests__/create.test.js +0 -245
  499. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  500. package/commands/sandbox/__tests__/delete.test.js +0 -31
  501. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  502. package/commands/secret/__tests__/addSecret.test.js +0 -162
  503. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  504. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  505. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  506. package/commands/secret/__tests__/listSecret.test.js +0 -29
  507. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  508. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  509. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  510. package/commands/testAccount/__tests__/create.test.js +0 -106
  511. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  512. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  513. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  514. package/commands/testAccount/__tests__/delete.test.js +0 -29
  515. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  516. package/commands/testAccount/__tests__/importData.test.js +0 -92
  517. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  518. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  519. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  520. package/lib/__tests__/accountAuth.test.js +0 -258
  521. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  522. package/lib/__tests__/accountTypes.test.js +0 -98
  523. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  524. package/lib/__tests__/buildAccount.test.js +0 -262
  525. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  526. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  527. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  528. package/lib/__tests__/commandSuggestion.test.js +0 -121
  529. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  530. package/lib/__tests__/commonOpts.test.js +0 -80
  531. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  532. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  533. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  534. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  535. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  536. package/lib/__tests__/hasFeature.test.js +0 -167
  537. package/lib/__tests__/http.test.d.ts +0 -1
  538. package/lib/__tests__/http.test.js +0 -40
  539. package/lib/__tests__/importData.test.d.ts +0 -1
  540. package/lib/__tests__/importData.test.js +0 -98
  541. package/lib/__tests__/npmCli.test.d.ts +0 -1
  542. package/lib/__tests__/npmCli.test.js +0 -84
  543. package/lib/__tests__/oauth.test.d.ts +0 -1
  544. package/lib/__tests__/oauth.test.js +0 -109
  545. package/lib/__tests__/parsing.test.d.ts +0 -1
  546. package/lib/__tests__/parsing.test.js +0 -34
  547. package/lib/__tests__/polling.test.d.ts +0 -1
  548. package/lib/__tests__/polling.test.js +0 -76
  549. package/lib/__tests__/process.test.d.ts +0 -1
  550. package/lib/__tests__/process.test.js +0 -89
  551. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  552. package/lib/__tests__/sandboxSync.test.js +0 -147
  553. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  554. package/lib/__tests__/sandboxes.test.js +0 -156
  555. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  556. package/lib/__tests__/serverlessLogs.test.js +0 -163
  557. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  558. package/lib/__tests__/usageTracking.test.js +0 -197
  559. package/lib/__tests__/validation.test.d.ts +0 -1
  560. package/lib/__tests__/validation.test.js +0 -143
  561. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  562. package/lib/__tests__/yargsUtils.test.js +0 -124
  563. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  564. package/lib/app/__tests__/migrate.test.js +0 -638
  565. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  566. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  567. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  568. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  569. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  570. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  571. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  572. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  573. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  574. package/lib/mcp/__tests__/setup.test.js +0 -523
  575. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  576. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  577. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  578. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  579. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  580. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  581. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  582. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  583. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  584. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  585. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  586. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  587. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  588. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  589. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  590. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  591. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  592. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  593. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  594. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  595. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  596. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  597. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  598. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  599. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  600. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  601. package/lib/projects/__tests__/components.test.d.ts +0 -1
  602. package/lib/projects/__tests__/components.test.js +0 -426
  603. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  604. package/lib/projects/__tests__/deploy.test.js +0 -231
  605. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  606. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  607. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  608. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  609. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  610. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  611. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  612. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  613. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  614. package/lib/projects/__tests__/projects.test.js +0 -58
  615. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  616. package/lib/projects/__tests__/structure.test.js +0 -210
  617. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  618. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  619. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  620. package/lib/projects/__tests__/upload.test.js +0 -183
  621. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  622. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  623. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  624. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  625. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  626. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  627. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  628. package/lib/projects/create/__tests__/v2.test.js +0 -257
  629. package/lib/projects/platformVersion.d.ts +0 -9
  630. package/lib/projects/platformVersion.js +0 -39
  631. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  632. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  633. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  634. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  635. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  636. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  637. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  638. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  639. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  640. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  641. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  642. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  643. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  644. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  645. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  646. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  647. package/lib/sandboxSync.d.ts +0 -4
  648. package/lib/sandboxSync.js +0 -102
  649. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  650. package/lib/theme/__tests__/migrate.test.js +0 -256
  651. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  652. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  653. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  654. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  655. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  656. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  657. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  658. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  659. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  660. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  661. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  662. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  663. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  664. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  665. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  666. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  667. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  668. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  669. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  670. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -132
  671. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  672. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  673. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  674. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  675. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  676. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  677. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  678. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  679. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  680. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  681. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  682. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  683. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  684. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  685. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  686. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  687. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  688. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  689. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  690. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  691. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  692. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  693. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  694. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  695. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  696. package/mcp-server/utils/__tests__/command.test.js +0 -275
  697. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  698. package/mcp-server/utils/__tests__/content.test.js +0 -164
  699. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  700. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
package/lang/en.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import chalk from 'chalk';
2
2
  import { mapToUserFriendlyName } from '@hubspot/project-parsing-lib/transform';
3
- import { PLATFORM_VERSIONS } from '@hubspot/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 { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, LEGACY_PUBLIC_APP_FILE, LOCAL_DEV_DEFAULT_PORT, PROJECT_CONFIG_FILE, PROJECT_WITH_APP, } from '../lib/constants.js';
6
+ import { ARCHIVED_HUBSPOT_CONFIG_YAML_FILE_NAME, DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, GLOBAL_CONFIG_PATH, } from '@hubspot/local-dev-lib/constants/config';
7
+ import { indent, UI_COLORS, uiAccountDescription, uiAuthCommandReference, uiBetaTag, uiCommandReference, uiLink, } from '../lib/ui/index.js';
8
+ import { getLocalDevUiUrl, getProjectDetailUrl, getProjectSettingsUrl, } from '../lib/projects/urls.js';
8
9
  import { getProductUpdatesUrl } from '../lib/links.js';
9
- import { APP_DISTRIBUTION_TYPES, APP_AUTH_TYPES, PROJECT_CONFIG_FILE, PROJECT_WITH_APP, LEGACY_PUBLIC_APP_FILE, } from '../lib/constants.js';
10
10
  export const commands = {
11
11
  generalErrors: {
12
12
  srcIsProject: (src, command) => `"${src}" is in a project folder. Did you mean "hs project ${command}"?`,
@@ -123,6 +123,9 @@ export const commands = {
123
123
  options: {
124
124
  account: 'HubSpot account to authenticate',
125
125
  personalAccessKey: 'Enter existing personal access key',
126
+ default: 'Set the authenticated account as the default account',
127
+ name: 'Set a name for the account in the CLI config',
128
+ useDefaultName: 'Use the account name derived from the HubSpot portal name',
126
129
  },
127
130
  errors: {
128
131
  invalidAccountIdProvided: `--account must be a number.`,
@@ -137,8 +140,12 @@ export const commands = {
137
140
  },
138
141
  list: {
139
142
  accounts: `${chalk.bold('Accounts')}:`,
143
+ allAccounts: `${chalk.bold('All Accounts')}:`,
144
+ linkedAccounts: `${chalk.bold('Linked Accounts')}:`,
140
145
  defaultAccountTitle: `${chalk.bold('Default Account')}`,
146
+ linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
141
147
  currentResolvedDefaultAccount: (accountId) => `Account: ${uiAccountDescription(accountId)}`,
148
+ directory: (dir) => `Directory: ${dir}`,
142
149
  describe: 'List names of accounts defined in config.',
143
150
  configPath: (configPath) => `Source: ${configPath}`,
144
151
  overrideFilePathTitle: `${chalk.bold('Default Account Override')}`,
@@ -185,6 +192,70 @@ export const commands = {
185
192
  success: {
186
193
  defaultAccountUpdated: (accountName) => `Default account updated to "${accountName}"`,
187
194
  },
195
+ linked: {
196
+ editingLinkedDefault: (dir) => `Editing the default linked account for this directory (not the global default):\n${indent(1)}${dir}`,
197
+ alreadyDefault: (accountId) => `${uiAccountDescription(accountId)} is the only linked account and is already the default.`,
198
+ setLinkedDefault: (account) => `Linked default set to ${chalk.cyan(account)}`,
199
+ accountNotLinked: (account) => `${account} is not linked to this directory.`,
200
+ promptToLink: (account) => `Would you like to link ${account} to this directory?`,
201
+ settingGlobalDefault: 'Setting global default instead.',
202
+ nonInteractiveNotLinked: (account) => `${account} is not linked to this directory. Setting global default instead.`,
203
+ },
204
+ },
205
+ link: {
206
+ describe: 'Link authenticated HubSpot accounts to the current directory',
207
+ verboseDescribe: `Link one or more authenticated HubSpot accounts to the current directory. Linked accounts are saved in a local ${chalk.bold('.hs/settings.json')} file (added to .gitignore automatically).\n\nThis lets the CLI know which account to use when you run commands from this directory, without changing the global default. Run ${uiCommandReference('hs account current')} to see the active configuration.`,
208
+ shared: {
209
+ noLinkedAccounts: 'No HubSpot accounts are linked in this directory.',
210
+ globalAccountsAvailable: (count) => `You have ${chalk.cyan(count.toString())} ${count === 1 ? 'account' : 'accounts'} in your global config.`,
211
+ configurePrompt: `To configure this directory, run:\n${indent(1)}${uiCommandReference('hs account link')}`,
212
+ deprecatedConfigNotSupported: (command) => `${uiCommandReference(command)} does not support deprecated config. Run ${uiCommandReference('hs config migrate')} to migrate to global config. Then re-run ${uiCommandReference(command)}`,
213
+ writeSettingsFailed: (path, err) => `Failed to write to ${path}: ${err}`,
214
+ savedToSettings: (path) => `Saved to ${path}`,
215
+ usingLinkedAccounts: (settingsPath) => `This directory has linked accounts via ${settingsPath}. Only linked accounts will be available for this command. To manage linked accounts, run ${uiCommandReference('hs account link')}.`,
216
+ accountAutoLinked: (accountId) => `Automatically linked ${uiAccountDescription(accountId)} to this directory.`,
217
+ accountAutoLinkFailed: (accountId) => `Could not automatically link ${uiAccountDescription(accountId)} to this directory. Run ${uiCommandReference('hs account link')} to link it manually.`,
218
+ },
219
+ linkingDirectory: (dir) => `Linking HubSpot account(s) for directory:\n${indent(1)}${dir}`,
220
+ managingLinkedAccounts: (dir) => `Managing linked accounts for:\n${indent(1)}${dir}`,
221
+ settingsInfo: (path) => `\u2139 Accounts linked here are saved in ${path}`,
222
+ success: {
223
+ created: (path) => `Linked to ${path} (created .hs and added to .gitignore).\n${indent(1)}Now when you work within this directory, the CLI will use the linked account(s).`,
224
+ },
225
+ errors: {
226
+ authFailed: `Authentication failed to complete`,
227
+ },
228
+ events: {
229
+ accountsLinked: (count) => `Linked ${count} account${count !== 1 ? 's' : ''}`,
230
+ accountsUnlinked: (count) => `Unlinked ${count} account${count !== 1 ? 's' : ''}`,
231
+ overrideAccountDetected: (accountId) => `\nCurrent default account (from .hsaccount):\n${indent(1)}${uiAccountDescription(accountId)}`,
232
+ defaultAccountSet: (accountId) => `Linked default account set to ${chalk.cyan(uiAccountDescription(accountId))}`,
233
+ defaultAccountRemoved: (isSelectionRequired) => `The linked default account was removed. ${isSelectionRequired ? 'A linked default account is required.\n' : ''}`,
234
+ defaultAccountRemains: (accountId) => `Linked default account remains ${chalk.cyan(uiAccountDescription(accountId))}`,
235
+ updatedLinkedAccounts: 'Updated linked accounts',
236
+ noAccountsLinked: `All accounts have been unlinked. Your global config accounts will be used.\n${indent(1)}The ${chalk.bold('.hs')} directory is no longer needed and can be safely deleted.`,
237
+ overrideFileRemoved: '.hsaccount file removed',
238
+ invalidDefaultAccount: (accountId) => `Default account ${uiAccountDescription(accountId)} is not in the linked accounts list and has been reset. Please select a new default.`,
239
+ },
240
+ prompts: {
241
+ howToProceed: 'How would you like to link an account?',
242
+ whatToDo: 'Which action would you like to perform?',
243
+ linkExisting: 'Link existing authenticated account(s)',
244
+ authenticateNew: 'Authenticate and link a new account',
245
+ cancel: 'Cancel',
246
+ selectDefault: 'Select a linked default account',
247
+ selectToLink: 'Select authenticated account(s) to link:',
248
+ selectToUnlink: 'Select account(s) to unlink',
249
+ alreadyLinked: '- Already linked',
250
+ fromHsAccount: '(from .hsaccount)',
251
+ newlyAuthenticated: '(just authenticated)',
252
+ mustSelectOne: 'You must select at least one account to link',
253
+ keepAsDefault: 'Keep this as the default?',
254
+ },
255
+ },
256
+ unlink: {
257
+ describe: 'Unlink HubSpot account(s) from the current directory',
258
+ verboseDescribe: `Remove one or more linked accounts from this directory's ${chalk.bold('.hs/settings.json')}. If the default account is removed, you will be prompted to select a new one.\n\nThis does not delete the account from the global config - it only removes the local association.`,
188
259
  },
189
260
  remove: {
190
261
  describe: 'Remove an account from the config.',
@@ -253,6 +324,9 @@ export const commands = {
253
324
  },
254
325
  name: (name) => `${chalk.bold('Account name')}: ${name}`,
255
326
  scopeGroups: `${chalk.bold('Scopes available')}:`,
327
+ linkedDefaultTitle: `${chalk.bold('Linked Default Account')}`,
328
+ settingsPath: (path) => `Source: ${path}`,
329
+ linkedDefault: (account) => `Account: ${account}`,
256
330
  },
257
331
  clean: {
258
332
  describe: 'Check for inactive accounts and removes them from the CLI config.',
@@ -1320,6 +1394,30 @@ export const commands = {
1320
1394
  shuttingDown: 'Shutting down MCP server...',
1321
1395
  },
1322
1396
  },
1397
+ api: {
1398
+ describe: 'Make an authenticated HTTP request to any HubSpot API endpoint that supports PAKs.',
1399
+ 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')}`,
1400
+ positionals: {
1401
+ endpoint: {
1402
+ describe: 'API endpoint path (e.g. /crm/v3/objects/contacts)',
1403
+ },
1404
+ },
1405
+ options: {
1406
+ method: {
1407
+ describe: 'HTTP method to use. Defaults to GET, or POST if --data is provided',
1408
+ },
1409
+ data: {
1410
+ describe: 'JSON-formatted request body for POST, PUT, and PATCH requests',
1411
+ },
1412
+ },
1413
+ requestLog: (method, url) => `${chalk.bold(method)} ${url}`,
1414
+ requestBodyLog: (body) => `Request body: ${body}`,
1415
+ responseLog: 'Response:',
1416
+ errors: {
1417
+ invalidJson: 'The value passed to --data is not valid JSON. Please provide a valid JSON string.',
1418
+ statusLine: (status, statusText) => `${chalk.red(`${status} ${statusText}`)}`,
1419
+ },
1420
+ },
1323
1421
  open: {
1324
1422
  describe: 'Open a HubSpot page in your browser.',
1325
1423
  options: {
@@ -1361,6 +1459,7 @@ export const commands = {
1361
1459
  },
1362
1460
  errors: {
1363
1461
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1462
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1364
1463
  profileExists: (profileName) => `Profile ${chalk.bold(profileName)} already exists. Please choose a different name.`,
1365
1464
  invalidTargetAccount: 'Target account is not configured in the CLI',
1366
1465
  noAccountsConfigured: 'No accounts configured in the CLI',
@@ -1391,6 +1490,7 @@ export const commands = {
1391
1490
  },
1392
1491
  errors: {
1393
1492
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
1493
+ unsupportedPlatformVersion: 'This command is only available for projects 2025.2 and later.',
1394
1494
  noProfileFound: (profileName) => `No profile with filename ${chalk.bold(profileName)} found in your project.`,
1395
1495
  noProfilesFound: 'No profiles found in your project.',
1396
1496
  failedToDeleteProfile: (profileName) => `Unable to delete profile ${chalk.bold(profileName)}. Please try again.`,
@@ -1424,7 +1524,7 @@ export const commands = {
1424
1524
  noRunnableComponents: `No supported components were found in this project. Run ${uiCommandReference('hs project add')} to see a list of available components and add one to your project.`,
1425
1525
  accountNotCombined: `\nLocal development of unified apps is currently only compatible with accounts that are opted into the unified apps beta. Make sure that this account is opted in or switch accounts using ${uiCommandReference('hs account use')}.`,
1426
1526
  unsupportedAccountFlagLegacy: 'The --project-account and --testing-account flags are not supported for projects with platform versions earlier than 2025.2.',
1427
- unsupportedAccountFlagV2: 'The --account flag is is not supported supported for projects with platform versions 2025.2 and newer. Use --testing-account and --project-account flags to specify accounts to use for local dev',
1527
+ 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',
1428
1528
  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')}.`,
1429
1529
  },
1430
1530
  examples: {
@@ -1438,6 +1538,7 @@ export const commands = {
1438
1538
  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.',
1439
1539
  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.',
1440
1540
  account: 'The id of the account to upload your project to. Unsupported on platform versions 2025.2 and newer.',
1541
+ port: `The port for the local dev server. Defaults to ${LOCAL_DEV_DEFAULT_PORT}.`,
1441
1542
  },
1442
1543
  },
1443
1544
  create: {
@@ -1448,6 +1549,9 @@ export const commands = {
1448
1549
  failedToFetchProjectList: 'Failed to fetch the list of available project templates. Please try again later.',
1449
1550
  cannotNestProjects: (projectDir) => `A project already exists at ${projectDir}. Projects cannot be nested within other projects. Please choose a different destination and try again.`,
1450
1551
  },
1552
+ warnings: {
1553
+ 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'))}`,
1554
+ },
1451
1555
  logs: {
1452
1556
  success: (projectName, projectDest) => `Project ${chalk.bold(projectName)} was successfully created in ${projectDest}`,
1453
1557
  },
@@ -1510,7 +1614,6 @@ export const commands = {
1510
1614
  },
1511
1615
  },
1512
1616
  header: `This command will migrate an app to the projects framework. It will walk you through the fields required to complete the migration and download the project source code into a directory of your choosing.\n${uiLink('Learn more about migrating apps to the projects framework', 'https://developers.hubspot.com/docs/platform/migrate-a-public-app-to-projects')}`,
1513
- deprecationWarning: (platformVersion) => `The ${uiCommandReference('hs project migrate-app')} command is deprecated and will be removed. Use ${uiCommandReference(`hs app migrate --platform-version=${platformVersion}`)} going forward.`,
1514
1617
  migrationStatus: {
1515
1618
  inProgress: () => `Converting app configuration to ${chalk.bold(LEGACY_PUBLIC_APP_FILE)} component definition ...`,
1516
1619
  success: () => `${chalk.bold('Your app was converted and build #1 is deployed')}`,
@@ -1615,6 +1718,7 @@ export const commands = {
1615
1718
  deploy: {
1616
1719
  describe: 'Deploy a project build.',
1617
1720
  deployBuildIdPrompt: '[--build] Deploy which build?',
1721
+ profileMessage: (profileName, accountId) => `Deploying with ${chalk.bold(profileName)} profile: ${uiAccountDescription(accountId)}`,
1618
1722
  debug: {
1619
1723
  deploying: (path) => `Deploying project at path: ${path}`,
1620
1724
  },
@@ -1644,6 +1748,67 @@ export const commands = {
1644
1748
  deployLatestBuild: 'Deploy the latest build of the current project',
1645
1749
  },
1646
1750
  },
1751
+ release: {
1752
+ describe: 'Manage project releases.',
1753
+ create: {
1754
+ describe: 'Create a release for a project build.',
1755
+ verboseDescribe: `Create a release for a project build\n\nReleases mark a deployed build with an auto-generated semantic version tag (e.g. v1.0.0). The build must have been successfully deployed before it can be released.\n\nBy default, the latest deployed build is used. Use ${uiCommandReference('--build')} to specify a different build ID.`,
1756
+ confirmPrompt: (projectName, buildId) => `Create a release for project ${chalk.bold(projectName)} using build ${chalk.bold(String(buildId))}?`,
1757
+ success: (releaseTag, buildId) => `Release ${chalk.bold(releaseTag)} created for build ${chalk.bold(String(buildId))}.`,
1758
+ cancelled: 'Release creation cancelled.',
1759
+ errors: {
1760
+ projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in account ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
1761
+ noDeployedBuild: `No deployed build found for this project. Run ${uiCommandReference('hs project deploy')} first.`,
1762
+ buildNotFound: (buildId, projectName) => `Build ${chalk.bold(String(buildId))} was not found for project ${chalk.bold(projectName)}. Run ${uiCommandReference('hs project list-builds')} to view existing builds or ${uiCommandReference('hs project deploy')} to deploy a build first.`,
1763
+ buildNotDeployed: (buildId) => `Build ${chalk.bold(String(buildId))} has not been deployed. Run ${uiCommandReference('hs project deploy')} first.`,
1764
+ },
1765
+ options: {
1766
+ build: 'Build ID to release. Defaults to the latest deployed build.',
1767
+ force: 'Skip confirmation prompt.',
1768
+ },
1769
+ examples: {
1770
+ default: 'Create a release for the latest deployed build',
1771
+ withBuild: 'Create a release for a specific build',
1772
+ },
1773
+ },
1774
+ list: {
1775
+ describe: 'List releases for the current project.',
1776
+ verboseDescribe: `List releases for the current project\n\nDisplays all releases in sorted order, newest first. Includes the version tag, build ID, and creation date. Use ${uiCommandReference('--limit')} to control how many results are shown.`,
1777
+ noReleases: 'No releases found for this project.',
1778
+ showingReleases: (count, projectName) => `Showing ${count} release${count === 1 ? '' : 's'} for ${chalk.bold(projectName)}:`,
1779
+ continueOrExitPrompt: 'Press <enter> to load more, or ctrl+c to exit',
1780
+ errors: {
1781
+ projectNotFound: (accountId, projectName) => `The project ${chalk.bold(projectName)} does not exist in account ${uiAccountDescription(accountId)}. Run ${uiCommandReference('hs project upload')} to upload your project files to HubSpot.`,
1782
+ },
1783
+ options: {
1784
+ limit: 'Number of releases to show',
1785
+ },
1786
+ examples: {
1787
+ default: 'List releases for the current project',
1788
+ withLimit: 'Show only the 5 most recent releases',
1789
+ },
1790
+ },
1791
+ info: {
1792
+ describe: 'Show details about a specific release.',
1793
+ verboseDescribe: `Show details about a specific release\n\nDisplays the release tag, build ID, creation date, and list of components included in the release. Use ${uiCommandReference('--json')} for machine-readable output.`,
1794
+ releaseDetails: (releaseTag, projectName) => `Release ${chalk.bold(releaseTag)} for ${chalk.bold(projectName)}:`,
1795
+ components: 'Components:',
1796
+ noComponents: 'No components found for this release.',
1797
+ moreReleasesHint: `Not all releases are shown. Use ${uiCommandReference('--tag')} to look up an older release directly.`,
1798
+ selectRelease: (projectName) => `Select a release for ${chalk.bold(projectName)}`,
1799
+ errors: {
1800
+ releaseNotFound: (releaseTag, projectName) => `Release ${chalk.bold(releaseTag)} was not found for project ${chalk.bold(projectName)}. Verify the project has been uploaded and the release tag exists. Run ${uiCommandReference('hs project release list')} to view existing releases.`,
1801
+ noReleases: 'No releases found for this project.',
1802
+ },
1803
+ options: {
1804
+ tag: 'Release tag to look up (e.g. v1.0.0)',
1805
+ },
1806
+ examples: {
1807
+ default: 'Show details about a specific release',
1808
+ json: 'Output release details as JSON',
1809
+ },
1810
+ },
1811
+ },
1647
1812
  listBuilds: {
1648
1813
  describe: "List the project's builds.",
1649
1814
  continueOrExitPrompt: 'Press <enter> to load more, or ctrl+c to exit',
@@ -1674,6 +1839,7 @@ export const commands = {
1674
1839
  noFunctionsLinkText: 'Visit developer docs',
1675
1840
  noFunctionsInProject: `There aren't any functions in this project\n\t- Run ${uiCommandReference('hs project logs --help')} to learn more about logs\n\t- ${uiLink('Visit developer docs', 'https://developers.hubspot.com/docs/platform/serverless-functions')} to learn more about serverless functions`,
1676
1841
  noFunctionWithName: (name) => `No function with name "${name}"`,
1842
+ functionNameRequired: `A function name is required. Pass ${uiCommandReference('--function=<name>')} or run without it to select one interactively.`,
1677
1843
  functionNotDeployed: (name) => `The function with name "${name}" is not deployed`,
1678
1844
  projectLogsManagerNotInitialized: 'Function called on ProjectLogsManager before initialization',
1679
1845
  noDeployedBuild: 'This project has not been deployed yet. Deploy the project first, then try again.',
@@ -1719,6 +1885,7 @@ export const commands = {
1719
1885
  examples: {
1720
1886
  default: 'Upload a project into your HubSpot account',
1721
1887
  withProfile: 'Upload a project into your HubSpot account when using profiles',
1888
+ withPreview: 'Upload and preview the build on a target portal',
1722
1889
  },
1723
1890
  logs: {
1724
1891
  buildSucceeded: (buildId) => `Build #${buildId} succeeded\n`,
@@ -1727,7 +1894,10 @@ export const commands = {
1727
1894
  autoDeployDisabled: (deployCommand) => `Automatic deploys are disabled for this project. Run ${uiCommandReference(deployCommand)} to deploy this build.`,
1728
1895
  },
1729
1896
  errors: {
1897
+ noProjectConfig: 'No project detected. Run this command from a project directory.',
1730
1898
  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.`,
1899
+ previewRequiresTarget: `${uiCommandReference('--preview')} requires ${uiCommandReference('--target=<portalId>')} to specify the portal to preview on.`,
1900
+ targetRequiresPreview: `${uiCommandReference('--target')} can only be used with ${uiCommandReference('--preview')}.`,
1731
1901
  },
1732
1902
  options: {
1733
1903
  forceCreate: {
@@ -1739,6 +1909,15 @@ export const commands = {
1739
1909
  profile: {
1740
1910
  describe: 'Profile to target for this upload',
1741
1911
  },
1912
+ skipNpmAudit: {
1913
+ describe: 'Skip the npm audit security check before uploading',
1914
+ },
1915
+ preview: {
1916
+ describe: 'Preview the build on a target portal after a successful upload',
1917
+ },
1918
+ target: {
1919
+ describe: 'Portal ID to preview the build on',
1920
+ },
1742
1921
  },
1743
1922
  },
1744
1923
  watch: {
@@ -1853,6 +2032,7 @@ export const commands = {
1853
2032
  loading: {
1854
2033
  checking: 'Checking lint packages and configuration…',
1855
2034
  creatingConfig: 'Creating ESLint configuration files…',
2035
+ addingLintScripts: 'Adding lint scripts to package.json files…',
1856
2036
  linting: 'Linting…',
1857
2037
  },
1858
2038
  noProjectConfig: 'No project detected. Run this command from a project directory.',
@@ -1862,6 +2042,7 @@ export const commands = {
1862
2042
  return `The dependencies required for linting are missing or outdated.\n\nDependencies:\n${uniquePackages.map(p => ` - ${p}`).join('\n')}\n\n${directories.length === 1 ? 'Directory' : 'Directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}\n\nWould you like to install the required dependencies?`;
1863
2043
  },
1864
2044
  skippingDirectoriesWarning: (directories) => `Skipping linting for the following ${directories.length === 1 ? 'directory' : 'directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}`,
2045
+ skippedDirectoriesError: (directoryCount) => `Linting could not run for ${directoryCount === 1 ? 'the directory' : 'the directories'} above because the required dependencies are missing. Run ${uiCommandReference('hs project lint --install-missing-deps')} to install them.`,
1865
2046
  deprecatedEslintConfigWarning: (details) => {
1866
2047
  const dirCount = details.length;
1867
2048
  const header = `Deprecated ESLint configuration file${dirCount === 1 ? '' : 's'} detected in the following ${dirCount === 1 ? 'directory' : 'directories'}:`;
@@ -1872,8 +2053,17 @@ export const commands = {
1872
2053
  },
1873
2054
  createEslintConfigPrompt: (directories) => `ESLint configuration file not found in the following ${directories.length === 1 ? 'directory' : 'directories'}:\n${directories.map(d => ` - ${d}`).join('\n')}\n\nWould you like to set up the required ESLint configuration?`,
1874
2055
  eslintConfigCreated: (configPath) => `ESLint configuration created at ${configPath}`,
2056
+ createEslintConfigRequiresV2Platform: (platformVersion) => {
2057
+ if (!platformVersion) {
2058
+ 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.';
2059
+ }
2060
+ return `Automatic ESLint configuration is not available for platform version ${platformVersion}. Use Developer Platform 2025.2 or later, or add eslint.config.js manually.`;
2061
+ },
2062
+ failedToFetchRemoteEslintConfig: (platformVersion) => `Could not download the ESLint config from HubSpot project components for platform version ${platformVersion}. Check your network connection and try again, or add eslint.config.js manually.`,
1875
2063
  failedToCreateEslintConfig: (configPath) => `Failed to create ESLint configuration at ${configPath}`,
1876
2064
  eslintConfigRequired: 'ESLint configuration is required to run the lint command. Run the command again to create the configuration.',
2065
+ lintScriptsAdded: (scriptNames, packageJsonPath) => `Added ${scriptNames.map(s => `"${s}"`).join(' and ')} to ${packageJsonPath}`,
2066
+ failedToAddLintScripts: (packageJsonPath) => `Failed to add lint scripts to ${packageJsonPath}`,
1877
2067
  },
1878
2068
  updateDeps: {
1879
2069
  help: {
@@ -1928,6 +2118,99 @@ export const commands = {
1928
2118
  noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
1929
2119
  },
1930
2120
  },
2121
+ info: {
2122
+ describe: 'Display information about a project, its app, and its components',
2123
+ 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.`,
2124
+ project: {
2125
+ title: (name) => `Project: ${name}`,
2126
+ platformVersion: (version) => `Platform Version: ${version}`,
2127
+ id: (id) => `Project ID: ${id}`,
2128
+ deployedBuild: (buildId) => `Deployed Build: #${buildId}`,
2129
+ autoDeploy: (enabled) => `Auto-deploy: ${enabled ? 'Enabled' : 'Disabled'}`,
2130
+ },
2131
+ app: {
2132
+ title: 'App',
2133
+ name: (name) => `Name: ${name}`,
2134
+ id: (id) => `App ID: ${id}`,
2135
+ uid: (uid) => `UID: ${uid}`,
2136
+ authType: (authType) => `Auth Type: ${authType}`,
2137
+ distributionType: (distributionType) => `Distribution: ${distributionType}`,
2138
+ },
2139
+ examples: {
2140
+ default: 'Display project information',
2141
+ json: 'Output as JSON for scripting',
2142
+ },
2143
+ viewProjectLink: 'View project in HubSpot',
2144
+ componentsHeader: 'Components',
2145
+ labels: {
2146
+ type: 'Type',
2147
+ uid: 'UID',
2148
+ },
2149
+ errors: {
2150
+ 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.`,
2151
+ projectNotFound: (projectName, accountId) => `Project "${projectName}" was not found in account ${uiAccountDescription(accountId)}. Make sure the project has been uploaded at least once.`,
2152
+ noDeployedBuild: `This project has not been deployed yet.\n\nRun ${uiCommandReference('hs project deploy')} to deploy your project.`,
2153
+ unsupportedPlatformVersion: (platformVersion) => `This command is not supported for platform version ${chalk.bold(platformVersion)}. Please upgrade to 2025.2 or later.`,
2154
+ },
2155
+ },
2156
+ delete: {
2157
+ describe: 'Delete a project from the current target account',
2158
+ 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.`,
2159
+ warnings: {
2160
+ irreversibleTitle: 'Warning: This will permanently delete your project',
2161
+ 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.',
2162
+ },
2163
+ prompts: {
2164
+ selectProject: (accountId) => `Select a project to delete in ${uiAccountDescription(accountId)}`,
2165
+ confirmDelete: (projectName, accountId) => `[--force] Delete ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}? This cannot be undone.`,
2166
+ validation: {
2167
+ projectRequired: 'Please select a project to delete',
2168
+ },
2169
+ },
2170
+ logs: {
2171
+ deleting: (projectName) => `Deleting project ${chalk.bold(projectName)}...`,
2172
+ deleted: (projectName, accountId) => `Deleted project ${chalk.bold(projectName)} from ${uiAccountDescription(accountId)}`,
2173
+ cancelled: 'Deletion cancelled',
2174
+ componentsToDeleteUnified: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c.componentId)} (${mapToUserFriendlyName(c.componentType)})`).join('\n')}`,
2175
+ componentsToDeleteLegacy: (components) => `The following deployed components will be deleted:\n${components.map(c => ` - ${chalk.bold(c)}`).join('\n')}`,
2176
+ deletingComponents: (projectName) => `Deleting deployed components from ${chalk.bold(projectName)}...`,
2177
+ componentsDeleted: (projectName) => `Deleted deployed components from ${chalk.bold(projectName)}`,
2178
+ unableToDetermineIfComponentsWereDeleted: (projectName) => `Unable to determine if components were successfully deleted from ${chalk.bold(projectName)}. Please try again.`,
2179
+ installWarning: (installCount) => `This project has ${chalk.bold(String(installCount))} active app ${installCount === 1 ? 'installation' : 'installations'} that will be deleted.`,
2180
+ installCountUnknown: 'Unable to determine the number of active app installations for this project.',
2181
+ },
2182
+ errors: {
2183
+ noProjectsFound: (accountId) => `No projects found for account ${uiAccountDescription(accountId)}`,
2184
+ projectNotFound: (projectName, accountId) => `Project ${chalk.bold(projectName)} not found in ${uiAccountDescription(accountId)}`,
2185
+ deleteFailed: (projectName) => `Failed to delete project ${chalk.bold(projectName)}. Run with --debug for details or try again.`,
2186
+ cannotDelete: (projectName, reason) => `Cannot delete project ${chalk.bold(projectName)}: ${reason}`,
2187
+ noPlatformVersion: 'Unable to determine platform version for project',
2188
+ componentDeletionFailed: (projectName) => `Failed to delete deployed components from ${chalk.bold(projectName)}. The project was not deleted.`,
2189
+ },
2190
+ options: {
2191
+ project: 'name of the project to delete',
2192
+ force: 'skip confirmation prompt',
2193
+ },
2194
+ },
2195
+ installStatus: {
2196
+ 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.',
2197
+ examples: {
2198
+ default: 'Check install status for the static auth app in the current project',
2199
+ json: 'Output install status as JSON',
2200
+ },
2201
+ errors: {
2202
+ 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.`,
2203
+ unsupportedPlatformVersion: (platformVersion) => `This command is only supported for projects on platform version 2025.2 or later (detected: ${platformVersion}).`,
2204
+ failedToParseProject: 'Failed to parse the project. Check your project configuration is valid and try again.',
2205
+ noAppInProject: 'No app was found in the local project. Install status is only available for projects that contain an app.',
2206
+ unsupportedAuthType: (authType) => `This command only supports static auth apps. Detected auth type: ${authType}.`,
2207
+ },
2208
+ success: {
2209
+ installed: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)}.`,
2210
+ installedWithOutdatedScopes: (appName, accountId) => `${chalk.bold(appName)} is installed in ${uiAccountDescription(accountId)} with outdated scopes. Reinstall the app to grant the latest scopes.`,
2211
+ },
2212
+ notInstalled: (appName, accountId) => `${chalk.bold(appName)} is not installed in ${uiAccountDescription(accountId)}.`,
2213
+ },
1931
2214
  },
1932
2215
  sandbox: {
1933
2216
  describe: 'Commands for managing sandboxes.',
@@ -2122,6 +2405,111 @@ export const commands = {
2122
2405
  },
2123
2406
  },
2124
2407
  },
2408
+ logs: {
2409
+ describe: 'View recent application logs.',
2410
+ verboseDescribe: `View recent application logs for a specific log type.\n\nFilter by time range with ${uiCommandReference('--since')} (e.g. 1h, 30m, 2d, or an ISO timestamp). Use ${uiCommandReference('--tail')} to follow logs in real-time, ${uiCommandReference('--compact')} for one-line-per-log output, or ${uiCommandReference('--json')} for machine-readable output.\n\nRun ${uiCommandReference('hs app log-details <logId>')} to inspect a specific log entry.`,
2411
+ options: {
2412
+ appId: 'App ID',
2413
+ type: 'Log type',
2414
+ json: 'Output logs as JSON',
2415
+ limit: 'Maximum number of logs to return',
2416
+ since: 'Filter logs by time ago (1h, 30m, 2d, or ISO timestamp)',
2417
+ tail: 'Follow logs in real-time',
2418
+ errorsOnly: 'Only show error logs',
2419
+ compact: 'Display logs in compact format (one line per log)',
2420
+ },
2421
+ errors: {
2422
+ noLogs: 'No logs found. Try a wider time range (--since) or remove --errors-only to see all logs.',
2423
+ noApps: `No apps found. Create an app with ${uiCommandReference('hs project create')}.`,
2424
+ },
2425
+ prompts: {
2426
+ selectType: '[--type] Select the type of logs to view:',
2427
+ },
2428
+ examples: {
2429
+ basic: 'Fetch webhook logs for app 123456',
2430
+ since: 'Fetch logs from the last hour',
2431
+ tail: 'Follow logs in real-time',
2432
+ json: 'Output logs as JSON',
2433
+ compact: 'Display logs in compact format',
2434
+ },
2435
+ outputMessages: {
2436
+ viewInHubSpot: (url) => uiLink('View in HubSpot', url),
2437
+ tableHeaders: {
2438
+ appId: 'App ID',
2439
+ type: 'Type',
2440
+ logsFound: 'Logs Found',
2441
+ },
2442
+ logDetails: {
2443
+ id: 'ID',
2444
+ duration: 'Duration',
2445
+ portal: 'Portal',
2446
+ trace: 'Trace',
2447
+ error: 'Error',
2448
+ viewDetails: (logId, appId, systemType) => `To view more details, run: ${uiCommandReference(`hs app log-details ${logId} --app=${appId} --type=${systemType}`)}`,
2449
+ viewInUI: (url) => uiLink('View details in UI', url),
2450
+ },
2451
+ tailMessages: {
2452
+ following: (appId) => `Following logs for app ${appId}`,
2453
+ stop: `> Press ${chalk.bold('q')} to stop following`,
2454
+ },
2455
+ },
2456
+ },
2457
+ logDetails: {
2458
+ describe: 'View details for a specific log entry.',
2459
+ verboseDescribe: `View full details for a specific app log entry, including request/response bodies, context information, and error details.\n\nUse ${uiCommandReference('--json')} for machine-readable output.`,
2460
+ positionals: {
2461
+ logId: 'The log ID to fetch details for',
2462
+ },
2463
+ options: {
2464
+ appId: 'App ID',
2465
+ type: 'Log type',
2466
+ json: 'Output details as JSON',
2467
+ },
2468
+ errors: {
2469
+ noApps: `No apps found. Create an app with ${uiCommandReference('hs project create')}.`,
2470
+ },
2471
+ prompts: {
2472
+ selectType: '[--type] Select the log type:',
2473
+ },
2474
+ examples: {
2475
+ basic: 'Fetch details for log abc-123',
2476
+ json: 'Output log details as JSON',
2477
+ },
2478
+ outputMessages: {
2479
+ viewInHubSpot: (url) => uiLink('View in HubSpot', url),
2480
+ logDetailsHeader: 'Log Details',
2481
+ basicInfo: {
2482
+ id: 'Log ID',
2483
+ timestamp: 'Timestamp',
2484
+ status: 'Status',
2485
+ duration: 'Duration',
2486
+ systemType: 'Type',
2487
+ },
2488
+ contextInfo: {
2489
+ header: 'Context',
2490
+ portalId: 'Portal ID',
2491
+ traceId: 'Trace ID',
2492
+ function: 'Function',
2493
+ location: 'Location',
2494
+ card: 'Card',
2495
+ userId: 'User ID',
2496
+ },
2497
+ requestResponse: {
2498
+ header: 'Request/Response',
2499
+ requestBody: 'Request Body',
2500
+ responseBody: 'Response Body',
2501
+ },
2502
+ errorInfo: {
2503
+ header: 'Error Details',
2504
+ errorType: 'Type',
2505
+ errorMessage: 'Message',
2506
+ stackTrace: 'Stack Trace',
2507
+ },
2508
+ additionalInfo: {
2509
+ header: 'Additional Information',
2510
+ },
2511
+ },
2512
+ },
2125
2513
  },
2126
2514
  },
2127
2515
  secret: {
@@ -2223,7 +2611,7 @@ export const commands = {
2223
2611
  configPathPrompt: '[--config-path] Enter the path to the test account config: ',
2224
2612
  createTestAccountFromConfigPrompt: 'How would you like to create your test account?',
2225
2613
  createFromConfigOption: 'Create test account from config file',
2226
- createFromScratchOption: 'Create test account from scratch',
2614
+ createFromScratchOption: 'Select hub tiers manually',
2227
2615
  errors: {
2228
2616
  configFileNotFound: (configPath) => `No test account config file exists at ${configPath}. Create a test account config file with the ${uiCommandReference('hs test-account create-config')} command.`,
2229
2617
  configFileParseFailed: (configPath) => `Failed to parse test account config file at ${configPath}`,
@@ -2243,7 +2631,7 @@ export const commands = {
2243
2631
  opsLevel: 'Operations Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2244
2632
  serviceLevel: 'Service Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2245
2633
  salesLevel: 'Sales Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2246
- contentLevel: 'CMS Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2634
+ contentLevel: 'Content Hub tier. Options: FREE, STARTER, PROFESSIONAL, ENTERPRISE',
2247
2635
  commerceLevel: 'Commerce Hub tier. Options: FREE, PROFESSIONAL, ENTERPRISE',
2248
2636
  },
2249
2637
  example: (configPath) => `Create a test account from the config file at ${configPath}`,
@@ -2896,6 +3284,9 @@ export const commands = {
2896
3284
  },
2897
3285
  };
2898
3286
  export const lib = {
3287
+ linkedDirectory: {
3288
+ 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`,
3289
+ },
2899
3290
  parsing: {
2900
3291
  unableToParseStringToNumber: 'Unable to parse string to number',
2901
3292
  },
@@ -2905,6 +3296,9 @@ export const lib = {
2905
3296
  process: {
2906
3297
  exitDebug: (signal) => `Attempting to gracefully exit. Triggered by ${signal}`,
2907
3298
  },
3299
+ handlerLogFile: {
3300
+ saved: (filePath) => `Debug logs can be viewed at ${filePath}`,
3301
+ },
2908
3302
  DevServerManager: {
2909
3303
  portConflict: (port) => `The port ${port} is already in use.`,
2910
3304
  notInitialized: 'The Dev Server Manager must be initialized before it is started.',
@@ -2987,6 +3381,13 @@ export const lib = {
2987
3381
  appDataNotFound: 'An error occurred while fetching data for your app.',
2988
3382
  oauthAppRedirectUrlError: (redirectUrl) => `${chalk.bold('No reponse from your OAuth service:')} ${redirectUrl}\nYour app needs a valid OAuth2 service to be installed for local dev. ${uiLink('Learn more', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/authentication/oauth/working-with-oauth')}`,
2989
3383
  },
3384
+ accountAuthWebsocket: {
3385
+ logs: {
3386
+ openingWebBrowser: (url) => `Opening ${uiLink('HubSpot', url)} in your web browser\n`,
3387
+ spinner: 'Waiting for HubSpot to send your personal access key... (press any key to enter it manually)',
3388
+ received: 'Personal access key received',
3389
+ },
3390
+ },
2990
3391
  CLIWebsocketServer: {
2991
3392
  errors: {
2992
3393
  portManagerNotRunning: (prefix) => `${prefix ? `${prefix} ` : ''}PortManagerServing must be running before starting WebsocketServer.`,
@@ -2994,6 +3395,7 @@ export const lib = {
2994
3395
  missingTypeField: (data) => `Unsupported message received. Missing type field: ${data}`,
2995
3396
  invalidJSON: (data) => `Unsupported message received. Invalid JSON: ${data}`,
2996
3397
  unknownMessageType: (type) => `Unsupported message received. Unknown message type: ${type}`,
3398
+ failedToBindEphemeralPort: (prefix) => `${prefix ? `${prefix} ` : ''}Failed to determine the assigned port for the WebsocketServer.`,
2997
3399
  },
2998
3400
  logs: {
2999
3401
  startup: (port) => `WebsocketServer running on port ${port}`,
@@ -3086,11 +3488,6 @@ export const lib = {
3086
3488
  profileTargetAccount: (accountId) => `Targeting ${uiAccountDescription(accountId)}`,
3087
3489
  profileVariables: 'Profile variables',
3088
3490
  },
3089
- exitIfUsingProfiles: {
3090
- errors: {
3091
- noProfileSpecified: `This project is configured to use profiles, but no profile was specified. Target a profile using the ${uiCommandReference('--profile')} flag.`,
3092
- },
3093
- },
3094
3491
  loadProfile: {
3095
3492
  errors: {
3096
3493
  noProjectConfig: 'No project config found. Please run this command from a project directory.',
@@ -3203,8 +3600,33 @@ export const lib = {
3203
3600
  fileFiltered: (filename) => `Ignore rule triggered for "${filename}"`,
3204
3601
  legacyFileDetected: (filename, platformVersion) => `The ${chalk.bold(filename)} file is not supported on platform version ${chalk.bold(platformVersion)} and will be ignored.`,
3205
3602
  projectDoesNotExist: (accountId) => `Upload cancelled. Run ${uiCommandReference('hs project upload')} again to create the project in ${uiAccountDescription(accountId)}.`,
3603
+ workspaceIncluded: (workspaceDir, archivePath) => `Including workspace: ${workspaceDir} → ${archivePath}`,
3604
+ fileDependencyIncluded: (packageName, localPath, archivePath) => `Including file: dependency ${packageName}: ${localPath} → ${archivePath}`,
3605
+ malformedPackageJson: (packageJsonPath, error) => `Skipping malformed package.json at ${packageJsonPath}: ${error}`,
3606
+ workspaceCollision: (archivePath, workspaceDir, existingWorkspace) => `Workspace collision: ${archivePath} from ${workspaceDir} and ${existingWorkspace}`,
3607
+ fileDependencyAlreadyIncluded: (packageName, archivePath) => `file: dependency ${packageName} already included as workspace: ${archivePath}`,
3608
+ updatingLockfile: (lockfilePath) => `Updating package-lock.json in archive: ${lockfilePath}`,
3609
+ updatingPackageJsonWorkspaces: (packageJsonPath) => `Updating package.json workspaces in archive: ${packageJsonPath}`,
3610
+ updatedWorkspaces: (workspaces) => ` Updated workspaces: ${workspaces}`,
3611
+ updatedFileDependency: (packageName, relativePath) => ` Updated dependencies.${packageName}: file:${relativePath}`,
3612
+ lintPackagesNotConfigured: (packageRoot) => `Project lint: lint packages not installed for ${chalk.bold(packageRoot)}. Run ${uiCommandReference('hs project lint')} to install them.`,
3613
+ lintConfigNotFound: (packageRoot) => `Project lint: ESLint configuration not found for ${chalk.bold(packageRoot)}. Run ${uiCommandReference('hs project lint')} to create an ESLint config.`,
3614
+ lintHubSpotRulesNotActive: (packageRoot) => `Project lint: HubSpot ESLint rules not active for ${chalk.bold(packageRoot)}. Configure ${chalk.bold('@hubspot/eslint-config-ui-extensions')} — see ${uiLink('setup instructions', 'https://www.npmjs.com/package/@hubspot/eslint-config-ui-extensions')}.`,
3615
+ npmAuditClean: (packageRoot) => `npm audit: No npm dependency issues found for ${chalk.bold(packageRoot)}`,
3616
+ npmAuditIssues: (packageRoot, details) => `npm audit: security issues found for ${chalk.bold(packageRoot)}: ${details}`,
3617
+ npmAuditNpmUnavailable: (packageRoot) => `npm audit: skipped for ${chalk.bold(packageRoot)} (npm not available in PATH)`,
3618
+ npmAuditNonZeroExit: (packageRoot, exitCode) => `npm audit: ${chalk.bold(packageRoot)} exited with code ${exitCode}`,
3206
3619
  },
3207
3620
  },
3621
+ projectPreview: {
3622
+ triggeringPreview: (buildId, targetPortalId) => `Previewing build #${buildId} on ${uiAccountDescription(targetPortalId)}`,
3623
+ pollingStatus: (releaseTag, targetPortalId) => `Previewing ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
3624
+ succeeded: (releaseTag, targetPortalId) => `Previewed ${chalk.bold(releaseTag)} on ${uiAccountDescription(targetPortalId)}`,
3625
+ triggerFailed: 'Failed to trigger preview',
3626
+ pollFailed: 'Failed to poll preview status',
3627
+ warning: 'The build succeeded but the preview failed. You can manually preview this build from the project UI.',
3628
+ missingProjectId: 'Unable to preview: could not resolve the project ID.',
3629
+ },
3208
3630
  importData: {
3209
3631
  errors: {
3210
3632
  incorrectAccountType: (derivedAccountId) => `The account ${uiAccountDescription(derivedAccountId)} is not a standard account, developer test account, or app developer account.`,
@@ -3313,6 +3735,9 @@ export const lib = {
3313
3735
  pakFailure: 'Failed to generate personal access key for developer test account',
3314
3736
  },
3315
3737
  },
3738
+ usageTracking: {
3739
+ 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`,
3740
+ },
3316
3741
  configOptions: {
3317
3742
  enableOrDisableBooleanFieldPrompt: {
3318
3743
  message: (fieldName) => `Choose to enable or disable ${fieldName}`,
@@ -3401,8 +3826,14 @@ export const lib = {
3401
3826
  promptUtils: {
3402
3827
  errors: {
3403
3828
  noSelectableChoices: 'Exiting prompt because no selectable choices are available',
3829
+ userCancelled: 'User cancelled prompt',
3404
3830
  },
3405
3831
  },
3832
+ projectProfilePrompt: {
3833
+ message: '[--profile] This project is configured to use profiles. Select a profile to use:',
3834
+ exitMessage: `This project is configured to use profiles, but no profile was specified. Try again using ${uiCommandReference('--profile')}`,
3835
+ noValidProfilesMessage: 'There are no valid profiles in this project. Ensure the accounts they are targeting are authenticated and try again.',
3836
+ },
3406
3837
  importDataFilePathPrompt: {
3407
3838
  promptContext: `To view the JSON schema for data imports, visit ${uiLink('the docs', 'https://developers.hubspot.com/docs/guides/api/crm/imports')}`,
3408
3839
  promptMessage: '[--file-path] Select the JSON file that will be used to import your data.',
@@ -3426,13 +3857,14 @@ export const lib = {
3426
3857
  developerTestAccountLimit: (limit) => `Your account reached the limit of ${limit} developer test accounts.`,
3427
3858
  confirmDefaultAccount: (accountName, accountType) => `Continue testing on ${chalk.bold(`${accountName} (${accountType})`)}? (Y/n)`,
3428
3859
  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.`,
3860
+ confirmLinkExistingDeveloperTestAccount: (accountName) => `${accountName} is not linked to this directory. Would you like to link it?`,
3429
3861
  noAccountId: 'No account ID found for the selected account. Please try again.',
3430
3862
  },
3431
3863
  projectLogsPrompt: {
3432
3864
  functionName: (projectName) => `[--function] Select function in ${chalk.bold(projectName)} project`,
3433
3865
  },
3434
3866
  setAsDefaultAccountPrompt: {
3435
- setAsDefaultAccountMessage: 'Set this account as the default?',
3867
+ setAsDefaultAccountMessage: (accountName) => `Set ${accountName} as your default account? [--default]`,
3436
3868
  setAsDefaultAccount: (accountName) => `Account "${accountName}" set as the default account`,
3437
3869
  keepingCurrentDefault: (accountName) => `Account "${accountName}" will continue to be the default account`,
3438
3870
  },
@@ -3497,6 +3929,7 @@ export const lib = {
3497
3929
  invalidOauthClientSecretCopy: 'Please copy the actual OAuth2 client secret rather than the asterisks that mask it.',
3498
3930
  invalidPersonalAccessKey: 'You did not enter a valid access key. Please try again.',
3499
3931
  invalidPersonalAccessKeyCopy: 'Please copy the actual access key rather than the bullets that mask it.',
3932
+ authCancelled: 'Authentication cancelled.',
3500
3933
  },
3501
3934
  },
3502
3935
  createTemplatePrompt: {
@@ -3848,9 +4281,9 @@ export const lib = {
3848
4281
  validJson: 'JSON files valid',
3849
4282
  },
3850
4283
  port: {
3851
- inUse: (port) => `Port ${port} is in use`,
3852
- inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}`,
3853
- available: (port) => `Port ${port} available for local development`,
4284
+ inUse: (port) => `Default port ${port} is in use`,
4285
+ inUseSecondary: `Make sure it is available before running ${uiCommandReference('hs project dev')}, or use ${uiCommandReference('--port')} to specify a different port`,
4286
+ available: (port) => `Default port ${port} available for local development`,
3854
4287
  },
3855
4288
  projectValidation: {
3856
4289
  valid: 'Project configuration and structure is valid',
@@ -3939,11 +4372,12 @@ export const lib = {
3939
4372
  fileInvalidJson: (path) => `The file "${path}" contains invalid JSON`,
3940
4373
  },
3941
4374
  migrate: {
3942
- componentsToBeMigrated: (components) => `The following features will be migrated: ${components}`,
4375
+ componentsToBeMigrated: (components) => `${chalk.bold('The following features will be migrated:')} ${components}`,
3943
4376
  componentsThatWillNotBeMigrated: (components) => `[NOTE] These features are not yet supported for migration but will be available later: ${components}`,
4377
+ legacyCrmCardMigrationDocs: () => `For more information on migrating legacy-crm-card components, follow ${uiLink('these docs', 'https://developers.hubspot.com/docs/apps/developer-platform/build-apps/migrate-an-app/migrate-legacy-crm-cards-to-app-cards')}`,
3944
4378
  sourceContentsMoved: (newLocation) => `The contents of your old source directory have been moved to ${newLocation}, move any required files to the new source directory.`,
3945
- projectMigrationWarningTitle: 'Important: Migrating to platformVersion 2025.2 is irreversible',
3946
- 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),
4379
+ projectMigrationWarningTitle: (platformVersion) => `Important: Migrating to platformVersion ${platformVersion} is irreversible`,
4380
+ projectMigrationWarning: (platformVersion) => uiBetaTag(`Running the ${uiCommandReference('hs project migrate')} command will permanently upgrade your project to platformVersion ${platformVersion}. This action cannot be undone. To ensure you have access to your original files, they will be copied to a new directory (archive) for safekeeping.\n\nThis command will guide you through the process, prompting you to enter the required fields and will download the new project source code into your project source directory.`, false),
3947
4381
  exitWithoutMigrating: 'Exiting without migrating',
3948
4382
  success: {
3949
4383
  downloadedProject: (projectName, projectDest) => `Saved ${projectName} to ${projectDest}`,
@@ -3955,7 +4389,7 @@ export const lib = {
3955
4389
  doesNotExist: (account) => `Project does not exist in ${uiAccountDescription(account)}. Migrations are only supported for existing projects.`,
3956
4390
  themesAlreadyMigrated: 'This project has already been migrated to the latest platform version.',
3957
4391
  noProjectForThemesMigration: 'Theme migrations are only supported for projects. Please try again from a project directory.',
3958
- themesAndAppsNotAllowed: 'Support for migrating projects containing both themes and apps to the latest platform version is coming soon. Try again later.',
4392
+ themesAndAppsNotAllowed: 'Projects containing both themes and apps cannot be migrated together. To migrate, split the project into separate theme-only and app-only projects, then run migrate on each individually.',
3959
4393
  multipleApps: 'Multiple apps found in project, this is not allowed in 2025.2',
3960
4394
  alreadyExists: (projectName) => `A project with name ${projectName} already exists. Please choose another name.`,
3961
4395
  failedToMigrateThemes: 'Failed to migrate project themes. Please verify that your themes are properly formatted before trying again.',