@hubspot/cli 8.1.0 → 8.1.1-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 (676) hide show
  1. package/api/migrate.js +8 -4
  2. package/bin/cli.js +12 -6
  3. package/commands/account/auth.js +7 -7
  4. package/commands/account/clean.js +7 -6
  5. package/commands/account/createOverride.js +10 -7
  6. package/commands/account/info.js +36 -17
  7. package/commands/account/link.d.ts +4 -0
  8. package/commands/account/link.js +89 -0
  9. package/commands/account/list.js +32 -76
  10. package/commands/account/remove.js +4 -3
  11. package/commands/account/removeOverride.js +11 -10
  12. package/commands/account/rename.js +5 -6
  13. package/commands/account/unlink.d.ts +4 -0
  14. package/commands/account/unlink.js +70 -0
  15. package/commands/account/use.js +75 -6
  16. package/commands/account.js +4 -0
  17. package/commands/api.d.ts +10 -0
  18. package/commands/api.js +164 -0
  19. package/commands/app/migrate.js +13 -13
  20. package/commands/app/secret/add.js +6 -7
  21. package/commands/app/secret/delete.js +9 -10
  22. package/commands/app/secret/list.js +6 -7
  23. package/commands/app/secret/update.js +8 -9
  24. package/commands/auth.js +19 -15
  25. package/commands/cms/app/create.js +9 -5
  26. package/commands/cms/convertFields.js +8 -8
  27. package/commands/cms/delete.js +2 -3
  28. package/commands/cms/fetch.js +7 -7
  29. package/commands/cms/function/create.js +9 -5
  30. package/commands/cms/function/deploy.js +2 -3
  31. package/commands/cms/function/list.js +11 -7
  32. package/commands/cms/function/logs.js +17 -22
  33. package/commands/cms/function/server.js +2 -3
  34. package/commands/cms/getReactModule.js +7 -8
  35. package/commands/cms/lighthouseScore.js +25 -24
  36. package/commands/cms/lint.js +4 -5
  37. package/commands/cms/list.js +5 -6
  38. package/commands/cms/module/create.js +9 -5
  39. package/commands/cms/module/marketplace-validate.js +7 -8
  40. package/commands/cms/mv.js +2 -3
  41. package/commands/cms/template/create.js +10 -6
  42. package/commands/cms/theme/create.js +5 -5
  43. package/commands/cms/theme/generate-selectors.js +5 -4
  44. package/commands/cms/theme/marketplace-validate.js +8 -9
  45. package/commands/cms/theme/preview.js +23 -70
  46. package/commands/cms/upload.js +15 -12
  47. package/commands/cms/watch.d.ts +0 -1
  48. package/commands/cms/watch.js +6 -12
  49. package/commands/cms/webpack/create.js +5 -5
  50. package/commands/completion.js +3 -5
  51. package/commands/config/migrate.js +6 -7
  52. package/commands/config/set.js +5 -6
  53. package/commands/customObject/create.js +4 -5
  54. package/commands/customObject/createSchema.js +4 -5
  55. package/commands/customObject/deleteSchema.js +4 -5
  56. package/commands/customObject/fetchAllSchemas.js +2 -3
  57. package/commands/customObject/fetchSchema.js +2 -3
  58. package/commands/customObject/listSchemas.js +2 -3
  59. package/commands/customObject/updateSchema.js +4 -5
  60. package/commands/doctor.js +8 -8
  61. package/commands/feedback.js +7 -5
  62. package/commands/filemanager/fetch.js +5 -6
  63. package/commands/filemanager/upload.js +5 -5
  64. package/commands/getStarted.js +17 -19
  65. package/commands/hubdb/clear.js +6 -3
  66. package/commands/hubdb/create.js +4 -5
  67. package/commands/hubdb/delete.js +9 -6
  68. package/commands/hubdb/fetch.js +6 -3
  69. package/commands/hubdb/list.js +16 -14
  70. package/commands/init.js +15 -14
  71. package/commands/mcp/setup.js +5 -14
  72. package/commands/mcp/start.js +2 -4
  73. package/commands/open.js +4 -5
  74. package/commands/project/add.js +13 -8
  75. package/commands/project/appInstallStatus.d.ts +4 -0
  76. package/commands/project/appInstallStatus.js +132 -0
  77. package/commands/project/create.js +28 -17
  78. package/commands/project/delete.d.ts +7 -0
  79. package/commands/project/delete.js +74 -0
  80. package/commands/project/deploy.js +39 -36
  81. package/commands/project/dev/deprecatedFlow.js +62 -17
  82. package/commands/project/dev/index.d.ts +3 -3
  83. package/commands/project/dev/index.js +59 -48
  84. package/commands/project/dev/unifiedFlow.js +70 -21
  85. package/commands/project/download.js +12 -9
  86. package/commands/project/info.d.ts +4 -0
  87. package/commands/project/info.js +67 -0
  88. package/commands/project/installDeps.js +9 -6
  89. package/commands/project/lint.js +31 -10
  90. package/commands/project/list.d.ts +2 -2
  91. package/commands/project/list.js +15 -14
  92. package/commands/project/listBuilds.js +8 -6
  93. package/commands/project/logs.js +5 -6
  94. package/commands/project/migrate.js +18 -18
  95. package/commands/project/open.js +5 -6
  96. package/commands/project/profile/add.js +12 -8
  97. package/commands/project/profile/delete.js +15 -11
  98. package/commands/project/updateDeps.js +9 -6
  99. package/commands/project/upload.d.ts +1 -0
  100. package/commands/project/upload.js +39 -19
  101. package/commands/project/validate.js +12 -12
  102. package/commands/project/watch.js +32 -19
  103. package/commands/project.js +12 -3
  104. package/commands/sandbox/create.js +18 -45
  105. package/commands/sandbox/delete.js +13 -14
  106. package/commands/secret/addSecret.js +6 -7
  107. package/commands/secret/deleteSecret.js +5 -6
  108. package/commands/secret/listSecret.js +2 -3
  109. package/commands/secret/updateSecret.js +4 -5
  110. package/commands/testAccount/create.d.ts +1 -1
  111. package/commands/testAccount/create.js +25 -17
  112. package/commands/testAccount/createConfig.js +7 -8
  113. package/commands/testAccount/delete.js +27 -18
  114. package/commands/testAccount/importData.js +6 -7
  115. package/commands/upgrade.js +9 -10
  116. package/lang/en.d.ts +258 -14
  117. package/lang/en.js +275 -28
  118. package/lib/accountAuth.js +4 -0
  119. package/lib/api/usageTracking.d.ts +29 -0
  120. package/lib/api/usageTracking.js +28 -0
  121. package/lib/app/migrate.js +18 -5
  122. package/lib/buildAccount.d.ts +1 -6
  123. package/lib/buildAccount.js +9 -42
  124. package/lib/commandSuggestion.js +1 -7
  125. package/lib/constants.d.ts +2 -4
  126. package/lib/constants.js +4 -4
  127. package/lib/doctor/Diagnosis.js +5 -5
  128. package/lib/doctor/Doctor.js +7 -7
  129. package/lib/errorHandlers/index.js +4 -3
  130. package/lib/errorHandlers/suppressError.js +4 -0
  131. package/lib/errors/PromptExitError.d.ts +6 -0
  132. package/lib/errors/PromptExitError.js +11 -0
  133. package/lib/generateSelectors.js +1 -2
  134. package/lib/getStartedV2Actions.d.ts +13 -0
  135. package/lib/getStartedV2Actions.js +56 -3
  136. package/lib/hasFeature.js +1 -2
  137. package/lib/link/accountTableUtils.d.ts +10 -0
  138. package/lib/link/accountTableUtils.js +39 -0
  139. package/lib/link/index.d.ts +18 -0
  140. package/lib/link/index.js +185 -0
  141. package/lib/link/linkUtils.d.ts +5 -0
  142. package/lib/link/linkUtils.js +49 -0
  143. package/lib/link/prompts.d.ts +7 -0
  144. package/lib/link/prompts.js +126 -0
  145. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  146. package/lib/link/renderLinkedAccountsTable.js +14 -0
  147. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  148. package/lib/link/warnIfLinkedDirectory.js +9 -0
  149. package/lib/mcp/setup.d.ts +1 -0
  150. package/lib/mcp/setup.js +77 -30
  151. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  152. package/lib/process.d.ts +1 -1
  153. package/lib/process.js +10 -3
  154. package/lib/projects/ProjectLogsManager.js +6 -3
  155. package/lib/projects/components.js +15 -4
  156. package/lib/projects/create/index.js +3 -6
  157. package/lib/projects/create/legacy.js +5 -10
  158. package/lib/projects/create/v2.js +5 -14
  159. package/lib/projects/delete.d.ts +13 -0
  160. package/lib/projects/delete.js +193 -0
  161. package/lib/projects/deploy.d.ts +1 -1
  162. package/lib/projects/deploy.js +2 -2
  163. package/lib/projects/ensureProjectExists.js +1 -2
  164. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  165. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  166. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  167. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  168. package/lib/projects/localDev/DevSessionManager.js +31 -19
  169. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  170. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  171. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  172. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  173. package/lib/projects/localDev/LocalDevState.js +3 -1
  174. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  175. package/lib/projects/localDev/helpers/account.js +21 -30
  176. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  177. package/lib/projects/localDev/helpers/process.js +4 -10
  178. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  179. package/lib/projects/localDev/helpers/project.js +31 -15
  180. package/lib/projects/npmAuditOnUpload.d.ts +10 -0
  181. package/lib/projects/npmAuditOnUpload.js +73 -0
  182. package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
  183. package/lib/projects/projectInfo.d.ts +5 -0
  184. package/lib/projects/projectInfo.js +82 -0
  185. package/lib/projects/projectProfiles.d.ts +1 -2
  186. package/lib/projects/projectProfiles.js +5 -17
  187. package/lib/projects/uieLinting.d.ts +17 -3
  188. package/lib/projects/uieLinting.js +93 -28
  189. package/lib/projects/upload.d.ts +3 -1
  190. package/lib/projects/upload.js +70 -50
  191. package/lib/projects/watch.d.ts +2 -1
  192. package/lib/projects/watch.js +32 -24
  193. package/lib/projects/workspaces.d.ts +42 -0
  194. package/lib/projects/workspaces.js +350 -0
  195. package/lib/prompts/createApiSamplePrompt.js +4 -0
  196. package/lib/prompts/downloadProjectPrompt.js +11 -10
  197. package/lib/prompts/installAppPrompt.js +3 -2
  198. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  199. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  200. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  201. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  202. package/lib/prompts/projectProfilePrompt.js +46 -0
  203. package/lib/prompts/projectsLogsPrompt.js +3 -0
  204. package/lib/prompts/promptUtils.js +4 -2
  205. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  206. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  207. package/lib/sandboxes.d.ts +1 -9
  208. package/lib/sandboxes.js +0 -21
  209. package/lib/serverlessLogs.js +50 -44
  210. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  211. package/lib/theme/cmsDevServerProcess.js +149 -0
  212. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  213. package/lib/theme/cmsDevServerRunner.js +90 -0
  214. package/lib/theme/migrate.d.ts +1 -1
  215. package/lib/theme/migrate.js +1 -5
  216. package/lib/ui/SpinniesManager.d.ts +1 -0
  217. package/lib/ui/SpinniesManager.js +22 -6
  218. package/lib/ui/accountTable.d.ts +8 -0
  219. package/lib/ui/accountTable.js +67 -0
  220. package/lib/ui/spinniesUtils.d.ts +0 -1
  221. package/lib/ui/spinniesUtils.js +6 -16
  222. package/lib/usageTracking.d.ts +9 -20
  223. package/lib/usageTracking.js +51 -34
  224. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  225. package/lib/yargs/makeYargsBuilder.js +33 -0
  226. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  227. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +121 -0
  228. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  229. package/lib/yargs/parseYargsOrExit.js +25 -0
  230. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  231. package/lib/yargs/strictEnforceBoolean.js +13 -0
  232. package/lib/yargsUtils.d.ts +3 -16
  233. package/lib/yargsUtils.js +3 -48
  234. package/mcp-server/Tool.d.ts +15 -0
  235. package/mcp-server/Tool.js +53 -0
  236. package/mcp-server/server.js +43 -3
  237. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  238. package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
  239. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  240. package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
  241. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  242. package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
  243. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  244. package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
  245. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  246. package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
  247. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  248. package/mcp-server/tools/cms/HsListTool.js +9 -7
  249. package/mcp-server/tools/index.d.ts +3 -2
  250. package/mcp-server/tools/index.js +24 -22
  251. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  252. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  253. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  254. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  255. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  256. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  257. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  258. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  259. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  260. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  261. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  262. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  263. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  264. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  265. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  266. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  267. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  268. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  269. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  270. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  271. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  272. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  273. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  274. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  275. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  276. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  277. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  278. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  279. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  280. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  281. package/mcp-server/tools/project/constants.d.ts +13 -1
  282. package/mcp-server/tools/project/constants.js +13 -16
  283. package/mcp-server/types.d.ts +0 -7
  284. package/mcp-server/types.js +1 -13
  285. package/mcp-server/utils/command.d.ts +5 -0
  286. package/mcp-server/utils/command.js +24 -0
  287. package/mcp-server/utils/feedbackTracking.js +2 -17
  288. package/mcp-server/utils/logger.d.ts +10 -0
  289. package/mcp-server/utils/logger.js +29 -0
  290. package/mcp-server/utils/toolUsageTracking.js +10 -8
  291. package/package.json +15 -11
  292. package/types/Link.d.ts +32 -0
  293. package/types/Link.js +5 -0
  294. package/types/LocalDev.d.ts +5 -0
  295. package/types/PackageJson.d.ts +1 -0
  296. package/types/Projects.d.ts +19 -0
  297. package/types/Prompts.d.ts +1 -0
  298. package/types/Yargs.d.ts +19 -1
  299. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  300. package/ui/components/getStarted/reducer.d.ts +20 -0
  301. package/ui/components/getStarted/reducer.js +36 -0
  302. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  303. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  304. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  305. package/ui/lib/constants.d.ts +1 -0
  306. package/ui/lib/constants.js +1 -0
  307. package/api/__tests__/migrate.test.d.ts +0 -1
  308. package/api/__tests__/migrate.test.js +0 -199
  309. package/commands/__tests__/account.test.d.ts +0 -1
  310. package/commands/__tests__/account.test.js +0 -69
  311. package/commands/__tests__/auth.test.d.ts +0 -1
  312. package/commands/__tests__/auth.test.js +0 -43
  313. package/commands/__tests__/cms.test.d.ts +0 -1
  314. package/commands/__tests__/cms.test.js +0 -87
  315. package/commands/__tests__/config.test.d.ts +0 -1
  316. package/commands/__tests__/config.test.js +0 -44
  317. package/commands/__tests__/customObject.test.d.ts +0 -1
  318. package/commands/__tests__/customObject.test.js +0 -68
  319. package/commands/__tests__/doctor.test.d.ts +0 -1
  320. package/commands/__tests__/doctor.test.js +0 -132
  321. package/commands/__tests__/feedback.test.d.ts +0 -1
  322. package/commands/__tests__/feedback.test.js +0 -24
  323. package/commands/__tests__/filemanager.test.d.ts +0 -1
  324. package/commands/__tests__/filemanager.test.js +0 -45
  325. package/commands/__tests__/getStarted.test.d.ts +0 -1
  326. package/commands/__tests__/getStarted.test.js +0 -173
  327. package/commands/__tests__/hubdb.test.d.ts +0 -1
  328. package/commands/__tests__/hubdb.test.js +0 -50
  329. package/commands/__tests__/init.test.d.ts +0 -1
  330. package/commands/__tests__/init.test.js +0 -42
  331. package/commands/__tests__/mcp.test.d.ts +0 -1
  332. package/commands/__tests__/mcp.test.js +0 -46
  333. package/commands/__tests__/open.test.d.ts +0 -1
  334. package/commands/__tests__/open.test.js +0 -58
  335. package/commands/__tests__/project.test.d.ts +0 -1
  336. package/commands/__tests__/project.test.js +0 -125
  337. package/commands/__tests__/sandbox.test.d.ts +0 -1
  338. package/commands/__tests__/sandbox.test.js +0 -44
  339. package/commands/__tests__/secret.test.d.ts +0 -1
  340. package/commands/__tests__/secret.test.js +0 -49
  341. package/commands/__tests__/testAccount.test.d.ts +0 -1
  342. package/commands/__tests__/testAccount.test.js +0 -57
  343. package/commands/__tests__/upgrade.test.d.ts +0 -1
  344. package/commands/__tests__/upgrade.test.js +0 -309
  345. package/commands/account/__tests__/auth.test.d.ts +0 -1
  346. package/commands/account/__tests__/auth.test.js +0 -206
  347. package/commands/account/__tests__/clean.test.d.ts +0 -1
  348. package/commands/account/__tests__/clean.test.js +0 -28
  349. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  350. package/commands/account/__tests__/createOverride.test.js +0 -32
  351. package/commands/account/__tests__/info.test.d.ts +0 -1
  352. package/commands/account/__tests__/info.test.js +0 -28
  353. package/commands/account/__tests__/list.test.d.ts +0 -1
  354. package/commands/account/__tests__/list.test.js +0 -153
  355. package/commands/account/__tests__/remove.test.d.ts +0 -1
  356. package/commands/account/__tests__/remove.test.js +0 -36
  357. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  358. package/commands/account/__tests__/removeOverride.js +0 -25
  359. package/commands/account/__tests__/rename.test.d.ts +0 -1
  360. package/commands/account/__tests__/rename.test.js +0 -82
  361. package/commands/account/__tests__/use.test.d.ts +0 -1
  362. package/commands/account/__tests__/use.test.js +0 -170
  363. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  364. package/commands/app/__tests__/migrate.test.js +0 -111
  365. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  366. package/commands/app/secret/__tests__/add.test.js +0 -140
  367. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  368. package/commands/app/secret/__tests__/delete.test.js +0 -28
  369. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  370. package/commands/app/secret/__tests__/list.test.js +0 -25
  371. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  372. package/commands/app/secret/__tests__/update.test.js +0 -28
  373. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  374. package/commands/cms/__tests__/delete.test.js +0 -39
  375. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  376. package/commands/cms/__tests__/fetch.test.js +0 -156
  377. package/commands/cms/__tests__/function.test.d.ts +0 -1
  378. package/commands/cms/__tests__/function.test.js +0 -50
  379. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  380. package/commands/cms/__tests__/lint.test.js +0 -33
  381. package/commands/cms/__tests__/list.test.d.ts +0 -1
  382. package/commands/cms/__tests__/list.test.js +0 -42
  383. package/commands/cms/__tests__/module.test.d.ts +0 -1
  384. package/commands/cms/__tests__/module.test.js +0 -45
  385. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  386. package/commands/cms/__tests__/mv.test.js +0 -46
  387. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  388. package/commands/cms/__tests__/theme.test.js +0 -54
  389. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  390. package/commands/cms/__tests__/upload.test.js +0 -308
  391. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  392. package/commands/cms/__tests__/watch.test.js +0 -212
  393. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  394. package/commands/cms/function/__tests__/logs.test.js +0 -70
  395. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  396. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  397. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  398. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  399. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  400. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  401. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  402. package/commands/customObject/__tests__/create.test.js +0 -40
  403. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  404. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  405. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  406. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  407. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  408. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  409. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  410. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  411. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  412. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  413. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  414. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  415. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  416. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  417. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  418. package/commands/filemanager/__tests__/upload.test.js +0 -191
  419. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  420. package/commands/hubdb/__tests__/clear.test.js +0 -28
  421. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  422. package/commands/hubdb/__tests__/create.test.js +0 -28
  423. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  424. package/commands/hubdb/__tests__/delete.test.js +0 -28
  425. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  426. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  427. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  428. package/commands/hubdb/__tests__/list.test.js +0 -88
  429. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  430. package/commands/mcp/__tests__/setup.test.js +0 -26
  431. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  432. package/commands/mcp/__tests__/start.test.js +0 -137
  433. package/commands/project/__tests__/add.test.d.ts +0 -1
  434. package/commands/project/__tests__/add.test.js +0 -107
  435. package/commands/project/__tests__/create.test.d.ts +0 -1
  436. package/commands/project/__tests__/create.test.js +0 -97
  437. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  438. package/commands/project/__tests__/deploy.test.js +0 -307
  439. package/commands/project/__tests__/dev.test.d.ts +0 -1
  440. package/commands/project/__tests__/dev.test.js +0 -273
  441. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  442. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  443. package/commands/project/__tests__/download.test.d.ts +0 -1
  444. package/commands/project/__tests__/download.test.js +0 -39
  445. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  446. package/commands/project/__tests__/installDeps.test.js +0 -140
  447. package/commands/project/__tests__/lint.test.d.ts +0 -1
  448. package/commands/project/__tests__/lint.test.js +0 -704
  449. package/commands/project/__tests__/list.test.d.ts +0 -1
  450. package/commands/project/__tests__/list.test.js +0 -31
  451. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  452. package/commands/project/__tests__/listBuilds.test.js +0 -38
  453. package/commands/project/__tests__/logs.test.d.ts +0 -1
  454. package/commands/project/__tests__/logs.test.js +0 -202
  455. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  456. package/commands/project/__tests__/migrate.test.js +0 -106
  457. package/commands/project/__tests__/open.test.d.ts +0 -1
  458. package/commands/project/__tests__/open.test.js +0 -39
  459. package/commands/project/__tests__/profile.test.d.ts +0 -1
  460. package/commands/project/__tests__/profile.test.js +0 -42
  461. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  462. package/commands/project/__tests__/updateDeps.test.js +0 -140
  463. package/commands/project/__tests__/upload.test.d.ts +0 -1
  464. package/commands/project/__tests__/upload.test.js +0 -234
  465. package/commands/project/__tests__/validate.test.d.ts +0 -1
  466. package/commands/project/__tests__/validate.test.js +0 -381
  467. package/commands/project/__tests__/watch.test.d.ts +0 -1
  468. package/commands/project/__tests__/watch.test.js +0 -35
  469. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  470. package/commands/sandbox/__tests__/create.test.js +0 -245
  471. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  472. package/commands/sandbox/__tests__/delete.test.js +0 -31
  473. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  474. package/commands/secret/__tests__/addSecret.test.js +0 -162
  475. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  476. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  477. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  478. package/commands/secret/__tests__/listSecret.test.js +0 -29
  479. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  480. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  481. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  482. package/commands/testAccount/__tests__/create.test.js +0 -106
  483. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  484. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  485. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  486. package/commands/testAccount/__tests__/delete.test.js +0 -29
  487. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  488. package/commands/testAccount/__tests__/importData.test.js +0 -92
  489. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  490. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  491. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  492. package/lib/__tests__/accountAuth.test.js +0 -258
  493. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  494. package/lib/__tests__/accountTypes.test.js +0 -98
  495. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  496. package/lib/__tests__/buildAccount.test.js +0 -262
  497. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  498. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  499. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  500. package/lib/__tests__/commandSuggestion.test.js +0 -119
  501. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  502. package/lib/__tests__/commonOpts.test.js +0 -80
  503. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  504. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  505. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  506. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  507. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  508. package/lib/__tests__/hasFeature.test.js +0 -167
  509. package/lib/__tests__/http.test.d.ts +0 -1
  510. package/lib/__tests__/http.test.js +0 -40
  511. package/lib/__tests__/importData.test.d.ts +0 -1
  512. package/lib/__tests__/importData.test.js +0 -98
  513. package/lib/__tests__/npmCli.test.d.ts +0 -1
  514. package/lib/__tests__/npmCli.test.js +0 -84
  515. package/lib/__tests__/oauth.test.d.ts +0 -1
  516. package/lib/__tests__/oauth.test.js +0 -109
  517. package/lib/__tests__/parsing.test.d.ts +0 -1
  518. package/lib/__tests__/parsing.test.js +0 -34
  519. package/lib/__tests__/polling.test.d.ts +0 -1
  520. package/lib/__tests__/polling.test.js +0 -76
  521. package/lib/__tests__/process.test.d.ts +0 -1
  522. package/lib/__tests__/process.test.js +0 -89
  523. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  524. package/lib/__tests__/sandboxSync.test.js +0 -147
  525. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  526. package/lib/__tests__/sandboxes.test.js +0 -156
  527. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  528. package/lib/__tests__/serverlessLogs.test.js +0 -148
  529. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  530. package/lib/__tests__/usageTracking.test.js +0 -197
  531. package/lib/__tests__/validation.test.d.ts +0 -1
  532. package/lib/__tests__/validation.test.js +0 -143
  533. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  534. package/lib/__tests__/yargsUtils.test.js +0 -124
  535. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  536. package/lib/app/__tests__/migrate.test.js +0 -638
  537. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  538. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  539. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  540. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  541. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  542. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  543. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  544. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  545. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  546. package/lib/mcp/__tests__/setup.test.js +0 -194
  547. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  548. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  549. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  550. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  551. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  552. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  553. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  554. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  555. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  556. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  557. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  558. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  559. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  560. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  561. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  562. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  563. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  564. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  565. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  566. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  567. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  568. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  569. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  570. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  571. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  572. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  573. package/lib/projects/__tests__/components.test.d.ts +0 -1
  574. package/lib/projects/__tests__/components.test.js +0 -426
  575. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  576. package/lib/projects/__tests__/deploy.test.js +0 -231
  577. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  578. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  579. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  580. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  581. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  582. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  583. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  584. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  585. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  586. package/lib/projects/__tests__/projects.test.js +0 -58
  587. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  588. package/lib/projects/__tests__/structure.test.js +0 -210
  589. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  590. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  591. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  592. package/lib/projects/__tests__/upload.test.js +0 -183
  593. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  594. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  595. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  596. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  597. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  598. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  599. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  600. package/lib/projects/create/__tests__/v2.test.js +0 -257
  601. package/lib/projects/platformVersion.d.ts +0 -9
  602. package/lib/projects/platformVersion.js +0 -39
  603. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  604. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  605. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  606. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  607. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  608. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  609. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  610. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  611. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  612. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  613. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  614. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  615. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  616. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  617. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  618. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  619. package/lib/sandboxSync.d.ts +0 -4
  620. package/lib/sandboxSync.js +0 -102
  621. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  622. package/lib/theme/__tests__/migrate.test.js +0 -256
  623. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  624. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  625. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  626. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  627. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  628. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  629. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  630. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  631. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  632. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  633. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  634. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  635. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  636. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  637. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  638. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  639. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  640. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  641. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  642. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  643. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  644. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  645. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  646. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  647. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  648. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  649. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  650. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  651. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  652. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  653. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  654. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  655. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  656. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  657. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  658. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  659. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  660. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  661. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  662. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  663. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  664. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  665. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  666. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  667. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  668. package/mcp-server/utils/__tests__/command.test.js +0 -45
  669. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  670. package/mcp-server/utils/__tests__/content.test.js +0 -164
  671. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  672. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  673. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  674. package/mcp-server/utils/__tests__/project.test.js +0 -140
  675. package/mcp-server/utils/project.d.ts +0 -5
  676. package/mcp-server/utils/project.js +0 -18
