@hubspot/cli 7.6.0-beta.5 → 7.6.0-beta.7

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 (602) hide show
  1. package/README.md +0 -4
  2. package/api/__tests__/migrate.test.js +27 -29
  3. package/api/migrate.d.ts +7 -0
  4. package/api/migrate.js +22 -22
  5. package/bin/cli.js +92 -97
  6. package/bin/hs +2 -2
  7. package/bin/hscms +2 -2
  8. package/bin/silenceErrors.js +1 -2
  9. package/commands/__tests__/account.test.js +29 -34
  10. package/commands/__tests__/auth.test.js +11 -16
  11. package/commands/__tests__/cms.test.js +15 -20
  12. package/commands/__tests__/config.test.js +14 -19
  13. package/commands/__tests__/create.test.js +10 -15
  14. package/commands/__tests__/customObject.test.js +14 -19
  15. package/commands/__tests__/doctor.test.js +43 -48
  16. package/commands/__tests__/feedback.test.js +7 -45
  17. package/commands/__tests__/fetch.test.js +29 -28
  18. package/commands/__tests__/filemanager.test.js +14 -19
  19. package/commands/__tests__/function.test.js +16 -21
  20. package/commands/__tests__/getStarted.test.js +45 -50
  21. package/commands/__tests__/hubdb.test.js +17 -22
  22. package/commands/__tests__/init.test.js +12 -17
  23. package/commands/__tests__/lint.test.js +13 -18
  24. package/commands/__tests__/list.test.js +18 -23
  25. package/commands/__tests__/logs.test.js +28 -27
  26. package/commands/__tests__/mcp.test.js +14 -19
  27. package/commands/__tests__/mv.test.js +14 -52
  28. package/commands/__tests__/open.test.js +13 -51
  29. package/commands/__tests__/project.test.js +44 -49
  30. package/commands/__tests__/remove.test.js +13 -51
  31. package/commands/__tests__/sandbox.test.js +14 -19
  32. package/commands/__tests__/secret.test.js +16 -21
  33. package/commands/__tests__/testAccount.test.js +18 -21
  34. package/commands/__tests__/theme.test.js +15 -20
  35. package/commands/account/__tests__/auth.test.js +11 -16
  36. package/commands/account/__tests__/clean.test.js +12 -17
  37. package/commands/account/__tests__/createOverride.test.js +10 -15
  38. package/commands/account/__tests__/info.test.js +11 -16
  39. package/commands/account/__tests__/list.test.js +11 -16
  40. package/commands/account/__tests__/remove.test.js +13 -18
  41. package/commands/account/__tests__/removeOverride.js +8 -13
  42. package/commands/account/__tests__/rename.test.js +15 -20
  43. package/commands/account/__tests__/use.test.js +10 -15
  44. package/commands/account/auth.d.ts +1 -1
  45. package/commands/account/auth.js +78 -69
  46. package/commands/account/clean.d.ts +1 -1
  47. package/commands/account/clean.js +55 -60
  48. package/commands/account/createOverride.d.ts +1 -1
  49. package/commands/account/createOverride.js +52 -57
  50. package/commands/account/info.d.ts +1 -1
  51. package/commands/account/info.js +33 -35
  52. package/commands/account/list.d.ts +1 -1
  53. package/commands/account/list.js +43 -45
  54. package/commands/account/remove.d.ts +1 -1
  55. package/commands/account/remove.js +37 -42
  56. package/commands/account/removeOverride.d.ts +1 -1
  57. package/commands/account/removeOverride.js +38 -43
  58. package/commands/account/rename.d.ts +1 -1
  59. package/commands/account/rename.js +18 -20
  60. package/commands/account/use.d.ts +1 -1
  61. package/commands/account/use.js +29 -31
  62. package/commands/account.d.ts +1 -1
  63. package/commands/account.js +23 -28
  64. package/commands/app/__tests__/migrate.test.js +29 -34
  65. package/commands/app/migrate.d.ts +2 -2
  66. package/commands/app/migrate.js +40 -43
  67. package/commands/app/secret/__tests__/add.test.js +6 -11
  68. package/commands/app/secret/__tests__/delete.test.js +6 -11
  69. package/commands/app/secret/__tests__/list.test.js +6 -11
  70. package/commands/app/secret/__tests__/update.test.js +6 -11
  71. package/commands/app/secret/add.d.ts +1 -1
  72. package/commands/app/secret/add.js +28 -30
  73. package/commands/app/secret/delete.d.ts +1 -1
  74. package/commands/app/secret/delete.js +34 -36
  75. package/commands/app/secret/list.d.ts +1 -1
  76. package/commands/app/secret/list.js +25 -27
  77. package/commands/app/secret/update.d.ts +1 -1
  78. package/commands/app/secret/update.js +32 -34
  79. package/commands/app/secret.d.ts +1 -1
  80. package/commands/app/secret.js +12 -17
  81. package/commands/app.d.ts +1 -1
  82. package/commands/app.js +6 -11
  83. package/commands/auth.d.ts +1 -1
  84. package/commands/auth.js +70 -72
  85. package/commands/cms/convertFields.d.ts +1 -1
  86. package/commands/cms/convertFields.js +34 -39
  87. package/commands/cms/getReactModule.d.ts +1 -1
  88. package/commands/cms/getReactModule.js +32 -37
  89. package/commands/cms/lighthouseScore.d.ts +1 -1
  90. package/commands/cms/lighthouseScore.js +67 -72
  91. package/commands/cms.d.ts +1 -1
  92. package/commands/cms.js +11 -16
  93. package/commands/completion.d.ts +1 -1
  94. package/commands/completion.js +10 -15
  95. package/commands/config/migrate.d.ts +1 -1
  96. package/commands/config/migrate.js +27 -32
  97. package/commands/config/set.d.ts +2 -1
  98. package/commands/config/set.js +40 -32
  99. package/commands/config.d.ts +1 -1
  100. package/commands/config.js +8 -13
  101. package/commands/create/api-sample.d.ts +1 -1
  102. package/commands/create/api-sample.js +28 -33
  103. package/commands/create/app.d.ts +1 -1
  104. package/commands/create/app.js +3 -5
  105. package/commands/create/function.d.ts +1 -1
  106. package/commands/create/function.js +9 -11
  107. package/commands/create/index.d.ts +1 -1
  108. package/commands/create/index.js +19 -24
  109. package/commands/create/module.d.ts +1 -1
  110. package/commands/create/module.js +12 -14
  111. package/commands/create/react-app.d.ts +1 -1
  112. package/commands/create/react-app.js +3 -5
  113. package/commands/create/template.d.ts +1 -1
  114. package/commands/create/template.js +12 -14
  115. package/commands/create/vue-app.d.ts +1 -1
  116. package/commands/create/vue-app.js +3 -5
  117. package/commands/create/webpack-serverless.d.ts +1 -1
  118. package/commands/create/webpack-serverless.js +3 -5
  119. package/commands/create/website-theme.d.ts +1 -1
  120. package/commands/create/website-theme.js +5 -7
  121. package/commands/create.d.ts +2 -2
  122. package/commands/create.js +30 -35
  123. package/commands/customObject/__tests__/create.test.js +13 -18
  124. package/commands/customObject/__tests__/schema.test.js +18 -23
  125. package/commands/customObject/create.d.ts +1 -1
  126. package/commands/customObject/create.js +28 -30
  127. package/commands/customObject/schema/__tests__/create.test.js +13 -18
  128. package/commands/customObject/schema/__tests__/delete.test.js +13 -18
  129. package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
  130. package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
  131. package/commands/customObject/schema/__tests__/list.test.js +13 -18
  132. package/commands/customObject/schema/__tests__/update.test.js +13 -18
  133. package/commands/customObject/schema/create.d.ts +1 -1
  134. package/commands/customObject/schema/create.js +28 -30
  135. package/commands/customObject/schema/delete.d.ts +1 -1
  136. package/commands/customObject/schema/delete.js +24 -26
  137. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  138. package/commands/customObject/schema/fetch-all.js +22 -24
  139. package/commands/customObject/schema/fetch.d.ts +1 -1
  140. package/commands/customObject/schema/fetch.js +24 -26
  141. package/commands/customObject/schema/list.d.ts +1 -1
  142. package/commands/customObject/schema/list.js +13 -15
  143. package/commands/customObject/schema/update.d.ts +1 -1
  144. package/commands/customObject/schema/update.js +32 -34
  145. package/commands/customObject/schema.d.ts +1 -1
  146. package/commands/customObject/schema.js +17 -22
  147. package/commands/customObject.d.ts +1 -1
  148. package/commands/customObject.js +13 -18
  149. package/commands/doctor.d.ts +1 -1
  150. package/commands/doctor.js +28 -33
  151. package/commands/feedback.d.ts +1 -1
  152. package/commands/feedback.js +19 -24
  153. package/commands/fetch.d.ts +1 -1
  154. package/commands/fetch.js +28 -30
  155. package/commands/filemanager/__tests__/fetch.test.js +17 -22
  156. package/commands/filemanager/__tests__/upload.test.js +15 -20
  157. package/commands/filemanager/fetch.d.ts +1 -1
  158. package/commands/filemanager/fetch.js +23 -25
  159. package/commands/filemanager/upload.d.ts +1 -1
  160. package/commands/filemanager/upload.js +39 -44
  161. package/commands/filemanager.d.ts +1 -1
  162. package/commands/filemanager.js +8 -13
  163. package/commands/function/deploy.d.ts +1 -1
  164. package/commands/function/deploy.js +35 -40
  165. package/commands/function/list.d.ts +1 -1
  166. package/commands/function/list.js +24 -29
  167. package/commands/function/server.d.ts +1 -1
  168. package/commands/function/server.js +15 -17
  169. package/commands/function.d.ts +1 -1
  170. package/commands/function.js +12 -18
  171. package/commands/getStarted.d.ts +1 -1
  172. package/commands/getStarted.js +119 -125
  173. package/commands/hubdb/__tests__/clear.test.js +13 -18
  174. package/commands/hubdb/__tests__/create.test.js +13 -18
  175. package/commands/hubdb/__tests__/delete.test.js +13 -18
  176. package/commands/hubdb/__tests__/fetch.test.js +13 -18
  177. package/commands/hubdb/__tests__/list.test.js +23 -28
  178. package/commands/hubdb/clear.d.ts +1 -1
  179. package/commands/hubdb/clear.js +20 -22
  180. package/commands/hubdb/create.d.ts +1 -1
  181. package/commands/hubdb/create.js +30 -35
  182. package/commands/hubdb/delete.d.ts +1 -1
  183. package/commands/hubdb/delete.js +24 -26
  184. package/commands/hubdb/fetch.d.ts +1 -1
  185. package/commands/hubdb/fetch.js +17 -19
  186. package/commands/hubdb/list.d.ts +1 -1
  187. package/commands/hubdb/list.js +33 -35
  188. package/commands/hubdb.d.ts +1 -1
  189. package/commands/hubdb.js +18 -24
  190. package/commands/init.d.ts +1 -1
  191. package/commands/init.js +83 -88
  192. package/commands/lint.d.ts +1 -1
  193. package/commands/lint.js +24 -26
  194. package/commands/list.d.ts +1 -1
  195. package/commands/list.js +32 -37
  196. package/commands/logs.d.ts +1 -1
  197. package/commands/logs.js +35 -37
  198. package/commands/mcp/__tests__/setup.test.js +7 -12
  199. package/commands/mcp/__tests__/start.test.js +7 -12
  200. package/commands/mcp/setup.d.ts +1 -1
  201. package/commands/mcp/setup.js +17 -19
  202. package/commands/mcp/start.d.ts +1 -1
  203. package/commands/mcp/start.js +32 -34
  204. package/commands/mcp.d.ts +1 -1
  205. package/commands/mcp.js +7 -12
  206. package/commands/module/marketplace-validate.d.ts +1 -1
  207. package/commands/module/marketplace-validate.js +21 -26
  208. package/commands/module.d.ts +1 -1
  209. package/commands/module.js +7 -13
  210. package/commands/mv.d.ts +1 -1
  211. package/commands/mv.js +20 -22
  212. package/commands/open.d.ts +1 -1
  213. package/commands/open.js +19 -21
  214. package/commands/project/__tests__/add.test.js +10 -15
  215. package/commands/project/__tests__/create.test.js +14 -19
  216. package/commands/project/__tests__/deploy.test.js +96 -134
  217. package/commands/project/__tests__/devUnifiedFlow.test.js +130 -159
  218. package/commands/project/__tests__/download.test.js +14 -19
  219. package/commands/project/__tests__/installDeps.test.js +32 -70
  220. package/commands/project/__tests__/listBuilds.test.js +14 -19
  221. package/commands/project/__tests__/logs.test.js +56 -94
  222. package/commands/project/__tests__/migrate.test.js +25 -30
  223. package/commands/project/__tests__/migrateApp.test.js +17 -22
  224. package/commands/project/__tests__/open.test.js +16 -21
  225. package/commands/project/__tests__/profile.test.js +14 -19
  226. package/commands/project/__tests__/upload.test.js +18 -23
  227. package/commands/project/__tests__/watch.test.js +14 -19
  228. package/commands/project/add.d.ts +1 -1
  229. package/commands/project/add.js +34 -36
  230. package/commands/project/cloneApp.d.ts +1 -1
  231. package/commands/project/cloneApp.js +67 -72
  232. package/commands/project/create.d.ts +2 -2
  233. package/commands/project/create.js +63 -68
  234. package/commands/project/deploy.d.ts +1 -1
  235. package/commands/project/deploy.js +67 -69
  236. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  237. package/commands/project/dev/deprecatedFlow.js +52 -58
  238. package/commands/project/dev/index.d.ts +1 -1
  239. package/commands/project/dev/index.js +44 -47
  240. package/commands/project/dev/unifiedFlow.d.ts +4 -4
  241. package/commands/project/dev/unifiedFlow.js +64 -75
  242. package/commands/project/download.d.ts +1 -1
  243. package/commands/project/download.js +35 -40
  244. package/commands/project/installDeps.d.ts +1 -1
  245. package/commands/project/installDeps.js +29 -34
  246. package/commands/project/listBuilds.d.ts +1 -1
  247. package/commands/project/listBuilds.js +40 -45
  248. package/commands/project/logs.d.ts +1 -1
  249. package/commands/project/logs.js +52 -54
  250. package/commands/project/migrate.d.ts +1 -1
  251. package/commands/project/migrate.js +24 -26
  252. package/commands/project/migrateApp.d.ts +2 -2
  253. package/commands/project/migrateApp.js +18 -20
  254. package/commands/project/open.d.ts +1 -1
  255. package/commands/project/open.js +25 -30
  256. package/commands/project/profile/add.d.ts +1 -1
  257. package/commands/project/profile/add.js +68 -73
  258. package/commands/project/profile/delete.d.ts +1 -1
  259. package/commands/project/profile/delete.js +68 -61
  260. package/commands/project/profile.d.ts +1 -1
  261. package/commands/project/profile.js +9 -14
  262. package/commands/project/upload.d.ts +1 -1
  263. package/commands/project/upload.js +50 -55
  264. package/commands/project/validate.d.ts +1 -1
  265. package/commands/project/validate.js +36 -40
  266. package/commands/project/watch.d.ts +1 -1
  267. package/commands/project/watch.js +59 -61
  268. package/commands/project.d.ts +1 -1
  269. package/commands/project.js +38 -43
  270. package/commands/remove.d.ts +1 -1
  271. package/commands/remove.js +15 -17
  272. package/commands/sandbox/__tests__/create.test.js +222 -20
  273. package/commands/sandbox/__tests__/delete.test.js +15 -20
  274. package/commands/sandbox/create.d.ts +2 -2
  275. package/commands/sandbox/create.js +92 -79
  276. package/commands/sandbox/delete.d.ts +1 -1
  277. package/commands/sandbox/delete.js +94 -96
  278. package/commands/sandbox.d.ts +1 -1
  279. package/commands/sandbox.js +9 -14
  280. package/commands/secret/__tests__/addSecret.test.js +13 -18
  281. package/commands/secret/__tests__/deleteSecret.test.js +13 -18
  282. package/commands/secret/__tests__/listSecret.test.js +13 -18
  283. package/commands/secret/__tests__/updateSecret.test.js +13 -18
  284. package/commands/secret/addSecret.d.ts +1 -1
  285. package/commands/secret/addSecret.js +26 -28
  286. package/commands/secret/deleteSecret.d.ts +1 -1
  287. package/commands/secret/deleteSecret.js +27 -29
  288. package/commands/secret/listSecret.d.ts +1 -1
  289. package/commands/secret/listSecret.js +19 -21
  290. package/commands/secret/updateSecret.d.ts +1 -1
  291. package/commands/secret/updateSecret.js +25 -27
  292. package/commands/secret.d.ts +1 -1
  293. package/commands/secret.js +13 -18
  294. package/commands/testAccount/__tests__/create.test.js +17 -22
  295. package/commands/testAccount/__tests__/createConfig.test.js +6 -11
  296. package/commands/testAccount/__tests__/delete.test.js +15 -20
  297. package/commands/testAccount/__tests__/importData.test.js +93 -0
  298. package/commands/testAccount/create.d.ts +1 -1
  299. package/commands/testAccount/create.js +63 -58
  300. package/commands/testAccount/createConfig.d.ts +1 -1
  301. package/commands/testAccount/createConfig.js +36 -41
  302. package/commands/testAccount/delete.d.ts +1 -1
  303. package/commands/testAccount/delete.js +17 -19
  304. package/commands/testAccount/importData.d.ts +9 -0
  305. package/commands/testAccount/importData.js +61 -0
  306. package/commands/testAccount.d.ts +1 -1
  307. package/commands/testAccount.js +12 -15
  308. package/commands/theme/__tests__/generate-selectors.test.js +7 -12
  309. package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
  310. package/commands/theme/__tests__/preview.test.js +12 -17
  311. package/commands/theme/generate-selectors.d.ts +1 -1
  312. package/commands/theme/generate-selectors.js +23 -28
  313. package/commands/theme/marketplace-validate.d.ts +1 -1
  314. package/commands/theme/marketplace-validate.js +19 -24
  315. package/commands/theme/preview.d.ts +1 -1
  316. package/commands/theme/preview.js +60 -65
  317. package/commands/theme.d.ts +1 -1
  318. package/commands/theme.js +11 -16
  319. package/commands/upload.d.ts +1 -1
  320. package/commands/upload.js +77 -82
  321. package/commands/watch.d.ts +1 -1
  322. package/commands/watch.js +45 -51
  323. package/lang/en.d.ts +69 -9
  324. package/lang/en.js +442 -385
  325. package/lang/en.lyaml +4 -2
  326. package/lib/__tests__/accountTypes.test.js +20 -22
  327. package/lib/__tests__/buildAccount.test.js +88 -65
  328. package/lib/__tests__/commonOpts.test.js +20 -22
  329. package/lib/__tests__/dependencyManagement.test.js +46 -51
  330. package/lib/__tests__/developerTestAccounts.test.js +27 -62
  331. package/lib/__tests__/hasFeature.test.js +6 -8
  332. package/lib/__tests__/importData.test.js +89 -0
  333. package/lib/__tests__/npm.test.js +15 -20
  334. package/lib/__tests__/oauth.test.js +23 -28
  335. package/lib/__tests__/parsing.test.js +18 -20
  336. package/lib/__tests__/polling.test.js +24 -26
  337. package/lib/__tests__/process.test.js +14 -19
  338. package/lib/__tests__/projectProfiles.test.js +34 -39
  339. package/lib/__tests__/sandboxSync.test.js +30 -35
  340. package/lib/__tests__/sandboxes.test.js +29 -31
  341. package/lib/__tests__/serverlessLogs.test.js +8 -13
  342. package/lib/__tests__/usageTracking.test.js +33 -34
  343. package/lib/__tests__/validation.test.js +18 -20
  344. package/lib/__tests__/yargsUtils.test.js +17 -41
  345. package/lib/accountTypes.js +23 -34
  346. package/lib/app/__tests__/migrate.test.js +120 -112
  347. package/lib/app/__tests__/migrate_legacy.test.js +29 -31
  348. package/lib/app/migrate.d.ts +18 -4
  349. package/lib/app/migrate.js +151 -148
  350. package/lib/app/migrate_legacy.d.ts +1 -1
  351. package/lib/app/migrate_legacy.js +72 -78
  352. package/lib/app/urls.js +5 -9
  353. package/lib/buildAccount.d.ts +5 -2
  354. package/lib/buildAccount.js +126 -80
  355. package/lib/commonOpts.d.ts +1 -1
  356. package/lib/commonOpts.js +67 -59
  357. package/lib/configMigrate.js +34 -38
  358. package/lib/configOptions.d.ts +5 -0
  359. package/lib/configOptions.js +44 -40
  360. package/lib/constants.d.ts +9 -0
  361. package/lib/constants.js +40 -34
  362. package/lib/customObject.js +2 -6
  363. package/lib/dependencyManagement.js +37 -45
  364. package/lib/developerTestAccounts.d.ts +1 -1
  365. package/lib/developerTestAccounts.js +34 -39
  366. package/lib/doctor/Diagnosis.d.ts +1 -1
  367. package/lib/doctor/Diagnosis.js +25 -29
  368. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  369. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  370. package/lib/doctor/Doctor.d.ts +1 -1
  371. package/lib/doctor/Doctor.js +94 -101
  372. package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
  373. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
  374. package/lib/doctor/__tests__/Doctor.test.js +24 -26
  375. package/lib/enums/exitCodes.js +1 -4
  376. package/lib/errorHandlers/index.js +33 -44
  377. package/lib/errorHandlers/suppressError.d.ts +1 -1
  378. package/lib/errorHandlers/suppressError.js +28 -31
  379. package/lib/errors/ProjectValidationError.d.ts +4 -0
  380. package/lib/errors/ProjectValidationError.js +9 -0
  381. package/lib/filesystem.js +8 -15
  382. package/lib/generateSelectors.js +18 -29
  383. package/lib/hasFeature.d.ts +2 -1
  384. package/lib/hasFeature.js +10 -6
  385. package/lib/importData.d.ts +3 -0
  386. package/lib/importData.js +50 -0
  387. package/lib/interpolation.js +11 -18
  388. package/lib/lang.d.ts +1 -1
  389. package/lib/lang.js +22 -27
  390. package/lib/links.js +16 -24
  391. package/lib/marketplaceValidate.js +29 -39
  392. package/lib/mcp/setup.d.ts +4 -0
  393. package/lib/mcp/setup.js +106 -82
  394. package/lib/middleware/__test__/configMiddleware.test.js +20 -55
  395. package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
  396. package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
  397. package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
  398. package/lib/middleware/__test__/utils.test.js +9 -11
  399. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
  400. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  401. package/lib/middleware/configMiddleware.js +36 -42
  402. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  403. package/lib/middleware/gitMiddleware.js +5 -8
  404. package/lib/middleware/notificationsMiddleware.js +16 -23
  405. package/lib/middleware/requestMiddleware.js +4 -10
  406. package/lib/middleware/utils.js +1 -4
  407. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  408. package/lib/npm.js +14 -23
  409. package/lib/oauth.js +29 -35
  410. package/lib/parsing.js +3 -6
  411. package/lib/polling.js +11 -15
  412. package/lib/process.js +11 -19
  413. package/lib/projectProfiles.d.ts +2 -2
  414. package/lib/projectProfiles.js +32 -42
  415. package/lib/projects/ProjectLogsManager.js +18 -21
  416. package/lib/projects/__tests__/AppDevModeInterface.test.js +142 -148
  417. package/lib/projects/__tests__/LocalDevProcess.test.js +84 -144
  418. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +202 -38
  419. package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
  420. package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
  421. package/lib/projects/__tests__/components.test.js +9 -14
  422. package/lib/projects/__tests__/localDevHelpers.test.d.ts +1 -0
  423. package/lib/projects/__tests__/localDevHelpers.test.js +118 -0
  424. package/lib/projects/__tests__/projects.test.js +35 -40
  425. package/lib/projects/__tests__/structure.test.js +43 -81
  426. package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
  427. package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
  428. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  429. package/lib/projects/add/legacyAddComponent.js +24 -30
  430. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  431. package/lib/projects/add/v3AddComponent.js +37 -42
  432. package/lib/projects/buildAndDeploy.d.ts +1 -1
  433. package/lib/projects/buildAndDeploy.js +88 -97
  434. package/lib/projects/components.js +19 -25
  435. package/lib/projects/config.d.ts +1 -1
  436. package/lib/projects/config.js +32 -41
  437. package/lib/projects/create/__tests__/legacy.test.js +22 -57
  438. package/lib/projects/create/__tests__/v3.test.js +5 -7
  439. package/lib/projects/create/index.d.ts +3 -3
  440. package/lib/projects/create/index.js +19 -22
  441. package/lib/projects/create/legacy.d.ts +1 -1
  442. package/lib/projects/create/legacy.js +25 -31
  443. package/lib/projects/create/v3.d.ts +3 -5
  444. package/lib/projects/create/v3.js +47 -59
  445. package/lib/projects/ensureProjectExists.js +31 -37
  446. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  447. package/lib/projects/localDev/AppDevModeInterface.js +58 -60
  448. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  449. package/lib/projects/localDev/DevServerManager.js +22 -24
  450. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  451. package/lib/projects/localDev/DevServerManagerV2.js +15 -20
  452. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -5
  453. package/lib/projects/localDev/LocalDevLogger.js +66 -79
  454. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  455. package/lib/projects/localDev/LocalDevManager.js +106 -111
  456. package/lib/projects/localDev/LocalDevProcess.d.ts +7 -6
  457. package/lib/projects/localDev/LocalDevProcess.js +40 -53
  458. package/lib/projects/localDev/LocalDevState.d.ts +10 -10
  459. package/lib/projects/localDev/LocalDevState.js +23 -19
  460. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  461. package/lib/projects/localDev/LocalDevWatcher.js +6 -11
  462. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -3
  463. package/lib/projects/localDev/LocalDevWebsocketServer.js +78 -55
  464. package/lib/projects/localDev/helpers.d.ts +10 -3
  465. package/lib/projects/localDev/helpers.js +211 -174
  466. package/lib/projects/structure.d.ts +3 -3
  467. package/lib/projects/structure.js +32 -78
  468. package/lib/projects/ui.js +10 -13
  469. package/lib/projects/upload.d.ts +1 -1
  470. package/lib/projects/upload.js +57 -73
  471. package/lib/projects/urls.d.ts +1 -1
  472. package/lib/projects/urls.js +15 -25
  473. package/lib/projects/watch.d.ts +1 -1
  474. package/lib/projects/watch.js +48 -54
  475. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
  476. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
  477. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  478. package/lib/prompts/accountNamePrompt.js +26 -31
  479. package/lib/prompts/accountsPrompt.js +12 -15
  480. package/lib/prompts/cmsFieldPrompt.js +13 -19
  481. package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
  482. package/lib/prompts/confirmImportDataPrompt.js +12 -0
  483. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  484. package/lib/prompts/createApiSamplePrompt.js +9 -12
  485. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
  486. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +23 -26
  487. package/lib/prompts/createFunctionPrompt.js +17 -20
  488. package/lib/prompts/createModulePrompt.js +12 -15
  489. package/lib/prompts/createTemplatePrompt.js +5 -8
  490. package/lib/prompts/downloadProjectPrompt.js +17 -20
  491. package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
  492. package/lib/prompts/importDataFilePathPrompt.js +24 -0
  493. package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
  494. package/lib/prompts/importDataTestAccountSelectPrompt.js +29 -0
  495. package/lib/prompts/installAppPrompt.js +19 -26
  496. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  497. package/lib/prompts/personalAccessKeyPrompt.js +40 -47
  498. package/lib/prompts/previewPrompt.js +15 -22
  499. package/lib/prompts/projectAddPrompt.d.ts +1 -1
  500. package/lib/prompts/projectAddPrompt.js +14 -18
  501. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  502. package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
  503. package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
  504. package/lib/prompts/projectNameAndDestPrompt.js +22 -29
  505. package/lib/prompts/projectNamePrompt.js +11 -14
  506. package/lib/prompts/projectsLogsPrompt.js +5 -8
  507. package/lib/prompts/promptUtils.d.ts +1 -1
  508. package/lib/prompts/promptUtils.js +17 -24
  509. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  510. package/lib/prompts/sandboxesPrompt.js +26 -30
  511. package/lib/prompts/secretPrompt.js +10 -15
  512. package/lib/prompts/selectAppPrompt.js +11 -14
  513. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  514. package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
  515. package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
  516. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  517. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  518. package/lib/prompts/uploadPrompt.js +11 -17
  519. package/lib/sandboxSync.d.ts +1 -1
  520. package/lib/sandboxSync.js +58 -65
  521. package/lib/sandboxes.d.ts +5 -1
  522. package/lib/sandboxes.js +72 -76
  523. package/lib/schema.js +13 -20
  524. package/lib/serverlessLogs.js +45 -52
  525. package/lib/testUtils.js +4 -8
  526. package/lib/ui/SpinniesManager.d.ts +1 -1
  527. package/lib/ui/SpinniesManager.js +29 -34
  528. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +1 -0
  529. package/lib/ui/__tests__/removeAnsiCodes.test.js +84 -0
  530. package/lib/ui/boxen.js +11 -14
  531. package/lib/ui/git.js +14 -20
  532. package/lib/ui/index.d.ts +6 -0
  533. package/lib/ui/index.js +56 -76
  534. package/lib/ui/logger.js +10 -13
  535. package/lib/ui/removeAnsiCodes.d.ts +1 -0
  536. package/lib/ui/removeAnsiCodes.js +4 -0
  537. package/lib/ui/serverlessFunctionLogs.js +14 -20
  538. package/lib/ui/spinniesUtils.js +24 -39
  539. package/lib/ui/supportHyperlinks.js +3 -6
  540. package/lib/ui/supportsColor.js +11 -17
  541. package/lib/ui/table.js +6 -13
  542. package/lib/upload.js +15 -21
  543. package/lib/usageTracking.js +35 -44
  544. package/lib/utils/hasFlag.js +2 -8
  545. package/lib/validation.js +48 -87
  546. package/lib/yargsUtils.d.ts +2 -1
  547. package/lib/yargsUtils.js +19 -16
  548. package/mcp-server/server.js +6 -8
  549. package/mcp-server/tools/index.js +15 -16
  550. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  551. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  552. package/mcp-server/tools/project/CreateProjectTool.d.ts +4 -4
  553. package/mcp-server/tools/project/CreateProjectTool.js +40 -54
  554. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  555. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  556. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  557. package/mcp-server/tools/project/GetConfigValuesTool.js +51 -0
  558. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  559. package/mcp-server/tools/project/GuidedWalkthroughTool.js +21 -25
  560. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  561. package/mcp-server/tools/project/UploadProjectTools.js +12 -19
  562. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  563. package/mcp-server/tools/project/ValidateProjectTool.js +13 -17
  564. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  565. package/mcp-server/tools/project/__tests__/{AddFeatureToProject.test.js → AddFeatureToProjectTool.test.js} +15 -17
  566. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +12 -15
  567. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  568. package/mcp-server/tools/project/__tests__/{DeployProject.test.js → DeployProjectTool.test.js} +6 -8
  569. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  570. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  571. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
  572. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
  573. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
  574. package/mcp-server/tools/project/constants.d.ts +1 -0
  575. package/mcp-server/tools/project/constants.js +14 -9
  576. package/mcp-server/types.js +1 -5
  577. package/mcp-server/utils/__tests__/command.test.js +9 -11
  578. package/mcp-server/utils/__tests__/project.test.js +12 -17
  579. package/mcp-server/utils/command.d.ts +1 -1
  580. package/mcp-server/utils/command.js +4 -11
  581. package/mcp-server/utils/content.d.ts +1 -1
  582. package/mcp-server/utils/content.js +2 -6
  583. package/mcp-server/utils/project.js +8 -14
  584. package/mcp-server/utils/toolUsageTracking.js +11 -14
  585. package/package.json +21 -14
  586. package/types/Cms.d.ts +1 -1
  587. package/types/Cms.js +1 -2
  588. package/types/LocalDev.d.ts +4 -7
  589. package/types/LocalDev.js +1 -2
  590. package/types/ProjectComponents.d.ts +2 -2
  591. package/types/ProjectComponents.js +1 -2
  592. package/types/Projects.d.ts +1 -1
  593. package/types/Projects.js +2 -5
  594. package/types/Prompts.js +1 -2
  595. package/types/Sandboxes.js +1 -2
  596. package/types/Yargs.js +1 -2
  597. package/ui/index.d.ts +1 -0
  598. package/ui/index.js +6 -0
  599. package/mcp-server/tools/project/AddFeatureToProject.js +0 -88
  600. package/mcp-server/tools/project/DeployProject.js +0 -53
  601. /package/{mcp-server/tools/project/__tests__/AddFeatureToProject.test.d.ts → commands/testAccount/__tests__/importData.test.d.ts} +0 -0
  602. /package/{mcp-server/tools/project/__tests__/DeployProject.test.d.ts → lib/__tests__/importData.test.d.ts} +0 -0
