@hubspot/cli 8.2.0 → 8.2.1-experimental.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) 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 +25 -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 +13 -0
  21. package/commands/api.js +161 -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 +126 -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 +29 -11
  60. package/commands/customObject/create.js +4 -5
  61. package/commands/customObject/createSchema.js +6 -8
  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 +6 -8
  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 +20 -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.d.ts +1 -1
  77. package/commands/hubdb/list.js +23 -22
  78. package/commands/init.js +18 -15
  79. package/commands/mcp/setup.d.ts +2 -0
  80. package/commands/mcp/setup.js +35 -8
  81. package/commands/mcp/start.js +2 -3
  82. package/commands/open.js +4 -5
  83. package/commands/project/add.js +13 -8
  84. package/commands/project/appInstallStatus.d.ts +5 -0
  85. package/commands/project/appInstallStatus.js +135 -0
  86. package/commands/project/create.js +29 -17
  87. package/commands/project/delete.d.ts +7 -0
  88. package/commands/project/delete.js +74 -0
  89. package/commands/project/deploy.d.ts +2 -1
  90. package/commands/project/deploy.js +68 -48
  91. package/commands/project/dev/index.d.ts +3 -3
  92. package/commands/project/dev/index.js +33 -68
  93. package/commands/project/dev/unifiedFlow.js +73 -22
  94. package/commands/project/download.js +12 -9
  95. package/commands/project/info.d.ts +5 -0
  96. package/commands/project/info.js +70 -0
  97. package/commands/project/installApp.d.ts +8 -0
  98. package/commands/project/installApp.js +180 -0
  99. package/commands/project/installDeps.js +11 -6
  100. package/commands/project/lint.js +43 -12
  101. package/commands/project/list.d.ts +2 -2
  102. package/commands/project/list.js +15 -14
  103. package/commands/project/listBuilds.d.ts +1 -1
  104. package/commands/project/listBuilds.js +16 -12
  105. package/commands/project/logs.js +7 -10
  106. package/commands/project/migrate.js +18 -18
  107. package/commands/project/open.js +5 -6
  108. package/commands/project/profile/add.d.ts +2 -1
  109. package/commands/project/profile/add.js +34 -9
  110. package/commands/project/profile/delete.d.ts +1 -1
  111. package/commands/project/profile/delete.js +15 -11
  112. package/commands/project/release/create.d.ts +8 -0
  113. package/commands/project/release/create.js +158 -0
  114. package/commands/project/release/info.d.ts +7 -0
  115. package/commands/project/release/info.js +148 -0
  116. package/commands/project/release/list.d.ts +7 -0
  117. package/commands/project/release/list.js +119 -0
  118. package/commands/project/release.d.ts +3 -0
  119. package/commands/project/release.js +20 -0
  120. package/commands/project/updateDeps.js +9 -6
  121. package/commands/project/upload.d.ts +7 -1
  122. package/commands/project/upload.js +145 -32
  123. package/commands/project/validate.d.ts +1 -1
  124. package/commands/project/validate.js +12 -12
  125. package/commands/project/watch.js +23 -22
  126. package/commands/project.js +16 -3
  127. package/commands/sandbox/create.js +18 -45
  128. package/commands/sandbox/delete.js +15 -17
  129. package/commands/secret/addSecret.js +6 -7
  130. package/commands/secret/deleteSecret.js +5 -6
  131. package/commands/secret/listSecret.js +2 -3
  132. package/commands/secret/updateSecret.js +4 -5
  133. package/commands/testAccount/create.d.ts +3 -2
  134. package/commands/testAccount/create.js +30 -22
  135. package/commands/testAccount/createConfig.js +7 -8
  136. package/commands/testAccount/delete.js +27 -18
  137. package/commands/testAccount/importData.d.ts +1 -1
  138. package/commands/testAccount/importData.js +6 -7
  139. package/commands/upgrade.js +11 -10
  140. package/lang/en.d.ts +558 -40
  141. package/lang/en.js +595 -63
  142. package/lib/CLIWebSocketServer.d.ts +5 -3
  143. package/lib/CLIWebSocketServer.js +31 -4
  144. package/lib/accountAuth.d.ts +3 -1
  145. package/lib/accountAuth.js +47 -17
  146. package/lib/accountTargetDiscovery.d.ts +15 -0
  147. package/lib/accountTargetDiscovery.js +175 -0
  148. package/lib/api/usageTracking.d.ts +30 -0
  149. package/lib/api/usageTracking.js +11 -0
  150. package/lib/app/install.d.ts +22 -0
  151. package/lib/app/install.js +42 -0
  152. package/lib/app/logs.d.ts +38 -0
  153. package/lib/app/logs.js +225 -0
  154. package/lib/app/migrate.js +18 -5
  155. package/lib/app/urls.d.ts +2 -0
  156. package/lib/app/urls.js +7 -1
  157. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.d.ts +4 -0
  158. package/lib/auth/awaitPersonalAccessKeyOverWebsocket.js +146 -0
  159. package/lib/buildAccount.d.ts +1 -6
  160. package/lib/buildAccount.js +10 -43
  161. package/lib/commonOpts.js +6 -2
  162. package/lib/configOptions.d.ts +10 -10
  163. package/lib/configOptions.js +10 -11
  164. package/lib/constants.d.ts +12 -3
  165. package/lib/constants.js +14 -3
  166. package/lib/dependencyManagement.js +7 -7
  167. package/lib/doctor/Diagnosis.js +5 -5
  168. package/lib/doctor/Doctor.d.ts +1 -0
  169. package/lib/doctor/Doctor.js +33 -7
  170. package/lib/errorHandlers/index.js +4 -3
  171. package/lib/errorHandlers/suppressError.js +4 -0
  172. package/lib/errors/PromptExitError.d.ts +6 -0
  173. package/lib/errors/PromptExitError.js +11 -0
  174. package/lib/getStartedV2Actions.js +5 -4
  175. package/lib/hasFeature.js +1 -2
  176. package/lib/importData.js +3 -4
  177. package/lib/jsonOutput.d.ts +109 -0
  178. package/lib/jsonOutput.js +94 -0
  179. package/lib/link/accountTableUtils.d.ts +10 -0
  180. package/lib/link/accountTableUtils.js +39 -0
  181. package/lib/link/index.d.ts +18 -0
  182. package/lib/link/index.js +185 -0
  183. package/lib/link/linkUtils.d.ts +5 -0
  184. package/lib/link/linkUtils.js +49 -0
  185. package/lib/link/prompts.d.ts +7 -0
  186. package/lib/link/prompts.js +126 -0
  187. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  188. package/lib/link/renderLinkedAccountsTable.js +14 -0
  189. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  190. package/lib/link/warnIfLinkedDirectory.js +9 -0
  191. package/lib/links.js +6 -5
  192. package/lib/mcp/clients.d.ts +13 -0
  193. package/lib/mcp/clients.js +62 -0
  194. package/lib/mcp/promotion.d.ts +3 -0
  195. package/lib/mcp/promotion.js +109 -0
  196. package/lib/mcp/setup.d.ts +8 -2
  197. package/lib/mcp/setup.js +123 -38
  198. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  199. package/lib/middleware/commandTargetingUtils.js +1 -0
  200. package/lib/npm/npmCli.d.ts +1 -0
  201. package/lib/npm/npmCli.js +13 -0
  202. package/lib/process.d.ts +1 -1
  203. package/lib/process.js +10 -3
  204. package/lib/projects/ProjectLogsManager.js +6 -3
  205. package/lib/projects/builds.d.ts +2 -0
  206. package/lib/projects/builds.js +22 -0
  207. package/lib/projects/components.js +15 -4
  208. package/lib/projects/create/index.js +2 -2
  209. package/lib/projects/create/legacy.js +2 -2
  210. package/lib/projects/create/v2.js +5 -5
  211. package/lib/projects/delete.d.ts +13 -0
  212. package/lib/projects/delete.js +193 -0
  213. package/lib/projects/deploy.d.ts +1 -1
  214. package/lib/projects/deploy.js +2 -2
  215. package/lib/projects/installApp.d.ts +58 -0
  216. package/lib/projects/installApp.js +283 -0
  217. package/lib/projects/localDev/AppDevModeInterface.d.ts +0 -3
  218. package/lib/projects/localDev/AppDevModeInterface.js +35 -53
  219. package/lib/projects/localDev/DevSessionManager.d.ts +8 -5
  220. package/lib/projects/localDev/DevSessionManager.js +35 -49
  221. package/lib/projects/localDev/LocalDevProcess.js +13 -10
  222. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  223. package/lib/projects/localDev/LocalDevState.js +3 -1
  224. package/lib/projects/localDev/LocalDevWebsocketServer.js +1 -1
  225. package/lib/projects/localDev/UIExtensionsDevModeInterface.js +2 -0
  226. package/lib/projects/localDev/helpers/account.d.ts +1 -7
  227. package/lib/projects/localDev/helpers/account.js +12 -100
  228. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  229. package/lib/projects/localDev/helpers/process.js +4 -10
  230. package/lib/projects/localDev/helpers/project.d.ts +8 -6
  231. package/lib/projects/localDev/helpers/project.js +80 -29
  232. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  233. package/lib/projects/npmAuditOnUpload.js +73 -0
  234. package/lib/projects/pollProjectBuildAndDeploy.d.ts +5 -1
  235. package/lib/projects/pollProjectBuildAndDeploy.js +3 -2
  236. package/lib/projects/preview.d.ts +7 -0
  237. package/lib/projects/preview.js +48 -0
  238. package/lib/projects/projectInfo.d.ts +5 -0
  239. package/lib/projects/projectInfo.js +82 -0
  240. package/lib/projects/projectProfiles.d.ts +1 -2
  241. package/lib/projects/projectProfiles.js +5 -17
  242. package/lib/projects/release.d.ts +4 -0
  243. package/lib/projects/release.js +90 -0
  244. package/lib/projects/ui.d.ts +1 -0
  245. package/lib/projects/ui.js +14 -0
  246. package/lib/projects/uieLinting.d.ts +21 -3
  247. package/lib/projects/uieLinting.js +132 -28
  248. package/lib/projects/upload.d.ts +12 -2
  249. package/lib/projects/upload.js +59 -13
  250. package/lib/projects/urls.d.ts +0 -1
  251. package/lib/projects/urls.js +6 -13
  252. package/lib/projects/validateLintConfigOnUpload.d.ts +9 -0
  253. package/lib/projects/validateLintConfigOnUpload.js +45 -0
  254. package/lib/projects/workspaces.d.ts +60 -0
  255. package/lib/projects/workspaces.js +411 -0
  256. package/lib/prompts/createApiSamplePrompt.js +4 -0
  257. package/lib/prompts/downloadProjectPrompt.js +11 -10
  258. package/lib/prompts/installAppPrompt.js +3 -2
  259. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -5
  260. package/lib/prompts/personalAccessKeyPrompt.js +10 -7
  261. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  262. package/lib/prompts/projectDevTargetAccountPrompt.js +26 -18
  263. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  264. package/lib/prompts/projectProfilePrompt.js +46 -0
  265. package/lib/prompts/projectsLogsPrompt.js +3 -0
  266. package/lib/prompts/promptUtils.js +4 -2
  267. package/lib/prompts/selectAppPrompt.js +1 -0
  268. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  269. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  270. package/lib/prompts/setAsDefaultAccountPrompt.js +2 -1
  271. package/lib/sandboxes.d.ts +1 -9
  272. package/lib/sandboxes.js +0 -21
  273. package/lib/serverlessLogs.js +2 -2
  274. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  275. package/lib/theme/cmsDevServerProcess.js +8 -7
  276. package/lib/theme/migrate.d.ts +1 -1
  277. package/lib/theme/migrate.js +1 -5
  278. package/lib/ui/SpinniesManager.d.ts +1 -0
  279. package/lib/ui/SpinniesManager.js +22 -6
  280. package/lib/ui/accountTable.d.ts +8 -0
  281. package/lib/ui/accountTable.js +67 -0
  282. package/lib/ui/appLogs.d.ts +32 -0
  283. package/lib/ui/appLogs.js +175 -0
  284. package/lib/ui/spinniesUtils.d.ts +0 -1
  285. package/lib/ui/spinniesUtils.js +6 -16
  286. package/lib/usageTracking.d.ts +10 -20
  287. package/lib/usageTracking.js +77 -30
  288. package/lib/yargs/makeWrappedYargsHandler.d.ts +7 -0
  289. package/lib/yargs/makeWrappedYargsHandler.js +179 -0
  290. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  291. package/lib/yargs/makeYargsBuilder.js +33 -0
  292. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  293. package/lib/yargs/parseYargsOrExit.js +25 -0
  294. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  295. package/lib/yargs/strictEnforceBoolean.js +13 -0
  296. package/lib/yargsUtils.d.ts +3 -16
  297. package/lib/yargsUtils.js +3 -48
  298. package/mcp-server/Tool.d.ts +20 -0
  299. package/mcp-server/Tool.js +79 -0
  300. package/mcp-server/server.js +47 -3
  301. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +5 -3
  302. package/mcp-server/tools/cms/HsCreateFunctionTool.js +18 -23
  303. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +5 -3
  304. package/mcp-server/tools/cms/HsCreateModuleTool.js +21 -26
  305. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +5 -3
  306. package/mcp-server/tools/cms/HsCreateTemplateTool.js +16 -16
  307. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +5 -3
  308. package/mcp-server/tools/cms/HsFunctionLogsTool.js +16 -15
  309. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +5 -3
  310. package/mcp-server/tools/cms/HsListFunctionsTool.js +14 -13
  311. package/mcp-server/tools/cms/HsListTool.d.ts +5 -3
  312. package/mcp-server/tools/cms/HsListTool.js +14 -16
  313. package/mcp-server/tools/index.d.ts +3 -2
  314. package/mcp-server/tools/index.js +26 -22
  315. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +8 -4
  316. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -15
  317. package/mcp-server/tools/project/AuthAccountTool.d.ts +18 -0
  318. package/mcp-server/tools/project/AuthAccountTool.js +78 -0
  319. package/mcp-server/tools/project/CreateProjectTool.d.ts +8 -4
  320. package/mcp-server/tools/project/CreateProjectTool.js +21 -17
  321. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +5 -3
  322. package/mcp-server/tools/project/CreateTestAccountTool.js +35 -24
  323. package/mcp-server/tools/project/DeployProjectTool.d.ts +5 -3
  324. package/mcp-server/tools/project/DeployProjectTool.js +14 -16
  325. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  326. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  327. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  328. package/mcp-server/tools/project/DocsSearchTool.js +39 -15
  329. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  330. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  331. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +6 -3
  332. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +16 -13
  333. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +6 -3
  334. package/mcp-server/tools/project/GetApplicationInfoTool.js +19 -14
  335. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +4 -2
  336. package/mcp-server/tools/project/GetBuildLogsTool.js +19 -13
  337. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +4 -2
  338. package/mcp-server/tools/project/GetBuildStatusTool.js +19 -13
  339. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +6 -3
  340. package/mcp-server/tools/project/GetConfigValuesTool.js +20 -13
  341. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +4 -2
  342. package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -6
  343. package/mcp-server/tools/project/UploadProjectTools.d.ts +5 -3
  344. package/mcp-server/tools/project/UploadProjectTools.js +18 -15
  345. package/mcp-server/tools/project/ValidateProjectTool.d.ts +5 -3
  346. package/mcp-server/tools/project/ValidateProjectTool.js +13 -10
  347. package/mcp-server/tools/project/constants.d.ts +3 -1
  348. package/mcp-server/tools/project/constants.js +3 -1
  349. package/mcp-server/types.d.ts +0 -7
  350. package/mcp-server/types.js +1 -13
  351. package/mcp-server/utils/command.d.ts +25 -2
  352. package/mcp-server/utils/command.js +68 -16
  353. package/mcp-server/utils/config.js +6 -0
  354. package/mcp-server/utils/logger.d.ts +13 -0
  355. package/mcp-server/utils/logger.js +59 -0
  356. package/mcp-server/utils/toolUsageTracking.js +28 -11
  357. package/package.json +22 -15
  358. package/types/AccountTargets.d.ts +37 -0
  359. package/types/AccountTargets.js +12 -0
  360. package/types/Link.d.ts +32 -0
  361. package/types/Link.js +5 -0
  362. package/types/LocalDev.d.ts +8 -2
  363. package/types/PackageJson.d.ts +1 -0
  364. package/types/ProjectComponents.d.ts +2 -1
  365. package/types/Projects.d.ts +24 -0
  366. package/types/Prompts.d.ts +1 -0
  367. package/types/Yargs.d.ts +22 -2
  368. package/ui/components/ActionSection.d.ts +1 -1
  369. package/ui/components/InputField.d.ts +1 -1
  370. package/ui/components/SelectInput.d.ts +1 -1
  371. package/ui/components/StatusIcon.d.ts +1 -1
  372. package/ui/components/Table.d.ts +5 -5
  373. package/ui/components/getStarted/GetStartedFlow.d.ts +1 -1
  374. package/ui/components/getStarted/screens/InstallationScreen.d.ts +1 -1
  375. package/ui/components/getStarted/screens/ProjectSetupScreen.d.ts +1 -1
  376. package/ui/components/getStarted/screens/UploadScreen.d.ts +1 -1
  377. package/api/__tests__/migrate.test.d.ts +0 -1
  378. package/api/__tests__/migrate.test.js +0 -199
  379. package/commands/__tests__/account.test.d.ts +0 -1
  380. package/commands/__tests__/account.test.js +0 -69
  381. package/commands/__tests__/auth.test.d.ts +0 -1
  382. package/commands/__tests__/auth.test.js +0 -43
  383. package/commands/__tests__/cms.test.d.ts +0 -1
  384. package/commands/__tests__/cms.test.js +0 -87
  385. package/commands/__tests__/config.test.d.ts +0 -1
  386. package/commands/__tests__/config.test.js +0 -44
  387. package/commands/__tests__/customObject.test.d.ts +0 -1
  388. package/commands/__tests__/customObject.test.js +0 -68
  389. package/commands/__tests__/doctor.test.d.ts +0 -1
  390. package/commands/__tests__/doctor.test.js +0 -132
  391. package/commands/__tests__/feedback.test.d.ts +0 -1
  392. package/commands/__tests__/feedback.test.js +0 -24
  393. package/commands/__tests__/filemanager.test.d.ts +0 -1
  394. package/commands/__tests__/filemanager.test.js +0 -45
  395. package/commands/__tests__/getStarted.test.d.ts +0 -1
  396. package/commands/__tests__/getStarted.test.js +0 -173
  397. package/commands/__tests__/hubdb.test.d.ts +0 -1
  398. package/commands/__tests__/hubdb.test.js +0 -50
  399. package/commands/__tests__/init.test.d.ts +0 -1
  400. package/commands/__tests__/init.test.js +0 -42
  401. package/commands/__tests__/mcp.test.d.ts +0 -1
  402. package/commands/__tests__/mcp.test.js +0 -46
  403. package/commands/__tests__/open.test.d.ts +0 -1
  404. package/commands/__tests__/open.test.js +0 -58
  405. package/commands/__tests__/project.test.d.ts +0 -1
  406. package/commands/__tests__/project.test.js +0 -125
  407. package/commands/__tests__/sandbox.test.d.ts +0 -1
  408. package/commands/__tests__/sandbox.test.js +0 -44
  409. package/commands/__tests__/secret.test.d.ts +0 -1
  410. package/commands/__tests__/secret.test.js +0 -49
  411. package/commands/__tests__/testAccount.test.d.ts +0 -1
  412. package/commands/__tests__/testAccount.test.js +0 -57
  413. package/commands/__tests__/upgrade.test.d.ts +0 -1
  414. package/commands/__tests__/upgrade.test.js +0 -309
  415. package/commands/account/__tests__/auth.test.d.ts +0 -1
  416. package/commands/account/__tests__/auth.test.js +0 -206
  417. package/commands/account/__tests__/clean.test.d.ts +0 -1
  418. package/commands/account/__tests__/clean.test.js +0 -28
  419. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  420. package/commands/account/__tests__/createOverride.test.js +0 -32
  421. package/commands/account/__tests__/info.test.d.ts +0 -1
  422. package/commands/account/__tests__/info.test.js +0 -28
  423. package/commands/account/__tests__/list.test.d.ts +0 -1
  424. package/commands/account/__tests__/list.test.js +0 -153
  425. package/commands/account/__tests__/remove.test.d.ts +0 -1
  426. package/commands/account/__tests__/remove.test.js +0 -36
  427. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  428. package/commands/account/__tests__/removeOverride.js +0 -25
  429. package/commands/account/__tests__/rename.test.d.ts +0 -1
  430. package/commands/account/__tests__/rename.test.js +0 -82
  431. package/commands/account/__tests__/use.test.d.ts +0 -1
  432. package/commands/account/__tests__/use.test.js +0 -170
  433. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  434. package/commands/app/__tests__/migrate.test.js +0 -111
  435. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  436. package/commands/app/secret/__tests__/add.test.js +0 -140
  437. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  438. package/commands/app/secret/__tests__/delete.test.js +0 -28
  439. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  440. package/commands/app/secret/__tests__/list.test.js +0 -25
  441. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  442. package/commands/app/secret/__tests__/update.test.js +0 -28
  443. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  444. package/commands/cms/__tests__/delete.test.js +0 -39
  445. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  446. package/commands/cms/__tests__/fetch.test.js +0 -156
  447. package/commands/cms/__tests__/function.test.d.ts +0 -1
  448. package/commands/cms/__tests__/function.test.js +0 -50
  449. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  450. package/commands/cms/__tests__/lint.test.js +0 -33
  451. package/commands/cms/__tests__/list.test.d.ts +0 -1
  452. package/commands/cms/__tests__/list.test.js +0 -42
  453. package/commands/cms/__tests__/module.test.d.ts +0 -1
  454. package/commands/cms/__tests__/module.test.js +0 -45
  455. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  456. package/commands/cms/__tests__/mv.test.js +0 -46
  457. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  458. package/commands/cms/__tests__/theme.test.js +0 -54
  459. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  460. package/commands/cms/__tests__/upload.test.js +0 -308
  461. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  462. package/commands/cms/__tests__/watch.test.js +0 -204
  463. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  464. package/commands/cms/function/__tests__/logs.test.js +0 -70
  465. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  466. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  467. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  468. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  469. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  470. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  471. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  472. package/commands/customObject/__tests__/create.test.js +0 -40
  473. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  474. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  475. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  476. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  477. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  478. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  479. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  480. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  481. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  482. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  483. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  484. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  485. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  486. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  487. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  488. package/commands/filemanager/__tests__/upload.test.js +0 -191
  489. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  490. package/commands/hubdb/__tests__/clear.test.js +0 -28
  491. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  492. package/commands/hubdb/__tests__/create.test.js +0 -28
  493. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  494. package/commands/hubdb/__tests__/delete.test.js +0 -28
  495. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  496. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  497. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  498. package/commands/hubdb/__tests__/list.test.js +0 -88
  499. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  500. package/commands/mcp/__tests__/setup.test.js +0 -26
  501. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  502. package/commands/mcp/__tests__/start.test.js +0 -144
  503. package/commands/project/__tests__/add.test.d.ts +0 -1
  504. package/commands/project/__tests__/add.test.js +0 -107
  505. package/commands/project/__tests__/create.test.d.ts +0 -1
  506. package/commands/project/__tests__/create.test.js +0 -97
  507. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  508. package/commands/project/__tests__/deploy.test.js +0 -307
  509. package/commands/project/__tests__/dev.test.d.ts +0 -1
  510. package/commands/project/__tests__/dev.test.js +0 -273
  511. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  512. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  513. package/commands/project/__tests__/download.test.d.ts +0 -1
  514. package/commands/project/__tests__/download.test.js +0 -39
  515. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  516. package/commands/project/__tests__/installDeps.test.js +0 -140
  517. package/commands/project/__tests__/lint.test.d.ts +0 -1
  518. package/commands/project/__tests__/lint.test.js +0 -704
  519. package/commands/project/__tests__/list.test.d.ts +0 -1
  520. package/commands/project/__tests__/list.test.js +0 -31
  521. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  522. package/commands/project/__tests__/listBuilds.test.js +0 -38
  523. package/commands/project/__tests__/logs.test.d.ts +0 -1
  524. package/commands/project/__tests__/logs.test.js +0 -202
  525. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  526. package/commands/project/__tests__/migrate.test.js +0 -106
  527. package/commands/project/__tests__/open.test.d.ts +0 -1
  528. package/commands/project/__tests__/open.test.js +0 -39
  529. package/commands/project/__tests__/profile.test.d.ts +0 -1
  530. package/commands/project/__tests__/profile.test.js +0 -42
  531. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  532. package/commands/project/__tests__/updateDeps.test.js +0 -140
  533. package/commands/project/__tests__/upload.test.d.ts +0 -1
  534. package/commands/project/__tests__/upload.test.js +0 -234
  535. package/commands/project/__tests__/validate.test.d.ts +0 -1
  536. package/commands/project/__tests__/validate.test.js +0 -381
  537. package/commands/project/__tests__/watch.test.d.ts +0 -1
  538. package/commands/project/__tests__/watch.test.js +0 -35
  539. package/commands/project/dev/deprecatedFlow.d.ts +0 -11
  540. package/commands/project/dev/deprecatedFlow.js +0 -135
  541. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  542. package/commands/sandbox/__tests__/create.test.js +0 -245
  543. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  544. package/commands/sandbox/__tests__/delete.test.js +0 -31
  545. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  546. package/commands/secret/__tests__/addSecret.test.js +0 -162
  547. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  548. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  549. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  550. package/commands/secret/__tests__/listSecret.test.js +0 -29
  551. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  552. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  553. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  554. package/commands/testAccount/__tests__/create.test.js +0 -106
  555. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  556. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  557. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  558. package/commands/testAccount/__tests__/delete.test.js +0 -29
  559. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  560. package/commands/testAccount/__tests__/importData.test.js +0 -92
  561. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  562. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  563. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  564. package/lib/__tests__/accountAuth.test.js +0 -258
  565. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  566. package/lib/__tests__/accountTypes.test.js +0 -98
  567. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  568. package/lib/__tests__/buildAccount.test.js +0 -262
  569. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  570. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  571. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  572. package/lib/__tests__/commandSuggestion.test.js +0 -121
  573. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  574. package/lib/__tests__/commonOpts.test.js +0 -80
  575. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  576. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  577. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  578. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  579. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  580. package/lib/__tests__/hasFeature.test.js +0 -167
  581. package/lib/__tests__/http.test.d.ts +0 -1
  582. package/lib/__tests__/http.test.js +0 -40
  583. package/lib/__tests__/importData.test.d.ts +0 -1
  584. package/lib/__tests__/importData.test.js +0 -98
  585. package/lib/__tests__/npmCli.test.d.ts +0 -1
  586. package/lib/__tests__/npmCli.test.js +0 -84
  587. package/lib/__tests__/oauth.test.d.ts +0 -1
  588. package/lib/__tests__/oauth.test.js +0 -109
  589. package/lib/__tests__/parsing.test.d.ts +0 -1
  590. package/lib/__tests__/parsing.test.js +0 -34
  591. package/lib/__tests__/polling.test.d.ts +0 -1
  592. package/lib/__tests__/polling.test.js +0 -76
  593. package/lib/__tests__/process.test.d.ts +0 -1
  594. package/lib/__tests__/process.test.js +0 -89
  595. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  596. package/lib/__tests__/sandboxSync.test.js +0 -147
  597. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  598. package/lib/__tests__/sandboxes.test.js +0 -156
  599. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  600. package/lib/__tests__/serverlessLogs.test.js +0 -163
  601. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  602. package/lib/__tests__/usageTracking.test.js +0 -197
  603. package/lib/__tests__/validation.test.d.ts +0 -1
  604. package/lib/__tests__/validation.test.js +0 -143
  605. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  606. package/lib/__tests__/yargsUtils.test.js +0 -124
  607. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  608. package/lib/app/__tests__/migrate.test.js +0 -638
  609. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  610. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  611. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  612. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  613. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  614. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  615. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  616. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  617. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  618. package/lib/mcp/__tests__/setup.test.js +0 -523
  619. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  620. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  621. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  622. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  623. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  624. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  625. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  626. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  627. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  628. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  629. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  630. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  631. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  632. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  633. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  634. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  635. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  636. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  637. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  638. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  639. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  640. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  641. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  642. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  643. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  644. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  645. package/lib/projects/__tests__/components.test.d.ts +0 -1
  646. package/lib/projects/__tests__/components.test.js +0 -426
  647. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  648. package/lib/projects/__tests__/deploy.test.js +0 -231
  649. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  650. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  651. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  652. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  653. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  654. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  655. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  656. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  657. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  658. package/lib/projects/__tests__/projects.test.js +0 -58
  659. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  660. package/lib/projects/__tests__/structure.test.js +0 -210
  661. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  662. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  663. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  664. package/lib/projects/__tests__/upload.test.js +0 -183
  665. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  666. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  667. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  668. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  669. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  670. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  671. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  672. package/lib/projects/create/__tests__/v2.test.js +0 -257
  673. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +0 -40
  674. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +0 -128
  675. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +0 -59
  676. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +0 -383
  677. package/lib/projects/platformVersion.d.ts +0 -9
  678. package/lib/projects/platformVersion.js +0 -39
  679. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  680. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  681. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  682. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  683. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  684. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  685. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  686. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  687. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  688. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  689. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  690. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  691. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  692. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  693. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  694. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  695. package/lib/sandboxSync.d.ts +0 -4
  696. package/lib/sandboxSync.js +0 -102
  697. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  698. package/lib/theme/__tests__/migrate.test.js +0 -256
  699. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  700. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  701. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  702. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  703. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  704. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  705. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  706. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  707. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  708. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  709. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  710. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  711. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  712. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  713. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  714. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  715. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  716. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  717. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  718. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -132
  719. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  720. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  721. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  722. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  723. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  724. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  725. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  726. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  727. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  728. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  729. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  730. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  731. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  732. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  733. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  734. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  735. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  736. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  737. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  738. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  739. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  740. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  741. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  742. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  743. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  744. package/mcp-server/utils/__tests__/command.test.js +0 -275
  745. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  746. package/mcp-server/utils/__tests__/content.test.js +0 -164
  747. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  748. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -0,0 +1,109 @@