@@ -1,18 +1,41 @@
1
- import { TextContentResponse, Tool } from '../../types.js';
1
+ import { TextContentResponse } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
2
3
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { McpLogger } from '../../utils/logger.js';
3
5
  import { z } from 'zod';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  absoluteCurrentWorkingDirectory: z.ZodString;
6
8
  name: z.ZodOptional<z.ZodString>;
7
9
  destination: z.ZodString;
8
- projectBase: z.ZodUnion<readonly [z.ZodLiteral<"empty">, z.ZodLiteral<"app">]>;
9
- distribution: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"marketplace">, z.ZodLiteral<"private">]>>;
10
- auth: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"static">, z.ZodLiteral<"oauth">]>>>;
11
- features: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"card">, z.ZodLiteral<"settings">, z.ZodLiteral<"app-function">, z.ZodLiteral<"webhooks">, z.ZodLiteral<"workflow-action">, z.ZodLiteral<"workflow-action-tool">, z.ZodLiteral<"app-object">, z.ZodLiteral<"app-event">, z.ZodLiteral<"scim">, z.ZodLiteral<"page">]>>>;
10
+ projectBase: z.ZodEnum<{
11
+ app: "app";
12
+ empty: "empty";
13
+ }>;
14
+ distribution: z.ZodOptional<z.ZodEnum<{
15
+ marketplace: "marketplace";
16
+ private: "private";
17
+ }>>;
18
+ auth: z.ZodOptional<z.ZodEnum<{
19
+ oauth: "oauth";
20
+ static: "static";
21
+ }>>;
22
+ features: z.ZodOptional<z.ZodArray<z.ZodEnum<{
23
+ card: "card";
24
+ settings: "settings";
25
+ "app-event": "app-event";
26
+ "workflow-action-tool": "workflow-action-tool";
27
+ page: "page";
28
+ webhooks: "webhooks";
29
+ "app-function": "app-function";
30
+ "app-object": "app-object";
31
+ scim: "scim";
32
+ "workflow-action": "workflow-action";
33
+ "app-function-endpoint": "app-function-endpoint";
34
+ }>>>;
12
35
  }, z.core.$strip>;
