@hubspot/cli 8.1.0-beta.0 → 8.1.0-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 (670) hide show
  1. package/api/migrate.js +8 -4
  2. package/bin/cli.js +12 -6
  3. package/commands/account/auth.js +7 -7
  4. package/commands/account/clean.js +7 -6
  5. package/commands/account/createOverride.js +10 -7
  6. package/commands/account/info.js +36 -17
  7. package/commands/account/link.d.ts +4 -0
  8. package/commands/account/link.js +89 -0
  9. package/commands/account/list.js +32 -76
  10. package/commands/account/remove.js +4 -3
  11. package/commands/account/removeOverride.js +11 -10
  12. package/commands/account/rename.js +5 -6
  13. package/commands/account/unlink.d.ts +4 -0
  14. package/commands/account/unlink.js +70 -0
  15. package/commands/account/use.js +75 -6
  16. package/commands/account.js +4 -0
  17. package/commands/api.d.ts +10 -0
  18. package/commands/api.js +164 -0
  19. package/commands/app/migrate.js +13 -13
  20. package/commands/app/secret/add.js +6 -7
  21. package/commands/app/secret/delete.js +9 -10
  22. package/commands/app/secret/list.js +6 -7
  23. package/commands/app/secret/update.js +8 -9
  24. package/commands/auth.js +19 -15
  25. package/commands/cms/app/create.js +9 -5
  26. package/commands/cms/convertFields.js +8 -8
  27. package/commands/cms/delete.js +2 -3
  28. package/commands/cms/fetch.js +7 -7
  29. package/commands/cms/function/create.js +9 -5
  30. package/commands/cms/function/deploy.js +2 -3
  31. package/commands/cms/function/list.js +11 -7
  32. package/commands/cms/function/logs.js +17 -22
  33. package/commands/cms/function/server.js +2 -3
  34. package/commands/cms/getReactModule.js +7 -8
  35. package/commands/cms/lighthouseScore.js +25 -24
  36. package/commands/cms/lint.js +4 -5
  37. package/commands/cms/list.js +5 -6
  38. package/commands/cms/module/create.js +9 -5
  39. package/commands/cms/module/marketplace-validate.js +7 -8
  40. package/commands/cms/mv.js +2 -3
  41. package/commands/cms/template/create.js +10 -6
  42. package/commands/cms/theme/create.js +5 -5
  43. package/commands/cms/theme/generate-selectors.js +5 -4
  44. package/commands/cms/theme/marketplace-validate.js +8 -9
  45. package/commands/cms/theme/preview.js +23 -70
  46. package/commands/cms/upload.js +15 -12
  47. package/commands/cms/watch.d.ts +0 -1
  48. package/commands/cms/watch.js +6 -12
  49. package/commands/cms/webpack/create.js +5 -5
  50. package/commands/completion.js +3 -5
  51. package/commands/config/migrate.js +6 -7
  52. package/commands/config/set.js +5 -6
  53. package/commands/customObject/create.js +4 -5
  54. package/commands/customObject/createSchema.js +4 -5
  55. package/commands/customObject/deleteSchema.js +4 -5
  56. package/commands/customObject/fetchAllSchemas.js +2 -3
  57. package/commands/customObject/fetchSchema.js +2 -3
  58. package/commands/customObject/listSchemas.js +2 -3
  59. package/commands/customObject/updateSchema.js +4 -5
  60. package/commands/doctor.js +8 -8
  61. package/commands/feedback.js +7 -5
  62. package/commands/filemanager/fetch.js +5 -6
  63. package/commands/filemanager/upload.js +5 -5
  64. package/commands/getStarted.js +17 -19
  65. package/commands/hubdb/clear.js +6 -3
  66. package/commands/hubdb/create.js +4 -5
  67. package/commands/hubdb/delete.js +9 -6
  68. package/commands/hubdb/fetch.js +6 -3
  69. package/commands/hubdb/list.js +16 -14
  70. package/commands/init.js +15 -14
  71. package/commands/mcp/setup.js +5 -14
  72. package/commands/mcp/start.js +2 -4
  73. package/commands/open.js +4 -5
  74. package/commands/project/add.js +13 -8
  75. package/commands/project/appInstallStatus.d.ts +4 -0
  76. package/commands/project/appInstallStatus.js +132 -0
  77. package/commands/project/create.js +28 -17
  78. package/commands/project/delete.d.ts +7 -0
  79. package/commands/project/delete.js +74 -0
  80. package/commands/project/deploy.js +39 -36
  81. package/commands/project/dev/deprecatedFlow.js +62 -17
  82. package/commands/project/dev/index.d.ts +3 -3
  83. package/commands/project/dev/index.js +59 -48
  84. package/commands/project/dev/unifiedFlow.js +70 -21
  85. package/commands/project/download.js +12 -9
  86. package/commands/project/info.d.ts +4 -0
  87. package/commands/project/info.js +67 -0
  88. package/commands/project/installDeps.js +9 -6
  89. package/commands/project/lint.js +31 -10
  90. package/commands/project/list.js +14 -14
  91. package/commands/project/listBuilds.js +8 -6
  92. package/commands/project/logs.js +5 -6
  93. package/commands/project/migrate.js +18 -18
  94. package/commands/project/open.js +5 -6
  95. package/commands/project/profile/add.js +12 -8
  96. package/commands/project/profile/delete.js +15 -11
  97. package/commands/project/updateDeps.js +9 -6
  98. package/commands/project/upload.js +33 -19
  99. package/commands/project/validate.js +12 -12
  100. package/commands/project/watch.js +32 -19
  101. package/commands/project.js +12 -3
  102. package/commands/sandbox/create.js +18 -45
  103. package/commands/sandbox/delete.js +13 -14
  104. package/commands/secret/addSecret.js +6 -7
  105. package/commands/secret/deleteSecret.js +5 -6
  106. package/commands/secret/listSecret.js +2 -3
  107. package/commands/secret/updateSecret.js +4 -5
  108. package/commands/testAccount/create.d.ts +1 -1
  109. package/commands/testAccount/create.js +25 -17
  110. package/commands/testAccount/createConfig.js +7 -8
  111. package/commands/testAccount/delete.js +27 -18
  112. package/commands/testAccount/importData.js +6 -7
  113. package/commands/upgrade.js +9 -10
  114. package/lang/en.d.ts +248 -14
  115. package/lang/en.js +265 -28
  116. package/lib/accountAuth.js +4 -0
  117. package/lib/app/migrate.js +18 -5
  118. package/lib/buildAccount.d.ts +1 -6
  119. package/lib/buildAccount.js +9 -42
  120. package/lib/commandSuggestion.js +1 -7
  121. package/lib/constants.d.ts +2 -4
  122. package/lib/constants.js +4 -4
  123. package/lib/doctor/Diagnosis.js +5 -5
  124. package/lib/doctor/Doctor.js +7 -7
  125. package/lib/errorHandlers/index.js +4 -3
  126. package/lib/errorHandlers/suppressError.js +4 -0
  127. package/lib/errors/PromptExitError.d.ts +6 -0
  128. package/lib/errors/PromptExitError.js +11 -0
  129. package/lib/generateSelectors.js +1 -2
  130. package/lib/getStartedV2Actions.d.ts +13 -0
  131. package/lib/getStartedV2Actions.js +56 -3
  132. package/lib/hasFeature.js +1 -2
  133. package/lib/link/accountTableUtils.d.ts +10 -0
  134. package/lib/link/accountTableUtils.js +39 -0
  135. package/lib/link/index.d.ts +18 -0
  136. package/lib/link/index.js +185 -0
  137. package/lib/link/linkUtils.d.ts +5 -0
  138. package/lib/link/linkUtils.js +49 -0
  139. package/lib/link/prompts.d.ts +7 -0
  140. package/lib/link/prompts.js +126 -0
  141. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  142. package/lib/link/renderLinkedAccountsTable.js +14 -0
  143. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  144. package/lib/link/warnIfLinkedDirectory.js +9 -0
  145. package/lib/mcp/setup.d.ts +1 -0
  146. package/lib/mcp/setup.js +77 -30
  147. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  148. package/lib/process.d.ts +1 -1
  149. package/lib/process.js +10 -3
  150. package/lib/projects/ProjectLogsManager.js +6 -3
  151. package/lib/projects/components.js +15 -4
  152. package/lib/projects/create/index.js +3 -6
  153. package/lib/projects/create/legacy.js +5 -10
  154. package/lib/projects/create/v2.js +5 -14
  155. package/lib/projects/delete.d.ts +13 -0
  156. package/lib/projects/delete.js +193 -0
  157. package/lib/projects/deploy.d.ts +1 -1
  158. package/lib/projects/deploy.js +2 -2
  159. package/lib/projects/ensureProjectExists.js +1 -2
  160. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  161. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  162. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  163. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  164. package/lib/projects/localDev/DevSessionManager.js +31 -19
  165. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  166. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  167. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  168. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  169. package/lib/projects/localDev/LocalDevState.js +3 -1
  170. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  171. package/lib/projects/localDev/helpers/account.js +21 -30
  172. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  173. package/lib/projects/localDev/helpers/process.js +4 -10
  174. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  175. package/lib/projects/localDev/helpers/project.js +31 -15
  176. package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
  177. package/lib/projects/projectInfo.d.ts +5 -0
  178. package/lib/projects/projectInfo.js +82 -0
  179. package/lib/projects/projectProfiles.d.ts +1 -2
  180. package/lib/projects/projectProfiles.js +5 -17
  181. package/lib/projects/uieLinting.d.ts +17 -3
  182. package/lib/projects/uieLinting.js +93 -28
  183. package/lib/projects/upload.d.ts +1 -0
  184. package/lib/projects/upload.js +59 -49
  185. package/lib/projects/watch.d.ts +2 -1
  186. package/lib/projects/watch.js +32 -24
  187. package/lib/projects/workspaces.d.ts +52 -0
  188. package/lib/projects/workspaces.js +365 -0
  189. package/lib/prompts/createApiSamplePrompt.js +4 -0
  190. package/lib/prompts/downloadProjectPrompt.js +11 -10
  191. package/lib/prompts/installAppPrompt.js +3 -2
  192. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  193. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  194. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  195. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  196. package/lib/prompts/projectProfilePrompt.js +46 -0
  197. package/lib/prompts/projectsLogsPrompt.js +3 -0
  198. package/lib/prompts/promptUtils.js +4 -2
  199. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  200. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  201. package/lib/sandboxes.d.ts +1 -9
  202. package/lib/sandboxes.js +0 -21
  203. package/lib/serverlessLogs.js +50 -44
  204. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  205. package/lib/theme/cmsDevServerProcess.js +149 -0
  206. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  207. package/lib/theme/cmsDevServerRunner.js +90 -0
  208. package/lib/theme/migrate.d.ts +1 -1
  209. package/lib/theme/migrate.js +1 -5
  210. package/lib/ui/SpinniesManager.d.ts +1 -0
  211. package/lib/ui/SpinniesManager.js +22 -6
  212. package/lib/ui/accountTable.d.ts +8 -0
  213. package/lib/ui/accountTable.js +67 -0
  214. package/lib/ui/spinniesUtils.d.ts +0 -1
  215. package/lib/ui/spinniesUtils.js +6 -16
  216. package/lib/usageTracking.d.ts +3 -4
  217. package/lib/usageTracking.js +9 -6
  218. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  219. package/lib/yargs/makeYargsBuilder.js +33 -0
  220. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  221. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  222. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  223. package/lib/yargs/parseYargsOrExit.js +25 -0
  224. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  225. package/lib/yargs/strictEnforceBoolean.js +13 -0
  226. package/lib/yargsUtils.d.ts +3 -16
  227. package/lib/yargsUtils.js +3 -48
  228. package/mcp-server/Tool.d.ts +15 -0
  229. package/mcp-server/Tool.js +53 -0
  230. package/mcp-server/server.js +43 -3
  231. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  232. package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
  233. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  234. package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
  235. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  236. package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
  237. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  238. package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
  239. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  240. package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
  241. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  242. package/mcp-server/tools/cms/HsListTool.js +9 -7
  243. package/mcp-server/tools/index.d.ts +3 -2
  244. package/mcp-server/tools/index.js +24 -22
  245. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  246. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  247. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  248. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  249. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  250. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  251. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  252. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  253. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  254. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  255. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  256. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  257. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  258. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  259. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  260. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  261. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  262. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  263. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  264. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  265. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  266. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  267. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  268. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  269. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  270. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  271. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  272. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  273. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  274. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  275. package/mcp-server/tools/project/constants.d.ts +13 -1
  276. package/mcp-server/tools/project/constants.js +13 -16
  277. package/mcp-server/types.d.ts +0 -7
  278. package/mcp-server/types.js +1 -13
  279. package/mcp-server/utils/command.d.ts +5 -0
  280. package/mcp-server/utils/command.js +24 -0
  281. package/mcp-server/utils/feedbackTracking.js +2 -17
  282. package/mcp-server/utils/logger.d.ts +10 -0
  283. package/mcp-server/utils/logger.js +29 -0
  284. package/mcp-server/utils/toolUsageTracking.js +0 -2
  285. package/package.json +15 -11
  286. package/types/Link.d.ts +32 -0
  287. package/types/Link.js +5 -0
  288. package/types/LocalDev.d.ts +5 -0
  289. package/types/PackageJson.d.ts +1 -0
  290. package/types/Projects.d.ts +19 -0
  291. package/types/Prompts.d.ts +1 -0
  292. package/types/Yargs.d.ts +19 -1
  293. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  294. package/ui/components/getStarted/reducer.d.ts +20 -0
  295. package/ui/components/getStarted/reducer.js +36 -0
  296. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  297. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  298. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  299. package/ui/lib/constants.d.ts +1 -0
  300. package/ui/lib/constants.js +1 -0
  301. package/api/__tests__/migrate.test.d.ts +0 -1
  302. package/api/__tests__/migrate.test.js +0 -199
  303. package/commands/__tests__/account.test.d.ts +0 -1
  304. package/commands/__tests__/account.test.js +0 -69
  305. package/commands/__tests__/auth.test.d.ts +0 -1
  306. package/commands/__tests__/auth.test.js +0 -43
  307. package/commands/__tests__/cms.test.d.ts +0 -1
  308. package/commands/__tests__/cms.test.js +0 -87
  309. package/commands/__tests__/config.test.d.ts +0 -1
  310. package/commands/__tests__/config.test.js +0 -44
  311. package/commands/__tests__/customObject.test.d.ts +0 -1
  312. package/commands/__tests__/customObject.test.js +0 -68
  313. package/commands/__tests__/doctor.test.d.ts +0 -1
  314. package/commands/__tests__/doctor.test.js +0 -132
  315. package/commands/__tests__/feedback.test.d.ts +0 -1
  316. package/commands/__tests__/feedback.test.js +0 -24
  317. package/commands/__tests__/filemanager.test.d.ts +0 -1
  318. package/commands/__tests__/filemanager.test.js +0 -45
  319. package/commands/__tests__/getStarted.test.d.ts +0 -1
  320. package/commands/__tests__/getStarted.test.js +0 -173
  321. package/commands/__tests__/hubdb.test.d.ts +0 -1
  322. package/commands/__tests__/hubdb.test.js +0 -50
  323. package/commands/__tests__/init.test.d.ts +0 -1
  324. package/commands/__tests__/init.test.js +0 -42
  325. package/commands/__tests__/mcp.test.d.ts +0 -1
  326. package/commands/__tests__/mcp.test.js +0 -46
  327. package/commands/__tests__/open.test.d.ts +0 -1
  328. package/commands/__tests__/open.test.js +0 -58
  329. package/commands/__tests__/project.test.d.ts +0 -1
  330. package/commands/__tests__/project.test.js +0 -125
  331. package/commands/__tests__/sandbox.test.d.ts +0 -1
  332. package/commands/__tests__/sandbox.test.js +0 -44
  333. package/commands/__tests__/secret.test.d.ts +0 -1
  334. package/commands/__tests__/secret.test.js +0 -49
  335. package/commands/__tests__/testAccount.test.d.ts +0 -1
  336. package/commands/__tests__/testAccount.test.js +0 -57
  337. package/commands/__tests__/upgrade.test.d.ts +0 -1
  338. package/commands/__tests__/upgrade.test.js +0 -309
  339. package/commands/account/__tests__/auth.test.d.ts +0 -1
  340. package/commands/account/__tests__/auth.test.js +0 -206
  341. package/commands/account/__tests__/clean.test.d.ts +0 -1
  342. package/commands/account/__tests__/clean.test.js +0 -28
  343. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  344. package/commands/account/__tests__/createOverride.test.js +0 -32
  345. package/commands/account/__tests__/info.test.d.ts +0 -1
  346. package/commands/account/__tests__/info.test.js +0 -28
  347. package/commands/account/__tests__/list.test.d.ts +0 -1
  348. package/commands/account/__tests__/list.test.js +0 -153
  349. package/commands/account/__tests__/remove.test.d.ts +0 -1
  350. package/commands/account/__tests__/remove.test.js +0 -36
  351. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  352. package/commands/account/__tests__/removeOverride.js +0 -25
  353. package/commands/account/__tests__/rename.test.d.ts +0 -1
  354. package/commands/account/__tests__/rename.test.js +0 -82
  355. package/commands/account/__tests__/use.test.d.ts +0 -1
  356. package/commands/account/__tests__/use.test.js +0 -170
  357. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  358. package/commands/app/__tests__/migrate.test.js +0 -111
  359. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  360. package/commands/app/secret/__tests__/add.test.js +0 -140
  361. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  362. package/commands/app/secret/__tests__/delete.test.js +0 -28
  363. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  364. package/commands/app/secret/__tests__/list.test.js +0 -25
  365. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  366. package/commands/app/secret/__tests__/update.test.js +0 -28
  367. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  368. package/commands/cms/__tests__/delete.test.js +0 -39
  369. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  370. package/commands/cms/__tests__/fetch.test.js +0 -156
  371. package/commands/cms/__tests__/function.test.d.ts +0 -1
  372. package/commands/cms/__tests__/function.test.js +0 -50
  373. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  374. package/commands/cms/__tests__/lint.test.js +0 -33
  375. package/commands/cms/__tests__/list.test.d.ts +0 -1
  376. package/commands/cms/__tests__/list.test.js +0 -42
  377. package/commands/cms/__tests__/module.test.d.ts +0 -1
  378. package/commands/cms/__tests__/module.test.js +0 -45
  379. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  380. package/commands/cms/__tests__/mv.test.js +0 -46
  381. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  382. package/commands/cms/__tests__/theme.test.js +0 -54
  383. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  384. package/commands/cms/__tests__/upload.test.js +0 -308
  385. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  386. package/commands/cms/__tests__/watch.test.js +0 -212
  387. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  388. package/commands/cms/function/__tests__/logs.test.js +0 -70
  389. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  390. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  391. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  392. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  393. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  394. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  395. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  396. package/commands/customObject/__tests__/create.test.js +0 -40
  397. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  398. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  399. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  400. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  401. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  402. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  403. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  404. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  405. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  406. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  407. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  408. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  409. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  410. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  411. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  412. package/commands/filemanager/__tests__/upload.test.js +0 -191
  413. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  414. package/commands/hubdb/__tests__/clear.test.js +0 -28
  415. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  416. package/commands/hubdb/__tests__/create.test.js +0 -28
  417. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  418. package/commands/hubdb/__tests__/delete.test.js +0 -28
  419. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  420. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  421. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  422. package/commands/hubdb/__tests__/list.test.js +0 -88
  423. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  424. package/commands/mcp/__tests__/setup.test.js +0 -26
  425. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  426. package/commands/mcp/__tests__/start.test.js +0 -137
  427. package/commands/project/__tests__/add.test.d.ts +0 -1
  428. package/commands/project/__tests__/add.test.js +0 -107
  429. package/commands/project/__tests__/create.test.d.ts +0 -1
  430. package/commands/project/__tests__/create.test.js +0 -97
  431. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  432. package/commands/project/__tests__/deploy.test.js +0 -307
  433. package/commands/project/__tests__/dev.test.d.ts +0 -1
  434. package/commands/project/__tests__/dev.test.js +0 -273
  435. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  436. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  437. package/commands/project/__tests__/download.test.d.ts +0 -1
  438. package/commands/project/__tests__/download.test.js +0 -39
  439. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  440. package/commands/project/__tests__/installDeps.test.js +0 -140
  441. package/commands/project/__tests__/lint.test.d.ts +0 -1
  442. package/commands/project/__tests__/lint.test.js +0 -704
  443. package/commands/project/__tests__/list.test.d.ts +0 -1
  444. package/commands/project/__tests__/list.test.js +0 -31
  445. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  446. package/commands/project/__tests__/listBuilds.test.js +0 -38
  447. package/commands/project/__tests__/logs.test.d.ts +0 -1
  448. package/commands/project/__tests__/logs.test.js +0 -202
  449. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  450. package/commands/project/__tests__/migrate.test.js +0 -106
  451. package/commands/project/__tests__/open.test.d.ts +0 -1
  452. package/commands/project/__tests__/open.test.js +0 -39
  453. package/commands/project/__tests__/profile.test.d.ts +0 -1
  454. package/commands/project/__tests__/profile.test.js +0 -42
  455. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  456. package/commands/project/__tests__/updateDeps.test.js +0 -140
  457. package/commands/project/__tests__/upload.test.d.ts +0 -1
  458. package/commands/project/__tests__/upload.test.js +0 -234
  459. package/commands/project/__tests__/validate.test.d.ts +0 -1
  460. package/commands/project/__tests__/validate.test.js +0 -381
  461. package/commands/project/__tests__/watch.test.d.ts +0 -1
  462. package/commands/project/__tests__/watch.test.js +0 -35
  463. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  464. package/commands/sandbox/__tests__/create.test.js +0 -245
  465. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  466. package/commands/sandbox/__tests__/delete.test.js +0 -31
  467. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  468. package/commands/secret/__tests__/addSecret.test.js +0 -162
  469. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  470. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  471. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  472. package/commands/secret/__tests__/listSecret.test.js +0 -29
  473. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  474. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  475. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  476. package/commands/testAccount/__tests__/create.test.js +0 -106
  477. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  478. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  479. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  480. package/commands/testAccount/__tests__/delete.test.js +0 -29
  481. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  482. package/commands/testAccount/__tests__/importData.test.js +0 -92
  483. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  484. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  485. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  486. package/lib/__tests__/accountAuth.test.js +0 -258
  487. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  488. package/lib/__tests__/accountTypes.test.js +0 -98
  489. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  490. package/lib/__tests__/buildAccount.test.js +0 -262
  491. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  492. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  493. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  494. package/lib/__tests__/commandSuggestion.test.js +0 -119
  495. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  496. package/lib/__tests__/commonOpts.test.js +0 -80
  497. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  498. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  499. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  500. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  501. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  502. package/lib/__tests__/hasFeature.test.js +0 -167
  503. package/lib/__tests__/http.test.d.ts +0 -1
  504. package/lib/__tests__/http.test.js +0 -40
  505. package/lib/__tests__/importData.test.d.ts +0 -1
  506. package/lib/__tests__/importData.test.js +0 -98
  507. package/lib/__tests__/npmCli.test.d.ts +0 -1
  508. package/lib/__tests__/npmCli.test.js +0 -84
  509. package/lib/__tests__/oauth.test.d.ts +0 -1
  510. package/lib/__tests__/oauth.test.js +0 -109
  511. package/lib/__tests__/parsing.test.d.ts +0 -1
  512. package/lib/__tests__/parsing.test.js +0 -34
  513. package/lib/__tests__/polling.test.d.ts +0 -1
  514. package/lib/__tests__/polling.test.js +0 -76
  515. package/lib/__tests__/process.test.d.ts +0 -1
  516. package/lib/__tests__/process.test.js +0 -89
  517. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  518. package/lib/__tests__/sandboxSync.test.js +0 -147
  519. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  520. package/lib/__tests__/sandboxes.test.js +0 -156
  521. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  522. package/lib/__tests__/serverlessLogs.test.js +0 -148
  523. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  524. package/lib/__tests__/usageTracking.test.js +0 -197
  525. package/lib/__tests__/validation.test.d.ts +0 -1
  526. package/lib/__tests__/validation.test.js +0 -143
  527. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  528. package/lib/__tests__/yargsUtils.test.js +0 -124
  529. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  530. package/lib/app/__tests__/migrate.test.js +0 -638
  531. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  532. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  533. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  534. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  535. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  536. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  537. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  538. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  539. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  540. package/lib/mcp/__tests__/setup.test.js +0 -194
  541. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  542. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  543. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  544. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  545. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  546. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  547. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  548. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  549. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  550. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  551. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  552. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  553. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  554. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  555. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  556. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  557. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  558. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  559. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  560. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  561. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  562. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  563. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  564. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  565. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  566. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  567. package/lib/projects/__tests__/components.test.d.ts +0 -1
  568. package/lib/projects/__tests__/components.test.js +0 -426
  569. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  570. package/lib/projects/__tests__/deploy.test.js +0 -231
  571. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  572. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  573. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  574. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  575. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  576. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  577. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  578. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  579. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  580. package/lib/projects/__tests__/projects.test.js +0 -58
  581. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  582. package/lib/projects/__tests__/structure.test.js +0 -210
  583. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  584. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  585. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  586. package/lib/projects/__tests__/upload.test.js +0 -183
  587. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  588. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  589. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  590. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  591. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  592. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  593. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  594. package/lib/projects/create/__tests__/v2.test.js +0 -257
  595. package/lib/projects/platformVersion.d.ts +0 -9
  596. package/lib/projects/platformVersion.js +0 -39
  597. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  598. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  599. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  600. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  601. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  602. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  603. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  604. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  605. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  606. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  607. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  608. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  609. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  610. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  611. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  612. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  613. package/lib/sandboxSync.d.ts +0 -4
  614. package/lib/sandboxSync.js +0 -102
  615. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  616. package/lib/theme/__tests__/migrate.test.js +0 -256
  617. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  618. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  619. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  620. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  621. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  622. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  623. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  624. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  625. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  626. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  627. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  628. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  629. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  630. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  631. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  632. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  633. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  634. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  635. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  636. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  637. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  638. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  639. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  640. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  641. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  642. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  643. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  644. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  645. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  646. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  647. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  648. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  649. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  650. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  651. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  652. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  653. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  654. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  655. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  656. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  657. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  658. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  659. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  660. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  661. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  662. package/mcp-server/utils/__tests__/command.test.js +0 -45
  663. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  664. package/mcp-server/utils/__tests__/content.test.js +0 -164
  665. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  666. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  667. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  668. package/mcp-server/utils/__tests__/project.test.js +0 -140
  669. package/mcp-server/utils/project.d.ts +0 -5
  670. package/mcp-server/utils/project.js +0 -18