1
+ import fs from 'fs-extra';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { getStateValue, setStateValue, } from '@hubspot/local-dev-lib/config/state';
5
+ import { STATE_FLAGS } from '@hubspot/local-dev-lib/constants/config';
6
+ import { commands } from '../../lang/en.js';
7
+ import { debugError } from '../errorHandlers/index.js';
8
+ import { uiLogger } from '../ui/logger.js';
9
+ import { trackMcpPromotionShown } from '../usageTracking.js';
10
+ import { MCP_CLIENTS, MCP_SERVER_NAME } from './clients.js';
11
+ const ONE_WEEK_IN_MS = 7 * 24 * 60 * 60 * 1000;
12
+ function isRecord(value) {
13
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
14
+ }
15
+ function configContainsMcpServer(value) {
16
+ if (typeof value === 'string') {
17
+ return value === MCP_SERVER_NAME;
18
+ }
19
+ if (Array.isArray(value)) {
20
+ return value.some(configContainsMcpServer);
21
+ }
22
+ if (!isRecord(value)) {
23
+ return false;
24
+ }
25
+ return Object.entries(value).some(([key, childValue]) => {
26
+ return key === MCP_SERVER_NAME || configContainsMcpServer(childValue);
27
+ });
28
+ }
29
+ function textConfigContainsMcpServer(configContent) {
30
+ return configContent.includes(MCP_SERVER_NAME);
31
+ }
32
+ function jsonConfigContainsMcpServer(configContent) {
33
+ const parsedConfig = JSON.parse(configContent);
34
+ return configContainsMcpServer(parsedConfig);
35
+ }
36
+ export function detectConfiguredMcpClients() {
37
+ const homeDirectory = os.homedir();
38
+ return MCP_CLIENTS.reduce((clients, client) => {
39
+ try {
40
+ const configPath = path.join(homeDirectory, ...client.detection.pathSegments);
41
+ if (!fs.existsSync(configPath)) {
42
+ return clients;
43
+ }
44
+ const configContent = fs.readFileSync(configPath, 'utf8');
45
+ const hasMcpServer = client.detection.type === 'json'
46
+ ? jsonConfigContainsMcpServer(configContent)
47
+ : textConfigContainsMcpServer(configContent);
48
+ if (hasMcpServer) {
49
+ clients.push(client.id);
50
+ }
51
+ }
52
+ catch (e) {
53
+ debugError(e);
54
+ return clients;
55
+ }
56
+ return clients;
57
+ }, []);
58
+ }
59
+ function isScriptSafeSuppressed() {
60
+ return Boolean(process.env.CI || process.env.HUBSPOT_MCP_AI_AGENT || !process.stdout.isTTY);
61
+ }
62
+ function hasRecentPromotion(lastShownAt, now, cooldownMs) {
63
+ if (!lastShownAt) {
64
+ return false;
65
+ }
66
+ const lastShownTime = new Date(lastShownAt).getTime();
67
+ if (Number.isNaN(lastShownTime)) {
68
+ return false;
69
+ }
70
+ return now.getTime() - lastShownTime < cooldownMs;
71
+ }
72
+ function getMcpPromotionLastShownAt() {
73
+ return getStateValue(STATE_FLAGS.MCP_PROMOTION_LAST_SHOWN_AT);
74
+ }
75
+ export async function shouldShowMcpPromotion() {
76
+ if (isScriptSafeSuppressed()) {
77
+ return false;
78
+ }
79
+ try {
80
+ const mcpTotalToolCalls = getStateValue(STATE_FLAGS.MCP_TOTAL_TOOL_CALLS);
81
+ if (typeof mcpTotalToolCalls === 'number' && mcpTotalToolCalls > 0) {
82
+ return false;
83
+ }
84
+ if (detectConfiguredMcpClients().length > 0) {
85
+ return false;
86
+ }
87
+ return !hasRecentPromotion(getMcpPromotionLastShownAt(), new Date(), ONE_WEEK_IN_MS);
88
+ }
89
+ catch (e) {
90
+ debugError(e);
91
+ return false;
92
+ }
93
+ }
94
+ function setMcpPromotionShownAt() {
95
+ setStateValue(STATE_FLAGS.MCP_PROMOTION_LAST_SHOWN_AT, new Date().toISOString());
96
+ }
97
+ export async function showMcpPromotionNudge(commandName) {
98
+ try {
99
+ if (!(await shouldShowMcpPromotion())) {
100
+ return;
101
+ }
102
+ setMcpPromotionShownAt();
103
+ uiLogger.info(commands.mcp.promotion.activeNudge);
104
+ await trackMcpPromotionShown(commandName || undefined);
105
+ }
106
+ catch (e) {
107
+ debugError(e);
108
+ }
109
+ }
@@ -7,11 +7,17 @@ interface McpCommand {
7
7
  args: string[];
8
8
  env?: Record<string, string>;
9
9
  }