13
36
  export type CreateProjectInputSchema = z.infer<typeof inputSchemaZodObject>;
14
37
  export declare class CreateProjectTool extends Tool<CreateProjectInputSchema> {
15
- constructor(mcpServer: McpServer);
38
+ constructor(mcpServer: McpServer, logger: McpLogger);
16
39
  handler({ name, destination, projectBase, distribution, auth, features, absoluteCurrentWorkingDirectory, }: CreateProjectInputSchema): Promise<TextContentResponse>;
17
40
  register(): RegisteredTool;
18
41
  }
@@ -1,13 +1,13 @@
1
- import { Tool } from '../../types.js';
1
+ import { Tool } from '../../Tool.js';
2
2
  import { z } from 'zod';
3
3
  import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, EMPTY_PROJECT, PROJECT_WITH_APP, } from '../../../lib/constants.js';
4
4
  import { addFlag } from '../../utils/command.js';
5
5
  import { absoluteCurrentWorkingDirectory, features } from './constants.js';
6
- import { runCommandInDir } from '../../utils/project.js';
6
+ import { runCommandInDir } from '../../utils/command.js';
7
7
  import { formatTextContents, formatTextContent } from '../../utils/content.js';
8
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
9
8
  import { setupHubSpotConfig } from '../../utils/config.js';