@@ -1,462 +0,0 @@
1
- import { CreateTestAccountTool, } from '../CreateTestAccountTool.js';
2
- import { runCommandInDir } from '../../../utils/project.js';
3
- import { addFlag } from '../../../utils/command.js';
4
- import { mcpFeedbackRequest } from '../../../utils/feedbackTracking.js';
5
- import { trackToolUsage } from '../../../utils/toolUsageTracking.js';
6
- import fs from 'fs';
7
- import * as config from '@hubspot/local-dev-lib/config';
8
- vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
9
- vi.mock('../../../utils/project');
10
- vi.mock('../../../utils/command');
11
- vi.mock('../../../utils/toolUsageTracking');
12
- vi.mock('../../../utils/feedbackTracking');
13
- vi.mock('fs');
14
- vi.mock('@hubspot/local-dev-lib/config');
15
- const mockTrackToolUsage = trackToolUsage;
16
- const mockMcpFeedbackRequest = mcpFeedbackRequest;
17
- const mockRunCommandInDir = runCommandInDir;
18
- const mockAddFlag = addFlag;
19
- const mockReadFileSync = fs.readFileSync;
20
- const mockGetConfigAccountByName = vi.spyOn(config, 'getConfigAccountByName');
21
- describe('mcp-server/tools/project/CreateTestAccountTool', () => {
22
- let mockMcpServer;
23
- let tool;
24
- let mockRegisteredTool;
25
- beforeEach(() => {
26
- // @ts-expect-error Not mocking the whole server
27
- mockMcpServer = {
28
- registerTool: vi.fn(),
29
- };
30
- mockRegisteredTool = {};
31
- mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
32
- mockMcpFeedbackRequest.mockResolvedValue('');
33
- mockTrackToolUsage.mockResolvedValue(undefined);
34
- tool = new CreateTestAccountTool(mockMcpServer);
35
- // Mock addFlag to simulate command building
36
- mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
37
- // Mock fs.readFileSync for config file tests
38
- mockReadFileSync.mockReturnValue(JSON.stringify({
39
- accountName: 'TestAccountFromConfig',
40
- description: 'Test description',
41
- marketingLevel: 'PROFESSIONAL',
42
- }));
43
- // @ts-expect-error breaking things
44
- mockGetConfigAccountByName.mockReturnValue(undefined);
45
- });
46
- describe('register', () => {
47
- it('should register tool with correct parameters', () => {
48
- const result = tool.register();
49
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('create-test-account', expect.objectContaining({
50
- title: 'Create HubSpot Test Account',
51
- description: expect.stringContaining('Creates a HubSpot developer test account'),
52
- inputSchema: expect.any(Object),
53
- }), expect.any(Function));
54
- expect(result).toBe(mockRegisteredTool);
55
- });
56
- });
57
- describe('handler', () => {
58
- describe('config file approach', () => {
59
- const baseInput = {
60
- absoluteCurrentWorkingDirectory: '/test/workspace',
61
- configPath: './test-account.json',
62
- description: 'Test account',
63
- marketingLevel: 'ENTERPRISE',
64
- opsLevel: 'ENTERPRISE',
65
- serviceLevel: 'ENTERPRISE',
66
- salesLevel: 'ENTERPRISE',
67
- contentLevel: 'ENTERPRISE',
68
- commerceLevel: 'ENTERPRISE',
69
- };
70
- it('should create test account with config path', async () => {
71
- mockRunCommandInDir.mockResolvedValue({
72
- stdout: 'Test account created successfully\nAccount ID: 12345678',
73
- stderr: '',
74
- });
75
- const result = await tool.handler(baseInput);
76
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'config-path', './test-account.json');
77
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/workspace', 'hs test-account create --config-path "./test-account.json"');
78
- expect(result).toEqual({
79
- content: [
80
- { type: 'text', text: '/test/workspace' },
81
- {
82
- type: 'text',
83
- text: 'Test account created successfully\nAccount ID: 12345678',
84
- },
85
- { type: 'text', text: '' },
86
- ],
87
- });
88
- });
89
- it('should handle absolute config path', async () => {
90
- mockRunCommandInDir.mockResolvedValue({
91
- stdout: 'Account created',
92
- stderr: '',
93
- });
94
- const input = {
95
- absoluteCurrentWorkingDirectory: '/test/workspace',
96
- configPath: '/absolute/path/to/config.json',
97
- description: 'Test account',
98
- marketingLevel: 'ENTERPRISE',
99
- opsLevel: 'ENTERPRISE',
100
- serviceLevel: 'ENTERPRISE',
101
- salesLevel: 'ENTERPRISE',
102
- contentLevel: 'ENTERPRISE',
103
- commerceLevel: 'ENTERPRISE',
104
- };
105
- await tool.handler(input);
106
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'config-path', '/absolute/path/to/config.json');
107
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/workspace', 'hs test-account create --config-path "/absolute/path/to/config.json"');
108
- });
109
- it('should prioritize config path over flags', async () => {
110
- mockRunCommandInDir.mockResolvedValue({
111
- stdout: 'Account created',
112
- stderr: '',
113
- });
114
- const input = {
115
- absoluteCurrentWorkingDirectory: '/test/workspace',
116
- configPath: './test-account.json',
117
- name: 'FlagAccount',
118
- description: 'This should be ignored',
119
- marketingLevel: 'ENTERPRISE',
120
- opsLevel: 'ENTERPRISE',
121
- serviceLevel: 'ENTERPRISE',
122
- salesLevel: 'ENTERPRISE',
123
- contentLevel: 'ENTERPRISE',
124
- commerceLevel: 'ENTERPRISE',
125
- };
126
- await tool.handler(input);
127
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'config-path', './test-account.json');
128
- // Should not call addFlag for name or description
129
- expect(mockAddFlag).not.toHaveBeenCalledWith(expect.anything(), 'name', expect.anything());
130
- });
131
- it('should return helpful error when config file does not exist', async () => {
132
- mockReadFileSync.mockImplementation(() => {
133
- throw new Error("ENOENT: no such file or directory, open './missing-config.json'");
134
- });
135
- const input = {
136
- absoluteCurrentWorkingDirectory: '/test/workspace',
137
- configPath: './missing-config.json',
138
- };
139
- const result = await tool.handler(input);
140
- expect(mockRunCommandInDir).not.toHaveBeenCalled();
141
- expect(result).toEqual({
142
- content: [
143
- {
144
- type: 'text',
145
- text: expect.stringContaining('Failed to read or parse config file at "./missing-config.json"'),
146
- },
147
- ],
148
- });
149
- expect(result.content[0]).toHaveProperty('text', expect.stringContaining('Please ensure the file exists and contains valid JSON'));
150
- });
151
- it('should return helpful error when config file contains invalid JSON', async () => {
152
- mockReadFileSync.mockReturnValue('{ invalid json }');
153
- const input = {
154
- absoluteCurrentWorkingDirectory: '/test/workspace',
155
- configPath: './invalid-config.json',
156
- };
157
- const result = await tool.handler(input);
158
- expect(mockRunCommandInDir).not.toHaveBeenCalled();
159
- expect(result).toEqual({
160
- content: [
161
- {
162
- type: 'text',
163
- text: expect.stringContaining('Failed to read or parse config file at "./invalid-config.json"'),
164
- },
165
- ],
166
- });
167
- });
168
- });
169
- describe('flag-based approach', () => {
170
- it('should create test account with name and all defaults', async () => {
171
- mockRunCommandInDir.mockResolvedValue({
172
- stdout: 'Test account created successfully',
173
- stderr: '',
174
- });
175
- const input = {
176
- absoluteCurrentWorkingDirectory: '/test/workspace',
177
- name: 'MyTestAccount',
178
- description: '',
179
- marketingLevel: 'ENTERPRISE',
180
- opsLevel: 'ENTERPRISE',
181
- serviceLevel: 'ENTERPRISE',
182
- salesLevel: 'ENTERPRISE',
183
- contentLevel: 'ENTERPRISE',
184
- commerceLevel: 'ENTERPRISE',
185
- };
186
- await tool.handler(input);
187
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'MyTestAccount');
188
- });
189
- it('should add all flags with defaults when only name is provided', async () => {
190
- mockRunCommandInDir.mockResolvedValue({
191
- stdout: 'Test account created successfully',
192
- stderr: '',
193
- });
194
- const input = {
195
- absoluteCurrentWorkingDirectory: '/test/workspace',
196
- name: 'MyTestAccount',
197
- };
198
- await tool.handler(input);
199
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'MyTestAccount');
200
- // Implementation uses name as fallback for description, and adds all hub levels with ENTERPRISE defaults
201
- expect(mockAddFlag).toHaveBeenCalledTimes(8);
202
- expect(mockRunCommandInDir).toHaveBeenCalled();
203
- });
204
- it('should create test account with account name and description', async () => {
205
- mockRunCommandInDir.mockResolvedValue({
206
- stdout: 'Test account created',
207
- stderr: '',
208
- });
209
- const input = {
210
- absoluteCurrentWorkingDirectory: '/test/workspace',
211
- name: 'MyTestAccount',
212
- description: 'Test account for development',
213
- marketingLevel: 'ENTERPRISE',
214
- opsLevel: 'ENTERPRISE',
215
- serviceLevel: 'ENTERPRISE',
216
- salesLevel: 'ENTERPRISE',
217
- contentLevel: 'ENTERPRISE',
218
- commerceLevel: 'ENTERPRISE',
219
- };
220
- await tool.handler(input);
221
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'MyTestAccount');
222
- expect(mockAddFlag).toHaveBeenCalledWith(expect.stringContaining('name'), 'description', 'Test account for development');
223
- });
224
- it('should create test account with specific hub levels', async () => {
225
- mockRunCommandInDir.mockResolvedValue({
226
- stdout: 'Test account created',
227
- stderr: '',
228
- });
229
- const input = {
230
- absoluteCurrentWorkingDirectory: '/test/workspace',
231
- name: 'MixedTierAccount',
232
- description: 'Test account',
233
- marketingLevel: 'PROFESSIONAL',
234
- salesLevel: 'STARTER',
235
- contentLevel: 'FREE',
236
- commerceLevel: 'FREE',
237
- serviceLevel: 'ENTERPRISE',
238
- opsLevel: 'ENTERPRISE',
239
- };
240
- await tool.handler(input);
241
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'MixedTierAccount');
242
- expect(mockAddFlag).toHaveBeenCalledWith(expect.stringContaining('name'), 'marketing-level', 'PROFESSIONAL');
243
- expect(mockAddFlag).toHaveBeenCalledWith(expect.stringContaining('marketing-level'), 'sales-level', 'STARTER');
244
- expect(mockAddFlag).toHaveBeenCalledWith(expect.stringContaining('sales-level'), 'content-level', 'FREE');
245
- });
246
- it('should create test account with all hub levels specified', async () => {
247
- mockRunCommandInDir.mockResolvedValue({
248
- stdout: 'Test account created',
249
- stderr: '',
250
- });
251
- const input = {
252
- absoluteCurrentWorkingDirectory: '/test/workspace',
253
- name: 'AllHubsAccount',
254
- description: 'Full configuration',
255
- marketingLevel: 'ENTERPRISE',
256
- opsLevel: 'PROFESSIONAL',
257
- serviceLevel: 'STARTER',
258
- salesLevel: 'ENTERPRISE',
259
- contentLevel: 'PROFESSIONAL',
260
- commerceLevel: 'FREE',
261
- };
262
- await tool.handler(input);
263
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'AllHubsAccount');
264
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'description', 'Full configuration');
265
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'marketing-level', 'ENTERPRISE');
266
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'ops-level', 'PROFESSIONAL');
267
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'service-level', 'STARTER');
268
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'sales-level', 'ENTERPRISE');
269
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'content-level', 'PROFESSIONAL');
270
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'commerce-level', 'FREE');
271
- });
272
- });
273
- describe('handler defaults', () => {
274
- it('should use ENTERPRISE defaults for all hub levels when not specified', async () => {
275
- mockRunCommandInDir.mockResolvedValue({
276
- stdout: 'Test account created',
277
- stderr: '',
278
- });
279
- const input = {
280
- absoluteCurrentWorkingDirectory: '/test/workspace',
281
- name: 'DefaultLevelsAccount',
282
- description: '',
283
- marketingLevel: 'ENTERPRISE',
284
- opsLevel: 'ENTERPRISE',
285
- serviceLevel: 'ENTERPRISE',
286
- salesLevel: 'ENTERPRISE',
287
- contentLevel: 'ENTERPRISE',
288
- commerceLevel: 'ENTERPRISE',
289
- };
290
- await tool.handler(input);
291
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'DefaultLevelsAccount');
292
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'marketing-level', 'ENTERPRISE');
293
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'ops-level', 'ENTERPRISE');
294
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'service-level', 'ENTERPRISE');
295
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'sales-level', 'ENTERPRISE');
296
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'content-level', 'ENTERPRISE');
297
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'commerce-level', 'ENTERPRISE');
298
- });
299
- it('should use name as fallback for description when description is empty', async () => {
300
- mockRunCommandInDir.mockResolvedValue({
301
- stdout: 'Test account created',
302
- stderr: '',
303
- });
304
- const input = {
305
- absoluteCurrentWorkingDirectory: '/test/workspace',
306
- name: 'NoDescriptionAccount',
307
- description: '',
308
- marketingLevel: 'ENTERPRISE',
309
- opsLevel: 'ENTERPRISE',
310
- serviceLevel: 'ENTERPRISE',
311
- salesLevel: 'ENTERPRISE',
312
- contentLevel: 'ENTERPRISE',
313
- commerceLevel: 'ENTERPRISE',
314
- };
315
- await tool.handler(input);
316
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'NoDescriptionAccount');
317
- // Implementation uses name as fallback for description
318
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'description', 'NoDescriptionAccount');
319
- });
320
- it('should use defaults for some hub levels while respecting explicit values', async () => {
321
- mockRunCommandInDir.mockResolvedValue({
322
- stdout: 'Test account created',
323
- stderr: '',
324
- });
325
- const input = {
326
- absoluteCurrentWorkingDirectory: '/test/workspace',
327
- name: 'PartialLevelsAccount',
328
- description: '',
329
- marketingLevel: 'FREE',
330
- salesLevel: 'STARTER',
331
- opsLevel: 'ENTERPRISE',
332
- serviceLevel: 'ENTERPRISE',
333
- contentLevel: 'ENTERPRISE',
334
- commerceLevel: 'ENTERPRISE',
335
- };
336
- await tool.handler(input);
337
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'PartialLevelsAccount');
338
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'marketing-level', 'FREE');
339
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'sales-level', 'STARTER');
340
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'ops-level', 'ENTERPRISE');
341
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'service-level', 'ENTERPRISE');
342
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'content-level', 'ENTERPRISE');
343
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'commerce-level', 'ENTERPRISE');
344
- });
345
- it('should add all hub level flags when defaults are applied', async () => {
346
- mockRunCommandInDir.mockResolvedValue({
347
- stdout: 'Test account created with defaults',
348
- stderr: '',
349
- });
350
- const input = {
351
- absoluteCurrentWorkingDirectory: '/test/workspace',
352
- name: 'MinimalAccount',
353
- description: '',
354
- marketingLevel: 'ENTERPRISE',
355
- opsLevel: 'ENTERPRISE',
356
- serviceLevel: 'ENTERPRISE',
357
- salesLevel: 'ENTERPRISE',
358
- contentLevel: 'ENTERPRISE',
359
- commerceLevel: 'ENTERPRISE',
360
- };
361
- const result = await tool.handler(input);
362
- expect(mockRunCommandInDir).toHaveBeenCalled();
363
- expect(mockAddFlag).toHaveBeenCalledTimes(8);
364
- expect(result.content[1]).toEqual({
365
- type: 'text',
366
- text: 'Test account created with defaults',
367
- });
368
- });
369
- it('should use ENTERPRISE defaults when values are undefined', async () => {
370
- mockRunCommandInDir.mockResolvedValue({
371
- stdout: 'Test account created',
372
- stderr: '',
373
- });
374
- const input = {
375
- absoluteCurrentWorkingDirectory: '/test/workspace',
376
- name: 'BypassedDefaultsAccount',
377
- };
378
- await tool.handler(input);
379
- expect(mockAddFlag).toHaveBeenCalledWith('hs test-account create', 'name', 'BypassedDefaultsAccount');
380
- expect(mockAddFlag).toHaveBeenCalledTimes(8);
381
- });
382
- });
383
- describe('interactive mode', () => {
384
- it('should ask for parameters when neither config nor name provided', async () => {
385
- const input = {
386
- absoluteCurrentWorkingDirectory: '/test/workspace',
387
- description: 'Test account',
388
- marketingLevel: 'ENTERPRISE',
389
- opsLevel: 'ENTERPRISE',
390
- serviceLevel: 'ENTERPRISE',
391
- salesLevel: 'ENTERPRISE',
392
- contentLevel: 'ENTERPRISE',
393
- commerceLevel: 'ENTERPRISE',
394
- };
395
- const result = await tool.handler(input);
396
- // Should NOT run the command
397
- expect(mockRunCommandInDir).not.toHaveBeenCalled();
398
- // Should return a message asking for information
399
- expect(result).toEqual({
400
- content: [
401
- {
402
- type: 'text',
403
- text: 'Ask the user for the account config JSON path or the name of the test account to create.',
404
- },
405
- ],
406
- });
407
- });
408
- });
409
- describe('error handling', () => {
410
- it('should handle command output with stderr warnings', async () => {
411
- mockRunCommandInDir.mockResolvedValue({
412
- stdout: 'Test account created successfully',
413
- stderr: 'Warning: Some non-critical warning message',
414
- });
415
- const input = {
416
- absoluteCurrentWorkingDirectory: '/test/workspace',
417
- configPath: './test-account.json',
418
- description: 'Test account',
419
- marketingLevel: 'ENTERPRISE',
420
- opsLevel: 'ENTERPRISE',
421
- serviceLevel: 'ENTERPRISE',
422
- salesLevel: 'ENTERPRISE',
423
- contentLevel: 'ENTERPRISE',
424
- commerceLevel: 'ENTERPRISE',
425
- };
426
- const result = await tool.handler(input);
427
- expect(result).toEqual({
428
- content: [
429
- { type: 'text', text: '/test/workspace' },
430
- { type: 'text', text: 'Test account created successfully' },
431
- {
432
- type: 'text',
433
- text: 'Warning: Some non-critical warning message',
434
- },
435
- ],
436
- });
437
- });
438
- it('should handle command execution errors', async () => {
439
- const error = new Error('Failed to create test account');
440
- mockRunCommandInDir.mockRejectedValue(error);
441
- const input = {
442
- absoluteCurrentWorkingDirectory: '/test/workspace',
443
- configPath: './test-account.json',
444
- description: 'Test account',
445
- marketingLevel: 'ENTERPRISE',
446
- opsLevel: 'ENTERPRISE',
447
- serviceLevel: 'ENTERPRISE',
448
- salesLevel: 'ENTERPRISE',
449
- contentLevel: 'ENTERPRISE',
450
- commerceLevel: 'ENTERPRISE',
451
- };
452
- const result = await tool.handler(input);
453
- expect(result).toEqual({
454
- content: [
455
- { type: 'text', text: '/test/workspace' },
456
- { type: 'text', text: 'Failed to create test account' },
457
- ],
458
- });
459
- });
460
- });
461
- });
462
- });
@@ -1,126 +0,0 @@
1
- import { DeployProjectTool } from '../DeployProjectTool.js';
2
- import { runCommandInDir } from '../../../utils/project.js';
3
- import { addFlag } from '../../../utils/command.js';
4
- import { mcpFeedbackRequest } from '../../../utils/feedbackTracking.js';
5
- import { trackToolUsage } from '../../../utils/toolUsageTracking.js';
6
- vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
7
- vi.mock('../../../utils/project');
8
- vi.mock('../../../utils/command');
9
- vi.mock('../../../utils/toolUsageTracking');
10
- vi.mock('../../../utils/feedbackTracking');
11
- const mockTrackToolUsage = trackToolUsage;
12
- const mockMcpFeedbackRequest = mcpFeedbackRequest;
13
- const mockRunCommandInDir = runCommandInDir;
14
- const mockAddFlag = addFlag;
15
- describe('mcp-server/tools/project/DeployProject', () => {
16
- let mockMcpServer;
17
- let tool;
18
- let mockRegisteredTool;
19
- beforeEach(() => {
20
- // @ts-expect-error Not mocking the whole server
21
- mockMcpServer = {
22
- registerTool: vi.fn(),
23
- };
24
- mockRegisteredTool = {};
25
- mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
26
- mockMcpFeedbackRequest.mockResolvedValue('');
27
- mockTrackToolUsage.mockResolvedValue(undefined);
28
- tool = new DeployProjectTool(mockMcpServer);
29
- // Mock addFlag to simulate command building
30
- mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
31
- });
32
- describe('register', () => {
33
- it('should register tool with correct parameters', () => {
34
- const result = tool.register();
35
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('deploy-project', expect.objectContaining({
36
- title: 'Deploy a build of HubSpot Project',
37
- description: expect.stringContaining('Takes a build number and a project name and deploys that build of the project'),
38
- inputSchema: expect.any(Object),
39
- }), expect.any(Function));
40
- expect(result).toBe(mockRegisteredTool);
41
- });
42
- });
43
- describe('handler', () => {
44
- const baseInput = {
45
- absoluteCurrentWorkingDirectory: '/test/dir',
46
- absoluteProjectPath: '/test/project',
47
- };
48
- it('should deploy project with specified build number', async () => {
49
- mockRunCommandInDir.mockResolvedValue({
50
- stdout: 'Project deployed successfully',
51
- stderr: '',
52
- });
53
- const input = {
54
- ...baseInput,
55
- buildNumber: 123,
56
- };
57
- const result = await tool.handler(input);
58
- expect(mockAddFlag).toHaveBeenCalledWith('hs project deploy', 'build', 123);
59
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--build "123"'));
60
- expect(result).toEqual({
61
- content: [
62
- { type: 'text', text: 'Project deployed successfully' },
63
- { type: 'text', text: '' },
64
- ],
65
- });
66
- });
67
- it('should prompt for build number when not provided', async () => {
68
- mockRunCommandInDir.mockResolvedValue({
69
- stdout: 'Build 1: Created 2023-01-01\nBuild 2: Created 2023-01-02',
70
- stderr: '',
71
- });
72
- const result = await tool.handler(baseInput);
73
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', 'hs project list-builds --limit 100');
74
- expect(result.content).toEqual([
75
- {
76
- type: 'text',
77
- text: expect.stringContaining('Ask the user which build number they would like to deploy?'),
78
- },
79
- ]);
80
- expect(result.content[0].text).toContain('Build 1: Created 2023-01-01');
81
- });
82
- it('should handle deployment with stderr', async () => {
83
- mockRunCommandInDir.mockResolvedValue({
84
- stdout: 'Deployed successfully',
85
- stderr: 'Warning: deprecated feature used',
86
- });
87
- const input = {
88
- ...baseInput,
89
- buildNumber: 456,
90
- };
91
- const result = await tool.handler(input);
92
- expect(result.content).toEqual([
93
- { type: 'text', text: 'Deployed successfully' },
94
- { type: 'text', text: 'Warning: deprecated feature used' },
95
- ]);
96
- });
97
- it('should handle errors during list-builds command', async () => {
98
- const error = new Error('Failed to list builds');
99
- mockRunCommandInDir.mockRejectedValue(error);
100
- // The error would be thrown and caught by the calling code
101
- await expect(tool.handler(baseInput)).rejects.toThrow('Failed to list builds');
102
- });
103
- it('should handle errors during deploy command', async () => {
104
- const error = new Error('Deployment failed');
105
- mockRunCommandInDir.mockRejectedValue(error);
106
- const input = {
107
- ...baseInput,
108
- buildNumber: 789,
109
- };
110
- await expect(tool.handler(input)).rejects.toThrow('Deployment failed');
111
- });
112
- it('should prompt for build when buildNumber is 0 (falsy)', async () => {
113
- mockRunCommandInDir.mockResolvedValue({
114
- stdout: 'Build 0: Initial build\nBuild 1: Latest build',
115
- stderr: '',
116
- });
117
- const input = {
118
- ...baseInput,
119
- buildNumber: 0, // This is falsy, so it will prompt
120
- };
121
- const result = await tool.handler(input);
122
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', 'hs project list-builds --limit 100');
123
- expect(result.content[0].text).toContain('Ask the user which build number they would like to deploy?');
124
- });
125
- });
126
- });