10
- export declare function addMcpServerToConfig(targets: string[] | undefined): Promise<string[]>;
10
+ interface ConfigureMcpServerOptions {
11
+ targets?: string[];
12
+ standalone?: boolean;
13
+ cliVersion?: string;
14
+ }
15
+ export declare function configureMcpServer(options: ConfigureMcpServerOptions): Promise<string[]>;
11
16
  export declare function setupVsCode(mcpCommand?: McpCommand): Promise<boolean>;
12
17
  export declare function setupClaudeCode(mcpCommand?: McpCommand): Promise<boolean>;
13
18
  export declare function setupCursor(mcpCommand?: McpCommand): boolean;
14
- export declare function setupWindsurf(mcpCommand?: McpCommand): boolean;
19
+ export declare function setupDevin(mcpCommand?: McpCommand): boolean;
15
20
  export declare function setupCodex(mcpCommand?: McpCommand): Promise<boolean>;
16
21
  export declare function setupGemini(mcpCommand?: McpCommand): Promise<boolean>;
22
+ export declare function setupOpenCode(mcpCommand?: McpCommand): Promise<boolean>;
17
23
  export {};
package/lib/mcp/setup.js CHANGED
@@ -4,31 +4,43 @@ import { promptUser } from '../prompts/promptUtils.js';
4
4
  import SpinniesManager from '../ui/SpinniesManager.js';
