@hubspot/cli 8.0.11-experimental.0 → 8.0.11-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/bin/cli.js +2 -0
  2. package/commands/account/auth.js +12 -22
  3. package/commands/account/clean.js +5 -6
  4. package/commands/account/createOverride.js +7 -7
  5. package/commands/account/info.js +2 -1
  6. package/commands/account/list.js +3 -5
  7. package/commands/account/remove.js +2 -3
  8. package/commands/account/removeOverride.js +8 -10
  9. package/commands/account/rename.js +5 -6
  10. package/commands/account/use.js +8 -19
  11. package/commands/api.d.ts +10 -0
  12. package/commands/api.js +164 -0
  13. package/commands/app/migrate.js +8 -8
  14. package/commands/app/secret/add.js +6 -7
  15. package/commands/app/secret/delete.js +9 -10
  16. package/commands/app/secret/list.js +6 -7
  17. package/commands/app/secret/update.js +8 -9
  18. package/commands/auth.js +12 -12
  19. package/commands/cms/app/create.js +9 -5
  20. package/commands/cms/convertFields.js +8 -8
  21. package/commands/cms/delete.js +2 -3
  22. package/commands/cms/fetch.js +7 -7
  23. package/commands/cms/function/create.js +9 -5
  24. package/commands/cms/function/deploy.js +2 -3
  25. package/commands/cms/function/list.js +11 -7
  26. package/commands/cms/function/logs.js +17 -23
  27. package/commands/cms/function/server.js +2 -3
  28. package/commands/cms/getReactModule.js +7 -8
  29. package/commands/cms/lighthouseScore.js +25 -24
  30. package/commands/cms/lint.js +4 -5
  31. package/commands/cms/list.js +5 -6
  32. package/commands/cms/module/create.js +9 -5
  33. package/commands/cms/module/marketplace-validate.js +7 -8
  34. package/commands/cms/mv.js +2 -3
  35. package/commands/cms/template/create.js +10 -6
  36. package/commands/cms/theme/create.js +5 -5
  37. package/commands/cms/theme/generate-selectors.js +5 -4
  38. package/commands/cms/theme/marketplace-validate.js +8 -9
  39. package/commands/cms/theme/preview.js +16 -8
  40. package/commands/cms/upload.js +15 -12
  41. package/commands/cms/watch.js +5 -5
  42. package/commands/cms/webpack/create.js +5 -5
  43. package/commands/completion.js +3 -5
  44. package/commands/config/migrate.js +6 -7
  45. package/commands/config/set.js +5 -6
  46. package/commands/customObject/create.js +4 -5
  47. package/commands/customObject/createSchema.js +4 -5
  48. package/commands/customObject/deleteSchema.js +4 -5
  49. package/commands/customObject/fetchAllSchemas.js +2 -3
  50. package/commands/customObject/fetchSchema.js +2 -3
  51. package/commands/customObject/listSchemas.js +2 -3
  52. package/commands/customObject/updateSchema.js +4 -5
  53. package/commands/doctor.js +8 -8
  54. package/commands/feedback.js +6 -4
  55. package/commands/filemanager/fetch.js +5 -6
  56. package/commands/filemanager/upload.js +5 -5
  57. package/commands/getStarted.js +14 -16
  58. package/commands/hubdb/clear.js +5 -6
  59. package/commands/hubdb/create.js +4 -5
  60. package/commands/hubdb/delete.js +8 -9
  61. package/commands/hubdb/fetch.js +5 -6
  62. package/commands/hubdb/list.js +16 -14
  63. package/commands/init.js +14 -17
  64. package/commands/mcp/setup.js +5 -6
  65. package/commands/mcp/start.js +2 -3
  66. package/commands/open.js +4 -5
  67. package/commands/project/add.js +10 -5
  68. package/commands/project/create.js +10 -10
  69. package/commands/project/delete.d.ts +7 -0
  70. package/commands/project/delete.js +74 -0
  71. package/commands/project/deploy.js +36 -34
  72. package/commands/project/dev/deprecatedFlow.js +42 -15
  73. package/commands/project/dev/index.d.ts +3 -3
  74. package/commands/project/dev/index.js +24 -30
  75. package/commands/project/dev/unifiedFlow.js +37 -14
  76. package/commands/project/download.js +10 -11
  77. package/commands/project/info.js +17 -17
  78. package/commands/project/installDeps.js +9 -6
  79. package/commands/project/lint.js +11 -8
  80. package/commands/project/list.js +14 -14
  81. package/commands/project/listBuilds.js +8 -6
  82. package/commands/project/logs.js +5 -6
  83. package/commands/project/migrate.js +8 -8
  84. package/commands/project/open.js +5 -6
  85. package/commands/project/profile/add.js +12 -8
  86. package/commands/project/profile/delete.js +15 -11
  87. package/commands/project/updateDeps.js +9 -6
  88. package/commands/project/upload.js +31 -17
  89. package/commands/project/validate.js +11 -11
  90. package/commands/project/watch.js +20 -20
  91. package/commands/project.js +2 -0
  92. package/commands/sandbox/create.js +15 -15
  93. package/commands/sandbox/delete.js +13 -14
  94. package/commands/secret/addSecret.js +6 -7
  95. package/commands/secret/deleteSecret.js +5 -6
  96. package/commands/secret/listSecret.js +2 -3
  97. package/commands/secret/updateSecret.js +4 -5
  98. package/commands/testAccount/create.d.ts +1 -1
  99. package/commands/testAccount/create.js +20 -16
  100. package/commands/testAccount/createConfig.js +7 -8
  101. package/commands/testAccount/delete.js +27 -18
  102. package/commands/testAccount/importData.js +6 -7
  103. package/commands/upgrade.js +9 -10
  104. package/lang/en.d.ts +94 -7
  105. package/lang/en.js +94 -10
  106. package/lib/accountAuth.js +2 -2
  107. package/lib/buildAccount.js +3 -3
  108. package/lib/constants.d.ts +0 -1
  109. package/lib/constants.js +0 -1
  110. package/lib/doctor/Diagnosis.js +5 -5
  111. package/lib/errorHandlers/index.js +4 -3
  112. package/lib/errorHandlers/suppressError.js +4 -0
  113. package/lib/errors/PromptExitError.d.ts +4 -2
  114. package/lib/errors/PromptExitError.js +3 -0
  115. package/lib/hasFeature.js +1 -2
  116. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  117. package/lib/process.d.ts +1 -1
  118. package/lib/process.js +10 -3
  119. package/lib/projects/create/v2.js +1 -2
  120. package/lib/projects/delete.d.ts +13 -0
  121. package/lib/projects/delete.js +193 -0
  122. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  123. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  124. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  125. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  126. package/lib/projects/localDev/DevSessionManager.js +31 -19
  127. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  128. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  129. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  130. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  131. package/lib/projects/localDev/LocalDevState.js +3 -1
  132. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  133. package/lib/projects/localDev/helpers/account.js +16 -19
  134. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  135. package/lib/projects/localDev/helpers/process.js +4 -10
  136. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  137. package/lib/projects/localDev/helpers/project.js +31 -15
  138. package/lib/projects/projectInfo.d.ts +3 -20
  139. package/lib/projects/projectInfo.js +32 -54
  140. package/lib/projects/projectProfiles.d.ts +1 -2
  141. package/lib/projects/projectProfiles.js +5 -17
  142. package/lib/projects/upload.js +19 -0
  143. package/lib/projects/workspaces.d.ts +42 -0
  144. package/lib/projects/workspaces.js +350 -0
  145. package/lib/prompts/createApiSamplePrompt.js +4 -0
  146. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  147. package/lib/prompts/projectProfilePrompt.js +46 -0
  148. package/lib/prompts/promptUtils.js +3 -2
  149. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  150. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  151. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  152. package/lib/theme/cmsDevServerProcess.js +7 -6
  153. package/lib/ui/SpinniesManager.d.ts +1 -0
  154. package/lib/ui/SpinniesManager.js +20 -6
  155. package/lib/ui/spinniesUtils.d.ts +0 -1
  156. package/lib/ui/spinniesUtils.js +6 -16
  157. package/lib/usageTracking.d.ts +3 -4
  158. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  159. package/lib/yargs/makeYargsBuilder.js +33 -0
  160. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  161. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  162. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  163. package/lib/yargs/strictEnforceBoolean.js +13 -0
  164. package/lib/yargsUtils.d.ts +3 -16
  165. package/lib/yargsUtils.js +3 -48
  166. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +1 -1
  167. package/package.json +10 -5
  168. package/types/LocalDev.d.ts +5 -0
  169. package/types/Projects.d.ts +19 -0
  170. package/types/Yargs.d.ts +18 -1
  171. package/api/__tests__/migrate.test.d.ts +0 -1
  172. package/api/__tests__/migrate.test.js +0 -199
  173. package/commands/__tests__/account.test.d.ts +0 -1
  174. package/commands/__tests__/account.test.js +0 -69
  175. package/commands/__tests__/auth.test.d.ts +0 -1
  176. package/commands/__tests__/auth.test.js +0 -43
  177. package/commands/__tests__/cms.test.d.ts +0 -1
  178. package/commands/__tests__/cms.test.js +0 -87
  179. package/commands/__tests__/config.test.d.ts +0 -1
  180. package/commands/__tests__/config.test.js +0 -44
  181. package/commands/__tests__/customObject.test.d.ts +0 -1
  182. package/commands/__tests__/customObject.test.js +0 -68
  183. package/commands/__tests__/doctor.test.d.ts +0 -1
  184. package/commands/__tests__/doctor.test.js +0 -132
  185. package/commands/__tests__/feedback.test.d.ts +0 -1
  186. package/commands/__tests__/feedback.test.js +0 -24
  187. package/commands/__tests__/filemanager.test.d.ts +0 -1
  188. package/commands/__tests__/filemanager.test.js +0 -45
  189. package/commands/__tests__/getStarted.test.d.ts +0 -1
  190. package/commands/__tests__/getStarted.test.js +0 -173
  191. package/commands/__tests__/hubdb.test.d.ts +0 -1
  192. package/commands/__tests__/hubdb.test.js +0 -50
  193. package/commands/__tests__/init.test.d.ts +0 -1
  194. package/commands/__tests__/init.test.js +0 -42
  195. package/commands/__tests__/mcp.test.d.ts +0 -1
  196. package/commands/__tests__/mcp.test.js +0 -46
  197. package/commands/__tests__/open.test.d.ts +0 -1
  198. package/commands/__tests__/open.test.js +0 -58
  199. package/commands/__tests__/project.test.d.ts +0 -1
  200. package/commands/__tests__/project.test.js +0 -125
  201. package/commands/__tests__/sandbox.test.d.ts +0 -1
  202. package/commands/__tests__/sandbox.test.js +0 -44
  203. package/commands/__tests__/secret.test.d.ts +0 -1
  204. package/commands/__tests__/secret.test.js +0 -49
  205. package/commands/__tests__/testAccount.test.d.ts +0 -1
  206. package/commands/__tests__/testAccount.test.js +0 -57
  207. package/commands/__tests__/upgrade.test.d.ts +0 -1
  208. package/commands/__tests__/upgrade.test.js +0 -309
  209. package/commands/account/__tests__/auth.test.d.ts +0 -1
  210. package/commands/account/__tests__/auth.test.js +0 -206
  211. package/commands/account/__tests__/clean.test.d.ts +0 -1
  212. package/commands/account/__tests__/clean.test.js +0 -28
  213. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  214. package/commands/account/__tests__/createOverride.test.js +0 -32
  215. package/commands/account/__tests__/info.test.d.ts +0 -1
  216. package/commands/account/__tests__/info.test.js +0 -28
  217. package/commands/account/__tests__/list.test.d.ts +0 -1
  218. package/commands/account/__tests__/list.test.js +0 -153
  219. package/commands/account/__tests__/remove.test.d.ts +0 -1
  220. package/commands/account/__tests__/remove.test.js +0 -36
  221. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  222. package/commands/account/__tests__/removeOverride.js +0 -25
  223. package/commands/account/__tests__/rename.test.d.ts +0 -1
  224. package/commands/account/__tests__/rename.test.js +0 -82
  225. package/commands/account/__tests__/use.test.d.ts +0 -1
  226. package/commands/account/__tests__/use.test.js +0 -170
  227. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  228. package/commands/app/__tests__/migrate.test.js +0 -111
  229. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  230. package/commands/app/secret/__tests__/add.test.js +0 -140
  231. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  232. package/commands/app/secret/__tests__/delete.test.js +0 -28
  233. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  234. package/commands/app/secret/__tests__/list.test.js +0 -25
  235. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  236. package/commands/app/secret/__tests__/update.test.js +0 -28
  237. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  238. package/commands/cms/__tests__/delete.test.js +0 -39
  239. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  240. package/commands/cms/__tests__/fetch.test.js +0 -156
  241. package/commands/cms/__tests__/function.test.d.ts +0 -1
  242. package/commands/cms/__tests__/function.test.js +0 -50
  243. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  244. package/commands/cms/__tests__/lint.test.js +0 -33
  245. package/commands/cms/__tests__/list.test.d.ts +0 -1
  246. package/commands/cms/__tests__/list.test.js +0 -42
  247. package/commands/cms/__tests__/module.test.d.ts +0 -1
  248. package/commands/cms/__tests__/module.test.js +0 -45
  249. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  250. package/commands/cms/__tests__/mv.test.js +0 -46
  251. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  252. package/commands/cms/__tests__/theme.test.js +0 -54
  253. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  254. package/commands/cms/__tests__/upload.test.js +0 -312
  255. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  256. package/commands/cms/__tests__/watch.test.js +0 -204
  257. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  258. package/commands/cms/function/__tests__/logs.test.js +0 -70
  259. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  260. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  261. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  262. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  263. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  264. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  265. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  266. package/commands/customObject/__tests__/create.test.js +0 -40
  267. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  268. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  269. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  270. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  271. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  272. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  273. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  274. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  275. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  276. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  277. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  278. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  279. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  280. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  281. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  282. package/commands/filemanager/__tests__/upload.test.js +0 -191
  283. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  284. package/commands/hubdb/__tests__/clear.test.js +0 -28
  285. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  286. package/commands/hubdb/__tests__/create.test.js +0 -28
  287. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  288. package/commands/hubdb/__tests__/delete.test.js +0 -28
  289. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  290. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  291. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  292. package/commands/hubdb/__tests__/list.test.js +0 -88
  293. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  294. package/commands/mcp/__tests__/setup.test.js +0 -26
  295. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  296. package/commands/mcp/__tests__/start.test.js +0 -144
  297. package/commands/project/__tests__/add.test.d.ts +0 -1
  298. package/commands/project/__tests__/add.test.js +0 -107
  299. package/commands/project/__tests__/create.test.d.ts +0 -1
  300. package/commands/project/__tests__/create.test.js +0 -97
  301. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  302. package/commands/project/__tests__/deploy.test.js +0 -307
  303. package/commands/project/__tests__/dev.test.d.ts +0 -1
  304. package/commands/project/__tests__/dev.test.js +0 -273
  305. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  306. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  307. package/commands/project/__tests__/download.test.d.ts +0 -1
  308. package/commands/project/__tests__/download.test.js +0 -39
  309. package/commands/project/__tests__/info.test.d.ts +0 -1
  310. package/commands/project/__tests__/info.test.js +0 -145
  311. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  312. package/commands/project/__tests__/installDeps.test.js +0 -140
  313. package/commands/project/__tests__/lint.test.d.ts +0 -1
  314. package/commands/project/__tests__/lint.test.js +0 -704
  315. package/commands/project/__tests__/list.test.d.ts +0 -1
  316. package/commands/project/__tests__/list.test.js +0 -31
  317. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  318. package/commands/project/__tests__/listBuilds.test.js +0 -38
  319. package/commands/project/__tests__/logs.test.d.ts +0 -1
  320. package/commands/project/__tests__/logs.test.js +0 -202
  321. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  322. package/commands/project/__tests__/migrate.test.js +0 -106
  323. package/commands/project/__tests__/open.test.d.ts +0 -1
  324. package/commands/project/__tests__/open.test.js +0 -39
  325. package/commands/project/__tests__/profile.test.d.ts +0 -1
  326. package/commands/project/__tests__/profile.test.js +0 -42
  327. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  328. package/commands/project/__tests__/updateDeps.test.js +0 -140
  329. package/commands/project/__tests__/upload.test.d.ts +0 -1
  330. package/commands/project/__tests__/upload.test.js +0 -234
  331. package/commands/project/__tests__/validate.test.d.ts +0 -1
  332. package/commands/project/__tests__/validate.test.js +0 -381
  333. package/commands/project/__tests__/watch.test.d.ts +0 -1
  334. package/commands/project/__tests__/watch.test.js +0 -35
  335. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  336. package/commands/sandbox/__tests__/create.test.js +0 -198
  337. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  338. package/commands/sandbox/__tests__/delete.test.js +0 -31
  339. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  340. package/commands/secret/__tests__/addSecret.test.js +0 -162
  341. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  342. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  343. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  344. package/commands/secret/__tests__/listSecret.test.js +0 -29
  345. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  346. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  347. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  348. package/commands/testAccount/__tests__/create.test.js +0 -106
  349. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  350. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  351. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  352. package/commands/testAccount/__tests__/delete.test.js +0 -29
  353. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  354. package/commands/testAccount/__tests__/importData.test.js +0 -92
  355. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  356. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  357. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  358. package/lib/__tests__/accountAuth.test.js +0 -258
  359. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  360. package/lib/__tests__/accountTypes.test.js +0 -98
  361. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  362. package/lib/__tests__/buildAccount.test.js +0 -211
  363. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  364. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  365. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  366. package/lib/__tests__/commandSuggestion.test.js +0 -121
  367. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  368. package/lib/__tests__/commonOpts.test.js +0 -80
  369. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  370. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  371. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  372. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  373. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  374. package/lib/__tests__/hasFeature.test.js +0 -167
  375. package/lib/__tests__/http.test.d.ts +0 -1
  376. package/lib/__tests__/http.test.js +0 -40
  377. package/lib/__tests__/importData.test.d.ts +0 -1
  378. package/lib/__tests__/importData.test.js +0 -98
  379. package/lib/__tests__/npmCli.test.d.ts +0 -1
  380. package/lib/__tests__/npmCli.test.js +0 -84
  381. package/lib/__tests__/oauth.test.d.ts +0 -1
  382. package/lib/__tests__/oauth.test.js +0 -109
  383. package/lib/__tests__/parsing.test.d.ts +0 -1
  384. package/lib/__tests__/parsing.test.js +0 -34
  385. package/lib/__tests__/polling.test.d.ts +0 -1
  386. package/lib/__tests__/polling.test.js +0 -76
  387. package/lib/__tests__/process.test.d.ts +0 -1
  388. package/lib/__tests__/process.test.js +0 -89
  389. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  390. package/lib/__tests__/sandboxes.test.js +0 -128
  391. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  392. package/lib/__tests__/serverlessLogs.test.js +0 -163
  393. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  394. package/lib/__tests__/usageTracking.test.js +0 -197
  395. package/lib/__tests__/validation.test.d.ts +0 -1
  396. package/lib/__tests__/validation.test.js +0 -143
  397. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  398. package/lib/__tests__/yargsUtils.test.js +0 -124
  399. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  400. package/lib/app/__tests__/migrate.test.js +0 -638
  401. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  402. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  403. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  404. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  405. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  406. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  407. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  408. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  409. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  410. package/lib/mcp/__tests__/setup.test.js +0 -523
  411. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  412. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  413. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  414. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  415. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  416. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  417. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  418. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  419. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  420. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  421. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  422. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  423. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  424. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  425. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  426. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  427. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  428. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  429. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  430. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  431. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  432. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  433. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  434. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  435. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  436. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  437. package/lib/projects/__tests__/components.test.d.ts +0 -1
  438. package/lib/projects/__tests__/components.test.js +0 -440
  439. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  440. package/lib/projects/__tests__/deploy.test.js +0 -231
  441. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  442. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  443. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  444. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  445. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  446. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  447. package/lib/projects/__tests__/projectInfo.test.d.ts +0 -1
  448. package/lib/projects/__tests__/projectInfo.test.js +0 -114
  449. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  450. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  451. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  452. package/lib/projects/__tests__/projects.test.js +0 -58
  453. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  454. package/lib/projects/__tests__/structure.test.js +0 -210
  455. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  456. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  457. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  458. package/lib/projects/__tests__/upload.test.js +0 -183
  459. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  460. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  461. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  462. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  463. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  464. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  465. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  466. package/lib/projects/create/__tests__/v2.test.js +0 -257
  467. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  468. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  469. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  470. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  471. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  472. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  473. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  474. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  476. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  477. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  478. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  479. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  480. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  481. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  482. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  483. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  484. package/lib/theme/__tests__/migrate.test.js +0 -247
  485. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  486. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  487. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  488. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  489. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  490. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  491. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  492. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  493. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  494. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  495. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  496. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  497. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  498. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  499. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  500. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  501. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  502. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  503. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  504. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  505. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  506. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  507. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  508. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  509. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  510. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  511. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  512. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  513. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  514. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  515. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  516. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  517. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  518. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  519. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  520. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  521. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  522. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  523. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  524. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  525. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  526. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  527. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  528. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  529. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  530. package/mcp-server/utils/__tests__/command.test.js +0 -275
  531. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  532. package/mcp-server/utils/__tests__/content.test.js +0 -164
  533. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  534. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,209 +0,0 @@