@@ -1,16 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const AddFeatureToProject_1 = require("../AddFeatureToProject");
4
- const project_1 = require("../../../utils/project");
5
- const command_1 = require("../../../utils/command");
6
- const constants_1 = require("../../../../lib/constants");
1
+ import { AddFeatureToProjectTool, } from '../AddFeatureToProjectTool.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
3
+ import { addFlag } from '../../../utils/command.js';
4
+ import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, } from '../../../../lib/constants.js';
7
5
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
8
6
  vi.mock('../../../utils/project');
9
7
  vi.mock('../../../utils/command');
10
8
  vi.mock('../../../../lib/constants');
11
9
  vi.mock('../../../utils/toolUsageTracking');
12
- const mockRunCommandInDir = project_1.runCommandInDir;
13
- const mockAddFlag = command_1.addFlag;
10
+ const mockRunCommandInDir = runCommandInDir;
11
+ const mockAddFlag = addFlag;
14
12
  describe('mcp-server/tools/project/AddFeatureToProject', () => {
15
13
  let mockMcpServer;
16
14
  let tool;
@@ -23,18 +21,18 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
23
21
  };
24
22
  mockRegisteredTool = {};
25
23
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
26
- tool = new AddFeatureToProject_1.AddFeatureToProject(mockMcpServer);
24
+ tool = new AddFeatureToProjectTool(mockMcpServer);
27
25
  // Mock addFlag to simulate command building
28
26
  mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
29
27
  });
