@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,411 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import crypto from 'crypto';
4
+ import { shouldIgnoreFile } from '@hubspot/local-dev-lib/ignoreRules';
5
+ import { getPackableFiles, } from '@hubspot/project-parsing-lib/workspaces';
6
+ import { uiLogger } from '../ui/logger.js';
7
+ import { lib } from '../../lang/en.js';
8
+ const FILE_PROTOCOL_PREFIX = 'file:';
9
+ const LINK_PROTOCOL_PREFIX = 'link:';
10
+ const KIND_DIRECTORY = 'directory';
11
+ const KIND_TARBALL = 'tarball';
12
+ /**
13
+ * Generates a short hash of the input string for use in workspace paths.
14
+ * Uses SHA256 truncated to 8 hex characters (4 billion possibilities).
15
+ */
16
+ export function shortHash(input) {
17
+ return crypto.createHash('sha256').update(input).digest('hex').slice(0, 8);
18
+ }
19
+ /**
20
+ * Converts native path separators to POSIX forward slashes.
21
+ *
22
+ * Zip entry names and npm workspace globs are POSIX-only. On Windows,
23
+ * `path.relative` returns backslash-separated paths; archiver normalizes
24
+ * its appended entry names to forward slashes but its filter callback
25
+ * receives forward-slashed names too. Without this normalization, lookups
26
+ * in our exclusion Sets miss on Windows and a file gets archived twice.
27
+ */
28
+ export function toPosixPath(p) {
29
+ if (path.sep === path.posix.sep) {
30
+ return p;
31
+ }
32
+ return p.replaceAll(path.sep, path.posix.sep);
33
+ }
34
+ /**
35
+ * Strips the longest matching tarball extension (.tar.gz, .tgz, .tar)
36
+ * from a file basename. Returns the input unchanged if no extension matches.
37
+ */
38
+ function stripTarballExtension(basename) {
39
+ const lower = basename.toLowerCase();
40
+ for (const ext of ['.tar.gz', '.tgz', '.tar']) {
41
+ if (lower.endsWith(ext)) {
42
+ return basename.slice(0, basename.length - ext.length);
43
+ }
44
+ }
45
+ return basename;
46
+ }
47
+ /**
48
+ * Determines the archive path for an external workspace or file: dependency.
49
+ *
50
+ * For directories, produces `_workspaces/<basename>-<hash>`.
51
+ * For tarballs, produces `_workspaces/<basename-no-ext>-<hash>/<original-basename>`,
52
+ * so the rewritten package.json reference still ends in the original filename.
53
+ *
54
+ * The hash prevents collisions between different paths with the same basename.
55
+ */
56
+ export function computeExternalArchivePath(absolutePath, kind = KIND_DIRECTORY) {
57
+ const resolved = path.resolve(absolutePath);
58
+ const name = path.basename(resolved);
59
+ if (kind === KIND_TARBALL) {
60
+ const nameNoExt = stripTarballExtension(name);
61
+ return path.posix.join('_workspaces', `${nameNoExt}-${shortHash(resolved)}`, name);
62
+ }
63
+ return path.posix.join('_workspaces', `${name}-${shortHash(resolved)}`);
64
+ }
65
+ /**
66
+ * Returns true if dir is inside srcDir (i.e. it will already be included
67
+ * in the archive from the srcDir walk and must not be copied again).
68
+ */
69
+ function isInsideSrcDir(dir, srcDir) {
70
+ const rel = path.relative(path.resolve(srcDir), path.resolve(dir));
71
+ return !rel.startsWith('..') && !path.isAbsolute(rel);
72
+ }
73
+ /**
74
+ * Creates a file filter function for workspace archiving.
75
+ * Filters files based on packable files list and ignore rules.
76
+ */
77
+ function createWorkspaceFileFilter(packableFiles) {
78
+ return (file) => {
79
+ if (packableFiles.size > 0 && !packableFiles.has(file.name)) {
80
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.fileFiltered(file.name));
81
+ return false;
82
+ }
83
+ const ignored = shouldIgnoreFile(file.name, true);
84
+ if (ignored) {
85
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.fileFiltered(file.name));
86
+ return false;
87
+ }
88
+ return file;
89
+ };
90
+ }
91
+ /**
92
+ * Archives workspace directories and returns mapping information.
93
+ *
94
+ * Internal workspaces (inside srcDir) are not archived — they are already
95
+ * included via the srcDir walk. Their relative paths (from the package.json
96
+ * directory to the workspace directory) are stored directly in the entries.
97
+ *
98
+ * External workspaces (outside srcDir) are copied to `_workspaces/<name>-<hash>`
99
+ * and their relative archive paths (e.g. `../_workspaces/<name>-<hash>`) are stored.
100
+ */
101
+ async function archiveWorkspaceDirectories(archive, srcDir, workspaceMappings) {
102
+ const externalArchivePaths = new Map(); // resolvedDir -> archivePath
103
+ const archivePathToDir = new Map(); // archivePath -> resolvedDir (collision detection)
104
+ const packageWorkspaceEntries = new Map();
105
+ const externalsToArchive = [];
106
+ for (const mapping of workspaceMappings) {
107
+ const { workspaceDir, sourcePackageJsonPath } = mapping;
108
+ if (!packageWorkspaceEntries.has(sourcePackageJsonPath)) {
109
+ packageWorkspaceEntries.set(sourcePackageJsonPath, []);
110
+ }
111
+ if (isInsideSrcDir(workspaceDir, srcDir)) {
112
+ // Internal: already in archive from srcDir walk.
113
+ // Store the relative path from the package.json directory so npm can resolve it.
114
+ const relPath = toPosixPath(path.relative(path.dirname(sourcePackageJsonPath), path.resolve(workspaceDir)));
115
+ packageWorkspaceEntries.get(sourcePackageJsonPath).push(relPath);
116
+ }
117
+ else {
118
+ // External: archive to _workspaces/<name>-<hash>.
119
+ const archivePath = computeExternalArchivePath(workspaceDir);
120
+ const resolvedDir = path.resolve(workspaceDir);
121
+ // Detect hash collisions (different dirs mapping to the same archive path)
122
+ const existing = archivePathToDir.get(archivePath);
123
+ if (existing && existing !== resolvedDir) {
124
+ throw new Error(lib.projectUpload.handleProjectUpload.workspaceCollision(archivePath, workspaceDir, existing));
125
+ }
126
+ if (!externalArchivePaths.has(resolvedDir)) {
127
+ externalArchivePaths.set(resolvedDir, archivePath);
128
+ archivePathToDir.set(archivePath, resolvedDir);
129
+ externalsToArchive.push({ dir: workspaceDir, archivePath });
130
+ }
131
+ const relPkgJsonDir = path.relative(srcDir, path.dirname(sourcePackageJsonPath));
132
+ const relativeEntry = toPosixPath(path.relative(relPkgJsonDir, archivePath));
133
+ packageWorkspaceEntries.get(sourcePackageJsonPath).push(relativeEntry);
134
+ }
135
+ }
136
+ // Fetch packable files in parallel (I/O optimization)
137
+ const withPackableFiles = await Promise.all(externalsToArchive.map(async (item) => ({
138
+ ...item,
139
+ packableFiles: await getPackableFiles(item.dir),
140
+ })));
141
+ // Archive directories sequentially (archiver requires sequential operations)
142
+ for (const { dir, archivePath, packableFiles } of withPackableFiles) {
143
+ uiLogger.log(lib.projectUpload.handleProjectUpload.workspaceIncluded(dir, archivePath));
144
+ archive.directory(dir, archivePath, createWorkspaceFileFilter(packableFiles));
145
+ }
146
+ return { externalArchivePaths, packageWorkspaceEntries };
147
+ }
148
+ /**
149
+ * Archives file: and link: dependencies and returns mapping information.
150
+ *
151
+ * Internal dependencies (inside srcDir) are skipped — their original
152
+ * references in package.json remain valid after upload.
153
+ *
154
+ * External directory dependencies are archived to `_workspaces/<name>-<hash>`.
155
+ * External tarball dependencies are archived to
156
+ * `_workspaces/<name-no-ext>-<hash>/<original-basename>` so the rewritten
157
+ * reference still ends in the original filename.
158
+ */
159
+ async function archiveFileDependencies(archive, srcDir, fileDependencyMappings, externalArchivePaths) {
160
+ const packageFileDeps = new Map();
161
+ const toArchive = [];
162
+ for (const mapping of fileDependencyMappings) {
163
+ const { packageName, localPath, sourcePackageJsonPath, kind, protocol } = mapping;
164
+ if (isInsideSrcDir(localPath, srcDir)) {
165
+ continue;
166
+ }
167
+ const archivePath = computeExternalArchivePath(localPath, kind);
168
+ const resolvedPath = path.resolve(localPath);
169
+ if (!packageFileDeps.has(sourcePackageJsonPath)) {
170
+ packageFileDeps.set(sourcePackageJsonPath, new Map());
171
+ }
172
+ const relPkgJsonDir = path.relative(srcDir, path.dirname(sourcePackageJsonPath));
173
+ const relativeArchivePath = toPosixPath(path.relative(relPkgJsonDir, archivePath));
174
+ packageFileDeps
175
+ .get(sourcePackageJsonPath)
176
+ .set(packageName, { archivePath: relativeArchivePath, protocol });
177
+ if (!externalArchivePaths.has(resolvedPath)) {
178
+ externalArchivePaths.set(resolvedPath, archivePath);
179
+ toArchive.push({ localPath, archivePath, packageName, kind });
180
+ }
181
+ }
182
+ const directoryItems = toArchive.filter(item => item.kind === KIND_DIRECTORY);
183
+ const tarballItems = toArchive.filter(item => item.kind === KIND_TARBALL);
184
+ // getPackableFiles only applies to directory deps; tarballs are a single file.
185
+ const directoriesWithPackableFiles = await Promise.all(directoryItems.map(async (item) => ({
186
+ ...item,
187
+ packableFiles: await getPackableFiles(item.localPath),
188
+ })));
189
+ for (const { localPath, archivePath, packageName, packableFiles, } of directoriesWithPackableFiles) {
190
+ uiLogger.log(lib.projectUpload.handleProjectUpload.fileDependencyIncluded(packageName, localPath, archivePath));
191
+ archive.directory(localPath, archivePath, createWorkspaceFileFilter(packableFiles));
192
+ }
193
+ for (const { localPath, archivePath, packageName } of tarballItems) {
194
+ uiLogger.log(lib.projectUpload.handleProjectUpload.fileDependencyIncluded(packageName, localPath, archivePath));
195
+ archive.file(localPath, { name: archivePath });
196
+ }
197
+ return packageFileDeps;
198
+ }
199
+ /**
200
+ * Updates package.json files in the archive to reflect new workspace and file: dependency paths.
201
+ *
202
+ * Workspace entries in packageWorkspaces are already in final form:
203
+ * - Internal workspaces: relative paths (e.g. "../packages/utils")
204
+ * - External workspaces: relative paths (e.g. "../_workspaces/logger-abc")
205
+ *
206
+ * Only external file: dependencies appear in packageFileDeps; internal ones
207
+ * keep their original file: references and are left untouched.
208
+ */
209
+ export async function updatePackageJsonInArchive(archive, srcDir, packageWorkspaces, packageFileDeps) {
210
+ // Collect all package.json paths that need updating
211
+ const allPackageJsonPaths = new Set([
212
+ ...packageWorkspaces.keys(),
213
+ ...packageFileDeps.keys(),
214
+ ]);
215
+ for (const packageJsonPath of allPackageJsonPaths) {
216
+ if (!fs.existsSync(packageJsonPath)) {
217
+ continue;
218
+ }
219
+ const relativePackageJsonPath = toPosixPath(path.relative(srcDir, packageJsonPath));
220
+ let rawContent;
221
+ try {
222
+ rawContent = fs.readFileSync(packageJsonPath, 'utf8');
223
+ }
224
+ catch {
225
+ continue;
226
+ }
227
+ let packageJson;
228
+ try {
229
+ packageJson = JSON.parse(rawContent);
230
+ }
231
+ catch (e) {
232
+ uiLogger.warn(lib.projectUpload.handleProjectUpload.malformedPackageJson(packageJsonPath, e instanceof Error ? e.message : String(e)));
233
+ archive.append(rawContent, { name: relativePackageJsonPath });
234
+ continue;
235
+ }
236
+ let modified = false;
237
+ // Update workspaces field — entries are already in their final form
238
+ const workspaceEntries = packageWorkspaces.get(packageJsonPath);
239
+ if (workspaceEntries && packageJson.workspaces) {
240
+ packageJson.workspaces = workspaceEntries;
241
+ modified = true;
242
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.updatingPackageJsonWorkspaces(relativePackageJsonPath));
243
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.updatedWorkspaces(workspaceEntries.join(', ')));
244
+ }
245
+ // Update external file: and link: dependencies; internal ones are left untouched.
246
+ // The protocol prefix (file: vs link:) is preserved from the original spec.
247
+ const fileDeps = packageFileDeps.get(packageJsonPath);
248
+ if (fileDeps && fileDeps.size > 0 && packageJson.dependencies) {
249
+ for (const [packageName, { archivePath, protocol },] of fileDeps.entries()) {
250
+ const current = packageJson.dependencies[packageName];
251
+ if (typeof current === 'string' &&
252
+ (current.startsWith(FILE_PROTOCOL_PREFIX) ||
253
+ current.startsWith(LINK_PROTOCOL_PREFIX))) {
254
+ const newValue = `${protocol}:${archivePath}`;
255
+ packageJson.dependencies[packageName] = newValue;
256
+ modified = true;
257
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.updatedFileDependency(packageName, newValue));
258
+ }
259
+ }
260
+ }
261
+ archive.append(modified ? JSON.stringify(packageJson, null, 2) : rawContent, { name: relativePackageJsonPath });
262
+ }
263
+ // Ensure all append operations are queued before finalize is called
264
+ // Use setImmediate to yield control and let archiver process the queue
265
+ await new Promise(resolve => setImmediate(resolve));
266
+ }
267
+ export function rewriteLockfileForExternalDeps(lockfileContent, pathMappings) {
268
+ if (pathMappings.length === 0) {
269
+ return lockfileContent;
270
+ }
271
+ const packages = lockfileContent.packages;
272
+ if (!packages) {
273
+ return lockfileContent;
274
+ }
275
+ const newPackages = {};
276
+ for (const [key, value] of Object.entries(packages)) {
277
+ const mapping = pathMappings.find(m => m.oldPath === key);
278
+ newPackages[mapping ? mapping.newPath : key] = value;
279
+ }
280
+ for (const [key, value] of Object.entries(newPackages)) {
281
+ if (key.startsWith('node_modules/') &&
282
+ typeof value === 'object' &&
283
+ value !== null) {
284
+ const entry = value;
285
+ if (typeof entry.resolved !== 'string')
286
+ continue;
287
+ // Symlink entries (directory deps with link:true) store resolved as a
288
+ // bare relative path. Tarball entries store resolved as a "file:" URL.
289
+ const resolved = entry.resolved;
290
+ const isFileUrl = resolved.startsWith(FILE_PROTOCOL_PREFIX);
291
+ const resolvedPath = isFileUrl
292
+ ? resolved.slice(FILE_PROTOCOL_PREFIX.length)
293
+ : resolved;
294
+ const mapping = pathMappings.find(m => m.oldPath === resolvedPath);
295
+ if (mapping) {
296
+ newPackages[key] = {
297
+ ...entry,
298
+ resolved: isFileUrl
299
+ ? `${FILE_PROTOCOL_PREFIX}${mapping.newPath}`
300
+ : mapping.newPath,
301
+ };
302
+ }
303
+ }
304
+ }
305
+ const rootEntry = newPackages[''];
306
+ if (rootEntry && typeof rootEntry === 'object' && rootEntry !== null) {
307
+ const root = rootEntry;
308
+ if (Array.isArray(root.workspaces)) {
309
+ newPackages[''] = {
310
+ ...root,
311
+ workspaces: root.workspaces.map((ws) => {
312
+ if (typeof ws !== 'string')
313
+ return ws;
314
+ const mapping = pathMappings.find(m => m.oldPath === ws);
315
+ return mapping ? mapping.newPath : ws;
316
+ }),
317
+ };
318
+ }
319
+ }
320
+ return { ...lockfileContent, packages: newPackages };
321
+ }
322
+ export function getPackageJsonPathsToUpdate(srcDir, workspaceMappings, fileDependencyMappings) {
323
+ const paths = new Set();
324
+ for (const { sourcePackageJsonPath } of workspaceMappings) {
325
+ paths.add(toPosixPath(path.relative(srcDir, sourcePackageJsonPath)));
326
+ }
327
+ for (const { localPath, sourcePackageJsonPath } of fileDependencyMappings) {
328
+ if (!isInsideSrcDir(localPath, srcDir)) {
329
+ paths.add(toPosixPath(path.relative(srcDir, sourcePackageJsonPath)));
330
+ }
331
+ }
332
+ return paths;
333
+ }
334
+ function getDirsWithExternalDeps(srcDir, workspaceMappings, fileDependencyMappings) {
335
+ const dirs = new Set();
336
+ for (const { workspaceDir, sourcePackageJsonPath } of workspaceMappings) {
337
+ if (!isInsideSrcDir(workspaceDir, srcDir)) {
338
+ dirs.add(path.dirname(sourcePackageJsonPath));
339
+ }
340
+ }
341
+ for (const { localPath, sourcePackageJsonPath } of fileDependencyMappings) {
342
+ if (!isInsideSrcDir(localPath, srcDir)) {
343
+ dirs.add(path.dirname(sourcePackageJsonPath));
344
+ }
345
+ }
346
+ return dirs;
347
+ }
348
+ export function getLockfilePathsToUpdate(srcDir, workspaceMappings, fileDependencyMappings) {
349
+ const dirsWithExternalDeps = getDirsWithExternalDeps(srcDir, workspaceMappings, fileDependencyMappings);
350
+ const paths = new Set();
351
+ for (const dir of dirsWithExternalDeps) {
352
+ const lockfilePath = path.join(dir, 'package-lock.json');
353
+ if (fs.existsSync(lockfilePath)) {
354
+ paths.add(toPosixPath(path.relative(srcDir, lockfilePath)));
355
+ }
356
+ }
357
+ return paths;
358
+ }
359
+ async function rewriteLockfilesInArchive(archive, srcDir, externalArchivePaths, dirsWithExternalDeps) {
360
+ if (externalArchivePaths.size === 0)
361
+ return;
362
+ for (const dir of dirsWithExternalDeps) {
363
+ const lockfilePath = path.join(dir, 'package-lock.json');
364
+ if (!fs.existsSync(lockfilePath))
365
+ continue;
366
+ let rawContent;
367
+ try {
368
+ rawContent = fs.readFileSync(lockfilePath, 'utf8');
369
+ }
370
+ catch {
371
+ continue;
372
+ }
373
+ let lockfileContent;
374
+ try {
375
+ lockfileContent = JSON.parse(rawContent);
376
+ }
377
+ catch {
378
+ continue;
379
+ }
380
+ const pathMappings = [];
381
+ for (const [absoluteExternalPath, archivePath] of externalArchivePaths) {
382
+ pathMappings.push({
383
+ oldPath: toPosixPath(path.relative(dir, absoluteExternalPath)),
384
+ newPath: toPosixPath(path.relative(dir, path.join(srcDir, archivePath))),
385
+ });
386
+ }
387
+ const rewritten = rewriteLockfileForExternalDeps(lockfileContent, pathMappings);
388
+ const relativeLockfilePath = toPosixPath(path.relative(srcDir, lockfilePath));
389
+ uiLogger.debug(lib.projectUpload.handleProjectUpload.updatingLockfile(relativeLockfilePath));
390
+ archive.append(JSON.stringify(rewritten, null, 2), {
391
+ name: relativeLockfilePath,
392
+ });
393
+ }
394
+ await new Promise(resolve => setImmediate(resolve));
395
+ }
396
+ /**
397
+ * Main orchestration function that handles archiving of workspaces and file dependencies.
398
+ * This is the clean integration point for upload.ts.
399
+ */
400
+ export async function archiveWorkspacesAndDependencies(archive, srcDir, workspaceMappings, fileDependencyMappings) {
401
+ // Archive workspace directories (internal ones are skipped, externals are copied)
402
+ const { externalArchivePaths, packageWorkspaceEntries } = await archiveWorkspaceDirectories(archive, srcDir, workspaceMappings);
403
+ // Archive external file: dependencies (internals are skipped)
404
+ const packageFileDeps = await archiveFileDependencies(archive, srcDir, fileDependencyMappings, externalArchivePaths);
405
+ // Update package.json files with new paths
406
+ await updatePackageJsonInArchive(archive, srcDir, packageWorkspaceEntries, packageFileDeps);
407
+ // Rewrite lock files to point to archive paths for external deps
408
+ const dirsWithExternalDeps = getDirsWithExternalDeps(srcDir, workspaceMappings, fileDependencyMappings);
409
+ await rewriteLockfilesInArchive(archive, srcDir, externalArchivePaths, dirsWithExternalDeps);
410
+ return { packageWorkspaces: packageWorkspaceEntries, packageFileDeps };
411
+ }
@@ -1,5 +1,6 @@
1
1
  import { promptUser } from './promptUtils.js';