1
- import { GetConfigValuesTool } from '../GetConfigValuesTool.js';
2
- import { getIntermediateRepresentationSchema } from '@hubspot/project-parsing-lib/schema';
3
- import { mapToInternalType } from '@hubspot/project-parsing-lib/transform';
4
- import { getConfigDefaultAccountIfExists } from '@hubspot/local-dev-lib/config';
5
- import { mcpFeedbackRequest } from '../../../utils/feedbackTracking.js';
6
- import { trackToolUsage } from '../../../utils/toolUsageTracking.js';
7
- vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
8
- vi.mock('@hubspot/project-parsing-lib/schema');
9
- vi.mock('@hubspot/project-parsing-lib/transform');
10
- vi.mock('@hubspot/local-dev-lib/config');
11
- vi.mock('../../../utils/toolUsageTracking');
12
- vi.mock('../../../utils/feedbackTracking');
13
- const mockTrackToolUsage = trackToolUsage;
14
- const mockMcpFeedbackRequest = mcpFeedbackRequest;
15
- const mockGetIntermediateRepresentationSchema = getIntermediateRepresentationSchema;
16
- const mockMapToInternalType = mapToInternalType;
17
- const mockGetConfigDefaultAccountIfExists = getConfigDefaultAccountIfExists;
18
- describe('mcp-server/tools/project/GetConfigValuesTool', () => {
19
- let mockMcpServer;
20
- let tool;
21
- let mockRegisteredTool;
22
- beforeEach(() => {
23
- // @ts-expect-error Not mocking the whole thing
24
- mockMcpServer = {
25
- registerTool: vi.fn(),
26
- };
27
- mockRegisteredTool = {};
28
- mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
29
- mockMcpFeedbackRequest.mockResolvedValue('');
30
- mockTrackToolUsage.mockResolvedValue(undefined);
31
- tool = new GetConfigValuesTool(mockMcpServer);
32
- });
33
- describe('register', () => {
34
- it('should register tool with correct parameters', () => {
35
- const result = tool.register();
36
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('get-feature-config-schema', expect.objectContaining({
37
- title: 'Fetch the JSON Schema for component',
38
- description: expect.stringContaining('Fetches and returns the JSON schema for the provided feature'),
39
- inputSchema: expect.objectContaining({
40
- platformVersion: expect.objectContaining({
41
- describe: expect.any(Function),
42
- }),
43
- featureType: expect.objectContaining({
44
- describe: expect.any(Function),
45
- }),
46
- }),
47
- }), expect.any(Function));
48
- expect(result).toBe(mockRegisteredTool);
49
- });
50
- });
51
- describe('handler', () => {
52
- const input = {
53
- platformVersion: '2025.2',
54
- featureType: 'card',
55
- absoluteCurrentWorkingDirectory: '/foo',
56
- };
57
- beforeEach(() => {
58
- mockGetConfigDefaultAccountIfExists.mockReturnValue({
59
- accountId: 123456789,
60
- });
61
- });
62
- it('should return config schema when component type exists', async () => {
63
- const mockSchema = {
64
- 'internal-card-type': {
65
- type: 'object',
66
- properties: {
67
- title: { type: 'string' },
68
- description: { type: 'string' },
69
- },
70
- },
71
- };
72
- mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
73
- mockMapToInternalType.mockReturnValue('internal-card-type');
74
- const result = await tool.handler(input);
75
- expect(mockGetConfigDefaultAccountIfExists).toHaveBeenCalled();
76
- expect(mockGetIntermediateRepresentationSchema).toHaveBeenCalledWith({
77
- platformVersion: '2025.2',
78
- projectSourceDir: '',
79
- accountId: 123456789,
80
- });
81
- expect(mockMapToInternalType).toHaveBeenCalledWith('card');
82
- expect(result).toEqual({
83
- content: [
84
- {
85
- type: 'text',
86
- text: JSON.stringify({
87
- config: {
88
- type: 'object',
89
- properties: {
90
- title: { type: 'string' },
91
- description: { type: 'string' },
92
- },
93
- },
94
- }),
95
- },
96
- ],
97
- });
98
- });
99
- it('should return error message when component type does not exist in schema', async () => {
100
- const mockSchema = {
101
- 'other-type': {
102
- type: 'object',
103
- properties: {},
104
- },
105
- };
106
- mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
107
- mockMapToInternalType.mockReturnValue('internal-card-type');
108
- const result = await tool.handler(input);
109
- expect(result).toEqual({
110
- content: [
111
- {
112
- type: 'text',
113
- text: 'Unable to locate JSON schema for type card',
114
- },
115
- ],
116
- });
117
- });
118
- it('should return error message when getIntermediateRepresentationSchema throws', async () => {
119
- mockGetIntermediateRepresentationSchema.mockRejectedValue(new Error('Schema fetch failed'));
120
- mockMapToInternalType.mockReturnValue('internal-card-type');
121
- const result = await tool.handler(input);
122
- expect(result).toEqual({
123
- content: [
124
- {
125
- type: 'text',
126
- text: 'Unable to locate JSON schema for type card',
127
- },
128
- ],
129
- });
130
- });
131
- it('should return error message when mapToInternalType throws', async () => {
132
- const mockSchema = {};
133
- mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
134
- mockMapToInternalType.mockImplementation(() => {
135
- throw new Error('Mapping failed');
136
- });
137
- const result = await tool.handler(input);
138
- expect(result).toEqual({
139
- content: [
140
- {
141
- type: 'text',
142
- text: 'Unable to locate JSON schema for type card',
143
- },
144
- ],
145
- });
146
- });
147
- it('should handle null account id', async () => {
148
- mockGetConfigDefaultAccountIfExists.mockReturnValue(undefined);
149
- const result = await tool.handler(input);
150
- expect(result).toEqual({
151
- content: [
152
- {
153
- type: 'text',
154
- text: 'No account ID found. Please run `hs account auth` to configure an account, or set a default account with `hs account use <account>`',
155
- },
156
- ],
157
- });
158
- });
159
- it('should handle empty schema object', async () => {
160
- const mockSchema = {};
161
- mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
162
- mockMapToInternalType.mockReturnValue('internal-card-type');
163
- const result = await tool.handler(input);
164
- expect(result).toEqual({
165
- content: [
166
- {
167
- type: 'text',
168
- text: 'Unable to locate JSON schema for type card',
169
- },
170
- ],
171
- });
172
- });
173
- it('should handle complex nested schema structures', async () => {
174
- const complexSchema = {
175
- 'internal-card-type': {
176
- type: 'object',
177
- properties: {
178
- title: { type: 'string', maxLength: 100 },
179
- metadata: {
180
- type: 'object',
181
- properties: {
182
- author: { type: 'string' },
183
- tags: {
184
- type: 'array',
185
- items: { type: 'string' },
186
- },
187
- },
188
- required: ['author'],
189
- },
190
- },
191
- required: ['title'],
192
- },
193
- };
194
- mockGetIntermediateRepresentationSchema.mockResolvedValue(complexSchema);
195
- mockMapToInternalType.mockReturnValue('internal-card-type');
196
- const result = await tool.handler(input);
197
- expect(result).toEqual({
198
- content: [
199
- {
200
- type: 'text',
201
- text: JSON.stringify({
202
- config: complexSchema['internal-card-type'],
203
- }),
204
- },
205
- ],
206
- });
207
- });
208
- });
209
- });
@@ -1,158 +0,0 @@
1
- import { GuidedWalkthroughTool } from '../GuidedWalkthroughTool.js';
2
- import { execAsync } from '../../../utils/command.js';
3
- import { mcpFeedbackRequest } from '../../../utils/feedbackTracking.js';
4
- import { trackToolUsage } from '../../../utils/toolUsageTracking.js';
5
- vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
6
- vi.mock('../../../utils/command');
7
- vi.mock('../../../utils/toolUsageTracking');
8
- vi.mock('../../../utils/feedbackTracking');
9
- const mockTrackToolUsage = trackToolUsage;
10
- const mockExecAsync = execAsync;
11
- const mockMcpFeedbackRequest = mcpFeedbackRequest;
12
- describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
13
- let mockMcpServer;
14
- let tool;
15
- let mockRegisteredTool;
16
- beforeEach(() => {
17
- // @ts-expect-error Not mocking whole server
18
- mockMcpServer = {
19
- registerTool: vi.fn(),
20
- };
21
- mockRegisteredTool = {};
22
- mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
23
- mockMcpFeedbackRequest.mockResolvedValue('');
24
- mockTrackToolUsage.mockResolvedValue(undefined);
25
- tool = new GuidedWalkthroughTool(mockMcpServer);
26
- });
27
- describe('register', () => {
28
- it('should register tool with correct parameters and enhanced description', () => {
29
- const result = tool.register();
30
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('guided-walkthrough-cli', expect.objectContaining({
31
- title: 'Guided walkthrough of the CLI',
32
- description: expect.stringContaining('Give the user a guided walkthrough of the HubSpot CLI'),
33
- inputSchema: expect.any(Object),
34
- }), expect.any(Function));
35
- expect(result).toBe(mockRegisteredTool);
36
- });
37
- });
38
- describe('handler', () => {
39
- it('should show help for hs init command', async () => {
40
- const helpOutput = 'Usage: hs init [options]\nInitialize HubSpot CLI';
41
- mockExecAsync.mockResolvedValue({
42
- stdout: helpOutput,
43
- stderr: '',
44
- });
45
- const result = await tool.handler({
46
- absoluteCurrentWorkingDirectory: '/test/dir',
47
- command: 'hs init',
48
- });
49
- expect(mockExecAsync).toHaveBeenCalledWith('hs init --help');
50
- expect(result.content).toHaveLength(1);
51
- expect(result.content[0].text).toContain(helpOutput);
52
- expect(result.content[0].text).toContain('hs auth');
53
- });
54
- it('should show help for hs auth command', async () => {
55
- const helpOutput = 'Usage: hs auth [options]\nAuthenticate with HubSpot';
56
- mockExecAsync.mockResolvedValue({
57
- stdout: helpOutput,
58
- stderr: '',
59
- });
60
- const result = await tool.handler({
61
- absoluteCurrentWorkingDirectory: '/test/dir',
62
- command: 'hs auth',
63
- });
64
- expect(mockExecAsync).toHaveBeenCalledWith('hs auth --help');
65
- expect(result.content[0].text).toContain(helpOutput);
66
- expect(result.content[0].text).toContain('hs project create');
67
- });
68
- it('should show help for hs project create command', async () => {
69
- const helpOutput = 'Usage: hs project create [options]\nCreate a new project';
70
- mockExecAsync.mockResolvedValue({
71
- stdout: helpOutput,
72
- stderr: '',
73
- });
74
- const result = await tool.handler({
75
- absoluteCurrentWorkingDirectory: '/test/dir',
76
- command: 'hs project create',
77
- });
78
- expect(mockExecAsync).toHaveBeenCalledWith('hs project create --help');
79
- expect(result.content[0].text).toContain(helpOutput);
80
- expect(result.content[0].text).toContain('hs project upload');
81
- });
82
- it('should show help for hs project upload command', async () => {
83
- const helpOutput = 'Usage: hs project upload [options]\nUpload project to HubSpot';
84
- mockExecAsync.mockResolvedValue({
85
- stdout: helpOutput,
86
- stderr: '',
87
- });
88
- const result = await tool.handler({
89
- absoluteCurrentWorkingDirectory: '/test/dir',
90
- command: 'hs project upload',
91
- });
92
- expect(mockExecAsync).toHaveBeenCalledWith('hs project upload --help');
93
- expect(result.content[0].text).toContain(helpOutput);
94
- expect(result.content[0].text).toContain('hs project dev');
95
- });
96
- it('should handle command without next step', async () => {
97
- const helpOutput = 'Usage: hs project dev [options]\nStart development server';
98
- mockExecAsync.mockResolvedValue({
99
- stdout: helpOutput,
100
- stderr: '',
101
- });
102
- // Test with a command that doesn't have a next command
103
- const result = await tool.handler({
104
- absoluteCurrentWorkingDirectory: '/test/dir',
105
- command: 'hs project upload',
106
- });
107
- expect(result.content[0].text).toContain(helpOutput);
108
- expect(result.content[0].text).toContain('hs project dev');
109
- });
110
- it('should handle no command provided', async () => {
111
- const result = await tool.handler({
112
- absoluteCurrentWorkingDirectory: '/test/dir',
113
- });
114
- expect(mockExecAsync).not.toHaveBeenCalled();
115
- expect(result.content).toEqual([
116
- {
117
- type: 'text',
118
- text: 'Is there another command you would like to learn more about?',
119
- },
120
- ]);
121
- });
122
- it('should handle undefined command', async () => {
123
- const result = await tool.handler({
124
- absoluteCurrentWorkingDirectory: '/test/dir',
125
- command: undefined,
126
- });
127
- expect(mockExecAsync).not.toHaveBeenCalled();
128
- expect(result.content).toEqual([
129
- {
130
- type: 'text',
131
- text: 'Is there another command you would like to learn more about?',
132
- },
133
- ]);
134
- });
135
- it('should handle execAsync errors', async () => {
136
- const error = new Error('Command not found');
137
- mockExecAsync.mockRejectedValue(error);
138
- await expect(tool.handler({
139
- absoluteCurrentWorkingDirectory: '/test/dir',
140
- command: 'hs init',
141
- })).rejects.toThrow('Command not found');
142
- });
143
- it('should format help text with proper instructions', async () => {
144
- const helpOutput = 'Usage: hs init\nOptions:\n --help Show help';
145
- mockExecAsync.mockResolvedValue({
146
- stdout: helpOutput,
147
- stderr: '',
148
- });
149
- const result = await tool.handler({
150
- absoluteCurrentWorkingDirectory: '/test/dir',
151
- command: 'hs init',
152
- });
153
- expect(result.content[0].text).toContain('Display this help output for the user amd wait for them to acknowledge:');
154
- expect(result.content[0].text).toContain(helpOutput);
155
- expect(result.content[0].text).toContain('Once they are ready, A good command to look at next is hs auth');
156
- });
157
- });
158
- });
@@ -1,187 +0,0 @@
1
- import { UploadProjectTools } from '../UploadProjectTools.js';
2
- import { getAllHsProfiles } from '@hubspot/project-parsing-lib/profiles';
3
- import { getProjectConfig } from '../../../../lib/projects/config.js';
4
- import { runCommandInDir } from '../../../utils/command.js';
5
- import { mcpFeedbackRequest } from '../../../utils/feedbackTracking.js';
6
- import { trackToolUsage } from '../../../utils/toolUsageTracking.js';
7
- vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
8
- vi.mock('@hubspot/project-parsing-lib/profiles');
9
- vi.mock('../../../../lib/projects/config.js');
10
- vi.mock('../../../utils/command', () => ({
11
- runCommandInDir: vi.fn(),
12
- addFlag: vi.fn((command, flagName, value) => {
13
- if (Array.isArray(value)) {
14
- return `${command} --${flagName} ${value.map(item => `"${item}"`).join(' ')}`;
15
- }
16
- return `${command} --${flagName} "${value}"`;
17
- }),
18
- }));
19
- vi.mock('../../../utils/toolUsageTracking');
20
- vi.mock('../../../utils/feedbackTracking');
21
- const mockTrackToolUsage = trackToolUsage;
22
- const mockMcpFeedbackRequest = mcpFeedbackRequest;
23
- const mockRunCommandInDir = runCommandInDir;
24
- const mockGetProjectConfig = getProjectConfig;
25
- const mockGetAllHsProfiles = getAllHsProfiles;
26
- describe('mcp-server/tools/project/UploadProjectTools', () => {
27
- let mockMcpServer;
28
- let tool;
29
- let mockRegisteredTool;
30
- beforeEach(() => {
31
- // @ts-expect-error noy mocking whole server
32
- mockMcpServer = {
33
- registerTool: vi.fn(),
34
- };
35
- mockRegisteredTool = {};
36
- mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
37
- mockMcpFeedbackRequest.mockResolvedValue('');
38
- mockTrackToolUsage.mockResolvedValue(undefined);
39
- mockGetProjectConfig.mockResolvedValue({
40
- projectConfig: {
41
- srcDir: 'src',
42
- name: 'test-project',
43
- platformVersion: '2025.2',
44
- },
45
- projectDir: '/test/project',
46
- });
47
- mockGetAllHsProfiles.mockResolvedValue([]);
48
- tool = new UploadProjectTools(mockMcpServer);
49
- });
50
- describe('register', () => {
51
- it('should register tool with correct parameters', () => {
52
- const result = tool.register();
53
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('upload-project', expect.objectContaining({
54
- title: 'Upload HubSpot Project',
55
- description: expect.stringContaining('Uploads the HubSpot project in current working directory.'),
56
- inputSchema: expect.any(Object),
57
- }), expect.any(Function));
58
- expect(result).toBe(mockRegisteredTool);
59
- });
60
- });
61
- describe('handler', () => {
62
- const input = {
63
- absoluteCurrentWorkingDirectory: '/test/dir',
64
- absoluteProjectPath: '/test/project',
65
- uploadMessage: 'Test upload message',
66
- };
67
- it('should upload project successfully', async () => {
68
- mockRunCommandInDir.mockResolvedValue({
69
- stdout: 'Project uploaded successfully',
70
- stderr: '',
71
- });
72
- const result = await tool.handler(input);
73
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('hs project upload'));
74
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--force-create'));
75
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--message "Test upload message"'));
76
- expect(result).toEqual({
77
- content: [
78
- { type: 'text', text: 'Project uploaded successfully' },
79
- { type: 'text', text: '' },
80
- {
81
- type: 'text',
82
- text: '\nIMPORTANT: If this project contains cards, remember that uploading does NOT make them live automatically. Cards must be manually added to a view in HubSpot to become visible to users.',
83
- },
84
- ],
85
- });
86
- });
87
- it('should handle upload with warnings', async () => {
88
- mockRunCommandInDir.mockResolvedValue({
89
- stdout: 'Project uploaded with warnings',
90
- stderr: 'Warning: some files were ignored',
91
- });
92
- const result = await tool.handler(input);
93
- expect(result.content).toEqual([
94
- { type: 'text', text: 'Project uploaded with warnings' },
95
- { type: 'text', text: 'Warning: some files were ignored' },
96
- {
97
- type: 'text',
98
- text: '\nIMPORTANT: If this project contains cards, remember that uploading does NOT make them live automatically. Cards must be manually added to a view in HubSpot to become visible to users.',
99
- },
100
- ]);
101
- });
102
- it('should handle upload errors', async () => {
103
- const error = new Error('Upload failed');
104
- mockRunCommandInDir.mockRejectedValue(error);
105
- await expect(tool.handler(input)).rejects.toThrow('Upload failed');
106
- });
107
- it('should use force-create and message flags', async () => {
108
- mockRunCommandInDir.mockResolvedValue({
109
- stdout: 'Project created and uploaded',
110
- stderr: '',
111
- });
112
- await tool.handler(input);
113
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('hs project upload'));
114
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--force-create'));
115
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--message "Test upload message"'));
116
- });
117
- it('should use profiles', async () => {
118
- mockRunCommandInDir.mockResolvedValue({
119
- stdout: 'Project created and uploaded',
120
- stderr: '',
121
- });
122
- await tool.handler({
123
- ...input,
124
- profile: 'dev',
125
- });
126
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('hs project upload'));
127
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--force-create'));
128
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--message "Test upload message"'));
129
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', expect.stringContaining('--profile "dev"'));
130
- });
131
- it('should prompt for profile if not specified and the project requires them', async () => {
132
- mockGetAllHsProfiles.mockResolvedValue(['prod', 'dev']);
133
- mockRunCommandInDir.mockResolvedValue({
134
- stdout: 'Project created and uploaded',
135
- stderr: '',
136
- });
137
- const result = await tool.handler(input);
138
- expect(mockRunCommandInDir).not.toHaveBeenCalled();
139
- expect(result.content).toEqual([
140
- {
141
- type: 'text',
142
- text: 'Ask the user which profile they would like to use for the upload.',
143
- },
144
- ]);
145
- });
146
- it('should handle empty stdout and stderr', async () => {
147
- mockRunCommandInDir.mockResolvedValue({
148
- stdout: '',
149
- stderr: '',
150
- });
151
- const result = await tool.handler(input);
152
- expect(result.content).toEqual([
153
- { type: 'text', text: '' },
154
- { type: 'text', text: '' },
155
- {
156
- type: 'text',
157
- text: '\nIMPORTANT: If this project contains cards, remember that uploading does NOT make them live automatically. Cards must be manually added to a view in HubSpot to become visible to users.',
158
- },
159
- ]);
160
- });
161
- it('should work with different project paths', async () => {
162
- mockRunCommandInDir.mockResolvedValue({
163
- stdout: 'Upload complete',
164
- stderr: '',
165
- });
166
- const differentInput = {
167
- absoluteCurrentWorkingDirectory: '/test/dir',
168
- absoluteProjectPath: '/different/path/to/project',
169
- uploadMessage: 'Different test upload message',
170
- };
171
- await tool.handler(differentInput);
172
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/different/path/to/project', expect.stringContaining('hs project upload'));
173
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/different/path/to/project', expect.stringContaining('--force-create'));
174
- expect(mockRunCommandInDir).toHaveBeenCalledWith('/different/path/to/project', expect.stringContaining('--message "Different test upload message"'));
175
- });
176
- it('should handle very long output', async () => {
177
- const longOutput = 'A'.repeat(10000);
178
- mockRunCommandInDir.mockResolvedValue({
179
- stdout: longOutput,
180
- stderr: 'Long stderr output',
181
- });
182
- const result = await tool.handler(input);
183
- expect(result.content[0].text).toBe(longOutput);
184
- expect(result.content[1].text).toBe('Long stderr output');
185
- });
186
- });
187
- });