30
28
  describe('register', () => {
31
29
  it('should register tool with correct parameters', () => {
32
30
  const result = tool.register();
33
- expect(mockMcpServer.registerTool).toHaveBeenCalledWith('add-feature-to-hubspot-project', {
31
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('add-feature-to-hubspot-project', expect.objectContaining({
34
32
  title: 'Add feature to HubSpot Project',
35
- description: 'Adds a feature to an existing HubSpot project',
33
+ description: expect.stringContaining('Adds a feature to an existing HubSpot project'),
36
34
  inputSchema: expect.any(Object),
37
- }, tool.handler);
35
+ }), tool.handler);
38
36
  expect(result).toBe(mockRegisteredTool);
39
37
  });
40
38
  });
@@ -94,7 +92,7 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
94
92
  const input = {
95
93
  ...baseInput,
96
94
  addApp: true,
97
- distribution: constants_1.APP_DISTRIBUTION_TYPES.PRIVATE,
95
+ distribution: APP_DISTRIBUTION_TYPES.PRIVATE,
98
96
  };
99
97
  const result = await tool.handler(input);
100
98
  expect(result.content).toEqual([
@@ -112,13 +110,13 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
112
110
  const input = {
113
111
  ...baseInput,
114
112
  addApp: true,
115
- distribution: constants_1.APP_DISTRIBUTION_TYPES.MARKETPLACE,
116
- auth: constants_1.APP_AUTH_TYPES.OAUTH,
113
+ distribution: APP_DISTRIBUTION_TYPES.MARKETPLACE,
114
+ auth: APP_AUTH_TYPES.OAUTH,
117
115
  features: ['webhooks'],
118
116
  };
119
117
  await tool.handler(input);
120
- expect(mockAddFlag).toHaveBeenCalledWith('hs project add', 'distribution', constants_1.APP_DISTRIBUTION_TYPES.MARKETPLACE);
121
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'auth', constants_1.APP_AUTH_TYPES.OAUTH);
118
+ expect(mockAddFlag).toHaveBeenCalledWith('hs project add', 'distribution', APP_DISTRIBUTION_TYPES.MARKETPLACE);
119
+ expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'auth', APP_AUTH_TYPES.OAUTH);
122
120
  expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'features', [
123
121
  'webhooks',
124
122
  ]);
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const CreateProjectTool_1 = require("../CreateProjectTool");
4
- const project_1 = require("../../../utils/project");
5
- const command_1 = require("../../../utils/command");
6
- const constants_1 = require("../../../../lib/constants");
7
- const v3_1 = require("../../../../lib/projects/create/v3");
1
+ import { CreateProjectTool, } from '../CreateProjectTool.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
3
+ import { addFlag } from '../../../utils/command.js';
4
+ import { APP_DISTRIBUTION_TYPES, EMPTY_PROJECT, PROJECT_WITH_APP, } from '../../../../lib/constants.js';
8
5
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
9
6
  vi.mock('../../../utils/project');