10
9
  import { getErrorMessage } from '../../../lib/errorHandlers/index.js';
10
+ import { PLATFORM_VERSIONS } from '@hubspot/project-parsing-lib/constants';
11
11
  const inputSchema = {
12
12
  absoluteCurrentWorkingDirectory,
13
13
  name: z
@@ -18,19 +18,14 @@ const inputSchema = {
18
18
  .string()
19
19
  .describe('DO NOT use the current directory unless the user has explicitly stated to do so. Relative path to the directory the project will be created in.'),
20
20
  projectBase: z
21
- .union([z.literal(EMPTY_PROJECT), z.literal(PROJECT_WITH_APP)])
21
+ .enum([EMPTY_PROJECT, PROJECT_WITH_APP])
22
22
  .describe('Empty will create an empty project, and app will create a project with an app inside of it.'),
23
23
  distribution: z
24
- .optional(z.union([
25
- z.literal(APP_DISTRIBUTION_TYPES.MARKETPLACE),
26
- z.literal(APP_DISTRIBUTION_TYPES.PRIVATE),
27
- ]))
28
- .describe('If not specified by the user, DO NOT choose for them. This cannot be changed after a project is uploaded. Private is used if you do not wish to distribute your app on the HubSpot marketplace. '),
24
+ .enum([APP_DISTRIBUTION_TYPES.MARKETPLACE, APP_DISTRIBUTION_TYPES.PRIVATE])
25
+ .describe('If not specified by the user, DO NOT choose for them. This cannot be changed after a project is uploaded. Private is used if you do not wish to distribute your app on the HubSpot marketplace. ')
26
+ .optional(),
29
27
  auth: z
30
- .optional(z.union([
31
- z.literal(APP_AUTH_TYPES.STATIC),
32
- z.literal(APP_AUTH_TYPES.OAUTH),
33
- ]))
28
+ .enum([APP_AUTH_TYPES.STATIC, APP_AUTH_TYPES.OAUTH])
34
29
  .describe('If not specified by the user, DO NOT choose for them. This cannot be changed after a project is uploaded. Static uses a static non changing authentication token, and is only available for private distribution. ')
35
30
  .optional(),
36
31
  features,
@@ -39,13 +34,12 @@ const inputSchema = {
39
34
  const inputSchemaZodObject = z.object({ ...inputSchema });
40
35
  const toolName = 'create-project';
41
36
  export class CreateProjectTool extends Tool {
42
- constructor(mcpServer) {
43
- super(mcpServer);
37
+ constructor(mcpServer, logger) {
38
+ super(mcpServer, logger, toolName);
44
39
  }
45
40
  async handler({ name, destination, projectBase, distribution, auth, features, absoluteCurrentWorkingDirectory, }) {
46
41
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
47
- await trackToolUsage(toolName);
48
- let command = addFlag('hs project create', 'platform-version', '2025.2');
42
+ let command = addFlag('hs project create', 'platform-version', PLATFORM_VERSIONS.v2026_03);
49
43
  const content = [];
50
44
  if (name) {
51
45
  command = addFlag(command, 'name', name);
@@ -83,6 +77,10 @@ export class CreateProjectTool extends Tool {
83
77
  return formatTextContents(stdout, stderr);
84
78
  }
85
79
  catch (error) {
80
+ this.logger.debug(toolName, {
81
+ message: 'Handler caught error',
82
+ error: error instanceof Error ? error.message : String(error),
83
+ });
86
84
  return formatTextContents(getErrorMessage(error));
87
85
  }
88
86
  }
@@ -97,6 +95,6 @@ export class CreateProjectTool extends Tool {
97
95
  idempotentHint: false,
98
96
  openWorldHint: false,
99
97
  },
100
- }, this.handler);
98
+ }, input => this.wrappedHandler(input));
101
99
  }
102
100
  }
