@hubspot/cli 8.1.0 → 8.1.2-experimental.0

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