10
7
  vi.mock('../../../utils/command');
11
8
  vi.mock('../../../../lib/constants');
12
9
  vi.mock('../../../../lib/projects/create/v3');
13
10
  vi.mock('../../../utils/toolUsageTracking');
14
- const mockRunCommandInDir = project_1.runCommandInDir;
15
- const mockAddFlag = command_1.addFlag;
11
+ const mockRunCommandInDir = runCommandInDir;
12
+ const mockAddFlag = addFlag;
16
13
  describe('mcp-server/tools/project/CreateProjectTool', () => {
17
14
  let mockMcpServer;
18
15
  let tool;
@@ -25,7 +22,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
25
22
  };
26
23
  mockRegisteredTool = {};
27
24
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
28
- tool = new CreateProjectTool_1.CreateProjectTool(mockMcpServer);
25
+ tool = new CreateProjectTool(mockMcpServer);
29
26
  // Mock addFlag to simulate command building
30
27
  mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
31
28
  });
@@ -45,7 +42,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
45
42
  absoluteCurrentWorkingDirectory: '/test/workspace',
46
43
  name: 'test-project',
47
44
  destination: './test-dest',
48
- projectBase: v3_1.EMPTY_PROJECT,
45
+ projectBase: EMPTY_PROJECT,
49
46
  };