@@ -1,6 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- import { TextContentResponse, Tool } from '../../types.js';
3
+ import { McpLogger } from '../../utils/logger.js';
4
+ import { TextContentResponse } from '../../types.js';
5
+ import { Tool } from '../../Tool.js';
4
6
  declare const createTestAccountInputSchema: z.ZodObject<{
5
7
  absoluteCurrentWorkingDirectory: z.ZodString;
6
8
  configPath: z.ZodOptional<z.ZodString>;
@@ -44,7 +46,7 @@ declare const createTestAccountInputSchema: z.ZodObject<{
44
46
  }, z.core.$strip>;
45
47
  export type CreateTestAccountInputSchema = z.infer<typeof createTestAccountInputSchema>;
46
48
  export declare class CreateTestAccountTool extends Tool<CreateTestAccountInputSchema> {
47
- constructor(mcpServer: McpServer);
49
+ constructor(mcpServer: McpServer, logger: McpLogger);
48
50
  handler({ absoluteCurrentWorkingDirectory, name, description, marketingLevel, opsLevel, serviceLevel, salesLevel, contentLevel, commerceLevel, configPath, }: CreateTestAccountInputSchema): Promise<TextContentResponse>;
49
51
  register(): RegisteredTool;
50
52
  }
@@ -1,11 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  import fs from 'fs';
3
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
4
3
  import { formatTextContents, formatTextContent } from '../../utils/content.js';
5
4
  import { addFlag } from '../../utils/command.js';
6
- import { runCommandInDir } from '../../utils/project.js';
5
+ import { runCommandInDir } from '../../utils/command.js';
7
6
  import { ACCOUNT_LEVELS, ACCOUNT_LEVEL_CHOICES, } from '../../../lib/constants.js';
8
- import { Tool } from '../../types.js';
7
+ import { Tool } from '../../Tool.js';
9
8
  import { absoluteCurrentWorkingDirectory } from './constants.js';
10
9
  import { getConfigAccountByName } from '@hubspot/local-dev-lib/config';
11
10
  import { setupHubSpotConfig } from '../../utils/config.js';
@@ -58,7 +57,7 @@ const inputSchema = {
58
57
  contentLevel: z
59
58
  .enum(ACCOUNT_LEVEL_CHOICES)
60
59
  .optional()
61
- .describe(`CMS Hub tier level. Options: ${ACCOUNT_LEVEL_CHOICES.join(', ')}. Defaults to ENTERPRISE if not specified.`),
60
+ .describe(`Content Hub tier level. Options: ${ACCOUNT_LEVEL_CHOICES.join(', ')}. Defaults to ENTERPRISE if not specified.`),
62
61
  commerceLevel: z
63
62
  .enum(ACCOUNT_LEVEL_CHOICES_WITHOUT_STARTER)
64
63
  .optional()
@@ -68,12 +67,11 @@ const inputSchema = {
68
67
  const createTestAccountInputSchema = z.object({ ...inputSchema });
69
68
  const toolName = 'create-test-account';
70
69
  export class CreateTestAccountTool extends Tool {
71
- constructor(mcpServer) {
72
- super(mcpServer);
70
+ constructor(mcpServer, logger) {
71
+ super(mcpServer, logger, toolName);
73
72
  }
74
73
  async handler({ absoluteCurrentWorkingDirectory, name, description, marketingLevel, opsLevel, serviceLevel, salesLevel, contentLevel, commerceLevel, configPath, }) {
75
74
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
76
- await trackToolUsage(toolName);
77
75
  let command = 'hs test-account create';
78
76
  const content = [];
79
77
  // Use config file if provided (LLM should check for config first)
@@ -84,6 +82,10 @@ export class CreateTestAccountTool extends Tool {
84
82
  configJson = JSON.parse(config);
85
83
  }
86
84
  catch (error) {
85
+ this.logger.debug(toolName, {
86
+ message: 'Handler caught error reading config file',
87
+ error: error instanceof Error ? error.message : String(error),
88
+ });
87
89
  return {
88
90
  content: [
89
91
  formatTextContent(`Failed to read or parse config file at "${configPath}": ${getErrorMessage(error)}. Please ensure the file exists and contains valid JSON.`),
@@ -97,7 +99,10 @@ export class CreateTestAccountTool extends Tool {
97
99
  }
98
100
  }
99
101
  catch (error) {
100
- // nothing to do here
102
+ this.logger.debug(toolName, {
103
+ message: 'Handler caught error checking account by config name',
104
+ error: error instanceof Error ? error.message : String(error),
105
+ });
101
106
  }
102
107
  }
103
108
  command = addFlag(command, 'config-path', configPath);
@@ -110,7 +115,10 @@ export class CreateTestAccountTool extends Tool {
110
115
  }
111
116
  }
112
117
  catch (e) {
113
- // nothing to do here
118
+ this.logger.debug(toolName, {
119
+ message: 'Handler caught error checking account by name',
120
+ error: e instanceof Error ? e.message : String(e),
121
+ });
114
122
  }
115
123
  command = addFlag(command, 'name', name);
116
124
  command = addFlag(command, 'description', description || name);
@@ -135,6 +143,10 @@ export class CreateTestAccountTool extends Tool {
135
143
  return formatTextContents(absoluteCurrentWorkingDirectory, stdout, stderr);
136
144
  }
137
145
  catch (error) {
146
+ this.logger.debug(toolName, {
147
+ message: 'Handler caught error',
148
+ error: error instanceof Error ? error.message : String(error),
149
+ });
138
150
  return formatTextContents(absoluteCurrentWorkingDirectory, getErrorMessage(error));
139
151
  }
140
152
  }
@@ -165,6 +177,6 @@ export class CreateTestAccountTool extends Tool {
165
177
  idempotentHint: false,
166
178
  openWorldHint: true,
167
179
  },
168
- }, this.handler);
180
+ }, input => this.wrappedHandler(input));
169
181
  }
