@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
@@ -1,57 +1,62 @@
1
1
  import { fetchProject } from '@hubspot/local-dev-lib/api/projects';
2
2
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
3
- import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
4
- import { isV2Project } from '../../lib/projects/platformVersion.js';
5
- import { trackCommandUsage } from '../../lib/usageTracking.js';
3
+ import { isSpecifiedError } from '@hubspot/local-dev-lib/errors/index';
4
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
6
5
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
7
- import { getProjectConfig } from '../../lib/projects/config.js';
6
+ import { getProjectConfig, validateProjectConfig, } from '../../lib/projects/config.js';
8
7
  import { projectNamePrompt } from '../../lib/prompts/projectNamePrompt.js';
8
+ import { projectProfilePrompt } from '../../lib/prompts/projectProfilePrompt.js';
9
9
  import { promptUser } from '../../lib/prompts/promptUtils.js';
10
10
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
11
11
  import { uiLogger } from '../../lib/ui/logger.js';
12
+ import { makeWrappedYargsHandler } from '../../lib/yargs/makeWrappedYargsHandler.js';
13
+ import { DeploySchema } from '../../lib/jsonOutput.js';
12
14
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
13
- import { loadProfile, logProfileFooter, logProfileHeader, enforceProfileUsage, } from '../../lib/projects/projectProfiles.js';
15
+ import { loadProfile } from '../../lib/projects/projectProfiles.js';
14
16
  import { PROJECT_DEPLOY_TEXT } from '../../lib/constants.js';
15
17
  import { commands } from '../../lang/en.js';
16
18
  import { handleProjectDeploy, validateBuildIdForDeploy, logDeployErrors, } from '../../lib/projects/deploy.js';
19
+ import { validateBuildForRelease } from '../../lib/projects/release.js';
20
+ import { getLastSuccessfulBuild } from '../../lib/projects/builds.js';
17
21
  const command = 'deploy';
18
22
  const describe = commands.project.deploy.describe;