5
5
  import { logError, getErrorMessage } from '../errorHandlers/index.js';
6
6
  import { execAsync } from '../../mcp-server/utils/command.js';
7
+ import { MCP_CLIENTS, MCP_SERVER_NAME, getMcpClientPathSegments, } from './clients.js';
7
8
  import path from 'path';
8
9
  import os from 'os';
9
10
  import fs from 'fs-extra';
10
11
  import { existsSync } from 'fs';
11
- const mcpServerName = 'HubSpotDev';
12
+ const mcpServerName = MCP_SERVER_NAME;
12
13
  const claudeCode = 'claude';
13
- const windsurf = 'windsurf';
14
14
  const cursor = 'cursor';
15
+ const devin = 'devin';
15
16
  const vscode = 'vscode';
16
17
  const codex = 'codex';
17
18
  const gemini = 'gemini';
19
+ const opencode = 'opencode';
20
+ const OTHER_TOOL = 'other';
21
+ const clientLabels = {
22
+ codex: commands.mcp.setup.codex,
23
+ claude: commands.mcp.setup.claudeCode,
24
+ cursor: commands.mcp.setup.cursor,
25
+ devin: commands.mcp.setup.devin,
26
+ gemini: commands.mcp.setup.gemini,
27
+ opencode: commands.mcp.setup.opencode,
28
+ vscode: commands.mcp.setup.vsCode,
29
+ };
18
30
  export const supportedTools = [
19
- { name: commands.mcp.setup.codex, value: codex },
20
- { name: commands.mcp.setup.claudeCode, value: claudeCode },
21
- { name: commands.mcp.setup.cursor, value: cursor },
22
- { name: commands.mcp.setup.gemini, value: gemini },
23
- { name: commands.mcp.setup.vsCode, value: vscode },
24
- { name: commands.mcp.setup.windsurf, value: windsurf },
31
+ ...MCP_CLIENTS.map(client => ({
32
+ name: clientLabels[client.id],
33
+ value: client.id,
34
+ })),
35
+ { name: commands.mcp.setup.other, value: OTHER_TOOL },
25
36
  ];