170
182
  }
@@ -1,5 +1,7 @@
1
- import { TextContentResponse, Tool } from '../../types.js';
1
+ import { TextContentResponse } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
2
3
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { McpLogger } from '../../utils/logger.js';
3
5
  import { z } from 'zod';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  absoluteProjectPath: z.ZodString;
@@ -8,7 +10,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
8
10
  }, z.core.$strip>;
9
11
  type InputSchemaType = z.infer<typeof inputSchemaZodObject>;
10
12
  export declare class DeployProjectTool extends Tool<InputSchemaType> {
11
- constructor(mcpServer: McpServer);
13
+ constructor(mcpServer: McpServer, logger: McpLogger);
12
14
  handler({ absoluteProjectPath, absoluteCurrentWorkingDirectory, buildNumber, }: InputSchemaType): Promise<TextContentResponse>;
13
15
  register(): RegisteredTool;
14
16
  }
@@ -1,10 +1,9 @@
1
- import { Tool } from '../../types.js';
1
+ import { Tool } from '../../Tool.js';
2
2
  import { z } from 'zod';
3
3
  import { addFlag } from '../../utils/command.js';
4
4
  import { absoluteCurrentWorkingDirectory, absoluteProjectPath, } from './constants.js';
5
- import { runCommandInDir } from '../../utils/project.js';
5
+ import { runCommandInDir } from '../../utils/command.js';
6
6
  import { formatTextContents, formatTextContent } from '../../utils/content.js';
7
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
8
7
  import { setupHubSpotConfig } from '../../utils/config.js';