19
23
  async function handler(args) {
20
- const { derivedAccountId, project: projectOption, buildId: buildIdOption, force: forceOption, deployLatestBuild: deployLatestBuildOption, json: formatOutputAsJson, } = args;
24
+ const { derivedAccountId, project: projectOption, buildId: buildIdOption, force: forceOption, deployLatestBuild: deployLatestBuildOption, profile: profileOption, useEnv: useEnvOption, exit, addUsageMetadata, addJsonOutput, } = args;
21
25
  const accountConfig = getConfigAccountById(derivedAccountId);
22
26
  const accountType = accountConfig && accountConfig.accountType;
23
27
  let targetAccountId;
24
- const jsonOutput = {};
25
28
  const { projectConfig, projectDir } = await getProjectConfig();
26
- if (isV2Project(projectConfig?.platformVersion)) {
27
- if (args.profile) {
28
- logProfileHeader(args.profile);
29
- let profile;
30
- try {
31
- profile = loadProfile(projectConfig, projectDir, args.profile);
32
- }
33
- catch (error) {
34
- logError(error);
35
- process.exit(EXIT_CODES.ERROR);
29
+ let isInProjectDirectory = false;
30
+ // Validate project config, but it's valid to run this command from outside a project dir
31
+ try {
32
+ validateProjectConfig(projectConfig, projectDir);
33
+ isInProjectDirectory = true;
34
+ }
35
+ catch (e) { }
36
+ if (isInProjectDirectory &&
37
+ !isLegacyProject(projectConfig?.platformVersion)) {
38
+ try {
39
+ const profileName = await projectProfilePrompt(projectDir, projectConfig, profileOption, !!useEnvOption);
40
+ if (profileName) {
41
+ // Use loadProfile instead of loadAndValidateProfile because the local
42
+ // profile does not need to be valid to successfully deploy
43
+ const profile = loadProfile(projectConfig, projectDir, profileName);
44
+ targetAccountId = profile.accountId;
45
+ uiLogger.log(commands.project.deploy.profileMessage(profileName, targetAccountId));
46
+ uiLogger.log('');
36
47
  }
37
- targetAccountId = profile.accountId;
38
- logProfileFooter(profile);
39
48
  }
40
- else {
41
- // A profile must be specified if this project has profiles configured
42
- try {
43
- await enforceProfileUsage(projectConfig, projectDir);
44
- }
45
- catch (error) {
46
- logError(error);
47
- process.exit(EXIT_CODES.ERROR);
48
- }
49
+ catch (error) {
50
+ logError(error);
51
+ return exit(EXIT_CODES.ERROR);
49
52
  }
50
53
  }
51
54
  if (!targetAccountId) {
52
55
  targetAccountId = derivedAccountId;
53
56
  }
54
- trackCommandUsage('project-deploy', accountType ? { type: accountType } : undefined, targetAccountId);
57
+ if (accountType) {
58
+ addUsageMetadata({ type: accountType });
59
+ }
55
60
  let projectName = projectOption;
56
61
  if (!projectOption && projectConfig) {
57
62
  projectName = projectConfig.name;
@@ -66,26 +71,31 @@ async function handler(args) {
66
71
  const { data: { latestBuild, deployedBuildId }, } = await fetchProject(targetAccountId, projectName);
67
72
  if (!latestBuild || !latestBuild.buildId) {
68
73
  uiLogger.error(commands.project.deploy.errors.noBuilds);
69
- return process.exit(EXIT_CODES.ERROR);
74
+ return exit(EXIT_CODES.ERROR);
70
75
  }
71
76
  if (buildIdToDeploy) {
72
77
  const validationResult = validateBuildIdForDeploy(buildIdToDeploy, deployedBuildId, latestBuild.buildId, projectName, targetAccountId);
73
78
  if (validationResult !== true) {
74
79
  uiLogger.error(validationResult.toString());
75
- return process.exit(EXIT_CODES.ERROR);
80
+ return exit(EXIT_CODES.ERROR);
76
81
  }
77
82
  }
78
83
  else {
84
+ const lastSuccessfulBuild = await getLastSuccessfulBuild(targetAccountId, projectName, latestBuild);
85
+ if (!lastSuccessfulBuild) {
86
+ uiLogger.error(commands.project.deploy.errors.noSuccessfulBuilds);
87
+ return exit(EXIT_CODES.ERROR);
88
+ }
79
89
  if (deployLatestBuildOption) {
80
- buildIdToDeploy = latestBuild.buildId;
90
+ buildIdToDeploy = lastSuccessfulBuild.buildId;
81
91
  }
82
92
  else {
83
93
  const deployBuildIdPromptResponse = await promptUser({
84
94
  name: 'buildId',
85
95
  message: commands.project.deploy.deployBuildIdPrompt,
86
- default: latestBuild.buildId === deployedBuildId
96
+ default: lastSuccessfulBuild.buildId === deployedBuildId
87
97
  ? undefined
88
- : latestBuild.buildId,
98
+ : lastSuccessfulBuild.buildId,
89
99
  validate: buildId => validateBuildIdForDeploy(buildId, deployedBuildId, latestBuild.buildId, projectName, targetAccountId),
90
100
  });
91
101
  buildIdToDeploy = deployBuildIdPromptResponse.buildId;
@@ -93,24 +103,35 @@ async function handler(args) {
93
103
  }
94
104
  if (!buildIdToDeploy) {
95
105
  uiLogger.error(commands.project.deploy.errors.noBuildId);
96
- return process.exit(EXIT_CODES.ERROR);
106
+ return exit(EXIT_CODES.ERROR);
107
+ }
108
+ try {
109
+ const supportsReleases = await validateBuildForRelease(targetAccountId, projectName, buildIdToDeploy);
110
+ // The deploy verb is not compatible with builds that leverage releases. Use release create instead.
111
+ if (supportsReleases) {
112
+ uiLogger.error(commands.project.deploy.errors.notSupportedForBuildVersion);
113
+ return exit(EXIT_CODES.ERROR);
114
+ }
97
115
  }
98
- const deployResult = await handleProjectDeploy(targetAccountId, projectName, buildIdToDeploy, isV2Project(projectConfig?.platformVersion), forceOption);
116
+ catch {
117
+ return exit(EXIT_CODES.ERROR);
118
+ }
119
+ const deployResult = await handleProjectDeploy(targetAccountId, projectName, buildIdToDeploy, isLegacyProject(projectConfig?.platformVersion), forceOption);
99
120
  if (!deployResult) {
100
- return process.exit(EXIT_CODES.ERROR);
121
+ return exit(EXIT_CODES.ERROR);
101
122
  }
102
- else if (formatOutputAsJson) {
103
- jsonOutput.deployId = deployResult.deployId;
123
+ else {
124
+ addJsonOutput({ deployId: deployResult.deployId });
104
125
  }
105
126
  if (deployResult.status === PROJECT_DEPLOY_TEXT.STATES.SUCCESS) {
106
127
  deploySuccess = true;
107
128
  }
108
129
  }
109
130
  catch (e) {
110
- if (isHubSpotHttpError(e) && e.status === 404) {
131
+ if (isSpecifiedError(e, { statusCode: 404 })) {
111
132
  uiLogger.error(commands.project.deploy.errors.projectNotFound(targetAccountId, projectName));
112
133
  }
113
- else if (isHubSpotHttpError(e) && e.status === 400) {
134
+ else if (isSpecifiedError(e, { statusCode: 400 })) {
114
135
  if (e.data?.message && e.data?.errors) {
115
136
  logDeployErrors(e.data);
116
137
  }
@@ -124,16 +145,13 @@ async function handler(args) {
124
145
  request: 'project deploy',
125
146
  }));
126
147
  }
127
- return process.exit(EXIT_CODES.ERROR);
128
- }
129
- if (formatOutputAsJson) {
130
- uiLogger.json(jsonOutput);
148
+ return exit(EXIT_CODES.ERROR);
131
149
  }
132
150
  if (deploySuccess) {
133
- process.exit(EXIT_CODES.SUCCESS);
151
+ return exit(EXIT_CODES.SUCCESS);
134
152
  }
135
153
  else {
136
- process.exit(EXIT_CODES.ERROR);
154
+ return exit(EXIT_CODES.ERROR);
137
155
  }
138
156
  }
139
157
  function projectDeployBuilder(yargs) {
@@ -191,6 +209,8 @@ const projectDeployCommand = {
191
209
  command,
192
210
  describe,
193
211
  builder,
194
- handler,
212
+ handler: makeWrappedYargsHandler('project-deploy', handler, {
213
+ jsonOutputSchema: DeploySchema,
214
+ }),
195
215
  };
196
216
  export default projectDeployCommand;
@@ -1,5 +1,5 @@
1
- import { Argv, CommandModule } from 'yargs';
2
- import { ProjectDevArgs } from '../../../types/Yargs.js';
1
+ import { Argv } from 'yargs';
2
+ import { ProjectDevArgs, YargsCommandModule } from '../../../types/Yargs.js';
3
3
  export declare const builder: (yargs: Argv) => Promise<Argv<ProjectDevArgs>>;
4
- declare const projectDevCommand: CommandModule<unknown, ProjectDevArgs>;
4
+ declare const projectDevCommand: YargsCommandModule<unknown, ProjectDevArgs>;
5
5
  export default projectDevCommand;
@@ -1,58 +1,42 @@
1
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
2
1
  import { getConfigAccountIfExists } from '@hubspot/local-dev-lib/config';
3
- import { getAllHsProfiles, } from '@hubspot/project-parsing-lib/profiles';
4
2
  import { getProjectConfig, validateProjectConfig, } from '../../../lib/projects/config.js';
5
3
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
6
4
  import { uiLine } from '../../../lib/ui/index.js';
7
- import { deprecatedProjectDevFlow } from './deprecatedFlow.js';
5
+ import { makeWrappedYargsHandler } from '../../../lib/yargs/makeWrappedYargsHandler.js';
8
6
  import { unifiedProjectDevFlow } from './unifiedFlow.js';
9
- import { isV2Project } from '../../../lib/projects/platformVersion.js';
7
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
10
8
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
- import { loadProfile } from '../../../lib/projects/projectProfiles.js';
9
+ import { loadAndValidateProfile } from '../../../lib/projects/projectProfiles.js';
12
10
  import { commands } from '../../../lang/en.js';
13
11
  import { uiLogger } from '../../../lib/ui/logger.js';
14
12
  import { logError } from '../../../lib/errorHandlers/index.js';
15
- import path from 'path';
16
- import { listPrompt } from '../../../lib/prompts/promptUtils.js';
13
+ import { projectProfilePrompt } from '../../../lib/prompts/projectProfilePrompt.js';
14
+ import { isPromptExitError } from '../../../lib/errors/PromptExitError.js';
15
+ import { LOCAL_DEV_DEFAULT_PORT } from '../../../lib/constants.js';
17
16
  const command = 'dev';
18
17
  const describe = commands.project.dev.describe;
19
- function validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2) {
20
- // Legacy projects do not support targetTestingAccount and targetProjectAccount
21
- if (testingAccount && projectAccount && !useV2) {
22
- uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagLegacy);
23
- process.exit(EXIT_CODES.ERROR);
24
- }
25
- if (userProvidedAccount && useV2) {
26
- uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagV2);
27
- process.exit(EXIT_CODES.ERROR);
28
- }
29
- }
30
18
  async function handler(args) {
31
- const { derivedAccountId, userProvidedAccount, testingAccount, projectAccount, } = args;
19
+ const { derivedAccountId, testingAccount, projectAccount, profile: profileOption, exit, addUsageMetadata, } = args;
32
20
  const { projectConfig, projectDir } = await getProjectConfig();
33
21
  try {
34
22
  validateProjectConfig(projectConfig, projectDir);
35
23
  }
36
24
  catch (error) {
37
25
  logError(error);
38
- process.exit(EXIT_CODES.ERROR);
26
+ return exit(EXIT_CODES.ERROR);
39
27
  }
40
- const useV2Projects = isV2Project(projectConfig.platformVersion);
41
28
  if (!projectDir) {
42
29
  uiLogger.error(commands.project.dev.errors.noProjectConfig);
43
- process.exit(EXIT_CODES.ERROR);
44
- }
45
- validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2Projects);
46
- uiLogger.log(commands.project.dev.logs.header);
47
- if (useV2Projects) {
48
- uiLogger.log(commands.project.dev.logs.learnMoreMessageV2);
30
+ return exit(EXIT_CODES.ERROR);
49
31
  }
50
- else {
51
- uiLogger.log(commands.project.dev.logs.learnMoreMessageLegacy);
32
+ if (isLegacyProject(projectConfig.platformVersion)) {
33
+ uiLogger.error(commands.project.dev.errors.unsupportedPlatformVersion(projectConfig.platformVersion));
34
+ return exit(EXIT_CODES.ERROR);
52
35
  }
36
+ uiLogger.log(commands.project.dev.logs.header);
37
+ uiLogger.log(commands.project.dev.logs.learnMoreMessageV2);
53
38
  let targetProjectAccountId;
54
39
  let profile;
55
- // Using the new --projectAccount flag
56
40
  if (projectAccount) {
57
41
  targetProjectAccountId =
58
42
  getConfigAccountIfExists(projectAccount)?.accountId;
@@ -60,25 +44,12 @@ async function handler(args) {
60
44
  uiLogger.log('');
61
45
  uiLogger.log(commands.project.dev.logs.projectAccountFlagExplanation(targetProjectAccountId));
62
46
  }
63
- // Using the legacy --account flag
64
- }
65
- else if (userProvidedAccount && derivedAccountId) {
66
- targetProjectAccountId = derivedAccountId;
67
47
  }
68
- // Determine profile name: from flag or prompt
69
- if (!targetProjectAccountId && isV2Project(projectConfig.platformVersion)) {
70
- let profileName = args.profile;
71
- if (!profileName) {
72
- const existingProfiles = await getAllHsProfiles(path.join(projectDir, projectConfig.srcDir));
73
- if (existingProfiles.length !== 0) {
74
- profileName = await listPrompt(commands.project.dev.prompts.selectProfile, {
75
- choices: existingProfiles,
76
- });
77
- }
78
- }
48
+ if (!targetProjectAccountId) {
49
+ const profileName = await projectProfilePrompt(projectDir, projectConfig, profileOption);
79
50
  if (profileName) {
80
51
  try {
81
- profile = loadProfile(projectConfig, projectDir, profileName);
52
+ profile = await loadAndValidateProfile(projectConfig, projectDir, profileName);
82
53
  targetProjectAccountId = profile.accountId;
83
54
  uiLogger.log('');
84
55
  uiLogger.log(commands.project.dev.logs.profileProjectAccountExplanation(targetProjectAccountId, profileName));
@@ -86,20 +57,17 @@ async function handler(args) {
86
57
  catch (error) {
87
58
  logError(error);
88
59
  uiLine();
89
- process.exit(EXIT_CODES.ERROR);
60
+ return exit(EXIT_CODES.ERROR);
90
61
  }
91
62
  }
92
63
  }
93
64
  if (!targetProjectAccountId) {
94
- // The user is not using profile or account flags, so we can use the derived accountId
95
65
  targetProjectAccountId = derivedAccountId;
96
- if (useV2Projects) {
97
- uiLogger.log('');
98
- uiLogger.log(commands.project.dev.logs.defaultProjectAccountExplanation(targetProjectAccountId));
99
- }
66
+ uiLogger.log('');
67
+ uiLogger.log(commands.project.dev.logs.defaultProjectAccountExplanation(targetProjectAccountId));
100
68
  }
101
- trackCommandUsage('project-dev', {}, targetProjectAccountId);
102
- if (isV2Project(projectConfig.platformVersion)) {
69
+ addUsageMetadata({ accountId: targetProjectAccountId ?? undefined });
70
+ try {
103
71
  const targetTestingAccountId = testingAccount
104
72
  ? getConfigAccountIfExists(testingAccount)?.accountId
105
73
  : undefined;
@@ -112,13 +80,12 @@ async function handler(args) {
112
80
  profileConfig: profile,
113
81
  });
114
82
  }
115
- else {
116
- await deprecatedProjectDevFlow({
117
- args,
118
- accountId: targetProjectAccountId,
119
- projectConfig,
120
- projectDir,
121
- });
83
+ catch (e) {
84
+ if (isPromptExitError(e)) {
85
+ throw e;
86
+ }
87
+ logError(e);
88
+ return exit(EXIT_CODES.ERROR);
122
89
  }
123
90
  }
124
91
  function projectDevBuilder(yargs) {
@@ -138,14 +105,12 @@ function projectDevBuilder(yargs) {
138
105
  description: commands.project.dev.options.projectAccount,
139
106
  implies: ['testingAccount'],
140
107
  });
141
- yargs.option('account', {
142
- alias: 'a',
143
- describe: '',
144
- type: 'string',
145
- description: commands.project.dev.options.account,
108
+ yargs.option('port', {
109
+ type: 'number',
110
+ description: commands.project.dev.options.port,
111
+ default: LOCAL_DEV_DEFAULT_PORT,
146
112
  });
147
113
  yargs.example([['$0 project dev', commands.project.dev.examples.default]]);
148
- yargs.conflicts('profile', 'account');
149
114
  yargs.conflicts('profile', 'testing-account');
150
115
  yargs.conflicts('profile', 'project-account');
151
116
  return yargs;
@@ -158,7 +123,7 @@ export const builder = makeYargsBuilder(projectDevBuilder, command, describe, {
158
123
  const projectDevCommand = {
159
124
  command,
160
125
  describe,
161
- handler,
126
+ handler: makeWrappedYargsHandler('project-dev', handler),
162
127
  builder,
163
128
  };
164
129
  export default projectDevCommand;
@@ -3,13 +3,14 @@ import util from 'util';
3
3
  import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
4
4
  import { startPortManagerServer, stopPortManagerServer, } from '@hubspot/local-dev-lib/portManager';
5
5
  import { isTranslationError, translateForLocalDev, } from '@hubspot/project-parsing-lib/translate';
6
- import { getConfigAccountEnvironment, getAllConfigAccounts, getConfigAccountById, } from '@hubspot/local-dev-lib/config';
6
+ import { getConfigAccountEnvironment, getLinkedOrAllConfigAccounts, getConfigAccountById, getConfigAccountIfExists, } from '@hubspot/local-dev-lib/config';
7
7
  import { logError } from '../../../lib/errorHandlers/index.js';
8
8
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
9
+ import { warnAboutSkippedHsMetaFiles } from '../../../lib/projects/ui.js';
9
10
  import { ensureProjectExists } from '../../../lib/projects/ensureProjectExists.js';
10
11
  import { createInitialBuildForNewProject, createNewProjectForLocalDev, compareLocalProjectToDeployed, checkAndInstallDependencies, } from '../../../lib/projects/localDev/helpers/project.js';
11
12
  import { useExistingDevTestAccount, createDeveloperTestAccountForLocalDev, selectAccountTypePrompt, createSandboxForLocalDev, } from '../../../lib/projects/localDev/helpers/account.js';
12
- import { selectDeveloperTestTargetAccountPrompt, selectSandboxTargetAccountPrompt, } from '../../../lib/prompts/projectDevTargetAccountPrompt.js';
13
+ import { selectDeveloperTestTargetAccountPrompt, selectSandboxTargetAccountPrompt, confirmLinkExistingDeveloperTestAccountPrompt, } from '../../../lib/prompts/projectDevTargetAccountPrompt.js';
13
14
  import LocalDevProcess from '../../../lib/projects/localDev/LocalDevProcess.js';
14
15
  import LocalDevWatcher from '../../../lib/projects/localDev/LocalDevWatcher.js';
15
16
  import { handleExit, handleKeypress } from '../../../lib/process.js';
@@ -17,15 +18,21 @@ import { isTestAccountOrSandbox, isUnifiedAccount, } from '../../../lib/accountT
17
18
  import { uiLogger } from '../../../lib/ui/logger.js';
18
19
  import { commands } from '../../../lang/en.js';
19
20
  import LocalDevWebsocketServer from '../../../lib/projects/localDev/LocalDevWebsocketServer.js';
20
- import { confirmLocalDevIsNotRunning } from '../../../lib/projects/localDev/helpers/process.js';
21
+ import { isLocalDevRunning } from '../../../lib/projects/localDev/helpers/process.js';
22
+ import { getHsSettingsFileIfExists, getHsSettingsFilePath, } from '@hubspot/local-dev-lib/config/hsSettings';
23
+ import { isDirectoryLinked, addAccountToLinkedSettings, } from '../../../lib/link/linkUtils.js';
21
24
  export async function unifiedProjectDevFlow({ args, targetProjectAccountId, providedTargetTestingAccountId, projectConfig, projectDir, }) {
22
- await confirmLocalDevIsNotRunning();
25
+ const { exit } = args;
26
+ if (await isLocalDevRunning()) {
27
+ uiLogger.error(commands.project.dev.errors.localDevAlreadyRunning);
28
+ return exit(EXIT_CODES.ERROR);
29
+ }
23
30
  const env = getConfigAccountEnvironment(targetProjectAccountId);
24
31
  let projectNodes;
25
32
  let projectProfileData;
26
33
  // Get IR
27
34
  try {
28
- const intermediateRepresentation = await translateForLocalDev({
35
+ const { intermediateRepresentation, skippedHsMetaFiles } = await translateForLocalDev({
29
36
  projectSourceDir: path.join(projectDir, projectConfig.srcDir),
30
37
  platformVersion: projectConfig.platformVersion,
31
38
  accountId: targetProjectAccountId,
@@ -33,6 +40,7 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
33
40
  projectNodes = intermediateRepresentation.intermediateNodesIndexedByUid;
34
41
  projectProfileData = intermediateRepresentation.profileData;
35
42
  uiLogger.debug(util.inspect(projectNodes, false, null, true));
43
+ await warnAboutSkippedHsMetaFiles(skippedHsMetaFiles, true, false);
36
44
  }
37
45
  catch (e) {
38
46
  if (isTranslationError(e)) {
@@ -41,23 +49,29 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
41
49
  else {
42
50
  logError(e);
43
51
  }
44
- return process.exit(EXIT_CODES.ERROR);
52
+ return exit(EXIT_CODES.ERROR);
45
53
  }
46
54
  if (!Object.keys(projectNodes).length) {
47
55
  uiLogger.error(commands.project.dev.errors.noRunnableComponents);
48
- process.exit(EXIT_CODES.SUCCESS);
56
+ return exit(EXIT_CODES.SUCCESS);
49
57
  }
50
58
  const targetProjectAccountConfig = getConfigAccountById(targetProjectAccountId);
51
59
  if (!targetProjectAccountConfig) {
52
60
  uiLogger.error(commands.project.dev.errors.noAccount(targetProjectAccountId));
53
- process.exit(EXIT_CODES.ERROR);
61
+ return exit(EXIT_CODES.ERROR);
54
62
  }
55
- const accounts = getAllConfigAccounts();
63
+ const hsSettings = getHsSettingsFileIfExists();
64
+ const directoryIsLinked = isDirectoryLinked(hsSettings);
65
+ const accounts = getLinkedOrAllConfigAccounts();
56
66
  const accountIsCombined = await isUnifiedAccount(targetProjectAccountConfig);
57
67
  const targetProjectAccountIsTestAccountOrSandbox = isTestAccountOrSandbox(targetProjectAccountConfig);
58
68
  if (!accountIsCombined) {
59
69
  uiLogger.error(commands.project.dev.errors.accountNotCombined);
60
- process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
71
+ }
72
+ if (directoryIsLinked && !providedTargetTestingAccountId) {
73
+ uiLogger.log('');
74
+ uiLogger.info(commands.account.subcommands.link.shared.usingLinkedAccounts(getHsSettingsFilePath()));
61
75
  }
62
76
  let targetTestingAccountId = providedTargetTestingAccountId;
63
77
  // Temporarily removing logic to use profile account as testing account
@@ -77,16 +91,39 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
77
91
  const accountType = await selectAccountTypePrompt(targetProjectAccountConfig);
78
92
  if (accountType === HUBSPOT_ACCOUNT_TYPES.DEVELOPER_TEST) {
79
93
  const devAccountPromptResponse = await selectDeveloperTestTargetAccountPrompt(accounts, targetProjectAccountConfig);
94
+ const { notInConfigAccount } = devAccountPromptResponse;
80
95
  targetTestingAccountId =
81
96
  devAccountPromptResponse.targetAccountId || undefined;
82
- if (!!devAccountPromptResponse.notInConfigAccount) {
83
- // When the developer test account isn't configured in the CLI config yet
84
- // Walk the user through adding the account's PAK to the config
85
- await useExistingDevTestAccount(env, devAccountPromptResponse.notInConfigAccount);
97
+ if (notInConfigAccount) {
98
+ const existingGlobalConfig = getConfigAccountIfExists(notInConfigAccount.id);
99
+ if (directoryIsLinked && existingGlobalConfig) {
100
+ const shouldLink = await confirmLinkExistingDeveloperTestAccountPrompt(notInConfigAccount.accountName);
101
+ if (!shouldLink) {
102
+ return exit(EXIT_CODES.SUCCESS);
103
+ }
104
+ addAccountToLinkedSettings(notInConfigAccount.id);
105
+ }
106
+ else {
107
+ const accountAdded = await useExistingDevTestAccount(env, notInConfigAccount);
108
+ if (!accountAdded) {
109
+ return exit(EXIT_CODES.SUCCESS);
110
+ }
111
+ if (directoryIsLinked) {
112
+ addAccountToLinkedSettings(notInConfigAccount.id);
113
+ }
114
+ }
86
115
  }
87
116
  else if (devAccountPromptResponse.createNestedAccount) {
88
117
  // Create a new developer test account and automatically add it to the CLI config
89
- targetTestingAccountId = await createDeveloperTestAccountForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env, true);
118
+ try {
119
+ targetTestingAccountId = await createDeveloperTestAccountForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env, true);
120
+ }
121
+ catch {
122
+ return exit(EXIT_CODES.ERROR);
123
+ }
124
+ if (directoryIsLinked) {
125
+ addAccountToLinkedSettings(targetTestingAccountId);
126
+ }
90
127
  }
91
128
  }
92
129
  else if (accountType === HUBSPOT_ACCOUNT_TYPES.DEVELOPMENT_SANDBOX) {
@@ -94,7 +131,15 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
94
131
  targetTestingAccountId =
95
132
  sandboxAccountPromptResponse.targetAccountId || undefined;
96
133
  if (sandboxAccountPromptResponse.createNestedAccount) {
97
- targetTestingAccountId = await createSandboxForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env);
134
+ try {
135
+ targetTestingAccountId = await createSandboxForLocalDev(targetProjectAccountId, targetProjectAccountConfig, env);
136
+ }
137
+ catch {
138
+ return exit(EXIT_CODES.ERROR);
139
+ }
140
+ if (directoryIsLinked) {
141
+ addAccountToLinkedSettings(targetTestingAccountId);
142
+ }
98
143
  }
99
144
  }
100
145
  else {
@@ -111,21 +156,26 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
111
156
  });
112
157
  let project = uploadedProject;
113
158
  if (projectExists && project) {
114
- await compareLocalProjectToDeployed(projectConfig, targetProjectAccountId, project.deployedBuild?.buildId, projectNodes, args.profile);
159
+ await compareLocalProjectToDeployed(projectConfig, targetProjectAccountId, project.deployedBuild?.buildId, projectNodes, exit, args.profile);
115
160
  }
116
161
  else {
117
- project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, false, false);
118
- await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId, true, args.profile);
162
+ project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, false, false, exit);
163
+ await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId, exit, true, args.profile);
119
164
  }
120
165
  // Check for missing/outdated dependencies
121
- await checkAndInstallDependencies();
166
+ try {
167
+ await checkAndInstallDependencies();
168
+ }
169
+ catch {
170
+ return exit(EXIT_CODES.ERROR);
171
+ }
122
172
  // End setup, start local dev process
123
173
  try {
124
- await startPortManagerServer();
174
+ await startPortManagerServer(args.port);
125
175
  }
126
176
  catch (e) {
127
177
  logError(e);
128
- process.exit(EXIT_CODES.ERROR);
178
+ return exit(EXIT_CODES.ERROR);
129
179
  }
130
180
  const localDevProcess = new LocalDevProcess({
131
181
  initialProjectNodes: projectNodes,
@@ -138,6 +188,7 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
138
188
  projectDir,
139
189
  projectData: project,
140
190
  env,
191
+ actions: { exit },
141
192
  });
142
193
  const websocketServer = new LocalDevWebsocketServer(localDevProcess, args.debug);
143
194
  const watcher = new LocalDevWatcher(localDevProcess);
@@ -3,26 +3,26 @@ import { getCwd, sanitizeFileName } from '@hubspot/local-dev-lib/path';
3
3
  import { extractZipArchive } from '@hubspot/local-dev-lib/archive';
4
4
  import { downloadProject, fetchProjectBuilds, } from '@hubspot/local-dev-lib/api/projects';
5
5
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
6
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
6
7
  import { getProjectConfig } from '../../lib/projects/config.js';
7
8
  import { downloadProjectPrompt } from '../../lib/prompts/downloadProjectPrompt.js';
8
9
  import { commands } from '../../lang/en.js';
9
10
  import { uiLogger } from '../../lib/ui/logger.js';
10
- import { trackCommandUsage } from '../../lib/usageTracking.js';
11
11
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
12
+ import { makeWrappedYargsHandler } from '../../lib/yargs/makeWrappedYargsHandler.js';
12
13
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
13
14
  const command = 'download';
14
15
  const describe = commands.project.download.describe;
15
16
  async function handler(args) {
17
+ const { dest, build, derivedAccountId, exit } = args;
16
18
  const { projectConfig } = await getProjectConfig();
17
19
  if (projectConfig) {
18
20
  uiLogger.error(commands.project.download.warnings.cannotDownloadWithinProject);
19
- process.exit(EXIT_CODES.ERROR);
21
+ return exit(EXIT_CODES.ERROR);
20
22
  }
21
- const { dest, build, derivedAccountId } = args;
22
- const { project: projectName } = await downloadProjectPrompt(args);
23
23
  let buildNumberToDownload = build;
24
- trackCommandUsage('project-download', undefined, derivedAccountId);
25
24
  try {
25
+ const { project: projectName } = await downloadProjectPrompt(args);
26
26
  if (!buildNumberToDownload) {
27
27
  const { data: projectBuildsResult } = await fetchProjectBuilds(derivedAccountId, projectName);
28
28
  const { results: projectBuilds } = projectBuildsResult;
@@ -33,7 +33,7 @@ async function handler(args) {
33
33
  }
34
34
  if (!buildNumberToDownload) {
35
35
  uiLogger.error(commands.project.download.errors.noBuildIdToDownload);
36
- process.exit(EXIT_CODES.ERROR);
36
+ return exit(EXIT_CODES.ERROR);
37
37
  }
38
38
  const sanitizedProjectName = sanitizeFileName(projectName);
39
39
  const absoluteDestPath = dest
@@ -42,14 +42,17 @@ async function handler(args) {
42
42
  const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildNumberToDownload);
43
43
  await extractZipArchive(zippedProject, sanitizeFileName(projectName), path.resolve(absoluteDestPath));
44
44
  uiLogger.log(commands.project.download.logs.downloadSucceeded(buildNumberToDownload, projectName));
45
- process.exit(EXIT_CODES.SUCCESS);
45
+ return exit(EXIT_CODES.SUCCESS);
46
46
  }
47
47
  catch (e) {
48
+ if (isPromptExitError(e)) {
49
+ throw e;
50
+ }
48
51
  logError(e, new ApiErrorContext({
49
52
  accountId: derivedAccountId,
50
53
  request: 'project download',
51
54
  }));
52
- process.exit(EXIT_CODES.ERROR);
55
+ return exit(EXIT_CODES.ERROR);
53
56
  }
54
57
  }
55
58
  function projectDownloadBuilder(yargs) {
@@ -85,7 +88,7 @@ const builder = makeYargsBuilder(projectDownloadBuilder, command, describe, {
85
88
  const projectDownloadCommand = {
86
89
  command,
87
90
  describe,
88
- handler,
91
+ handler: makeWrappedYargsHandler('project-download', handler),
89
92
  builder,
90
93
  };
91
94
  export default projectDownloadCommand;
@@ -0,0 +1,5 @@
1
+ import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs, JSONOutputArgs, YargsCommandModule } from '../../types/Yargs.js';
2
+ import { ProjectInfoJsonOutput } from '../../lib/jsonOutput.js';
3
+ export type ProjectInfoArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & JSONOutputArgs<ProjectInfoJsonOutput>;
4
+ declare const projectInfoCommand: YargsCommandModule<unknown, ProjectInfoArgs>;
5
+ export default projectInfoCommand;