2
2
  import { lib } from '../../lang/en.js';
3
+ import { isPromptExitError } from '../errors/PromptExitError.js';
3
4
  function getSampleTypesPrompt(choices) {
4
5
  return {
5
6
  type: 'rawlist',
@@ -53,6 +54,9 @@ export async function createApiSamplePrompt(samplesConfig) {
53
54
  };
54
55
  }
55
56
  catch (e) {
57
+ if (isPromptExitError(e)) {
58
+ throw e;
59
+ }
56
60
  return {};
57
61
  }
58
62
  }
@@ -2,21 +2,22 @@ import { promptUser } from './promptUtils.js';
2
2
  import { getConfigAccountIfExists } from '@hubspot/local-dev-lib/config';
3
3
  import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
4
4
  import { logError, ApiErrorContext } from '../errorHandlers/index.js';
5
- import { uiLogger } from '../ui/logger.js';
6
- import { EXIT_CODES } from '../enums/exitCodes.js';
7
5
  import { lib } from '../../lang/en.js';
6
+ import { PromptExitError } from '../errors/PromptExitError.js';
7
+ import { EXIT_CODES } from '../enums/exitCodes.js';
8
+ import { uiLogger } from '../ui/logger.js';
8
9
  async function createProjectsList(accountId) {
9
- try {
10
- if (accountId) {
11
- const { data: projects } = await fetchProjects(accountId);
12
- return projects.results;
13
- }
10
+ if (!accountId) {
14
11
  uiLogger.error(lib.prompts.downloadProjectPrompt.errors.accountIdRequired);
15
- process.exit(EXIT_CODES.ERROR);
12
+ throw new PromptExitError(lib.prompts.downloadProjectPrompt.errors.accountIdRequired, EXIT_CODES.ERROR);
13
+ }
14
+ try {
15
+ const { data: projects } = await fetchProjects(accountId);
16
+ return projects.results;
16
17
  }
17
18
  catch (e) {
18
- logError(e, accountId ? new ApiErrorContext({ accountId }) : undefined);
19
- process.exit(EXIT_CODES.ERROR);
19
+ logError(e, new ApiErrorContext({ accountId }));
20
+ throw new PromptExitError('Failed to fetch projects', EXIT_CODES.ERROR);
20
21
  }
21
22
  }
22
23
  export async function downloadProjectPrompt(promptOptions) {
@@ -1,8 +1,9 @@
1
1
  import open from 'open';
2
2
  import { promptUser } from './promptUtils.js';
3
- import { EXIT_CODES } from '../enums/exitCodes.js';
4
3
  import { lib } from '../../lang/en.js';
5
4
  import { uiLogger } from '../ui/logger.js';
5
+ import { PromptExitError } from '../errors/PromptExitError.js';
6
+ import { EXIT_CODES } from '../enums/exitCodes.js';
6
7
  export async function installAppBrowserPrompt(installUrl, isReinstall = false) {
7
8
  uiLogger.log('');
8
9
  if (isReinstall) {
@@ -20,7 +21,7 @@ export async function installAppBrowserPrompt(installUrl, isReinstall = false) {
20
21
  });
21
22
  if (!isReinstall && !shouldOpenBrowser) {
22
23
  uiLogger.log(lib.prompts.installAppPrompt.decline);
23
- process.exit(EXIT_CODES.SUCCESS);
24
+ throw new PromptExitError(lib.prompts.installAppPrompt.decline, EXIT_CODES.SUCCESS);
24
25
  }
25
26
  else if (!shouldOpenBrowser) {
26
27
  return;
@@ -17,13 +17,10 @@ type ScopesPromptResponse = {
17
17
  scopes: string[];
18
18
  };
19
19
  export type OauthPromptResponse = AccountNamePromptResponse & AccountIdPromptResponse & ClientIdPromptResponse & ClientSecretPromptResponse & ScopesPromptResponse;
20
- /**
21
- * Displays notification to user that we are about to open the browser,
22
- * then opens their browser to the personal-access-key shortlink
23
- */
24
- export declare function personalAccessKeyPrompt({ env, account, }: {
20
+ export declare function legacyPersonalAccessKeyPrompt({ env, account, }: {
25
21
  env: string;
26
22
  account?: number;
27
23
  }): Promise<PersonalAccessKeyPromptResponse>;
24
+ export declare function personalAccessKeyPrompt(): Promise<string>;
28
25
  export declare const OAUTH_FLOW: (PromptConfig<AccountNamePromptResponse> | PromptConfig<AccountIdPromptResponse> | PromptConfig<ClientIdPromptResponse> | PromptConfig<ClientSecretPromptResponse> | PromptConfig<ScopesPromptResponse>)[];
29
26
  export {};
@@ -6,13 +6,11 @@ import { uiLogger } from '../ui/logger.js';
6
6
  import { promptUser } from './promptUtils.js';
7
7
  import { getCliAccountNamePromptConfig, } from './accountNamePrompt.js';
8
8
  import { uiInfoSection } from '../ui/index.js';
9
- import { EXIT_CODES } from '../enums/exitCodes.js';
10
9
  import { lib } from '../../lang/en.js';
11
- /**
12
- * Displays notification to user that we are about to open the browser,
13
- * then opens their browser to the personal-access-key shortlink
14
- */
15
- export async function personalAccessKeyPrompt({ env, account, }) {
10
+ import { PromptExitError } from '../errors/PromptExitError.js';
11
+ import { EXIT_CODES } from '../enums/exitCodes.js';
12
+ // Full PAK flow: browser-open menu + paste. Used by commands that haven't adopted websocket PAK delivery.
13
+ export async function legacyPersonalAccessKeyPrompt({ env, account, }) {
16
14
  const websiteOrigin = getHubSpotWebsiteOrigin(env);
17
15
  let url = `${websiteOrigin}/l/personal-access-key`;
18
16
  if (process.env.BROWSER !== 'none') {
@@ -27,7 +25,7 @@ export async function personalAccessKeyPrompt({ env, account, }) {
27
25
  ]);
28
26
  if (!choice) {
29
27
  deleteConfigFileIfEmpty();
30
- process.exit(EXIT_CODES.SUCCESS);
28
+ throw new PromptExitError(lib.prompts.personalAccessKeyPrompt.errors.authCancelled, EXIT_CODES.SUCCESS);
31
29
  }
32
30
  if (choice ===
33
31
  lib.prompts.personalAccessKeyPrompt.personalAccessKeyPromptChoices
@@ -42,6 +40,11 @@ export async function personalAccessKeyPrompt({ env, account, }) {
42
40
  env,
43
41
  };
44
42
  }
43
+ // Paste-only: shows the masked input directly. Used by hs account auth after the browser is already open via websocket.
44
+ export async function personalAccessKeyPrompt() {
45
+ const { personalAccessKey } = await promptUser(PERSONAL_ACCESS_KEY);
46
+ return personalAccessKey;
47
+ }
45
48
  const ACCOUNT_ID = {
46
49
  name: 'accountId',
47
50
  message: lib.prompts.personalAccessKeyPrompt.enterAccountId,
@@ -10,3 +10,4 @@ export declare function selectSandboxTargetAccountPrompt(accounts: HubSpotConfig
10
10
  export declare function selectDeveloperTestTargetAccountPrompt(accounts: HubSpotConfigAccount[], defaultAccountConfig: HubSpotConfigAccount): Promise<ProjectDevTargetAccountPromptResponse>;
11
11
  export declare function confirmDefaultAccountPrompt(accountName: string, accountType: string): Promise<boolean>;
12
12
  export declare function confirmUseExistingDeveloperTestAccountPrompt(account: DeveloperTestAccount): Promise<boolean>;
13
+ export declare function confirmLinkExistingDeveloperTestAccountPrompt(accountName: string): Promise<boolean>;
@@ -1,11 +1,12 @@
1
1
  import { getSandboxUsageLimits } from '@hubspot/local-dev-lib/api/sandboxHubs';
2
- import { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } from '@hubspot/local-dev-lib/constants/config';
2
+ import { HUBSPOT_ACCOUNT_TYPE_STRINGS, HUBSPOT_ACCOUNT_TYPES, } from '@hubspot/local-dev-lib/constants/config';
3
3
  import { fetchDeveloperTestAccounts } from '@hubspot/local-dev-lib/api/developerTestAccounts';
4
4
  import { promptUser } from './promptUtils.js';
5
5
  import { lib } from '../../lang/en.js';
6
6
  import { uiLogger } from '../ui/logger.js';
7
7
  import { uiAccountDescription } from '../ui/index.js';
8
8
  import { isSandbox } from '../accountTypes.js';
9
+ import { PromptExitError } from '../errors/PromptExitError.js';
9
10
  import { EXIT_CODES } from '../enums/exitCodes.js';
10
11
  function mapNestedAccount(accountConfig) {
11
12
  const parentAccountId = accountConfig.parentAccountId ?? null;
@@ -23,20 +24,18 @@ function getNonConfigDeveloperTestAccountName(account) {
23
24
  }
24
25
  export async function selectSandboxTargetAccountPrompt(accounts, defaultAccountConfig) {
25
26
  const defaultAccountId = defaultAccountConfig.accountId;
27
+ if (!defaultAccountId) {
28
+ uiLogger.error(lib.prompts.projectDevTargetAccountPrompt.noAccountId);
29
+ throw new PromptExitError(lib.prompts.projectDevTargetAccountPrompt.noAccountId, EXIT_CODES.ERROR);
30
+ }
26
31
  let choices = [];
27
32
  let sandboxUsage = {
28
33
  STANDARD: { used: 0, available: 0, limit: 0 },
29
34
  DEVELOPER: { used: 0, available: 0, limit: 0 },
30
35
  };
31
36
  try {
32
- if (defaultAccountId) {
33
- const { data } = await getSandboxUsageLimits(defaultAccountId);
34
- sandboxUsage = data.usage;
35
- }
36
- else {
37
- uiLogger.error(lib.prompts.projectDevTargetAccountPrompt.noAccountId);
38
- process.exit(EXIT_CODES.ERROR);
39
- }
37
+ const { data } = await getSandboxUsageLimits(defaultAccountId);
38
+ sandboxUsage = data.usage;
40
39
  }
41
40
  catch (err) {
42
41
  uiLogger.debug('Unable to fetch sandbox usage limits: ', err);
@@ -83,19 +82,18 @@ export async function selectSandboxTargetAccountPrompt(accounts, defaultAccountC
83
82
  }
84
83
  export async function selectDeveloperTestTargetAccountPrompt(accounts, defaultAccountConfig) {
85
84
  const defaultAccountId = defaultAccountConfig.accountId;
85
+ if (!defaultAccountId) {
86
+ uiLogger.error(lib.prompts.projectDevTargetAccountPrompt.noAccountId);
87
+ throw new PromptExitError(lib.prompts.projectDevTargetAccountPrompt.noAccountId, EXIT_CODES.ERROR);
88
+ }
86
89
  let devTestAccountsResponse;
87
90
  try {
88
- if (defaultAccountId) {
89
- const { data } = await fetchDeveloperTestAccounts(defaultAccountId);
90
- devTestAccountsResponse = data;
91
- }
92
- else {
93
- uiLogger.error(lib.prompts.projectDevTargetAccountPrompt.noAccountId);
94
- process.exit(EXIT_CODES.ERROR);
95
- }
91
+ const { data } = await fetchDeveloperTestAccounts(defaultAccountId);
92
+ devTestAccountsResponse = data;
96
93
  }
97
94
  catch (err) {
98
- uiLogger.debug('Unable to fetch developer test account usage limits: ', err);
95
+ uiLogger.error(lib.prompts.projectDevTargetAccountPrompt.fetchDeveloperTestAccountsError);
96
+ throw new PromptExitError(lib.prompts.projectDevTargetAccountPrompt.fetchDeveloperTestAccountsError, EXIT_CODES.ERROR);
99
97
  }
100
98
  let disabledMessage = false;
101
99
  if (devTestAccountsResponse &&
@@ -167,3 +165,13 @@ export async function confirmUseExistingDeveloperTestAccountPrompt(account) {
167
165
  ]);
168
166
  return confirmUseExistingDeveloperTestAccount;
169
167
  }
168
+ export async function confirmLinkExistingDeveloperTestAccountPrompt(accountName) {
169
+ const { confirmLinkExistingDeveloperTestAccount } = await promptUser([
170
+ {
171
+ name: 'confirmLinkExistingDeveloperTestAccount',
172
+ type: 'confirm',
173
+ message: lib.prompts.projectDevTargetAccountPrompt.confirmLinkExistingDeveloperTestAccount(accountName),
174
+ },
175
+ ]);
176
+ return confirmLinkExistingDeveloperTestAccount;
177
+ }
@@ -0,0 +1,2 @@
1
+ import { ProjectConfig } from '../../types/Projects.js';
2
+ export declare function projectProfilePrompt(projectDir: string, projectConfig: ProjectConfig, profileName?: string, exitIfMissing?: boolean): Promise<string | null>;