9
8
  const inputSchema = {
10
9
  absoluteProjectPath,
@@ -19,12 +18,11 @@ const inputSchemaZodObject = z.object({
19
18
  });
20
19
  const toolName = 'deploy-project';
21
20
  export class DeployProjectTool extends Tool {
22
- constructor(mcpServer) {
23
- super(mcpServer);
21
+ constructor(mcpServer, logger) {
22
+ super(mcpServer, logger, toolName);
24
23
  }
25
24
  async handler({ absoluteProjectPath, absoluteCurrentWorkingDirectory, buildNumber, }) {
26
25
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
27
- await trackToolUsage(toolName);
28
26
  let command = `hs project deploy`;
29
27
  const content = [];
30
28
  if (!buildNumber) {
@@ -45,7 +43,7 @@ export class DeployProjectTool extends Tool {
45
43
  register() {
46
44
  return this.mcpServer.registerTool(toolName, {
47
45
  title: 'Deploy a build of HubSpot Project',
48
- description: 'Takes a build number and a project name and deploys that build of the project. DO NOT run this tool unless the user specifies they would like to deploy the project.',
46
+ description: 'Takes a build number and a project name and deploys that build of the project. DO NOT run this tool unless the user specifies they would like to deploy the project. If you do not know the project path, use the find-projects tool first to locate HubSpot projects in the workspace.',
49
47
  inputSchema,
50
48
  annotations: {
51
49
  readOnlyHint: false,
@@ -53,6 +51,6 @@ export class DeployProjectTool extends Tool {
53
51
  idempotentHint: true,
54
52
  openWorldHint: true,
55
53
  },
56
- }, this.handler);
54
+ }, input => this.wrappedHandler(input));
57
55
  }
58
56
  }
@@ -1,13 +1,15 @@
1
1
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { McpLogger } from '../../utils/logger.js';
2
3
  import z from 'zod';
3
- import { TextContentResponse, Tool } from '../../types.js';
4
+ import { TextContentResponse } from '../../types.js';
5
+ import { Tool } from '../../Tool.js';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  docUrl: z.ZodString;
6
8
  absoluteCurrentWorkingDirectory: z.ZodString;
7
9
  }, z.z.core.$strip>;
8
10
  type InputSchemaType = z.infer<typeof inputSchemaZodObject>;
9
11
  export declare class DocFetchTool extends Tool<InputSchemaType> {
10
- constructor(mcpServer: McpServer);
12
+ constructor(mcpServer: McpServer, logger: McpLogger);
11
13
  handler({ docUrl, absoluteCurrentWorkingDirectory, }: InputSchemaType): Promise<TextContentResponse>;
12
14
  register(): RegisteredTool;
13
15
  }
@@ -1,7 +1,6 @@
1
1
  import z from 'zod';
2
- import { Tool } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
3
3
  import { formatTextContents } from '../../utils/content.js';
4
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
5
4
  import { absoluteCurrentWorkingDirectory, docUrl } from './constants.js';
6
5
  import { http } from '@hubspot/local-dev-lib/http/unauthed';
7
6
  import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
@@ -17,12 +16,11 @@ const inputSchemaZodObject = z.object({
17
16
  });
18
17
  const toolName = 'fetch-doc';
19
18
  export class DocFetchTool extends Tool {
20
- constructor(mcpServer) {
21
- super(mcpServer);
19
+ constructor(mcpServer, logger) {
20
+ super(mcpServer, logger, toolName);
22
21
  }
23
22
  async handler({ docUrl, absoluteCurrentWorkingDirectory, }) {
24
23
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
25
- await trackToolUsage(toolName);
26
24
  try {
27
25
  // Append .md extension to the URL
28
26
  const markdownUrl = `${docUrl}.md`;
@@ -36,6 +34,10 @@ export class DocFetchTool extends Tool {
36
34
  return formatTextContents(content);
37
35
  }
38
36
  catch (error) {
37
+ this.logger.debug(toolName, {
38
+ message: 'Handler caught error',
39
+ error: error instanceof Error ? error.message : String(error),
40
+ });
39
41
  if (isHubSpotHttpError(error)) {
40
42
  return formatTextContents(error.toString());
41
43
  }
@@ -52,6 +54,6 @@ export class DocFetchTool extends Tool {
52
54
  readOnlyHint: true,
53
55
  openWorldHint: true,
54
56
  },
55
- }, this.handler);
57
+ }, input => this.wrappedHandler(input));
56
58
  }
57
59
  }
@@ -1,9 +1,12 @@
1
1
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { McpLogger } from '../../utils/logger.js';
2
3
  import z from 'zod';
3
- import { TextContentResponse, Tool } from '../../types.js';
4
+ import { TextContentResponse } from '../../types.js';
5
+ import { Tool } from '../../Tool.js';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  absoluteCurrentWorkingDirectory: z.ZodString;
6
8
  docsSearchQuery: z.ZodString;
9
+ docsSearchLimit: z.ZodDefault<z.ZodNumber>;
7
10
  }, z.z.core.$strip>;
8
11
  export interface DocsSearchResponse {
9
12
  results: {
@@ -16,8 +19,11 @@ export interface DocsSearchResponse {
16
19
  }
17
20
  type InputSchemaType = z.infer<typeof inputSchemaZodObject>;
18
21
  export declare class DocsSearchTool extends Tool<InputSchemaType> {
19
- constructor(mcpServer: McpServer);
20
- handler({ docsSearchQuery, absoluteCurrentWorkingDirectory, }: InputSchemaType): Promise<TextContentResponse>;
22
+ constructor(mcpServer: McpServer, logger: McpLogger);
23
+ protected getTrackingMeta({ docsSearchQuery, }: InputSchemaType): {
24
+ [key: string]: string;
25
+ } | undefined;
26
+ handler({ docsSearchQuery, docsSearchLimit, absoluteCurrentWorkingDirectory, }: InputSchemaType): Promise<TextContentResponse>;
21
27
  register(): RegisteredTool;
22
28
  }
23
29
  export {};
@@ -1,16 +1,23 @@
1
1
  import { http } from '@hubspot/local-dev-lib/http';
2
2
  import z from 'zod';
3
- import { Tool } from '../../types.js';
3
+ import { Tool } from '../../Tool.js';
4
4
  import { formatTextContents } from '../../utils/content.js';
5
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
6
5
  import { absoluteCurrentWorkingDirectory, docsSearchQuery, } from './constants.js';
7
6
  import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
8
7
  import { getConfigDefaultAccountIfExists } from '@hubspot/local-dev-lib/config';
9
8
  import { setupHubSpotConfig } from '../../utils/config.js';
10
9
  import { getErrorMessage } from '../../../lib/errorHandlers/index.js';
10
+ const docsSearchLimit = z
11
+ .number()
12
+ .int()
13
+ .min(1)
14
+ .max(20)
15
+ .default(5)
16
+ .describe('Maximum number of results to return.');
11
17
  const inputSchema = {
12
18
  absoluteCurrentWorkingDirectory,
13
19
  docsSearchQuery,
20
+ docsSearchLimit,
14
21
  };
15
22
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
23
  const inputSchemaZodObject = z.object({
@@ -18,12 +25,14 @@ const inputSchemaZodObject = z.object({
18
25
  });
19
26
  const toolName = 'search-docs';
20
27
  export class DocsSearchTool extends Tool {
21
- constructor(mcpServer) {
22
- super(mcpServer);
28
+ constructor(mcpServer, logger) {
29
+ super(mcpServer, logger, toolName);
23
30
  }
24
- async handler({ docsSearchQuery, absoluteCurrentWorkingDirectory, }) {
31
+ getTrackingMeta({ docsSearchQuery, }) {
32
+ return { mode: docsSearchQuery };
33
+ }
34
+ async handler({ docsSearchQuery, docsSearchLimit, absoluteCurrentWorkingDirectory, }) {
25
35
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
26
- await trackToolUsage(toolName, { mode: docsSearchQuery });
27
36
  const accountId = getConfigDefaultAccountIfExists()?.accountId;
28
37
  if (!accountId) {
29
38
  const authErrorMessage = `No account ID found. Please run \`hs account auth\` to configure an account, or set a default account with \`hs account use <account>\``;
@@ -40,13 +49,27 @@ export class DocsSearchTool extends Tool {
40
49
  if (!results || results.length === 0) {
41
50
  return formatTextContents('No documentation found for your query.');
42
51
  }
43
- const formattedResults = results
52
+ // The docs-search API returns duplicate URLs; dedupe to avoid wasting the result limit on repeats
53
+ const seen = new Set();
54
+ const dedupedResults = results.filter(result => {
55
+ if (seen.has(result.url)) {
56
+ return false;
57
+ }
58
+ seen.add(result.url);
59
+ return true;
60
+ });
61
+ const limitedResults = dedupedResults.slice(0, docsSearchLimit);
62
+ const formattedResults = limitedResults
44
63
  .map(result => `**${result.title}**\n${result.description}\nURL: ${result.url}\nScore: ${result.score}\n\n${result.content}\n---\n`)
45
64
  .join('\n');
46
- const successMessage = `Found ${results.length} documentation results:\n\n${formattedResults}`;
65
+ const successMessage = `Found ${dedupedResults.length} results, showing top ${limitedResults.length}:\n\n${formattedResults}`;
47
66
  return formatTextContents(successMessage);
48
67
  }
49
68
  catch (error) {
69
+ this.logger.debug(toolName, {
70
+ message: 'Handler caught error',
71
+ error: error instanceof Error ? error.message : String(error),
72
+ });
50
73
  if (isHubSpotHttpError(error)) {
51
74
  // Handle different status codes
52
75
  return formatTextContents(error.toString());
@@ -64,6 +87,6 @@ export class DocsSearchTool extends Tool {
64
87
  readOnlyHint: true,
65
88
  openWorldHint: true,
66
89
  },
67
- }, this.handler);
90
+ }, input => this.wrappedHandler(input));
68
91
  }
69
92
  }
@@ -0,0 +1,15 @@
1
+ import { TextContentResponse } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
3
+ import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { McpLogger } from '../../utils/logger.js';
5
+ import { z } from 'zod';
6
+ declare const inputSchemaZodObject: z.ZodObject<{
7
+ absoluteDirectory: z.ZodString;
8
+ }, z.core.$strip>;
9
+ export type FindProjectsInputSchema = z.infer<typeof inputSchemaZodObject>;
10
+ export declare class FindProjectsTool extends Tool<FindProjectsInputSchema> {
11
+ constructor(mcpServer: McpServer, logger: McpLogger);
12
+ handler({ absoluteDirectory, }: FindProjectsInputSchema): Promise<TextContentResponse>;
13
+ register(): RegisteredTool;
14
+ }
15
+ export {};
@@ -0,0 +1,60 @@
1
+ import { Tool } from '../../Tool.js';
2
+ import { z } from 'zod';
3
+ import { formatTextContents } from '../../utils/content.js';
4
+ import { walk } from '@hubspot/local-dev-lib/fs';
5
+ import path from 'path';
6
+ import { PROJECT_CONFIG_FILE } from '../../../lib/constants.js';
7
+ const TOOL_NAME = 'find-projects';
8
+ const IGNORE_DIRS = ['node_modules', '.git', '.vite'];
9
+ const inputSchema = {
10
+ absoluteDirectory: z
11
+ .string()
12
+ .describe('The absolute path to the directory to search for HubSpot projects in.'),
13
+ };
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ const inputSchemaZodObject = z.object({ ...inputSchema });
16
+ export class FindProjectsTool extends Tool {
17
+ constructor(mcpServer, logger) {
18
+ super(mcpServer, logger, TOOL_NAME);
19
+ }
20
+ async handler({ absoluteDirectory, }) {
21
+ try {
22
+ const allFiles = await walk(absoluteDirectory, IGNORE_DIRS);
23
+ const projectFiles = allFiles.filter(file => path.basename(file) === PROJECT_CONFIG_FILE);
24
+ if (projectFiles.length === 0) {
25
+ return formatTextContents(`No ${PROJECT_CONFIG_FILE} files found under ${absoluteDirectory}.`);
26
+ }
27
+ const projectDirs = projectFiles.map(file => path.dirname(file));
28
+ const output = [
29
+ `Found ${projectFiles.length} project(s):`,
30
+ '',
31
+ ...projectDirs.map(dir => ` ${dir}`),
32
+ ].join('\n');
33
+ return formatTextContents(output);
34
+ }
35
+ catch (error) {
36
+ this.logger.debug(TOOL_NAME, {
37
+ message: 'Handler caught error',
38
+ error: error instanceof Error ? error.message : String(error),
39
+ });
40
+ const cause = error instanceof Error ? error.cause : undefined;
41
+ const causeMessage = cause instanceof Error ? `: ${cause.message}` : '';
42
+ const errorMessage = error instanceof Error
43
+ ? error.message || `FileSystemError${causeMessage}`
44
+ : String(error);
45
+ return formatTextContents(`Error searching for projects: ${errorMessage}`);
46
+ }
47
+ }
48
+ register() {
49
+ return this.mcpServer.registerTool(TOOL_NAME, {
50
+ title: 'Find HubSpot Projects',
51
+ description: 'Use this tool to locate HubSpot projects. Traverses child directories of the given directory to find hsproject.json files, returning the paths of all discovered HubSpot projects.',
52
+ inputSchema,
53
+ annotations: {
54
+ readOnlyHint: true,
55
+ openWorldHint: false,
56
+ idempotentHint: true,
57
+ },
58
+ }, input => this.wrappedHandler(input));
59
+ }
60
+ }
@@ -1,5 +1,7 @@
1
- import { TextContentResponse, Tool } from '../../types.js';
1
+ import { TextContentResponse } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
2
3
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { McpLogger } from '../../utils/logger.js';
3
5
  import { z } from 'zod';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  absoluteCurrentWorkingDirectory: z.ZodString;
@@ -9,7 +11,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
9
11
  }, z.core.$strip>;
10
12
  export type GetApiUsagePatternsByAppIdInputSchema = z.infer<typeof inputSchemaZodObject>;
11
13
  export declare class GetApiUsagePatternsByAppIdTool extends Tool<GetApiUsagePatternsByAppIdInputSchema> {
12
- constructor(mcpServer: McpServer);
14
+ constructor(mcpServer: McpServer, logger: McpLogger);
13
15
  handler({ appId, startDate, endDate, absoluteCurrentWorkingDirectory, }: GetApiUsagePatternsByAppIdInputSchema): Promise<TextContentResponse>;
14
16
  register(): RegisteredTool;
15
17
  }
@@ -1,6 +1,5 @@
1
- import { Tool } from '../../types.js';
1
+ import { Tool } from '../../Tool.js';
2
2
  import { z } from 'zod';
3
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
4
3
  import { http } from '@hubspot/local-dev-lib/http';
5
4
  import { formatTextContents } from '../../utils/content.js';
6
5
  import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
@@ -12,29 +11,25 @@ const inputSchema = {
12
11
  absoluteCurrentWorkingDirectory,
13
12
  appId: z
14
13
  .string()
15
- .regex(/^\d+$/, 'App ID must be a numeric string')
16
- .describe('The numeric app ID as a string (e.g., "3003909"). Use get-apps-info to find available app IDs.'),
14
+ .describe('The numeric app ID as a string (e.g., "3003909"). Must contain only digits. Use get-apps-info to find available app IDs.'),
17
15
  startDate: z
18
16
  .string()
19
- .regex(/^\d{4}-\d{2}-\d{2}$/, 'Start date must be in YYYY-MM-DD format')
20
- .optional()
21
- .describe('Start date for the usage patterns query in ISO 8601 format (e.g., 2025-01-01).'),
17
+ .describe('Start date for the usage patterns query in YYYY-MM-DD format (e.g., 2025-01-01).')
18
+ .optional(),
22
19
  endDate: z
23
20
  .string()
24
- .regex(/^\d{4}-\d{2}-\d{2}$/, 'End date must be in YYYY-MM-DD format')
25
- .optional()
26
- .describe('End date for the usage patterns query in ISO 8601 format (e.g., 2025-12-31).'),
21
+ .describe('End date for the usage patterns query in YYYY-MM-DD format (e.g., 2025-12-31).')
22
+ .optional(),
27
23
  };
28
24
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
29
25
  const inputSchemaZodObject = z.object({ ...inputSchema });
30
26
  const toolName = 'get-api-usage-patterns-by-app-id';
31
27
  export class GetApiUsagePatternsByAppIdTool extends Tool {
32
- constructor(mcpServer) {
33
- super(mcpServer);
28
+ constructor(mcpServer, logger) {
29
+ super(mcpServer, logger, toolName);
34
30
  }
35
31
  async handler({ appId, startDate, endDate, absoluteCurrentWorkingDirectory, }) {
36
32
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
37
- await trackToolUsage(toolName);
38
33
  try {
39
34
  // Get account ID from CLI config
40
35
  const accountId = getConfigDefaultAccountIfExists()?.accountId;
@@ -55,6 +50,10 @@ export class GetApiUsagePatternsByAppIdTool extends Tool {
55
50
  return formatTextContents(formattedResult);
56
51
  }
57
52
  catch (error) {
53
+ this.logger.debug(toolName, {
54
+ message: 'Handler caught error',
55
+ error: error instanceof Error ? error.message : String(error),
56
+ });
58
57
  if (isHubSpotHttpError(error)) {
59
58
  // Handle HubSpot-specific HTTP errors
60
59
  return formatTextContents(error.toString());
@@ -71,6 +70,6 @@ export class GetApiUsagePatternsByAppIdTool extends Tool {
71
70
  readOnlyHint: true,
72
71
  openWorldHint: true,
73
72
  },
74
- }, this.handler);
73
+ }, input => this.wrappedHandler(input));
75
74
  }
76
75
  }
@@ -1,12 +1,14 @@
1
- import { TextContentResponse, Tool } from '../../types.js';
1
+ import { TextContentResponse } from '../../types.js';
2
+ import { Tool } from '../../Tool.js';
2
3
  import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { McpLogger } from '../../utils/logger.js';
3
5
  import { z } from 'zod';
4
6
  declare const inputSchemaZodObject: z.ZodObject<{
5
7
  absoluteCurrentWorkingDirectory: z.ZodString;
6
8
  }, z.core.$strip>;
7
9
  export type GetApplicationInfoInputSchema = z.infer<typeof inputSchemaZodObject>;
8
10
  export declare class GetApplicationInfoTool extends Tool<GetApplicationInfoInputSchema> {
9
- constructor(mcpServer: McpServer);
11
+ constructor(mcpServer: McpServer, logger: McpLogger);
10
12
  handler({ absoluteCurrentWorkingDirectory, }: GetApplicationInfoInputSchema): Promise<TextContentResponse>;
11
13
  register(): RegisteredTool;
12
14
  }