50
47
  it('should handle successful command execution', async () => {
51
48
  mockRunCommandInDir.mockResolvedValue({
@@ -56,7 +53,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
56
53
  expect(mockAddFlag).toHaveBeenCalledWith('hs project create', 'platform-version', '2025.2');
57
54
  expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'name', 'test-project');
58
55
  expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'dest', './test-dest');
59
- expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'project-base', v3_1.EMPTY_PROJECT);
56
+ expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'project-base', EMPTY_PROJECT);
60
57
  expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/workspace', expect.any(String));
61
58
  expect(result).toEqual({
62
59
  content: [
@@ -76,7 +73,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
76
73
  it('should prompt for distribution and auth when creating app project without both', async () => {
77
74
  const input = {
78
75
  ...baseInput,
79
- projectBase: v3_1.PROJECT_WITH_APP,
76
+ projectBase: PROJECT_WITH_APP,
80
77
  };
81
78
  const result = await tool.handler(input);
82
79
  expect(result.content).toEqual([
@@ -93,8 +90,8 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
93
90
  it('should prompt for auth when creating app project without auth', async () => {
94
91
  const input = {
95
92
  ...baseInput,
96
- projectBase: v3_1.PROJECT_WITH_APP,
97
- distribution: constants_1.APP_DISTRIBUTION_TYPES.PRIVATE,
93
+ projectBase: PROJECT_WITH_APP,
94
+ distribution: APP_DISTRIBUTION_TYPES.PRIVATE,
98
95
  };
99
96
  const result = await tool.handler(input);
100
97
  expect(result.content).toEqual([
@@ -1,14 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const DeployProject_1 = require("../DeployProject");
4
- const project_1 = require("../../../utils/project");
5
- const command_1 = require("../../../utils/command");
1
+ import { DeployProjectTool } from '../DeployProjectTool.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
3
+ import { addFlag } from '../../../utils/command.js';
6
4
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
7
5
  vi.mock('../../../utils/project');
8
6
  vi.mock('../../../utils/command');
9
7
  vi.mock('../../../utils/toolUsageTracking');
10
- const mockRunCommandInDir = project_1.runCommandInDir;
11
- const mockAddFlag = command_1.addFlag;
8
+ const mockRunCommandInDir = runCommandInDir;
9
+ const mockAddFlag = addFlag;
12
10
  describe('mcp-server/tools/project/DeployProject', () => {
13
11
  let mockMcpServer;
14
12
  let tool;
@@ -21,7 +19,7 @@ describe('mcp-server/tools/project/DeployProject', () => {
21
19
  };
22
20
  mockRegisteredTool = {};
23
21
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
24
- tool = new DeployProject_1.DeployProject(mockMcpServer);
22
+ tool = new DeployProjectTool(mockMcpServer);
25
23
  // Mock addFlag to simulate command building
26
24
  mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
27
25
  });
@@ -0,0 +1,198 @@
1
+ import { GetConfigValuesTool } from '../GetConfigValuesTool.js';
2
+ import { getIntermediateRepresentationSchema, mapToInternalType, } from '@hubspot/project-parsing-lib';
3
+ import { getAccountId } from '@hubspot/local-dev-lib/config';
4
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
5
+ vi.mock('@hubspot/project-parsing-lib');
6
+ vi.mock('@hubspot/local-dev-lib/config');
7
+ vi.mock('../../../utils/toolUsageTracking');
8
+ const mockGetIntermediateRepresentationSchema = getIntermediateRepresentationSchema;
9
+ const mockMapToInternalType = mapToInternalType;
10
+ const mockGetAccountId = getAccountId;
11
+ describe('mcp-server/tools/project/GetConfigValuesTool', () => {
12
+ let mockMcpServer;
13
+ let tool;
14
+ let mockRegisteredTool;
15
+ beforeEach(() => {
16
+ vi.clearAllMocks();
17
+ // @ts-expect-error Not mocking the whole thing
18
+ mockMcpServer = {
19
+ registerTool: vi.fn(),
20
+ };
21
+ mockRegisteredTool = {};
22
+ mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
23
+ tool = new GetConfigValuesTool(mockMcpServer);
24
+ });
25
+ describe('register', () => {
26
+ it('should register tool with correct parameters', () => {
27
+ const result = tool.register();
28
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('get-hubspot-project-feature-config-schema', {
29
+ title: 'Fetch the JSON Schema for component',
30
+ description: expect.stringContaining('Fetches and returns the JSON schema for the provided feature'),
31
+ inputSchema: expect.objectContaining({
32
+ platformVersion: expect.objectContaining({
33
+ describe: expect.any(Function),
34
+ }),
35
+ featureType: expect.objectContaining({
36
+ describe: expect.any(Function),
37
+ }),
38
+ }),
39
+ }, tool.handler);
40
+ expect(result).toBe(mockRegisteredTool);
41
+ });
42
+ });
43
+ describe('handler', () => {
44
+ const input = {
45
+ platformVersion: '2025.2',
46
+ featureType: 'card',
47
+ };
48
+ beforeEach(() => {
49
+ mockGetAccountId.mockReturnValue(123456789);
50
+ });
51
+ it('should return config schema when component type exists', async () => {
52
+ const mockSchema = {
53
+ 'internal-card-type': {
54
+ type: 'object',
55
+ properties: {
56
+ title: { type: 'string' },
57
+ description: { type: 'string' },
58
+ },
59
+ },
60
+ };
61
+ mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
62
+ mockMapToInternalType.mockReturnValue('internal-card-type');
63
+ const result = await tool.handler(input);
64
+ expect(mockGetIntermediateRepresentationSchema).toHaveBeenCalledWith({
65
+ platformVersion: '2025.2',
66
+ projectSourceDir: '',
67
+ accountId: 123456789,
68
+ });
69
+ expect(mockMapToInternalType).toHaveBeenCalledWith('card');
70
+ expect(result).toEqual({
71
+ content: [
72
+ {
73
+ type: 'text',
74
+ text: JSON.stringify({
75
+ config: {
76
+ type: 'object',
77
+ properties: {
78
+ title: { type: 'string' },
79
+ description: { type: 'string' },
80
+ },
81
+ },
82
+ }),
83
+ },
84
+ ],
85
+ });
86
+ });
87
+ it('should return error message when component type does not exist in schema', async () => {
88
+ const mockSchema = {
89
+ 'other-type': {
90
+ type: 'object',
91
+ properties: {},
92
+ },
93
+ };
94
+ mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
95
+ mockMapToInternalType.mockReturnValue('internal-card-type');
96
+ const result = await tool.handler(input);
97
+ expect(result).toEqual({
98
+ content: [
99
+ {
100
+ type: 'text',
101
+ text: 'Unable to locate JSON schema for type card',
102
+ },
103
+ ],
104
+ });
105
+ });
106
+ it('should return error message when getIntermediateRepresentationSchema throws', async () => {
107
+ mockGetIntermediateRepresentationSchema.mockRejectedValue(new Error('Schema fetch failed'));
108
+ mockMapToInternalType.mockReturnValue('internal-card-type');
109
+ const result = await tool.handler(input);
110
+ expect(result).toEqual({
111
+ content: [
112
+ {
113
+ type: 'text',
114
+ text: 'Unable to locate JSON schema for type card',
115
+ },
116
+ ],
117
+ });
118
+ });
119
+ it('should return error message when mapToInternalType throws', async () => {
120
+ const mockSchema = {};
121
+ mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
122
+ mockMapToInternalType.mockImplementation(() => {
123
+ throw new Error('Mapping failed');
124
+ });
125
+ const result = await tool.handler(input);
126
+ expect(result).toEqual({
127
+ content: [
128
+ {
129
+ type: 'text',
130
+ text: 'Unable to locate JSON schema for type card',
131
+ },
132
+ ],
133
+ });
134
+ });
135
+ it('should handle null account id', async () => {
136
+ mockGetAccountId.mockReturnValue(null);
137
+ mockGetIntermediateRepresentationSchema.mockRejectedValue(new Error('No account ID'));
138
+ const result = await tool.handler(input);
139
+ expect(result).toEqual({
140
+ content: [
141
+ {
142
+ type: 'text',
143
+ text: 'Unable to locate JSON schema for type card',
144
+ },
145
+ ],
146
+ });
147
+ });
148
+ it('should handle empty schema object', async () => {
149
+ const mockSchema = {};
150
+ mockGetIntermediateRepresentationSchema.mockResolvedValue(mockSchema);
151
+ mockMapToInternalType.mockReturnValue('internal-card-type');
152
+ const result = await tool.handler(input);
153
+ expect(result).toEqual({
154
+ content: [
155
+ {
156
+ type: 'text',
157
+ text: 'Unable to locate JSON schema for type card',
158
+ },
159
+ ],
160
+ });
161
+ });
162
+ it('should handle complex nested schema structures', async () => {
163
+ const complexSchema = {
164
+ 'internal-card-type': {
165
+ type: 'object',
166
+ properties: {
167
+ title: { type: 'string', maxLength: 100 },
168
+ metadata: {
169
+ type: 'object',
170
+ properties: {
171
+ author: { type: 'string' },
172
+ tags: {
173
+ type: 'array',
174
+ items: { type: 'string' },
175
+ },
176
+ },
177
+ required: ['author'],
178
+ },
179
+ },
180
+ required: ['title'],
181
+ },
182
+ };
183
+ mockGetIntermediateRepresentationSchema.mockResolvedValue(complexSchema);
184
+ mockMapToInternalType.mockReturnValue('internal-card-type');
185
+ const result = await tool.handler(input);
186
+ expect(result).toEqual({
187
+ content: [
188
+ {
189
+ type: 'text',
190
+ text: JSON.stringify({
191
+ config: complexSchema['internal-card-type'],
192
+ }),
193
+ },
194
+ ],
195
+ });
196
+ });
197
+ });
198
+ });
@@ -1,11 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const GuidedWalkthroughTool_1 = require("../GuidedWalkthroughTool");
4
- const command_1 = require("../../../utils/command");
1
+ import { GuidedWalkthroughTool } from '../GuidedWalkthroughTool.js';
2
+ import { execAsync } from '../../../utils/command.js';
5
3
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
6
4
  vi.mock('../../../utils/command');
7
5
  vi.mock('../../../utils/toolUsageTracking');
8
- const mockExecAsync = command_1.execAsync;
6
+ const mockExecAsync = execAsync;
9
7
  describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
10
8
  let mockMcpServer;
11
9
  let tool;
@@ -18,7 +16,7 @@ describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
18
16
  };
19
17
  mockRegisteredTool = {};
20
18
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
21
- tool = new GuidedWalkthroughTool_1.GuidedWalkthroughTool(mockMcpServer);
19
+ tool = new GuidedWalkthroughTool(mockMcpServer);
22
20
  });
23
21
  describe('register', () => {
24
22
  it('should register tool with correct parameters', () => {
@@ -1,11 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const UploadProjectTools_1 = require("../UploadProjectTools");
4
- const project_1 = require("../../../utils/project");
1
+ import { UploadProjectTools } from '../UploadProjectTools.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
5
3
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
6
4
  vi.mock('../../../utils/project');
7
5
  vi.mock('../../../utils/toolUsageTracking');
8
- const mockRunCommandInDir = project_1.runCommandInDir;
6
+ const mockRunCommandInDir = runCommandInDir;
9
7
  describe('mcp-server/tools/project/UploadProjectTools', () => {
10
8
  let mockMcpServer;
11
9
  let tool;
@@ -18,7 +16,7 @@ describe('mcp-server/tools/project/UploadProjectTools', () => {
18
16
  };
19
17
  mockRegisteredTool = {};
20
18
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
21
- tool = new UploadProjectTools_1.UploadProjectTools(mockMcpServer);
19
+ tool = new UploadProjectTools(mockMcpServer);
22
20
  });
23
21
  describe('register', () => {
24
22
  it('should register tool with correct parameters', () => {
@@ -1,11 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ValidateProjectTool_1 = require("../ValidateProjectTool");
4
- const project_1 = require("../../../utils/project");
1
+ import { ValidateProjectTool, } from '../ValidateProjectTool.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
5
3
  vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
6
4
  vi.mock('../../../utils/project');
7
5
  vi.mock('../../../utils/toolUsageTracking');
8
- const mockRunCommandInDir = project_1.runCommandInDir;
6
+ const mockRunCommandInDir = runCommandInDir;
9
7
  describe('mcp-server/tools/project/ValidateProjectTool', () => {
10
8
  let mockMcpServer;
11
9
  let tool;
@@ -18,7 +16,7 @@ describe('mcp-server/tools/project/ValidateProjectTool', () => {
18
16
  };
19
17
  mockRegisteredTool = {};
20
18
  mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
21
- tool = new ValidateProjectTool_1.ValidateProjectTool(mockMcpServer);
19
+ tool = new ValidateProjectTool(mockMcpServer);
22
20
  });
23
21
  describe('register', () => {
24
22
  it('should register tool with correct parameters', () => {
@@ -1,3 +1,4 @@
1
1
  import z from 'zod';
2
2
  export declare const absoluteProjectPath: z.ZodString;
3
3
  export declare const absoluteCurrentWorkingDirectory: z.ZodString;
4
+ export declare const features: z.ZodOptional<z.ZodArray<z.ZodUnion<[z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">]>, "many">>;
@@ -1,13 +1,18 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.absoluteCurrentWorkingDirectory = exports.absoluteProjectPath = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.absoluteProjectPath = zod_1.default
1
+ import z from 'zod';
2
+ export const absoluteProjectPath = z
9
3
  .string()
10
4
  .describe('The absolute path to the project directory.');
11
- exports.absoluteCurrentWorkingDirectory = zod_1.default
5
+ export const absoluteCurrentWorkingDirectory = z
12
6
  .string()
13
7
  .describe('The absolute path to the current working directory.');
8
+ export const features = z
9
+ .array(z
10
+ .union([
11
+ z.literal('card'),
12
+ z.literal('settings'),
13
+ z.literal('app-function'),
14
+ z.literal('webhooks'),
15
+ z.literal('workflow-action'),
16
+ ])
17
+ .describe('The features to include in the project, multiple options can be selected'))
18
+ .optional();
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Tool = void 0;
4
- class Tool {
1
+ export class Tool {
5
2
  mcpServer;
6
3
  constructor(mcpServer) {
7
4
  this.mcpServer = mcpServer;
@@ -14,4 +11,3 @@ class Tool {
14
11
  throw new Error('Must implement handler');
15
12
  }
16
13
  }
17
- exports.Tool = Tool;
@@ -1,43 +1,41 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const command_1 = require("../command");
1
+ import { addFlag } from '../command.js';
4
2
  vi.mock('child_process');
5
3
  vi.mock('util');
6
4
  describe('mcp-server/utils/command', () => {
7
5
  describe('addFlag', () => {
8
6
  it('should add string flag to command', () => {
9
- const result = (0, command_1.addFlag)('hs project create', 'name', 'test-project');
7
+ const result = addFlag('hs project create', 'name', 'test-project');
10
8
  expect(result).toBe('hs project create --name "test-project"');
11
9
  });
12
10
  it('should add number flag to command', () => {
13
- const result = (0, command_1.addFlag)('hs project deploy', 'build', 123);
11
+ const result = addFlag('hs project deploy', 'build', 123);
14
12
  expect(result).toBe('hs project deploy --build "123"');
15
13
  });
16
14
  it('should add boolean flag to command', () => {
17
- const result = (0, command_1.addFlag)('hs project upload', 'watch', true);
15
+ const result = addFlag('hs project upload', 'watch', true);
18
16
  expect(result).toBe('hs project upload --watch "true"');
19
17
  });
20
18
  it('should add array flag to command', () => {
21
- const result = (0, command_1.addFlag)('hs project create', 'features', [
19
+ const result = addFlag('hs project create', 'features', [
22
20
  'card',
23
21
  'settings',
24
22
  ]);
25
23
  expect(result).toBe('hs project create --features "card" "settings"');
26
24
  });
27
25
  it('should handle empty array', () => {
28
- const result = (0, command_1.addFlag)('hs project create', 'features', []);
26
+ const result = addFlag('hs project create', 'features', []);
29
27
  expect(result).toBe('hs project create --features ');
30
28
  });
31
29
  it('should handle array with one item', () => {
32
- const result = (0, command_1.addFlag)('hs project create', 'features', ['card']);
30
+ const result = addFlag('hs project create', 'features', ['card']);
33
31
  expect(result).toBe('hs project create --features "card"');
34
32
  });
35
33
  it('should handle special characters in string values', () => {
36
- const result = (0, command_1.addFlag)('hs project create', 'name', 'my-project with spaces');
34
+ const result = addFlag('hs project create', 'name', 'my-project with spaces');
37
35
  expect(result).toBe('hs project create --name "my-project with spaces"');
38
36
  });
39
37
  it('should handle special characters in array values', () => {
40
- const result = (0, command_1.addFlag)('hs project create', 'features', [
38
+ const result = addFlag('hs project create', 'features', [
41
39
  'card with spaces',
42
40
  'settings',
43
41
  ]);
@@ -1,19 +1,14 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const project_1 = require("../project");
7
- const command_1 = require("../command");
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
1
+ import { runCommandInDir } from '../project.js';
2
+ import { execAsync } from '../command.js';
3
+ import fs from 'fs';
4
+ import path from 'path';
10
5
  vi.mock('../command');
11
6
  vi.mock('fs');
12
7
  vi.mock('path');
13
- const mockExecAsync = command_1.execAsync;
14
- const mockExistsSync = fs_1.default.existsSync;
15
- const mockMkdirSync = fs_1.default.mkdirSync;
16
- const mockResolve = path_1.default.resolve;
8
+ const mockExecAsync = execAsync;
9
+ const mockExistsSync = fs.existsSync;
10
+ const mockMkdirSync = fs.mkdirSync;
11
+ const mockResolve = path.resolve;
17
12
  describe('mcp-server/utils/project', () => {
18
13
  beforeEach(() => {
19
14
  vi.clearAllMocks();
@@ -32,7 +27,7 @@ describe('mcp-server/utils/project', () => {
32
27
  };
33
28
  mockExistsSync.mockReturnValue(true);
34
29
  mockExecAsync.mockResolvedValue(expectedResult);
35
- const result = await (0, project_1.runCommandInDir)(mockDirectory, mockCommand);
30
+ const result = await runCommandInDir(mockDirectory, mockCommand);
36
31
  expect(mockExistsSync).toHaveBeenCalledWith(mockDirectory);
37
32
  expect(mockMkdirSync).not.toHaveBeenCalled();
38
33
  expect(mockResolve).toHaveBeenCalledWith(mockDirectory);
@@ -49,7 +44,7 @@ describe('mcp-server/utils/project', () => {
49
44
  };
50
45
  mockExistsSync.mockReturnValue(false);
51
46
  mockExecAsync.mockResolvedValue(expectedResult);
52
- const result = await (0, project_1.runCommandInDir)(mockDirectory, mockCommand);
47
+ const result = await runCommandInDir(mockDirectory, mockCommand);
53
48
  expect(mockExistsSync).toHaveBeenCalledWith(mockDirectory);
54
49
  expect(mockMkdirSync).toHaveBeenCalledWith(mockDirectory);
55
50
  expect(mockResolve).toHaveBeenCalledWith(mockDirectory);
@@ -63,7 +58,7 @@ describe('mcp-server/utils/project', () => {
63
58
  const error = new Error('Command failed');
64
59
  mockExistsSync.mockReturnValue(true);
65
60
  mockExecAsync.mockRejectedValue(error);
66
- await expect((0, project_1.runCommandInDir)(mockDirectory, mockCommand)).rejects.toThrow('Command failed');
61
+ await expect(runCommandInDir(mockDirectory, mockCommand)).rejects.toThrow('Command failed');
67
62
  expect(mockExecAsync).toHaveBeenCalledWith(mockCommand, expect.objectContaining({
68
63
  cwd: mockResolvedPath,
69
64
  env: expect.any(Object),
@@ -76,7 +71,7 @@ describe('mcp-server/utils/project', () => {
76
71
  };
77
72
  mockExistsSync.mockReturnValue(true);
78
73
  mockExecAsync.mockResolvedValue(expectedResult);
79
- const result = await (0, project_1.runCommandInDir)(mockDirectory, mockCommand);
74
+ const result = await runCommandInDir(mockDirectory, mockCommand);
80
75
  expect(result.stdout).toBe('some output');
81
76
  expect(result.stderr).toBe('warning message');
82
77
  });
@@ -1,3 +1,3 @@
1
- import { exec } from 'child_process';
1
+ import { exec } from 'node:child_process';
2
2
  export declare const execAsync: typeof exec.__promisify__;
3
3
  export declare function addFlag(command: string, flagName: string, value: string | number | boolean | string[]): string;
@@ -1,14 +1,7 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.execAsync = void 0;
7
- exports.addFlag = addFlag;
8
- const util_1 = __importDefault(require("util"));
9
- const child_process_1 = require("child_process");
10
- exports.execAsync = util_1.default.promisify(child_process_1.exec);
11
- function addFlag(command, flagName, value) {
1
+ import util from 'util';
2
+ import { exec } from 'node:child_process';
3
+ export const execAsync = util.promisify(exec);
4
+ export function addFlag(command, flagName, value) {
12
5
  if (Array.isArray(value)) {
13
6
  return `${command} --${flagName} ${value.map(item => `"${item}"`).join(' ')}`;
14
7
  }