@hubspot/cli 7.6.0-beta.1 → 7.6.0-beta.11

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 (769) hide show
  1. package/README.md +0 -4
  2. package/api/__tests__/migrate.test.d.ts +1 -0
  3. package/api/__tests__/migrate.test.js +181 -0
  4. package/api/migrate.d.ts +10 -4
  5. package/api/migrate.js +14 -22
  6. package/bin/cli.js +96 -97
  7. package/bin/hs +2 -2
  8. package/bin/hscms +2 -2
  9. package/bin/silenceErrors.js +1 -2
  10. package/commands/__tests__/account.test.d.ts +1 -0
  11. package/commands/__tests__/account.test.js +69 -0
  12. package/commands/__tests__/auth.test.d.ts +1 -0
  13. package/commands/__tests__/auth.test.js +38 -0
  14. package/commands/__tests__/cms.test.d.ts +1 -0
  15. package/commands/__tests__/cms.test.js +44 -0
  16. package/commands/__tests__/config.test.d.ts +1 -0
  17. package/commands/__tests__/config.test.js +44 -0
  18. package/commands/__tests__/create.test.d.ts +1 -0
  19. package/commands/__tests__/create.test.js +53 -0
  20. package/commands/__tests__/customObject.test.d.ts +1 -0
  21. package/commands/__tests__/customObject.test.js +49 -0
  22. package/commands/__tests__/doctor.test.d.ts +1 -0
  23. package/commands/__tests__/doctor.test.js +134 -0
  24. package/commands/__tests__/feedback.test.d.ts +1 -0
  25. package/commands/__tests__/feedback.test.js +24 -0
  26. package/commands/__tests__/fetch.test.d.ts +1 -0
  27. package/commands/__tests__/fetch.test.js +57 -0
  28. package/commands/__tests__/filemanager.test.d.ts +1 -0
  29. package/commands/__tests__/filemanager.test.js +45 -0
  30. package/commands/__tests__/function.test.d.ts +1 -0
  31. package/commands/__tests__/function.test.js +46 -0
  32. package/commands/__tests__/getStarted.test.d.ts +1 -0
  33. package/commands/__tests__/getStarted.test.js +155 -0
  34. package/commands/__tests__/hubdb.test.d.ts +1 -0
  35. package/commands/__tests__/hubdb.test.js +50 -0
  36. package/commands/__tests__/init.test.d.ts +1 -0
  37. package/commands/__tests__/init.test.js +42 -0
  38. package/commands/__tests__/lint.test.d.ts +1 -0
  39. package/commands/__tests__/lint.test.js +33 -0
  40. package/commands/__tests__/list.test.d.ts +1 -0
  41. package/commands/__tests__/list.test.js +42 -0
  42. package/commands/__tests__/logs.test.d.ts +1 -0
  43. package/commands/__tests__/logs.test.js +71 -0
  44. package/commands/__tests__/mcp.test.d.ts +1 -0
  45. package/commands/__tests__/mcp.test.js +46 -0
  46. package/commands/__tests__/mv.test.d.ts +1 -0
  47. package/commands/__tests__/mv.test.js +46 -0
  48. package/commands/__tests__/open.test.d.ts +1 -0
  49. package/commands/__tests__/open.test.js +58 -0
  50. package/commands/__tests__/project.test.d.ts +1 -0
  51. package/commands/__tests__/project.test.js +95 -0
  52. package/commands/__tests__/remove.test.d.ts +1 -0
  53. package/commands/__tests__/remove.test.js +39 -0
  54. package/commands/__tests__/sandbox.test.d.ts +1 -0
  55. package/commands/__tests__/sandbox.test.js +44 -0
  56. package/commands/__tests__/secret.test.d.ts +1 -0
  57. package/commands/__tests__/secret.test.js +49 -0
  58. package/commands/__tests__/testAccount.test.d.ts +1 -0
  59. package/commands/__tests__/testAccount.test.js +57 -0
  60. package/commands/__tests__/theme.test.d.ts +1 -0
  61. package/commands/__tests__/theme.test.js +47 -0
  62. package/commands/account/__tests__/auth.test.d.ts +1 -0
  63. package/commands/account/__tests__/auth.test.js +26 -0
  64. package/commands/account/__tests__/clean.test.d.ts +1 -0
  65. package/commands/account/__tests__/clean.test.js +28 -0
  66. package/commands/account/__tests__/createOverride.test.d.ts +1 -0
  67. package/commands/account/__tests__/createOverride.test.js +32 -0
  68. package/commands/account/__tests__/info.test.d.ts +1 -0
  69. package/commands/account/__tests__/info.test.js +28 -0
  70. package/commands/account/__tests__/list.test.d.ts +1 -0
  71. package/commands/account/__tests__/list.test.js +28 -0
  72. package/commands/account/__tests__/remove.test.d.ts +1 -0
  73. package/commands/account/__tests__/remove.test.js +36 -0
  74. package/commands/account/__tests__/removeOverride.d.ts +1 -0
  75. package/commands/account/__tests__/removeOverride.js +25 -0
  76. package/commands/account/__tests__/rename.test.d.ts +1 -0
  77. package/commands/account/__tests__/rename.test.js +42 -0
  78. package/commands/account/__tests__/use.test.d.ts +1 -0
  79. package/commands/account/__tests__/use.test.js +32 -0
  80. package/commands/account/auth.d.ts +1 -1
  81. package/commands/account/auth.js +78 -69
  82. package/commands/account/clean.d.ts +1 -1
  83. package/commands/account/clean.js +55 -60
  84. package/commands/account/createOverride.d.ts +1 -1
  85. package/commands/account/createOverride.js +52 -57
  86. package/commands/account/info.d.ts +1 -1
  87. package/commands/account/info.js +33 -35
  88. package/commands/account/list.d.ts +1 -1
  89. package/commands/account/list.js +43 -45
  90. package/commands/account/remove.d.ts +1 -1
  91. package/commands/account/remove.js +37 -42
  92. package/commands/account/removeOverride.d.ts +1 -1
  93. package/commands/account/removeOverride.js +38 -43
  94. package/commands/account/rename.d.ts +1 -1
  95. package/commands/account/rename.js +18 -20
  96. package/commands/account/use.d.ts +1 -1
  97. package/commands/account/use.js +29 -31
  98. package/commands/account.d.ts +1 -1
  99. package/commands/account.js +23 -28
  100. package/commands/app/__tests__/migrate.test.d.ts +1 -0
  101. package/commands/app/__tests__/migrate.test.js +124 -0
  102. package/commands/app/migrate.d.ts +2 -2
  103. package/commands/app/migrate.js +40 -43
  104. package/commands/app/secret/__tests__/add.test.d.ts +1 -0
  105. package/commands/app/secret/__tests__/add.test.js +28 -0
  106. package/commands/app/secret/__tests__/delete.test.d.ts +1 -0
  107. package/commands/app/secret/__tests__/delete.test.js +28 -0
  108. package/commands/app/secret/__tests__/list.test.d.ts +1 -0
  109. package/commands/app/secret/__tests__/list.test.js +25 -0
  110. package/commands/app/secret/__tests__/update.test.d.ts +1 -0
  111. package/commands/app/secret/__tests__/update.test.js +28 -0
  112. package/commands/app/secret/add.d.ts +1 -1
  113. package/commands/app/secret/add.js +28 -30
  114. package/commands/app/secret/delete.d.ts +1 -1
  115. package/commands/app/secret/delete.js +34 -36
  116. package/commands/app/secret/list.d.ts +1 -1
  117. package/commands/app/secret/list.js +25 -27
  118. package/commands/app/secret/update.d.ts +1 -1
  119. package/commands/app/secret/update.js +32 -34
  120. package/commands/app/secret.d.ts +1 -1
  121. package/commands/app/secret.js +12 -17
  122. package/commands/app.d.ts +1 -1
  123. package/commands/app.js +6 -11
  124. package/commands/auth.d.ts +1 -1
  125. package/commands/auth.js +79 -83
  126. package/commands/cms/convertFields.d.ts +1 -1
  127. package/commands/cms/convertFields.js +34 -39
  128. package/commands/cms/getReactModule.d.ts +1 -1
  129. package/commands/cms/getReactModule.js +32 -37
  130. package/commands/cms/lighthouseScore.d.ts +1 -1
  131. package/commands/cms/lighthouseScore.js +67 -72
  132. package/commands/cms.d.ts +1 -1
  133. package/commands/cms.js +11 -16
  134. package/commands/completion.d.ts +1 -1
  135. package/commands/completion.js +10 -15
  136. package/commands/config/migrate.d.ts +1 -1
  137. package/commands/config/migrate.js +27 -32
  138. package/commands/config/set.d.ts +2 -1
  139. package/commands/config/set.js +40 -32
  140. package/commands/config.d.ts +1 -1
  141. package/commands/config.js +8 -13
  142. package/commands/create/api-sample.d.ts +1 -1
  143. package/commands/create/api-sample.js +28 -33
  144. package/commands/create/app.d.ts +1 -1
  145. package/commands/create/app.js +3 -5
  146. package/commands/create/function.d.ts +1 -1
  147. package/commands/create/function.js +10 -12
  148. package/commands/create/index.d.ts +1 -1
  149. package/commands/create/index.js +19 -24
  150. package/commands/create/module.d.ts +1 -1
  151. package/commands/create/module.js +13 -15
  152. package/commands/create/react-app.d.ts +1 -1
  153. package/commands/create/react-app.js +3 -5
  154. package/commands/create/template.d.ts +1 -1
  155. package/commands/create/template.js +13 -15
  156. package/commands/create/vue-app.d.ts +1 -1
  157. package/commands/create/vue-app.js +3 -5
  158. package/commands/create/webpack-serverless.d.ts +1 -1
  159. package/commands/create/webpack-serverless.js +3 -5
  160. package/commands/create/website-theme.d.ts +1 -1
  161. package/commands/create/website-theme.js +5 -7
  162. package/commands/create.d.ts +2 -2
  163. package/commands/create.js +77 -35
  164. package/commands/customObject/__tests__/create.test.d.ts +1 -0
  165. package/commands/customObject/__tests__/create.test.js +40 -0
  166. package/commands/customObject/__tests__/schema.test.d.ts +1 -0
  167. package/commands/customObject/__tests__/schema.test.js +53 -0
  168. package/commands/customObject/create.d.ts +1 -1
  169. package/commands/customObject/create.js +28 -30
  170. package/commands/customObject/schema/__tests__/create.test.d.ts +1 -0
  171. package/commands/customObject/schema/__tests__/create.test.js +28 -0
  172. package/commands/customObject/schema/__tests__/delete.test.d.ts +1 -0
  173. package/commands/customObject/schema/__tests__/delete.test.js +42 -0
  174. package/commands/customObject/schema/__tests__/fetch-all.test.d.ts +1 -0
  175. package/commands/customObject/schema/__tests__/fetch-all.test.js +41 -0
  176. package/commands/customObject/schema/__tests__/fetch.test.d.ts +1 -0
  177. package/commands/customObject/schema/__tests__/fetch.test.js +45 -0
  178. package/commands/customObject/schema/__tests__/list.test.d.ts +1 -0
  179. package/commands/customObject/schema/__tests__/list.test.js +29 -0
  180. package/commands/customObject/schema/__tests__/update.test.d.ts +1 -0
  181. package/commands/customObject/schema/__tests__/update.test.js +40 -0
  182. package/commands/customObject/schema/create.d.ts +1 -1
  183. package/commands/customObject/schema/create.js +28 -30
  184. package/commands/customObject/schema/delete.d.ts +1 -1
  185. package/commands/customObject/schema/delete.js +24 -26
  186. package/commands/customObject/schema/fetch-all.d.ts +1 -1
  187. package/commands/customObject/schema/fetch-all.js +22 -24
  188. package/commands/customObject/schema/fetch.d.ts +1 -1
  189. package/commands/customObject/schema/fetch.js +24 -26
  190. package/commands/customObject/schema/list.d.ts +1 -1
  191. package/commands/customObject/schema/list.js +13 -15
  192. package/commands/customObject/schema/update.d.ts +1 -1
  193. package/commands/customObject/schema/update.js +32 -34
  194. package/commands/customObject/schema.d.ts +1 -1
  195. package/commands/customObject/schema.js +17 -22
  196. package/commands/customObject.d.ts +1 -1
  197. package/commands/customObject.js +13 -18
  198. package/commands/doctor.d.ts +1 -1
  199. package/commands/doctor.js +28 -33
  200. package/commands/feedback.d.ts +1 -1
  201. package/commands/feedback.js +19 -24
  202. package/commands/fetch.d.ts +1 -1
  203. package/commands/fetch.js +28 -31
  204. package/commands/filemanager/__tests__/fetch.test.d.ts +1 -0
  205. package/commands/filemanager/__tests__/fetch.test.js +32 -0
  206. package/commands/filemanager/__tests__/upload.test.d.ts +1 -0
  207. package/commands/filemanager/__tests__/upload.test.js +30 -0
  208. package/commands/filemanager/fetch.d.ts +1 -1
  209. package/commands/filemanager/fetch.js +23 -25
  210. package/commands/filemanager/upload.d.ts +1 -1
  211. package/commands/filemanager/upload.js +39 -44
  212. package/commands/filemanager.d.ts +1 -1
  213. package/commands/filemanager.js +8 -13
  214. package/commands/function/deploy.d.ts +1 -1
  215. package/commands/function/deploy.js +35 -40
  216. package/commands/function/list.d.ts +1 -1
  217. package/commands/function/list.js +24 -29
  218. package/commands/function/server.d.ts +1 -1
  219. package/commands/function/server.js +15 -17
  220. package/commands/function.d.ts +1 -1
  221. package/commands/function.js +12 -18
  222. package/commands/getStarted.d.ts +1 -1
  223. package/commands/getStarted.js +194 -112
  224. package/commands/hubdb/__tests__/clear.test.d.ts +1 -0
  225. package/commands/hubdb/__tests__/clear.test.js +28 -0
  226. package/commands/hubdb/__tests__/create.test.d.ts +1 -0
  227. package/commands/hubdb/__tests__/create.test.js +28 -0
  228. package/commands/hubdb/__tests__/delete.test.d.ts +1 -0
  229. package/commands/hubdb/__tests__/delete.test.js +28 -0
  230. package/commands/hubdb/__tests__/fetch.test.d.ts +1 -0
  231. package/commands/hubdb/__tests__/fetch.test.js +28 -0
  232. package/commands/hubdb/__tests__/list.test.d.ts +1 -0
  233. package/commands/hubdb/__tests__/list.test.js +96 -0
  234. package/commands/hubdb/clear.d.ts +1 -1
  235. package/commands/hubdb/clear.js +20 -22
  236. package/commands/hubdb/create.d.ts +1 -1
  237. package/commands/hubdb/create.js +30 -35
  238. package/commands/hubdb/delete.d.ts +1 -1
  239. package/commands/hubdb/delete.js +24 -26
  240. package/commands/hubdb/fetch.d.ts +1 -1
  241. package/commands/hubdb/fetch.js +17 -19
  242. package/commands/hubdb/list.d.ts +1 -1
  243. package/commands/hubdb/list.js +33 -35
  244. package/commands/hubdb.d.ts +1 -1
  245. package/commands/hubdb.js +18 -24
  246. package/commands/init.d.ts +1 -1
  247. package/commands/init.js +92 -99
  248. package/commands/lint.d.ts +1 -1
  249. package/commands/lint.js +24 -26
  250. package/commands/list.d.ts +1 -1
  251. package/commands/list.js +32 -37
  252. package/commands/logs.d.ts +1 -1
  253. package/commands/logs.js +35 -38
  254. package/commands/mcp/__tests__/setup.test.d.ts +1 -0
  255. package/commands/mcp/__tests__/setup.test.js +26 -0
  256. package/commands/mcp/__tests__/start.test.d.ts +1 -0
  257. package/commands/mcp/__tests__/start.test.js +27 -0
  258. package/commands/mcp/setup.d.ts +1 -1
  259. package/commands/mcp/setup.js +18 -19
  260. package/commands/mcp/start.d.ts +5 -2
  261. package/commands/mcp/start.js +39 -36
  262. package/commands/mcp.d.ts +1 -1
  263. package/commands/mcp.js +7 -12
  264. package/commands/module/marketplace-validate.d.ts +1 -1
  265. package/commands/module/marketplace-validate.js +21 -26
  266. package/commands/module.d.ts +1 -1
  267. package/commands/module.js +7 -13
  268. package/commands/mv.d.ts +1 -1
  269. package/commands/mv.js +20 -22
  270. package/commands/open.d.ts +1 -1
  271. package/commands/open.js +29 -29
  272. package/commands/project/__tests__/add.test.d.ts +1 -0
  273. package/commands/project/__tests__/add.test.js +43 -0
  274. package/commands/project/__tests__/create.test.d.ts +1 -0
  275. package/commands/project/__tests__/create.test.js +40 -0
  276. package/commands/project/__tests__/deploy.test.d.ts +1 -0
  277. package/commands/project/__tests__/deploy.test.js +308 -0
  278. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +1 -0
  279. package/commands/project/__tests__/devUnifiedFlow.test.js +405 -0
  280. package/commands/project/__tests__/download.test.d.ts +1 -0
  281. package/commands/project/__tests__/download.test.js +39 -0
  282. package/commands/project/__tests__/fixtures/exampleProject.json +33 -0
  283. package/commands/project/__tests__/installDeps.test.d.ts +1 -0
  284. package/commands/project/__tests__/installDeps.test.js +142 -0
  285. package/commands/project/__tests__/listBuilds.test.d.ts +1 -0
  286. package/commands/project/__tests__/listBuilds.test.js +38 -0
  287. package/commands/project/__tests__/logs.test.d.ts +1 -0
  288. package/commands/project/__tests__/logs.test.js +208 -0
  289. package/commands/project/__tests__/migrate.test.d.ts +1 -0
  290. package/commands/project/__tests__/migrate.test.js +111 -0
  291. package/commands/project/__tests__/migrateApp.test.d.ts +1 -0
  292. package/commands/project/__tests__/migrateApp.test.js +82 -0
  293. package/commands/project/__tests__/open.test.d.ts +1 -0
  294. package/commands/project/__tests__/open.test.js +39 -0
  295. package/commands/project/__tests__/profile.test.d.ts +1 -0
  296. package/commands/project/__tests__/profile.test.js +42 -0
  297. package/commands/project/__tests__/upload.test.d.ts +1 -0
  298. package/commands/project/__tests__/upload.test.js +43 -0
  299. package/commands/project/__tests__/watch.test.d.ts +1 -0
  300. package/commands/project/__tests__/watch.test.js +35 -0
  301. package/commands/project/add.d.ts +1 -1
  302. package/commands/project/add.js +34 -36
  303. package/commands/project/cloneApp.d.ts +1 -1
  304. package/commands/project/cloneApp.js +69 -74
  305. package/commands/project/create.d.ts +2 -2
  306. package/commands/project/create.js +70 -75
  307. package/commands/project/deploy.d.ts +3 -2
  308. package/commands/project/deploy.js +130 -96
  309. package/commands/project/dev/deprecatedFlow.d.ts +2 -2
  310. package/commands/project/dev/deprecatedFlow.js +57 -62
  311. package/commands/project/dev/index.d.ts +1 -1
  312. package/commands/project/dev/index.js +74 -57
  313. package/commands/project/dev/unifiedFlow.d.ts +4 -4
  314. package/commands/project/dev/unifiedFlow.js +74 -77
  315. package/commands/project/download.d.ts +1 -1
  316. package/commands/project/download.js +35 -40
  317. package/commands/project/installDeps.d.ts +1 -1
  318. package/commands/project/installDeps.js +29 -34
  319. package/commands/project/listBuilds.d.ts +1 -1
  320. package/commands/project/listBuilds.js +40 -45
  321. package/commands/project/logs.d.ts +1 -1
  322. package/commands/project/logs.js +52 -54
  323. package/commands/project/migrate.d.ts +1 -1
  324. package/commands/project/migrate.js +24 -26
  325. package/commands/project/migrateApp.d.ts +2 -2
  326. package/commands/project/migrateApp.js +18 -20
  327. package/commands/project/open.d.ts +1 -1
  328. package/commands/project/open.js +25 -30
  329. package/commands/project/profile/add.d.ts +1 -1
  330. package/commands/project/profile/add.js +68 -73
  331. package/commands/project/profile/delete.d.ts +1 -1
  332. package/commands/project/profile/delete.js +68 -61
  333. package/commands/project/profile.d.ts +1 -1
  334. package/commands/project/profile.js +9 -14
  335. package/commands/project/upload.d.ts +2 -2
  336. package/commands/project/upload.js +61 -55
  337. package/commands/project/validate.d.ts +1 -1
  338. package/commands/project/validate.js +36 -40
  339. package/commands/project/watch.d.ts +1 -1
  340. package/commands/project/watch.js +59 -61
  341. package/commands/project.d.ts +1 -1
  342. package/commands/project.js +38 -43
  343. package/commands/remove.d.ts +1 -1
  344. package/commands/remove.js +15 -17
  345. package/commands/sandbox/__tests__/create.test.d.ts +1 -0
  346. package/commands/sandbox/__tests__/create.test.js +238 -0
  347. package/commands/sandbox/__tests__/delete.test.d.ts +1 -0
  348. package/commands/sandbox/__tests__/delete.test.js +31 -0
  349. package/commands/sandbox/create.d.ts +2 -2
  350. package/commands/sandbox/create.js +92 -79
  351. package/commands/sandbox/delete.d.ts +1 -1
  352. package/commands/sandbox/delete.js +97 -99
  353. package/commands/sandbox.d.ts +1 -1
  354. package/commands/sandbox.js +9 -14
  355. package/commands/secret/__tests__/addSecret.test.d.ts +1 -0
  356. package/commands/secret/__tests__/addSecret.test.js +29 -0
  357. package/commands/secret/__tests__/deleteSecret.test.d.ts +1 -0
  358. package/commands/secret/__tests__/deleteSecret.test.js +41 -0
  359. package/commands/secret/__tests__/listSecret.test.d.ts +1 -0
  360. package/commands/secret/__tests__/listSecret.test.js +29 -0
  361. package/commands/secret/__tests__/updateSecret.test.d.ts +1 -0
  362. package/commands/secret/__tests__/updateSecret.test.js +29 -0
  363. package/commands/secret/addSecret.d.ts +1 -1
  364. package/commands/secret/addSecret.js +26 -28
  365. package/commands/secret/deleteSecret.d.ts +1 -1
  366. package/commands/secret/deleteSecret.js +27 -29
  367. package/commands/secret/listSecret.d.ts +1 -1
  368. package/commands/secret/listSecret.js +19 -21
  369. package/commands/secret/updateSecret.d.ts +1 -1
  370. package/commands/secret/updateSecret.js +25 -27
  371. package/commands/secret.d.ts +1 -1
  372. package/commands/secret.js +13 -18
  373. package/commands/testAccount/__tests__/create.test.d.ts +1 -0
  374. package/commands/testAccount/__tests__/create.test.js +33 -0
  375. package/commands/testAccount/__tests__/createConfig.test.d.ts +1 -0
  376. package/commands/testAccount/__tests__/createConfig.test.js +32 -0
  377. package/commands/testAccount/__tests__/delete.test.d.ts +1 -0
  378. package/commands/testAccount/__tests__/delete.test.js +31 -0
  379. package/commands/testAccount/__tests__/importData.test.d.ts +1 -0
  380. package/commands/testAccount/__tests__/importData.test.js +93 -0
  381. package/commands/testAccount/create.d.ts +2 -2
  382. package/commands/testAccount/create.js +72 -42
  383. package/commands/testAccount/createConfig.d.ts +1 -3
  384. package/commands/testAccount/createConfig.js +41 -47
  385. package/commands/testAccount/delete.d.ts +1 -1
  386. package/commands/testAccount/delete.js +17 -19
  387. package/commands/testAccount/importData.d.ts +9 -0
  388. package/commands/testAccount/importData.js +61 -0
  389. package/commands/testAccount.d.ts +1 -1
  390. package/commands/testAccount.js +12 -15
  391. package/commands/theme/__tests__/generate-selectors.test.d.ts +1 -0
  392. package/commands/theme/__tests__/generate-selectors.test.js +28 -0
  393. package/commands/theme/__tests__/marketplace-validate.test.d.ts +1 -0
  394. package/commands/theme/__tests__/marketplace-validate.test.js +36 -0
  395. package/commands/theme/__tests__/preview.test.d.ts +1 -0
  396. package/commands/theme/__tests__/preview.test.js +60 -0
  397. package/commands/theme/generate-selectors.d.ts +1 -1
  398. package/commands/theme/generate-selectors.js +23 -28
  399. package/commands/theme/marketplace-validate.d.ts +1 -1
  400. package/commands/theme/marketplace-validate.js +19 -24
  401. package/commands/theme/preview.d.ts +1 -1
  402. package/commands/theme/preview.js +60 -65
  403. package/commands/theme.d.ts +1 -1
  404. package/commands/theme.js +11 -16
  405. package/commands/upload.d.ts +1 -1
  406. package/commands/upload.js +77 -82
  407. package/commands/watch.d.ts +1 -1
  408. package/commands/watch.js +45 -51
  409. package/lang/en.d.ts +260 -107
  410. package/lang/en.js +604 -452
  411. package/lang/en.lyaml +29 -30
  412. package/lib/__tests__/accountTypes.test.d.ts +1 -0
  413. package/lib/__tests__/accountTypes.test.js +98 -0
  414. package/lib/__tests__/buildAccount.test.d.ts +1 -0
  415. package/lib/__tests__/buildAccount.test.js +282 -0
  416. package/lib/__tests__/commonOpts.test.d.ts +1 -0
  417. package/lib/__tests__/commonOpts.test.js +85 -0
  418. package/lib/__tests__/dependencyManagement.test.d.ts +1 -0
  419. package/lib/__tests__/dependencyManagement.test.js +175 -0
  420. package/lib/__tests__/developerTestAccounts.test.d.ts +1 -0
  421. package/lib/__tests__/developerTestAccounts.test.js +145 -0
  422. package/lib/__tests__/hasFeature.test.d.ts +1 -0
  423. package/lib/__tests__/hasFeature.test.js +35 -0
  424. package/lib/__tests__/importData.test.d.ts +1 -0
  425. package/lib/__tests__/importData.test.js +89 -0
  426. package/lib/__tests__/npm.test.d.ts +1 -0
  427. package/lib/__tests__/npm.test.js +57 -0
  428. package/lib/__tests__/oauth.test.d.ts +1 -0
  429. package/lib/__tests__/oauth.test.js +108 -0
  430. package/lib/__tests__/parsing.test.d.ts +1 -0
  431. package/lib/__tests__/parsing.test.js +34 -0
  432. package/lib/__tests__/polling.test.d.ts +1 -0
  433. package/lib/__tests__/polling.test.js +76 -0
  434. package/lib/__tests__/process.test.d.ts +1 -0
  435. package/lib/__tests__/process.test.js +85 -0
  436. package/lib/__tests__/projectProfiles.test.d.ts +1 -0
  437. package/lib/__tests__/projectProfiles.test.js +129 -0
  438. package/lib/__tests__/sandboxSync.test.d.ts +1 -0
  439. package/lib/__tests__/sandboxSync.test.js +126 -0
  440. package/lib/__tests__/sandboxes.test.d.ts +1 -0
  441. package/lib/__tests__/sandboxes.test.js +146 -0
  442. package/lib/__tests__/serverlessLogs.test.d.ts +1 -0
  443. package/lib/__tests__/serverlessLogs.test.js +149 -0
  444. package/lib/__tests__/usageTracking.test.d.ts +1 -0
  445. package/lib/__tests__/usageTracking.test.js +164 -0
  446. package/lib/__tests__/validation.test.d.ts +1 -0
  447. package/lib/__tests__/validation.test.js +143 -0
  448. package/lib/__tests__/yargsUtils.test.d.ts +1 -0
  449. package/lib/__tests__/yargsUtils.test.js +50 -0
  450. package/lib/accountTypes.d.ts +1 -0
  451. package/lib/accountTypes.js +31 -31
  452. package/lib/app/__tests__/migrate.test.d.ts +1 -0
  453. package/lib/app/__tests__/migrate.test.js +535 -0
  454. package/lib/app/__tests__/migrate_legacy.test.d.ts +1 -0
  455. package/lib/app/__tests__/migrate_legacy.test.js +134 -0
  456. package/lib/app/migrate.d.ts +19 -6
  457. package/lib/app/migrate.js +212 -156
  458. package/lib/app/migrate_legacy.d.ts +1 -1
  459. package/lib/app/migrate_legacy.js +72 -79
  460. package/lib/app/urls.d.ts +1 -1
  461. package/lib/app/urls.js +5 -9
  462. package/lib/buildAccount.d.ts +12 -3
  463. package/lib/buildAccount.js +165 -69
  464. package/lib/commonOpts.d.ts +3 -1
  465. package/lib/commonOpts.js +77 -57
  466. package/lib/configMigrate.js +34 -38
  467. package/lib/configOptions.d.ts +5 -0
  468. package/lib/configOptions.js +44 -40
  469. package/lib/constants.d.ts +9 -0
  470. package/lib/constants.js +40 -34
  471. package/lib/customObject.js +2 -6
  472. package/lib/dependencyManagement.d.ts +1 -1
  473. package/lib/dependencyManagement.js +37 -45
  474. package/lib/developerTestAccounts.d.ts +1 -1
  475. package/lib/developerTestAccounts.js +34 -39
  476. package/lib/doctor/Diagnosis.d.ts +1 -1
  477. package/lib/doctor/Diagnosis.js +15 -19
  478. package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
  479. package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
  480. package/lib/doctor/Doctor.d.ts +1 -1
  481. package/lib/doctor/Doctor.js +56 -63
  482. package/lib/doctor/__tests__/Diagnosis.test.d.ts +1 -0
  483. package/lib/doctor/__tests__/Diagnosis.test.js +82 -0
  484. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +1 -0
  485. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +167 -0
  486. package/lib/doctor/__tests__/Doctor.test.d.ts +1 -0
  487. package/lib/doctor/__tests__/Doctor.test.js +396 -0
  488. package/lib/enums/exitCodes.js +1 -4
  489. package/lib/errorHandlers/index.js +33 -44
  490. package/lib/errorHandlers/suppressError.d.ts +1 -1
  491. package/lib/errorHandlers/suppressError.js +28 -31
  492. package/lib/errors/ProjectValidationError.d.ts +4 -0
  493. package/lib/errors/ProjectValidationError.js +9 -0
  494. package/lib/filesystem.js +8 -15
  495. package/lib/generateSelectors.js +18 -29
  496. package/lib/hasFeature.d.ts +2 -1
  497. package/lib/hasFeature.js +10 -6
  498. package/lib/importData.d.ts +3 -0
  499. package/lib/importData.js +50 -0
  500. package/lib/interpolation.js +11 -18
  501. package/lib/lang.d.ts +1 -1
  502. package/lib/lang.js +22 -27
  503. package/lib/links.js +16 -24
  504. package/lib/marketplaceValidate.js +29 -39
  505. package/lib/mcp/setup.d.ts +4 -0
  506. package/lib/mcp/setup.js +129 -84
  507. package/lib/middleware/__test__/configMiddleware.test.js +34 -69
  508. package/lib/middleware/__test__/gitMiddleware.test.js +11 -46
  509. package/lib/middleware/__test__/notificationsMiddleware.test.js +1 -3
  510. package/lib/middleware/__test__/requestMiddleware.test.js +8 -13
  511. package/lib/middleware/__test__/utils.test.js +9 -11
  512. package/lib/middleware/__test__/yargsChecksMiddleware.test.js +16 -51
  513. package/lib/middleware/autoUpdateMiddleware.js +33 -40
  514. package/lib/middleware/configMiddleware.js +41 -39
  515. package/lib/middleware/fireAlarmMiddleware.js +12 -18
  516. package/lib/middleware/gitMiddleware.js +5 -8
  517. package/lib/middleware/notificationsMiddleware.js +7 -11
  518. package/lib/middleware/requestMiddleware.js +4 -10
  519. package/lib/middleware/utils.js +1 -4
  520. package/lib/middleware/yargsChecksMiddleware.js +10 -13
  521. package/lib/npm.js +14 -23
  522. package/lib/oauth.js +29 -35
  523. package/lib/parsing.d.ts +1 -0
  524. package/lib/parsing.js +8 -0
  525. package/lib/polling.d.ts +1 -1
  526. package/lib/polling.js +19 -13
  527. package/lib/process.js +26 -23
  528. package/lib/projectProfiles.d.ts +2 -2
  529. package/lib/projectProfiles.js +32 -42
  530. package/lib/projects/ProjectLogsManager.js +18 -21
  531. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +1 -0
  532. package/lib/projects/__tests__/AppDevModeInterface.test.js +512 -0
  533. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +1 -0
  534. package/lib/projects/__tests__/LocalDevProcess.test.js +254 -0
  535. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +1 -0
  536. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +339 -0
  537. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +1 -0
  538. package/lib/projects/__tests__/ProjectLogsManager.test.js +189 -0
  539. package/lib/projects/__tests__/buildAndDeploy.test.d.ts +1 -0
  540. package/lib/projects/__tests__/buildAndDeploy.test.js +23 -0
  541. package/lib/projects/__tests__/components.test.d.ts +1 -0
  542. package/lib/projects/__tests__/components.test.js +181 -0
  543. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +1 -0
  544. package/lib/projects/__tests__/localDevProjectHelpers.test.js +118 -0
  545. package/lib/projects/__tests__/projects.test.d.ts +1 -0
  546. package/lib/projects/__tests__/projects.test.js +84 -0
  547. package/lib/projects/__tests__/structure.test.d.ts +1 -0
  548. package/lib/projects/__tests__/structure.test.js +211 -0
  549. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +1 -0
  550. package/lib/projects/add/__tests__/legacyAddComponent.test.js +204 -0
  551. package/lib/projects/add/__tests__/v3AddComponent.test.d.ts +1 -0
  552. package/lib/projects/add/__tests__/v3AddComponent.test.js +185 -0
  553. package/lib/projects/add/legacyAddComponent.d.ts +1 -1
  554. package/lib/projects/add/legacyAddComponent.js +24 -30
  555. package/lib/projects/add/v3AddComponent.d.ts +1 -1
  556. package/lib/projects/add/v3AddComponent.js +40 -41
  557. package/lib/projects/buildAndDeploy.d.ts +1 -1
  558. package/lib/projects/buildAndDeploy.js +88 -97
  559. package/lib/projects/components.js +19 -25
  560. package/lib/projects/config.d.ts +1 -1
  561. package/lib/projects/config.js +32 -41
  562. package/lib/projects/create/__tests__/legacy.test.d.ts +1 -0
  563. package/lib/projects/create/__tests__/legacy.test.js +91 -0
  564. package/lib/projects/create/__tests__/v3.test.d.ts +1 -0
  565. package/lib/projects/create/__tests__/v3.test.js +78 -0
  566. package/lib/projects/create/index.d.ts +5 -4
  567. package/lib/projects/create/index.js +25 -22
  568. package/lib/projects/create/legacy.d.ts +1 -1
  569. package/lib/projects/create/legacy.js +25 -31
  570. package/lib/projects/create/v3.d.ts +8 -9
  571. package/lib/projects/create/v3.js +48 -60
  572. package/lib/projects/ensureProjectExists.js +31 -37
  573. package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
  574. package/lib/projects/localDev/AppDevModeInterface.js +80 -61
  575. package/lib/projects/localDev/DevServerManager.d.ts +1 -1
  576. package/lib/projects/localDev/DevServerManager.js +22 -27
  577. package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
  578. package/lib/projects/localDev/DevServerManagerV2.js +15 -22
  579. package/lib/projects/localDev/LocalDevLogger.d.ts +1 -5
  580. package/lib/projects/localDev/LocalDevLogger.js +66 -79
  581. package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
  582. package/lib/projects/localDev/LocalDevManager.js +106 -111
  583. package/lib/projects/localDev/LocalDevProcess.d.ts +10 -8
  584. package/lib/projects/localDev/LocalDevProcess.js +55 -64
  585. package/lib/projects/localDev/LocalDevState.d.ts +19 -14
  586. package/lib/projects/localDev/LocalDevState.js +39 -37
  587. package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
  588. package/lib/projects/localDev/LocalDevWatcher.js +7 -12
  589. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -3
  590. package/lib/projects/localDev/LocalDevWebsocketServer.js +78 -55
  591. package/lib/projects/localDev/{helpers.d.ts → helpers/account.d.ts} +3 -9
  592. package/lib/projects/localDev/helpers/account.js +233 -0
  593. package/lib/projects/localDev/helpers/project.d.ts +12 -0
  594. package/lib/projects/localDev/helpers/project.js +174 -0
  595. package/lib/projects/structure.d.ts +3 -3
  596. package/lib/projects/structure.js +32 -78
  597. package/lib/projects/ui.js +10 -13
  598. package/lib/projects/upload.d.ts +1 -1
  599. package/lib/projects/upload.js +57 -73
  600. package/lib/projects/urls.d.ts +2 -1
  601. package/lib/projects/urls.js +19 -25
  602. package/lib/projects/watch.d.ts +1 -1
  603. package/lib/projects/watch.js +48 -54
  604. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +1 -0
  605. package/lib/prompts/__tests__/createFunctionPrompt.test.js +129 -0
  606. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +1 -0
  607. package/lib/prompts/__tests__/createModulePrompt.test.js +187 -0
  608. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +1 -0
  609. package/lib/prompts/__tests__/createTemplatePrompt.test.js +102 -0
  610. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +1 -0
  611. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +28 -0
  612. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +1 -0
  613. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +37 -0
  614. package/lib/prompts/accountNamePrompt.d.ts +1 -1
  615. package/lib/prompts/accountNamePrompt.js +26 -31
  616. package/lib/prompts/accountsPrompt.js +12 -15
  617. package/lib/prompts/cmsFieldPrompt.js +13 -19
  618. package/lib/prompts/confirmImportDataPrompt.d.ts +1 -0
  619. package/lib/prompts/confirmImportDataPrompt.js +12 -0
  620. package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
  621. package/lib/prompts/createApiSamplePrompt.js +9 -12
  622. package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +11 -10
  623. package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +85 -45
  624. package/lib/prompts/createFunctionPrompt.d.ts +2 -1
  625. package/lib/prompts/createFunctionPrompt.js +51 -25
  626. package/lib/prompts/createModulePrompt.d.ts +2 -1
  627. package/lib/prompts/createModulePrompt.js +60 -17
  628. package/lib/prompts/createTemplatePrompt.d.ts +3 -24
  629. package/lib/prompts/createTemplatePrompt.js +13 -8
  630. package/lib/prompts/downloadProjectPrompt.js +17 -20
  631. package/lib/prompts/importDataFilePathPrompt.d.ts +1 -0
  632. package/lib/prompts/importDataFilePathPrompt.js +24 -0
  633. package/lib/prompts/importDataTestAccountSelectPrompt.d.ts +3 -0
  634. package/lib/prompts/importDataTestAccountSelectPrompt.js +29 -0
  635. package/lib/prompts/installAppPrompt.js +19 -26
  636. package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
  637. package/lib/prompts/personalAccessKeyPrompt.js +41 -48
  638. package/lib/prompts/previewPrompt.js +15 -22
  639. package/lib/prompts/projectAddPrompt.d.ts +3 -2
  640. package/lib/prompts/projectAddPrompt.js +14 -17
  641. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
  642. package/lib/prompts/projectDevTargetAccountPrompt.js +49 -54
  643. package/lib/prompts/projectNameAndDestPrompt.d.ts +3 -0
  644. package/lib/prompts/projectNameAndDestPrompt.js +53 -0
  645. package/lib/prompts/projectNamePrompt.js +11 -14
  646. package/lib/prompts/projectsLogsPrompt.js +5 -8
  647. package/lib/prompts/promptUtils.d.ts +5 -4
  648. package/lib/prompts/promptUtils.js +180 -47
  649. package/lib/prompts/sandboxesPrompt.d.ts +1 -1
  650. package/lib/prompts/sandboxesPrompt.js +26 -30
  651. package/lib/prompts/secretPrompt.js +10 -15
  652. package/lib/prompts/selectAppPrompt.js +11 -14
  653. package/lib/prompts/selectHubDBTablePrompt.js +24 -30
  654. package/lib/prompts/selectProjectTemplatePrompt.d.ts +27 -0
  655. package/lib/prompts/selectProjectTemplatePrompt.js +69 -0
  656. package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
  657. package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
  658. package/lib/prompts/uploadPrompt.js +11 -17
  659. package/lib/sandboxSync.d.ts +1 -1
  660. package/lib/sandboxSync.js +58 -65
  661. package/lib/sandboxes.d.ts +5 -1
  662. package/lib/sandboxes.js +72 -76
  663. package/lib/schema.js +16 -19
  664. package/lib/serverlessLogs.js +45 -52
  665. package/lib/testUtils.js +5 -10
  666. package/lib/ui/SpinniesManager.d.ts +1 -1
  667. package/lib/ui/SpinniesManager.js +29 -35
  668. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +1 -0
  669. package/lib/ui/__tests__/removeAnsiCodes.test.js +84 -0
  670. package/lib/ui/boxen.js +11 -14
  671. package/lib/ui/git.js +14 -20
  672. package/lib/ui/index.d.ts +6 -0
  673. package/lib/ui/index.js +57 -77
  674. package/lib/ui/logger.d.ts +1 -0
  675. package/lib/ui/logger.js +11 -13
  676. package/lib/ui/removeAnsiCodes.d.ts +1 -0
  677. package/lib/ui/removeAnsiCodes.js +4 -0
  678. package/lib/ui/serverlessFunctionLogs.js +14 -20
  679. package/lib/ui/spinniesUtils.js +24 -39
  680. package/lib/ui/supportHyperlinks.js +3 -6
  681. package/lib/ui/supportsColor.js +11 -17
  682. package/lib/ui/table.js +6 -13
  683. package/lib/upload.js +15 -21
  684. package/lib/usageTracking.d.ts +11 -0
  685. package/lib/usageTracking.js +88 -103
  686. package/lib/utils/hasFlag.d.ts +1 -0
  687. package/lib/utils/hasFlag.js +9 -0
  688. package/lib/validation.d.ts +1 -1
  689. package/lib/validation.js +50 -89
  690. package/lib/yargsUtils.d.ts +4 -1
  691. package/lib/yargsUtils.js +21 -25
  692. package/mcp-server/server.js +7 -8
  693. package/mcp-server/tools/cms/HsListTool.d.ts +23 -0
  694. package/mcp-server/tools/cms/HsListTool.js +58 -0
  695. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +1 -0
  696. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +120 -0
  697. package/mcp-server/tools/index.d.ts +1 -0
  698. package/mcp-server/tools/index.js +23 -16
  699. package/mcp-server/tools/project/{AddFeatureToProject.d.ts → AddFeatureToProjectTool.d.ts} +5 -5
  700. package/mcp-server/tools/project/AddFeatureToProjectTool.js +76 -0
  701. package/mcp-server/tools/project/CreateProjectTool.d.ts +6 -6
  702. package/mcp-server/tools/project/CreateProjectTool.js +42 -53
  703. package/mcp-server/tools/project/{DeployProject.d.ts → DeployProjectTool.d.ts} +2 -2
  704. package/mcp-server/tools/project/DeployProjectTool.js +49 -0
  705. package/mcp-server/tools/project/DocFetchTool.d.ts +17 -0
  706. package/mcp-server/tools/project/DocFetchTool.js +49 -0
  707. package/mcp-server/tools/project/DocsSearchTool.d.ts +26 -0
  708. package/mcp-server/tools/project/DocsSearchTool.js +62 -0
  709. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +20 -0
  710. package/mcp-server/tools/project/GetConfigValuesTool.js +52 -0
  711. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
  712. package/mcp-server/tools/project/GuidedWalkthroughTool.js +23 -24
  713. package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
  714. package/mcp-server/tools/project/UploadProjectTools.js +14 -18
  715. package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
  716. package/mcp-server/tools/project/ValidateProjectTool.js +15 -16
  717. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +1 -0
  718. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +151 -0
  719. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +1 -0
  720. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +127 -0
  721. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +1 -0
  722. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +119 -0
  723. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +1 -0
  724. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +117 -0
  725. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +1 -0
  726. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +190 -0
  727. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +1 -0
  728. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +198 -0
  729. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +1 -0
  730. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +126 -0
  731. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +1 -0
  732. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +107 -0
  733. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +1 -0
  734. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +110 -0
  735. package/mcp-server/tools/project/constants.d.ts +3 -0
  736. package/mcp-server/tools/project/constants.js +20 -9
  737. package/mcp-server/types.js +1 -5
  738. package/mcp-server/utils/__tests__/command.test.d.ts +1 -0
  739. package/mcp-server/utils/__tests__/command.test.js +45 -0
  740. package/mcp-server/utils/__tests__/project.test.d.ts +1 -0
  741. package/mcp-server/utils/__tests__/project.test.js +79 -0
  742. package/mcp-server/utils/command.d.ts +1 -1
  743. package/mcp-server/utils/command.js +4 -11
  744. package/mcp-server/utils/content.d.ts +1 -1
  745. package/mcp-server/utils/content.js +2 -6
  746. package/mcp-server/utils/project.js +11 -14
  747. package/mcp-server/utils/toolUsageTracking.d.ts +3 -0
  748. package/mcp-server/utils/toolUsageTracking.js +23 -0
  749. package/package.json +28 -21
  750. package/types/Cms.d.ts +17 -1
  751. package/types/Cms.js +25 -2
  752. package/types/LocalDev.d.ts +5 -7
  753. package/types/LocalDev.js +1 -2
  754. package/types/ProjectComponents.d.ts +2 -2
  755. package/types/ProjectComponents.js +1 -2
  756. package/types/Projects.d.ts +1 -1
  757. package/types/Projects.js +2 -5
  758. package/types/Prompts.d.ts +5 -2
  759. package/types/Prompts.js +1 -2
  760. package/types/Sandboxes.js +1 -2
  761. package/types/Yargs.d.ts +5 -1
  762. package/types/Yargs.js +1 -2
  763. package/ui/index.d.ts +1 -0
  764. package/ui/index.js +6 -0
  765. package/lib/projects/localDev/helpers.js +0 -351
  766. package/lib/prompts/createProjectPrompt.d.ts +0 -28
  767. package/lib/prompts/createProjectPrompt.js +0 -120
  768. package/mcp-server/tools/project/AddFeatureToProject.js +0 -85
  769. package/mcp-server/tools/project/DeployProject.js +0 -50