26
37
  const defaultMcpCommand = {
27
38
  command: 'hs',
28
39
  args: ['mcp', 'start'],
29
40
  };
30
- export async function addMcpServerToConfig(targets) {
41
+ export async function configureMcpServer(options) {
31
42
  try {
43
+ const { targets, standalone, cliVersion: cliVersionFlag } = options;
32
44
  let derivedTargets = [];
33
45
  if (!targets || targets.length === 0) {
34
46
  const { selectedTargets } = await promptUser({
@@ -36,6 +48,7 @@ export async function addMcpServerToConfig(targets) {
36
48
  type: 'checkbox',
37
49
  message: commands.mcp.setup.prompts.targets,
38
50
  choices: supportedTools,
51
+ pageSize: supportedTools.length,
39
52
  validate: (choices) => {
40
53
  return choices.length === 0
41
54
  ? commands.mcp.setup.prompts.targetsRequired
@@ -47,23 +60,34 @@ export async function addMcpServerToConfig(targets) {
47
60
  else {
48
61
  derivedTargets = targets;
49
62
  }
50
- // Prompt for standalone mode
51
- const { useStandaloneMode } = await promptUser({
52
- name: 'useStandaloneMode',
53
- type: 'confirm',
54
- message: commands.mcp.setup.prompts.standaloneMode,
55
- default: false,
56
- });
57
- const { cliVersion } = useStandaloneMode
58
- ? await promptUser({
59
- name: 'cliVersion',
60
- type: 'input',
61
- message: commands.mcp.setup.prompts.cliVersion,
62
- validate: (v) => !v || /^[\d]+\.[\d]+\.[\d]+([-+][\w.]+)?$/.test(v.trim())
63
- ? true
64
- : 'Please enter a valid semver version (e.g. 8.0.1) or leave blank for latest.',
65
- })
66
- : { cliVersion: '' };
63
+ const onlyOther = derivedTargets.length === 1 && derivedTargets[0] === OTHER_TOOL;
64
+ let useStandaloneMode = onlyOther ? false : standalone;
65
+ if (useStandaloneMode === undefined) {
66
+ const response = await promptUser({
67
+ name: 'useStandaloneMode',
68
+ type: 'confirm',
69
+ message: commands.mcp.setup.prompts.standaloneMode,
70
+ default: false,
71
+ });
72
+ useStandaloneMode = response.useStandaloneMode;
73
+ }
74
+ let cliVersion = '';
75
+ if (useStandaloneMode) {
76
+ if (cliVersionFlag !== undefined) {
77
+ cliVersion = cliVersionFlag;
78
+ }
79
+ else {
80
+ const response = await promptUser({
81
+ name: 'cliVersion',
82
+ type: 'input',
83
+ message: commands.mcp.setup.prompts.cliVersion,
84
+ validate: (v) => !v || /^[\d]+\.[\d]+\.[\d]+([-+][\w.]+)?$/.test(v.trim())
85
+ ? true
86
+ : 'Please enter a valid semver version (e.g. 8.0.1) or leave blank for latest.',
87
+ });
88
+ cliVersion = response.cliVersion;
89
+ }
90
+ }
67
91
  const cliPackage = cliVersion
68
92
  ? `@hubspot/cli@${cliVersion}`
69
93
  : '@hubspot/cli';
@@ -86,8 +110,8 @@ export async function addMcpServerToConfig(targets) {
86
110
  if (derivedTargets.includes(cursor)) {
87
111
  await runSetupFunction(() => setupCursor(mcpCommand));
88
112
  }
89
- if (derivedTargets.includes(windsurf)) {
90
- await runSetupFunction(() => setupWindsurf(mcpCommand));
113
+ if (derivedTargets.includes(devin)) {
114
+ await runSetupFunction(() => setupDevin(mcpCommand));
91
115
  }
92
116
  if (derivedTargets.includes(vscode)) {
93
117
  await runSetupFunction(() => setupVsCode(mcpCommand));
@@ -98,8 +122,17 @@ export async function addMcpServerToConfig(targets) {
98
122
  if (derivedTargets.includes(gemini)) {
99
123
  await runSetupFunction(() => setupGemini(mcpCommand));
100
124
  }
101
- uiLogger.info(commands.mcp.setup.success(derivedTargets));
102
- return derivedTargets;
125
+ if (derivedTargets.includes(opencode)) {
126
+ await runSetupFunction(() => setupOpenCode(mcpCommand));
127
+ }
128
+ if (derivedTargets.includes(OTHER_TOOL)) {
129
+ logOtherToolInstructions(mcpCommand);
130
+ }
131
+ const configuredTargets = derivedTargets.filter(t => t !== OTHER_TOOL);
132
+ if (configuredTargets.length > 0) {
133
+ uiLogger.info(commands.mcp.setup.success(configuredTargets));
134
+ }
135
+ return configuredTargets;
103
136
  }
104
137
  catch (error) {
105
138
  SpinniesManager.fail('mcpSetup', {
@@ -247,7 +280,7 @@ export async function setupClaudeCode(mcpCommand = defaultMcpCommand) {
247
280
  }
248
281
  }
249
282
  export function setupCursor(mcpCommand = defaultMcpCommand) {
250
- const cursorConfigPath = path.join(os.homedir(), '.cursor', 'mcp.json');
283
+ const cursorConfigPath = path.join(os.homedir(), ...getMcpClientPathSegments(cursor));
251
284
  return setupMcpConfigFile({
252
285
  configPath: cursorConfigPath,
253
286
  configuringMessage: commands.mcp.setup.spinners.configuringCursor,
@@ -256,14 +289,14 @@ export function setupCursor(mcpCommand = defaultMcpCommand) {
256
289
  mcpCommand: buildCommandWithAgentString(mcpCommand, cursor),
257
290
  });
258
291
  }
259
- export function setupWindsurf(mcpCommand = defaultMcpCommand) {
260
- const windsurfConfigPath = path.join(os.homedir(), '.codeium', 'windsurf', 'mcp_config.json');
292
+ export function setupDevin(mcpCommand = defaultMcpCommand) {
293
+ const devinConfigPath = path.join(os.homedir(), ...getMcpClientPathSegments(devin));
261
294
  return setupMcpConfigFile({
262
- configPath: windsurfConfigPath,
263
- configuringMessage: commands.mcp.setup.spinners.configuringWindsurf,
264
- configuredMessage: commands.mcp.setup.spinners.configuredWindsurf,
265
- failedMessage: commands.mcp.setup.spinners.failedToConfigureWindsurf,
266
- mcpCommand: buildCommandWithAgentString(mcpCommand, windsurf),
295
+ configPath: devinConfigPath,
296
+ configuringMessage: commands.mcp.setup.spinners.configuringDevin,
297
+ configuredMessage: commands.mcp.setup.spinners.configuredDevin,
298
+ failedMessage: commands.mcp.setup.spinners.failedToConfigureDevin,
299
+ mcpCommand: buildCommandWithAgentString(mcpCommand, devin),
267
300
  });
268
301
  }
269
302
  export async function setupCodex(mcpCommand = defaultMcpCommand) {
@@ -325,6 +358,58 @@ export async function setupGemini(mcpCommand = defaultMcpCommand) {
325
358
  return false;
326
359
  }
327
360
  }
361
+ export async function setupOpenCode(mcpCommand = defaultMcpCommand) {
362
+ try {
363
+ SpinniesManager.add('openCodeSpinner', {
364
+ text: commands.mcp.setup.spinners.configuringOpenCode,
365
+ });
366
+ try {
367
+ await execAsync('opencode --version');
368
+ }
369
+ catch (error) {
370
+ SpinniesManager.fail('openCodeSpinner', {
371
+ text: commands.mcp.setup.spinners.openCodeNotFound,
372
+ });
373
+ return false;
374
+ }
375
+ const mcpCommandWithAgent = buildCommandWithAgentString(mcpCommand, opencode);
376
+ await execAsync(`opencode mcp add "${mcpServerName}"${buildEnvFlagString(mcpCommand)} -- ${mcpCommandWithAgent.command} ${mcpCommandWithAgent.args.join(' ')}`);
377
+ SpinniesManager.succeed('openCodeSpinner', {
378
+ text: commands.mcp.setup.spinners.configuredOpenCode,
379
+ });
380
+ return true;
381
+ }
382
+ catch (error) {
383
+ SpinniesManager.fail('openCodeSpinner', {
384
+ text: commands.mcp.setup.spinners.openCodeInstallFailed,
385
+ });
386
+ logError(error);
387
+ return false;
388
+ }
389
+ }
390
+ function logOtherToolInstructions(mcpCommand) {
391
+ const { otherInstructions } = commands.mcp.setup;
392
+ uiLogger.log('');
393
+ uiLogger.log(otherInstructions.header);
394
+ uiLogger.log(otherInstructions.docsNote);
395
+ uiLogger.log('');
396
+ uiLogger.log(` ${otherInstructions.commandLabel}`);
397
+ uiLogger.log(` ${mcpCommand.command} ${mcpCommand.args.join(' ')}`);
398
+ uiLogger.log('');
399
+ uiLogger.log(` ${otherInstructions.jsonLabel}`);
400
+ uiLogger.log('');
401
+ const jsonConfig = {
402
+ mcpServers: {
403
+ [mcpServerName]: mcpCommand,
404
+ },
405
+ };
406
+ const indented = JSON.stringify(jsonConfig, null, 2)
407
+ .split('\n')
408
+ .map(line => ` ${line}`)
409
+ .join('\n');
410
+ uiLogger.log(indented);
411
+ uiLogger.log('');
412
+ }
328
413
  function buildCommandWithAgentString(mcpCommand, agent) {
329
414
  const mcpCommandCopy = structuredClone(mcpCommand);
330
415
  mcpCommandCopy.args.push('--ai-agent', agent);
@@ -42,6 +42,10 @@ export async function autoUpdateCLI(argv) {
42
42
  debugError(e);
43
43
  }
44
44
  const cliUpgradeInfo = getCliUpgradeInfo();
45
+ // Ignore all update notifications if the current version is a pre-release (contains a hyphen)
46
+ if (cliUpgradeInfo.current && cliUpgradeInfo.current.includes('-')) {
47
+ showManualInstallHelp = false;
48
+ }
45
49
  if (isAllowAutoUpdatesEnabled &&
46
50
  cliUpgradeInfo.current &&
47
51
  cliUpgradeInfo.latest &&
@@ -49,9 +53,8 @@ export async function autoUpdateCLI(argv) {
49
53
  !argv.useEnv &&
50
54
  !process.env.SKIP_HUBSPOT_CLI_AUTO_UPDATES &&
51
55
  !preventAutoUpdateForCommand(argv._)) {
52
- // Ignore all update notifications if the current version is a pre-release (contains a hyphen)
53
- if (cliUpgradeInfo.current.includes('-')) {
54
- showManualInstallHelp = false;
56
+ if (!showManualInstallHelp) {
57
+ // Pre-release version detected, skip auto-update
55
58
  }
56
59
  else if (!['major', 'latest'].includes(cliUpgradeInfo.type)) {
57
60
  // type "latest" => current installed version is latest
@@ -21,6 +21,7 @@ const SKIP_CONFIG_LOADING_COMMANDS = {
21
21
  init: true,
22
22
  feedback: true,
23
23
  mcp: { start: true },
24
+ project: { lint: true },
24
25
  };
25
26
  // Returns true if the command requires a config file to be present
26
27
  export function shouldLoadConfigForCommand(commandParts) {
@@ -4,6 +4,7 @@ export declare function getLatestPackageVersion(packageName: string): Promise<{
4
4
  latest: string | null;
5
5
  next: string | null;
6
6
  }>;
7
+ export declare function getNpmExecErrorOutput(error: unknown): string | null;
7
8
  export declare function executeInstall(packages?: string[], flags?: string | null, options?: {
8
9
  cwd?: string;
9
10
  }): Promise<void>;
package/lib/npm/npmCli.js CHANGED
@@ -23,6 +23,19 @@ export async function getLatestPackageVersion(packageName) {
23
23
  return { latest: null, next: null };
24
24
  }
25
25
  }
26
+ function isNpmExecError(error) {
27
+ return (typeof error === 'object' &&
28
+ error !== null &&
29
+ ('stderr' in error || 'stdout' in error));
30
+ }
31
+ export function getNpmExecErrorOutput(error) {
32
+ if (!isNpmExecError(error)) {
33
+ return null;
34
+ }
35
+ const stderr = error.stderr?.trim();
36
+ const stdout = error.stdout?.trim();
37
+ return stderr || stdout || null;
38
+ }
26
39
  export async function executeInstall(packages = [], flags, options) {
27
40
  const installCommand = `${DEFAULT_PACKAGE_MANAGER} install${flags ? ` ${flags}` : ''} ${packages.join(' ')}`;
28
41
  uiLogger.debug('Running', installCommand);
package/lib/process.d.ts CHANGED
@@ -8,6 +8,6 @@ interface KeyPress {
8
8
  export declare const TERMINATION_SIGNALS: string[];
9
9
  export declare function handleExit(callback: (onTerminate: {
10
10
  isSIGHUP: boolean;
11
- }) => void): void;
11
+ }) => void): () => void;
12
12
  export declare function handleKeypress(callback: (onKeyPress: KeyPress) => void): void;
13
13
  export {};
package/lib/process.js CHANGED
@@ -16,9 +16,9 @@ export const TERMINATION_SIGNALS = [
16
16
  ];
17
17
  export function handleExit(callback) {
18
18
  let exitInProgress = false;
19
+ const listeners = [];
19
20
  TERMINATION_SIGNALS.forEach(signal => {
20
- process.removeAllListeners(signal);
21
- process.on(signal, async (...args) => {
21
+ const handler = async (...args) => {
22
22
  // Prevent duplicate exit handling
23
23
  if (!exitInProgress) {
24
24
  exitInProgress = true;
@@ -38,8 +38,15 @@ export function handleExit(callback) {
38
38
  }
39
39
  await callback({ isSIGHUP });
40
40
  }
41
- });
41
+ };
42
+ listeners.push({ signal, handler });
43
+ process.on(signal, handler);
42
44
  });
45
+ return () => {
46
+ for (const { signal, handler } of listeners) {
47
+ process.removeListener(signal, handler);
48
+ }
49
+ };
43
50
  }
44
51
  export function handleKeypress(callback) {
45
52
  readline.createInterface(process.stdin, process.stdout);
@@ -4,7 +4,7 @@ import { fetchProjectComponentsMetadata } from '@hubspot/local-dev-lib/api/proje
4
4
  import { fetchAppMetadataBySourceId } from '@hubspot/local-dev-lib/api/appsDev';
5
5
  import { uiLogger } from '../ui/logger.js';
6
6
  import { commands } from '../../lang/en.js';
7
- import { isV2Project } from './platformVersion.js';
7
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
8
8
  import { getDeployedProjectNodes } from './localDev/helpers/project.js';
9
9
  import { debugError } from '../errorHandlers/index.js';
10
10
  class _ProjectLogsManager {
@@ -51,7 +51,7 @@ class _ProjectLogsManager {
51
51
  throw new Error(commands.project.logs.errors.failedToFetchProjectDetails);
52
52
  }
53
53
  this.projectId = project.id;
54
- if (isV2Project(projectConfig.platformVersion)) {
54
+ if (!isLegacyProject(projectConfig.platformVersion)) {
55
55
  const deployedBuildId = project.deployedBuild.buildId;
56
56
  if (!deployedBuildId) {
57
57
  throw new Error(commands.project.logs.errors.noDeployedBuild);
@@ -134,9 +134,12 @@ class _ProjectLogsManager {
134
134
  return this.functions.map(serverlessFunction => serverlessFunction.componentName);
135
135
  }
136
136
  setFunction(functionName) {
137
- if (!functionName || this.functions.length === 0) {
137
+ if (this.functions.length === 0) {
138
138
  throw new Error(commands.project.logs.errors.noFunctionsInProject);
139
139
  }
140
+ if (!functionName) {
141
+ throw new Error(commands.project.logs.errors.functionNameRequired);
142
+ }
140
143
  this.selectedFunction = this.functions.find(serverlessFunction => serverlessFunction.componentName === functionName);
141
144
  if (!this.selectedFunction) {
142
145
  throw new Error(commands.project.logs.errors.noFunctionWithName(functionName));
@@ -0,0 +1,2 @@
1
+ import { type Build } from '@hubspot/local-dev-lib/types/Build';
2
+ export declare function getLastSuccessfulBuild(accountId: number, projectName: string, latestBuild?: Build): Promise<Build | undefined>;
@@ -0,0 +1,22 @@
1
+ import { fetchProjectBuilds } from '@hubspot/local-dev-lib/api/projects';
2
+ import { BUILD_STATUS } from '@hubspot/local-dev-lib/enums/build';
3
+ export async function getLastSuccessfulBuild(accountId, projectName, latestBuild) {
4
+ if (latestBuild?.status === BUILD_STATUS.SUCCESS) {
5
+ return latestBuild;
6
+ }
7
+ let after;
8
+ let hasMore = true;
9
+ while (hasMore) {
10
+ const { data: { results, paging }, } = await fetchProjectBuilds(accountId, projectName, {
11
+ limit: 100,
12
+ ...(after ? { after } : {}),
13
+ });
14
+ const successfulBuild = results.find(build => build.status === BUILD_STATUS.SUCCESS);
15
+ if (successfulBuild) {
16
+ return successfulBuild;
17
+ }
18
+ after = paging?.next?.after;
19
+ hasMore = !!after;
20
+ }
21
+ return undefined;
22
+ }
@@ -114,9 +114,19 @@ export function handleComponentCollision({ dest, src, collisions }) {
114
114
  }
115
115
  });
116
116
  const filenameDifferentiator = generateSafeFilenameDifferentiator(sourceFiles, hsMetaFiles);
117
- // Exclude markdown files fromthe rename process because they should not be duplicated
118
117
  const sourceFilenameMapping = sourceFiles
119
- .filter(filename => !filename.endsWith('.md'))
118
+ .filter(filename => {
119
+ // Exclude markdown files from the rename process because they should not be duplicated
120
+ if (filename.endsWith('.md')) {
121
+ return false;
122
+ }
123
+ // Also exclude the tooling config we add to new projects
124
+ const base = path.parse(filename).base;
125
+ if (base === '.prettierrc.json' || base === 'eslint.config.js') {
126
+ return false;
127
+ }
128
+ return true;
129
+ })
120
130
  .reduce((acc, filename) => {
121
131
  return {
122
132
  ...acc,
@@ -183,12 +193,13 @@ export async function updateHsMetaFilesWithAutoGeneratedFields(projectName, hsMe
183
193
  return component.uid;
184
194
  };
185
195
  let uid = getBaseUid();
186
- let differentiator = 1;
196
+ let differentiator = 2;
187
197
  while (existingUids.includes(uid)) {
188
- differentiator++;
189
198
  uid = `${getBaseUid()}_${differentiator}`;
199
+ differentiator++;
190
200
  }
191
201
  component.uid = uid;
202
+ existingUids.push(uid);
192
203
  if (component.type === AppKey && component.config) {
193
204
  component.config.name = `${projectName}-App`;
194
205
  }
@@ -1,7 +1,7 @@
1
1
  import { selectProjectTemplatePrompt, } from '../../prompts/selectProjectTemplatePrompt.js';
2
2
  import { projectNameAndDestPrompt } from '../../prompts/projectNameAndDestPrompt.js';
3
3
  import { DEFAULT_PROJECT_TEMPLATE_BRANCH, HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, EMPTY_PROJECT, } from '../../constants.js';
4
- import { isV2Project } from '../platformVersion.js';
4
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
5
5
  import { v2ComponentFlow } from './v2.js';
6
6
  import { getProjectTemplateListFromRepo } from './legacy.js';
7
7
  import { commands } from '../../../lang/en.js';
@@ -9,7 +9,7 @@ export async function handleProjectCreationFlow(args) {
9
9
  const { platformVersion, templateSource, projectBase, auth: providedAuth, distribution: providedDistribution, } = args;
10
10
  const repo = templateSource || HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH;
11
11
  const projectNameAndDestPromptResponse = await projectNameAndDestPrompt(args);
12
- if (isV2Project(platformVersion)) {
12
+ if (!isLegacyProject(platformVersion)) {
13
13
  const { componentTemplateChoices, authType, distribution, repoConfig, projectContents, } = await v2ComponentFlow(platformVersion, projectBase, providedAuth, providedDistribution, args.derivedAccountId);
14
14
  const selectProjectTemplatePromptResponse = await selectProjectTemplatePrompt(args, undefined, projectContents !== EMPTY_PROJECT ? componentTemplateChoices : undefined);
15
15
  return {
@@ -1,13 +1,13 @@
1
1
  import { fetchRepoFile } from '@hubspot/local-dev-lib/api/github';
2
2
  import { DEFAULT_PROJECT_TEMPLATE_BRANCH, HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, PROJECT_COMPONENT_TYPES, } from '../../constants.js';
3
3
  import { debugError } from '../../errorHandlers/index.js';
4
- import { isV2Project } from '../platformVersion.js';
4
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
5
5
  import { lib } from '../../../lang/en.js';
6
6
  const PROJECT_TEMPLATE_PROPERTIES = ['name', 'label', 'path'];
7
7
  export const EMPTY_PROJECT_TEMPLATE_NAME = 'no-template';
8
8
  export async function getConfigForPlatformVersion(platformVersion) {
9
9
  let path = '';
10
- if (isV2Project(platformVersion)) {
10
+ if (!isLegacyProject(platformVersion)) {
11
11
  path = `${platformVersion}/`;
12
12
  }
13
13
  const { data } = await fetchRepoFile(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, `${path}config.json`, DEFAULT_PROJECT_TEMPLATE_BRANCH);
@@ -1,8 +1,8 @@
1
1
  import { marketplaceDistribution, oAuth, privateDistribution, staticAuth, EMPTY_PROJECT, PROJECT_WITH_APP, FEATURES, } from '../../constants.js';
2
2
  import { commands, lib } from '../../../lang/en.js';
3
3
  import { listPrompt } from '../../prompts/promptUtils.js';
4
- import { APP_EVENTS_KEY as AppEventsKey, PAGES_KEY as PagesKey, } from '@hubspot/project-parsing-lib/constants';
5
- import { isV2Project } from '../platformVersion.js';
4
+ import { APP_EVENTS_KEY as AppEventsKey } from '@hubspot/project-parsing-lib/constants';
5
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
6
6
  import path from 'path';
7
7
  import { getConfigForPlatformVersion } from './legacy.js';
8
8
  import { hasFeature } from '../../hasFeature.js';
@@ -47,8 +47,8 @@ export async function createV2App(providedAuth, providedDistribution) {
47
47
  }
48
48
  const componentTypeToGateMap = {
49
49
  [AppEventsKey]: FEATURES.APP_EVENTS,
50
- [PagesKey]: FEATURES.APPS_HOME,
51
50
  'workflow-action-tool': FEATURES.AGENT_TOOLS,
51
+ 'crm-bulk-action': FEATURES.APP_ACTIONS,
52
52
  };
53
53
  export async function calculateComponentTemplateChoices(components, authType, distribution, accountId, projectMetadata) {
54
54
  const enabledComponents = [];
@@ -113,11 +113,11 @@ export async function v2ComponentFlow(platformVersion, projectBase, providedAuth
113
113
  const projectContentsChoice = projectBase ||
114
114
  (await listPrompt(commands.project.create.prompts.parentComponents, {
115
115
  choices: [
116
+ { name: commands.project.create.prompts.app, value: PROJECT_WITH_APP },
116
117
  {
117
118
  name: commands.project.create.prompts.emptyProject,
118
119
  value: EMPTY_PROJECT,
119
120
  },
120
- { name: commands.project.create.prompts.app, value: PROJECT_WITH_APP },
121
121
  ],
122
122
  }));
123
123
  if (projectContentsChoice === PROJECT_WITH_APP) {
@@ -135,7 +135,7 @@ export async function v2ComponentFlow(platformVersion, projectBase, providedAuth
135
135
  };
136
136
  }
137
137
  export function generateComponentPaths({ selectProjectTemplatePromptResponse, platformVersion, repoConfig, projectContents, authType, distribution, }) {
138
- if (!isV2Project(platformVersion)) {
138
+ if (isLegacyProject(platformVersion)) {
139
139
  return [];
140
140
  }
141
141
  const components = selectProjectTemplatePromptResponse.componentTemplates?.map((componentTemplate) => {
@@ -0,0 +1,13 @@
1
+ export declare const DELETION_POLL_TIMEOUT_MS: number;
2
+ export declare const DELETION_DEPLOY_SUCCESS_STATES: string[];
3
+ export declare const DELETION_DEPLOY_ERROR_STATES: ("FAILURE" | "ERROR" | "REVERTED")[];
4
+ export declare function resolveProjectName(accountId: number, projectArg: string | undefined): Promise<string>;
5
+ export declare function fetchProjectInstallCount(accountId: number, projectId: number): Promise<number>;
6
+ export declare function checkDeployedComponents(accountId: number, projectName: string): Promise<{
7
+ platformVersion: string;
8
+ hasUnifiedComponents: boolean;
9
+ projectId: number;
10
+ }>;
11
+ export declare function deleteDeployedComponents(accountId: number, projectName: string): Promise<void>;
12
+ export declare function handleProjectDeletion(accountId: number, projectName: string): Promise<void>;
13
+ export declare function confirmDeletion(projectName: string, accountId: number, projectId: number): Promise<void>;