@@ -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-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
+ });
@@ -0,0 +1,126 @@
1
+ import { GuidedWalkthroughTool } from '../GuidedWalkthroughTool.js';
2
+ import { execAsync } from '../../../utils/command.js';
3
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
4
+ vi.mock('../../../utils/command');
5
+ vi.mock('../../../utils/toolUsageTracking');
6
+ const mockExecAsync = execAsync;
7
+ describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
8
+ let mockMcpServer;
9
+ let tool;
10
+ let mockRegisteredTool;
11
+ beforeEach(() => {
12
+ vi.clearAllMocks();
13
+ // @ts-expect-error Not mocking whole server
14
+ mockMcpServer = {
15
+ registerTool: vi.fn(),
16
+ };
17
+ mockRegisteredTool = {};
18
+ mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
19
+ tool = new GuidedWalkthroughTool(mockMcpServer);
20
+ });
21
+ describe('register', () => {
22
+ it('should register tool with correct parameters', () => {
23
+ const result = tool.register();
24
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('guided-walkthrough-hubspot-cli', {
25
+ title: 'Guided walkthrough of the CLI',
26
+ description: 'Give the user a guided walkthrough of the HubSpot CLI.',
27
+ inputSchema: expect.any(Object),
28
+ }, tool.handler);
29
+ expect(result).toBe(mockRegisteredTool);
30
+ });
31
+ });
32
+ describe('handler', () => {
33
+ it('should show help for hs init command', async () => {
34
+ const helpOutput = 'Usage: hs init [options]\nInitialize HubSpot CLI';
35
+ mockExecAsync.mockResolvedValue({
36
+ stdout: helpOutput,
37
+ stderr: '',
38
+ });
39
+ const result = await tool.handler({ command: 'hs init' });
40
+ expect(mockExecAsync).toHaveBeenCalledWith('hs init --help');
41
+ expect(result.content).toHaveLength(1);
42
+ expect(result.content[0].text).toContain(helpOutput);
43
+ expect(result.content[0].text).toContain('hs auth');
44
+ });
45
+ it('should show help for hs auth command', async () => {
46
+ const helpOutput = 'Usage: hs auth [options]\nAuthenticate with HubSpot';
47
+ mockExecAsync.mockResolvedValue({
48
+ stdout: helpOutput,
49
+ stderr: '',
50
+ });
51
+ const result = await tool.handler({ command: 'hs auth' });
52
+ expect(mockExecAsync).toHaveBeenCalledWith('hs auth --help');
53
+ expect(result.content[0].text).toContain(helpOutput);
54
+ expect(result.content[0].text).toContain('hs project create');
55
+ });
56
+ it('should show help for hs project create command', async () => {
57
+ const helpOutput = 'Usage: hs project create [options]\nCreate a new project';
58
+ mockExecAsync.mockResolvedValue({
59
+ stdout: helpOutput,
60
+ stderr: '',
61
+ });
62
+ const result = await tool.handler({ command: 'hs project create' });
63
+ expect(mockExecAsync).toHaveBeenCalledWith('hs project create --help');
64
+ expect(result.content[0].text).toContain(helpOutput);
65
+ expect(result.content[0].text).toContain('hs project upload');
66
+ });
67
+ it('should show help for hs project upload command', async () => {
68
+ const helpOutput = 'Usage: hs project upload [options]\nUpload project to HubSpot';
69
+ mockExecAsync.mockResolvedValue({
70
+ stdout: helpOutput,
71
+ stderr: '',
72
+ });
73
+ const result = await tool.handler({ command: 'hs project upload' });
74
+ expect(mockExecAsync).toHaveBeenCalledWith('hs project upload --help');
75
+ expect(result.content[0].text).toContain(helpOutput);
76
+ expect(result.content[0].text).toContain('hs project dev');
77
+ });
78
+ it('should handle command without next step', async () => {
79
+ const helpOutput = 'Usage: hs project dev [options]\nStart development server';
80
+ mockExecAsync.mockResolvedValue({
81
+ stdout: helpOutput,
82
+ stderr: '',
83
+ });
84
+ // Test with a command that doesn't have a next command
85
+ const result = await tool.handler({ command: 'hs project upload' });
86
+ expect(result.content[0].text).toContain(helpOutput);
87
+ expect(result.content[0].text).toContain('hs project dev');
88
+ });
89
+ it('should handle no command provided', async () => {
90
+ const result = await tool.handler({});
91
+ expect(mockExecAsync).not.toHaveBeenCalled();
92
+ expect(result.content).toEqual([
93
+ {
94
+ type: 'text',
95
+ text: 'Is there another command you would like to learn more about?',
96
+ },
97
+ ]);
98
+ });
99
+ it('should handle undefined command', async () => {
100
+ const result = await tool.handler({ command: undefined });
101
+ expect(mockExecAsync).not.toHaveBeenCalled();
102
+ expect(result.content).toEqual([
103
+ {
104
+ type: 'text',
105
+ text: 'Is there another command you would like to learn more about?',
106
+ },
107
+ ]);
108
+ });
109
+ it('should handle execAsync errors', async () => {
110
+ const error = new Error('Command not found');
111
+ mockExecAsync.mockRejectedValue(error);
112
+ await expect(tool.handler({ command: 'hs init' })).rejects.toThrow('Command not found');
113
+ });
114
+ it('should format help text with proper instructions', async () => {
115
+ const helpOutput = 'Usage: hs init\nOptions:\n --help Show help';
116
+ mockExecAsync.mockResolvedValue({
117
+ stdout: helpOutput,
118
+ stderr: '',
119
+ });
120
+ const result = await tool.handler({ command: 'hs init' });
121
+ expect(result.content[0].text).toContain('Display this help output for the user amd wait for them to acknowledge:');
122
+ expect(result.content[0].text).toContain(helpOutput);
123
+ expect(result.content[0].text).toContain('Once they are ready, A good command to look at next is hs auth');
124
+ });
125
+ });
126
+ });
@@ -0,0 +1,107 @@
1
+ import { UploadProjectTools } from '../UploadProjectTools.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
3
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
4
+ vi.mock('../../../utils/project');
5
+ vi.mock('../../../utils/toolUsageTracking');
6
+ const mockRunCommandInDir = runCommandInDir;
7
+ describe('mcp-server/tools/project/UploadProjectTools', () => {
8
+ let mockMcpServer;
9
+ let tool;
10
+ let mockRegisteredTool;
11
+ beforeEach(() => {
12
+ vi.clearAllMocks();
13
+ // @ts-expect-error noy mocking whole server
14
+ mockMcpServer = {
15
+ registerTool: vi.fn(),
16
+ };
17
+ mockRegisteredTool = {};
18
+ mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
19
+ tool = new UploadProjectTools(mockMcpServer);
20
+ });
21
+ describe('register', () => {
22
+ it('should register tool with correct parameters', () => {
23
+ const result = tool.register();
24
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('upload-hubspot-project', {
25
+ title: 'Upload HubSpot Project',
26
+ description: expect.stringContaining('Uploads the HubSpot project in current working directory.'),
27
+ inputSchema: expect.any(Object),
28
+ }, tool.handler);
29
+ expect(result).toBe(mockRegisteredTool);
30
+ });
31
+ });
32
+ describe('handler', () => {
33
+ const input = {
34
+ absoluteProjectPath: '/test/project',
35
+ };
36
+ it('should upload project successfully', async () => {
37
+ mockRunCommandInDir.mockResolvedValue({
38
+ stdout: 'Project uploaded successfully',
39
+ stderr: '',
40
+ });
41
+ const result = await tool.handler(input);
42
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', 'hs project upload --force-create');
43
+ expect(result).toEqual({
44
+ content: [
45
+ { type: 'text', text: 'Project uploaded successfully' },
46
+ { type: 'text', text: '' },
47
+ ],
48
+ });
49
+ });
50
+ it('should handle upload with warnings', async () => {
51
+ mockRunCommandInDir.mockResolvedValue({
52
+ stdout: 'Project uploaded with warnings',
53
+ stderr: 'Warning: some files were ignored',
54
+ });
55
+ const result = await tool.handler(input);
56
+ expect(result.content).toEqual([
57
+ { type: 'text', text: 'Project uploaded with warnings' },
58
+ { type: 'text', text: 'Warning: some files were ignored' },
59
+ ]);
60
+ });
61
+ it('should handle upload errors', async () => {
62
+ const error = new Error('Upload failed');
63
+ mockRunCommandInDir.mockRejectedValue(error);
64
+ await expect(tool.handler(input)).rejects.toThrow('Upload failed');
65
+ });
66
+ it('should use force-create flag', async () => {
67
+ mockRunCommandInDir.mockResolvedValue({
68
+ stdout: 'Project created and uploaded',
69
+ stderr: '',
70
+ });
71
+ await tool.handler(input);
72
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', 'hs project upload --force-create');
73
+ });
74
+ it('should handle empty stdout and stderr', async () => {
75
+ mockRunCommandInDir.mockResolvedValue({
76
+ stdout: '',
77
+ stderr: '',
78
+ });
79
+ const result = await tool.handler(input);
80
+ expect(result.content).toEqual([
81
+ { type: 'text', text: '' },
82
+ { type: 'text', text: '' },
83
+ ]);
84
+ });
85
+ it('should work with different project paths', async () => {
86
+ mockRunCommandInDir.mockResolvedValue({
87
+ stdout: 'Upload complete',
88
+ stderr: '',
89
+ });
90
+ const differentInput = {
91
+ absoluteProjectPath: '/different/path/to/project',
92
+ };
93
+ await tool.handler(differentInput);
94
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/different/path/to/project', 'hs project upload --force-create');
95
+ });
96
+ it('should handle very long output', async () => {
97
+ const longOutput = 'A'.repeat(10000);
98
+ mockRunCommandInDir.mockResolvedValue({
99
+ stdout: longOutput,
100
+ stderr: 'Long stderr output',
101
+ });
102
+ const result = await tool.handler(input);
103
+ expect(result.content[0].text).toBe(longOutput);
104
+ expect(result.content[1].text).toBe('Long stderr output');
105
+ });
106
+ });
107
+ });
@@ -0,0 +1,110 @@
1
+ import { ValidateProjectTool, } from '../ValidateProjectTool.js';
2
+ import { runCommandInDir } from '../../../utils/project.js';
3
+ vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
4
+ vi.mock('../../../utils/project');
5
+ vi.mock('../../../utils/toolUsageTracking');
6
+ const mockRunCommandInDir = runCommandInDir;
7
+ describe('mcp-server/tools/project/ValidateProjectTool', () => {
8
+ let mockMcpServer;
9
+ let tool;
10
+ let mockRegisteredTool;
11
+ beforeEach(() => {
12
+ vi.clearAllMocks();
13
+ // @ts-expect-error Not mocking the whole thing
14
+ mockMcpServer = {
15
+ registerTool: vi.fn(),
16
+ };
17
+ mockRegisteredTool = {};
18
+ mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
19
+ tool = new ValidateProjectTool(mockMcpServer);
20
+ });
21
+ describe('register', () => {
22
+ it('should register tool with correct parameters', () => {
23
+ const result = tool.register();
24
+ expect(mockMcpServer.registerTool).toHaveBeenCalledWith('validate-hubspot-project', {
25
+ title: expect.stringContaining('Validate HubSpot Project'),
26
+ description: expect.stringContaining('Validates the HubSpot project and its configuration files.'),
27
+ inputSchema: expect.any(Object),
28
+ }, tool.handler);
29
+ expect(result).toBe(mockRegisteredTool);
30
+ });
31
+ });
32
+ describe('handler', () => {
33
+ const input = {
34
+ absoluteProjectPath: '/test/project',
35
+ };
36
+ it('should validate project successfully', async () => {
37
+ mockRunCommandInDir.mockResolvedValue({
38
+ stdout: 'Project validation successful',
39
+ stderr: '',
40
+ });
41
+ const result = await tool.handler(input);
42
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/project', 'hs project validate');
43
+ expect(result).toEqual({
44
+ content: [
45
+ { type: 'text', text: 'Project validation successful' },
46
+ { type: 'text', text: '' },
47
+ ],
48
+ });
49
+ });
50
+ it('should handle validation with warnings', async () => {
51
+ mockRunCommandInDir.mockResolvedValue({
52
+ stdout: 'Project is valid',
53
+ stderr: 'Warning: some files may need updates',
54
+ });
55
+ const result = await tool.handler(input);
56
+ expect(result.content).toEqual([
57
+ { type: 'text', text: 'Project is valid' },
58
+ { type: 'text', text: 'Warning: some files may need updates' },
59
+ ]);
60
+ });
61
+ it('should handle validation errors', async () => {
62
+ const error = new Error('Validation failed');
63
+ mockRunCommandInDir.mockRejectedValue(error);
64
+ const result = await tool.handler(input);
65
+ expect(result).toEqual({
66
+ content: [{ type: 'text', text: 'Validation failed' }],
67
+ });
68
+ });
69
+ it('should handle non-Error rejection', async () => {
70
+ mockRunCommandInDir.mockRejectedValue('String error');
71
+ const result = await tool.handler(input);
72
+ expect(result).toEqual({
73
+ content: [{ type: 'text', text: 'String error' }],
74
+ });
75
+ });
76
+ it('should handle empty stdout and stderr', async () => {
77
+ mockRunCommandInDir.mockResolvedValue({
78
+ stdout: 'stdout',
79
+ stderr: 'stderr',
80
+ });
81
+ const result = await tool.handler(input);
82
+ expect(result.content).toEqual([
83
+ { type: 'text', text: 'stdout' },
84
+ { type: 'text', text: 'stderr' },
85
+ ]);
86
+ });
87
+ it('should work with different project paths', async () => {
88
+ mockRunCommandInDir.mockResolvedValue({
89
+ stdout: 'Validation complete',
90
+ stderr: '',
91
+ });
92
+ const differentInput = {
93
+ absoluteProjectPath: '/different/path/to/project',
94
+ };
95
+ await tool.handler(differentInput);
96
+ expect(mockRunCommandInDir).toHaveBeenCalledWith('/different/path/to/project', 'hs project validate');
97
+ });
98
+ it('should handle validation errors with stderr', async () => {
99
+ mockRunCommandInDir.mockResolvedValue({
100
+ stdout: '',
101
+ stderr: 'Error: Missing required configuration file',
102
+ });
103
+ const result = await tool.handler(input);
104
+ expect(result.content).toEqual([
105
+ { type: 'text', text: '' },
106
+ { type: 'text', text: 'Error: Missing required configuration file' },
107
+ ]);
108
+ });
109
+ });
110
+ });
@@ -1,3 +1,6 @@
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">>;
5
+ export declare const docsSearchQuery: z.ZodString;
6
+ export declare const docUrl: z.ZodString;
@@ -1,13 +1,24 @@
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();
19
+ export const docsSearchQuery = z
20
+ .string()
21
+ .describe('The query to search the HubSpot Developer Documentation for.');
22
+ export const docUrl = z
23
+ .string()
24
+ .describe('The URL of the HubSpot Developer Documentation to fetch.');
@@ -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;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,45 @@
1
+ import { addFlag } from '../command.js';
2
+ vi.mock('child_process');
3
+ vi.mock('util');
4
+ describe('mcp-server/utils/command', () => {
5
+ describe('addFlag', () => {
6
+ it('should add string flag to command', () => {
7
+ const result = addFlag('hs project create', 'name', 'test-project');
8
+ expect(result).toBe('hs project create --name "test-project"');
9
+ });
10
+ it('should add number flag to command', () => {
11
+ const result = addFlag('hs project deploy', 'build', 123);
12
+ expect(result).toBe('hs project deploy --build "123"');
13
+ });
14
+ it('should add boolean flag to command', () => {
15
+ const result = addFlag('hs project upload', 'watch', true);
16
+ expect(result).toBe('hs project upload --watch "true"');
17
+ });
18
+ it('should add array flag to command', () => {
19
+ const result = addFlag('hs project create', 'features', [
20
+ 'card',
21
+ 'settings',
22
+ ]);
23
+ expect(result).toBe('hs project create --features "card" "settings"');
24
+ });
25
+ it('should handle empty array', () => {
26
+ const result = addFlag('hs project create', 'features', []);
27
+ expect(result).toBe('hs project create --features ');
28
+ });
29
+ it('should handle array with one item', () => {
30
+ const result = addFlag('hs project create', 'features', ['card']);
31
+ expect(result).toBe('hs project create --features "card"');
32
+ });
33
+ it('should handle special characters in string values', () => {
34
+ const result = addFlag('hs project create', 'name', 'my-project with spaces');
35
+ expect(result).toBe('hs project create --name "my-project with spaces"');
36
+ });
37
+ it('should handle special characters in array values', () => {
38
+ const result = addFlag('hs project create', 'features', [
39
+ 'card with spaces',
40
+ 'settings',
41
+ ]);
42
+ expect(result).toBe('hs project create --features "card with spaces" "settings"');
43
+ });
44
+ });
45
+ });
@@ -0,0 +1 @@
1
+ export {};