@hubspot/cli 8.1.0-beta.0 → 8.1.0-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 (670) 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.js +14 -14
  91. package/commands/project/listBuilds.js +8 -6
  92. package/commands/project/logs.js +5 -6
  93. package/commands/project/migrate.js +18 -18
  94. package/commands/project/open.js +5 -6
  95. package/commands/project/profile/add.js +12 -8
  96. package/commands/project/profile/delete.js +15 -11
  97. package/commands/project/updateDeps.js +9 -6
  98. package/commands/project/upload.js +33 -19
  99. package/commands/project/validate.js +12 -12
  100. package/commands/project/watch.js +32 -19
  101. package/commands/project.js +12 -3
  102. package/commands/sandbox/create.js +18 -45
  103. package/commands/sandbox/delete.js +13 -14
  104. package/commands/secret/addSecret.js +6 -7
  105. package/commands/secret/deleteSecret.js +5 -6
  106. package/commands/secret/listSecret.js +2 -3
  107. package/commands/secret/updateSecret.js +4 -5
  108. package/commands/testAccount/create.d.ts +1 -1
  109. package/commands/testAccount/create.js +25 -17
  110. package/commands/testAccount/createConfig.js +7 -8
  111. package/commands/testAccount/delete.js +27 -18
  112. package/commands/testAccount/importData.js +6 -7
  113. package/commands/upgrade.js +9 -10
  114. package/lang/en.d.ts +248 -14
  115. package/lang/en.js +265 -28
  116. package/lib/accountAuth.js +4 -0
  117. package/lib/app/migrate.js +18 -5
  118. package/lib/buildAccount.d.ts +1 -6
  119. package/lib/buildAccount.js +9 -42
  120. package/lib/commandSuggestion.js +1 -7
  121. package/lib/constants.d.ts +2 -4
  122. package/lib/constants.js +4 -4
  123. package/lib/doctor/Diagnosis.js +5 -5
  124. package/lib/doctor/Doctor.js +7 -7
  125. package/lib/errorHandlers/index.js +4 -3
  126. package/lib/errorHandlers/suppressError.js +4 -0
  127. package/lib/errors/PromptExitError.d.ts +6 -0
  128. package/lib/errors/PromptExitError.js +11 -0
  129. package/lib/generateSelectors.js +1 -2
  130. package/lib/getStartedV2Actions.d.ts +13 -0
  131. package/lib/getStartedV2Actions.js +56 -3
  132. package/lib/hasFeature.js +1 -2
  133. package/lib/link/accountTableUtils.d.ts +10 -0
  134. package/lib/link/accountTableUtils.js +39 -0
  135. package/lib/link/index.d.ts +18 -0
  136. package/lib/link/index.js +185 -0
  137. package/lib/link/linkUtils.d.ts +5 -0
  138. package/lib/link/linkUtils.js +49 -0
  139. package/lib/link/prompts.d.ts +7 -0
  140. package/lib/link/prompts.js +126 -0
  141. package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
  142. package/lib/link/renderLinkedAccountsTable.js +14 -0
  143. package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
  144. package/lib/link/warnIfLinkedDirectory.js +9 -0
  145. package/lib/mcp/setup.d.ts +1 -0
  146. package/lib/mcp/setup.js +77 -30
  147. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  148. package/lib/process.d.ts +1 -1
  149. package/lib/process.js +10 -3
  150. package/lib/projects/ProjectLogsManager.js +6 -3
  151. package/lib/projects/components.js +15 -4
  152. package/lib/projects/create/index.js +3 -6
  153. package/lib/projects/create/legacy.js +5 -10
  154. package/lib/projects/create/v2.js +5 -14
  155. package/lib/projects/delete.d.ts +13 -0
  156. package/lib/projects/delete.js +193 -0
  157. package/lib/projects/deploy.d.ts +1 -1
  158. package/lib/projects/deploy.js +2 -2
  159. package/lib/projects/ensureProjectExists.js +1 -2
  160. package/lib/projects/localDev/AppDevModeInterface.js +13 -9
  161. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
  162. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
  163. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  164. package/lib/projects/localDev/DevSessionManager.js +31 -19
  165. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
  166. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
  167. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  168. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  169. package/lib/projects/localDev/LocalDevState.js +3 -1
  170. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  171. package/lib/projects/localDev/helpers/account.js +21 -30
  172. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  173. package/lib/projects/localDev/helpers/process.js +4 -10
  174. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  175. package/lib/projects/localDev/helpers/project.js +31 -15
  176. package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
  177. package/lib/projects/projectInfo.d.ts +5 -0
  178. package/lib/projects/projectInfo.js +82 -0
  179. package/lib/projects/projectProfiles.d.ts +1 -2
  180. package/lib/projects/projectProfiles.js +5 -17
  181. package/lib/projects/uieLinting.d.ts +17 -3
  182. package/lib/projects/uieLinting.js +93 -28
  183. package/lib/projects/upload.d.ts +1 -0
  184. package/lib/projects/upload.js +59 -49
  185. package/lib/projects/watch.d.ts +2 -1
  186. package/lib/projects/watch.js +32 -24
  187. package/lib/projects/workspaces.d.ts +52 -0
  188. package/lib/projects/workspaces.js +365 -0
  189. package/lib/prompts/createApiSamplePrompt.js +4 -0
  190. package/lib/prompts/downloadProjectPrompt.js +11 -10
  191. package/lib/prompts/installAppPrompt.js +3 -2
  192. package/lib/prompts/personalAccessKeyPrompt.js +3 -2
  193. package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
  194. package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
  195. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  196. package/lib/prompts/projectProfilePrompt.js +46 -0
  197. package/lib/prompts/projectsLogsPrompt.js +3 -0
  198. package/lib/prompts/promptUtils.js +4 -2
  199. package/lib/prompts/selectHubDBTablePrompt.js +8 -4
  200. package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
  201. package/lib/sandboxes.d.ts +1 -9
  202. package/lib/sandboxes.js +0 -21
  203. package/lib/serverlessLogs.js +50 -44
  204. package/lib/theme/cmsDevServerProcess.d.ts +14 -0
  205. package/lib/theme/cmsDevServerProcess.js +149 -0
  206. package/lib/theme/cmsDevServerRunner.d.ts +14 -0
  207. package/lib/theme/cmsDevServerRunner.js +90 -0
  208. package/lib/theme/migrate.d.ts +1 -1
  209. package/lib/theme/migrate.js +1 -5
  210. package/lib/ui/SpinniesManager.d.ts +1 -0
  211. package/lib/ui/SpinniesManager.js +22 -6
  212. package/lib/ui/accountTable.d.ts +8 -0
  213. package/lib/ui/accountTable.js +67 -0
  214. package/lib/ui/spinniesUtils.d.ts +0 -1
  215. package/lib/ui/spinniesUtils.js +6 -16
  216. package/lib/usageTracking.d.ts +3 -4
  217. package/lib/usageTracking.js +9 -6
  218. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  219. package/lib/yargs/makeYargsBuilder.js +33 -0
  220. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  221. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  222. package/lib/yargs/parseYargsOrExit.d.ts +4 -0
  223. package/lib/yargs/parseYargsOrExit.js +25 -0
  224. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  225. package/lib/yargs/strictEnforceBoolean.js +13 -0
  226. package/lib/yargsUtils.d.ts +3 -16
  227. package/lib/yargsUtils.js +3 -48
  228. package/mcp-server/Tool.d.ts +15 -0
  229. package/mcp-server/Tool.js +53 -0
  230. package/mcp-server/server.js +43 -3
  231. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  232. package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
  233. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  234. package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
  235. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
  236. package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
  237. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  238. package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
  239. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  240. package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
  241. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  242. package/mcp-server/tools/cms/HsListTool.js +9 -7
  243. package/mcp-server/tools/index.d.ts +3 -2
  244. package/mcp-server/tools/index.js +24 -22
  245. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
  246. package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
  247. package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
  248. package/mcp-server/tools/project/CreateProjectTool.js +16 -18
  249. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  250. package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
  251. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  252. package/mcp-server/tools/project/DeployProjectTool.js +6 -8
  253. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  254. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  255. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  256. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  257. package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
  258. package/mcp-server/tools/project/FindProjectsTool.js +60 -0
  259. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  260. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
  261. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  262. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  263. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
  264. package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
  265. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
  266. package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
  267. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  268. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  269. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
  270. package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
  271. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  272. package/mcp-server/tools/project/UploadProjectTools.js +11 -9
  273. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  274. package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
  275. package/mcp-server/tools/project/constants.d.ts +13 -1
  276. package/mcp-server/tools/project/constants.js +13 -16
  277. package/mcp-server/types.d.ts +0 -7
  278. package/mcp-server/types.js +1 -13
  279. package/mcp-server/utils/command.d.ts +5 -0
  280. package/mcp-server/utils/command.js +24 -0
  281. package/mcp-server/utils/feedbackTracking.js +2 -17
  282. package/mcp-server/utils/logger.d.ts +10 -0
  283. package/mcp-server/utils/logger.js +29 -0
  284. package/mcp-server/utils/toolUsageTracking.js +0 -2
  285. package/package.json +15 -11
  286. package/types/Link.d.ts +32 -0
  287. package/types/Link.js +5 -0
  288. package/types/LocalDev.d.ts +5 -0
  289. package/types/PackageJson.d.ts +1 -0
  290. package/types/Projects.d.ts +19 -0
  291. package/types/Prompts.d.ts +1 -0
  292. package/types/Yargs.d.ts +19 -1
  293. package/ui/components/getStarted/GetStartedFlow.js +79 -2
  294. package/ui/components/getStarted/reducer.d.ts +20 -0
  295. package/ui/components/getStarted/reducer.js +36 -0
  296. package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
  297. package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
  298. package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
  299. package/ui/lib/constants.d.ts +1 -0
  300. package/ui/lib/constants.js +1 -0
  301. package/api/__tests__/migrate.test.d.ts +0 -1
  302. package/api/__tests__/migrate.test.js +0 -199
  303. package/commands/__tests__/account.test.d.ts +0 -1
  304. package/commands/__tests__/account.test.js +0 -69
  305. package/commands/__tests__/auth.test.d.ts +0 -1
  306. package/commands/__tests__/auth.test.js +0 -43
  307. package/commands/__tests__/cms.test.d.ts +0 -1
  308. package/commands/__tests__/cms.test.js +0 -87
  309. package/commands/__tests__/config.test.d.ts +0 -1
  310. package/commands/__tests__/config.test.js +0 -44
  311. package/commands/__tests__/customObject.test.d.ts +0 -1
  312. package/commands/__tests__/customObject.test.js +0 -68
  313. package/commands/__tests__/doctor.test.d.ts +0 -1
  314. package/commands/__tests__/doctor.test.js +0 -132
  315. package/commands/__tests__/feedback.test.d.ts +0 -1
  316. package/commands/__tests__/feedback.test.js +0 -24
  317. package/commands/__tests__/filemanager.test.d.ts +0 -1
  318. package/commands/__tests__/filemanager.test.js +0 -45
  319. package/commands/__tests__/getStarted.test.d.ts +0 -1
  320. package/commands/__tests__/getStarted.test.js +0 -173
  321. package/commands/__tests__/hubdb.test.d.ts +0 -1
  322. package/commands/__tests__/hubdb.test.js +0 -50
  323. package/commands/__tests__/init.test.d.ts +0 -1
  324. package/commands/__tests__/init.test.js +0 -42
  325. package/commands/__tests__/mcp.test.d.ts +0 -1
  326. package/commands/__tests__/mcp.test.js +0 -46
  327. package/commands/__tests__/open.test.d.ts +0 -1
  328. package/commands/__tests__/open.test.js +0 -58
  329. package/commands/__tests__/project.test.d.ts +0 -1
  330. package/commands/__tests__/project.test.js +0 -125
  331. package/commands/__tests__/sandbox.test.d.ts +0 -1
  332. package/commands/__tests__/sandbox.test.js +0 -44
  333. package/commands/__tests__/secret.test.d.ts +0 -1
  334. package/commands/__tests__/secret.test.js +0 -49
  335. package/commands/__tests__/testAccount.test.d.ts +0 -1
  336. package/commands/__tests__/testAccount.test.js +0 -57
  337. package/commands/__tests__/upgrade.test.d.ts +0 -1
  338. package/commands/__tests__/upgrade.test.js +0 -309
  339. package/commands/account/__tests__/auth.test.d.ts +0 -1
  340. package/commands/account/__tests__/auth.test.js +0 -206
  341. package/commands/account/__tests__/clean.test.d.ts +0 -1
  342. package/commands/account/__tests__/clean.test.js +0 -28
  343. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  344. package/commands/account/__tests__/createOverride.test.js +0 -32
  345. package/commands/account/__tests__/info.test.d.ts +0 -1
  346. package/commands/account/__tests__/info.test.js +0 -28
  347. package/commands/account/__tests__/list.test.d.ts +0 -1
  348. package/commands/account/__tests__/list.test.js +0 -153
  349. package/commands/account/__tests__/remove.test.d.ts +0 -1
  350. package/commands/account/__tests__/remove.test.js +0 -36
  351. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  352. package/commands/account/__tests__/removeOverride.js +0 -25
  353. package/commands/account/__tests__/rename.test.d.ts +0 -1
  354. package/commands/account/__tests__/rename.test.js +0 -82
  355. package/commands/account/__tests__/use.test.d.ts +0 -1
  356. package/commands/account/__tests__/use.test.js +0 -170
  357. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  358. package/commands/app/__tests__/migrate.test.js +0 -111
  359. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  360. package/commands/app/secret/__tests__/add.test.js +0 -140
  361. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  362. package/commands/app/secret/__tests__/delete.test.js +0 -28
  363. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  364. package/commands/app/secret/__tests__/list.test.js +0 -25
  365. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  366. package/commands/app/secret/__tests__/update.test.js +0 -28
  367. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  368. package/commands/cms/__tests__/delete.test.js +0 -39
  369. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  370. package/commands/cms/__tests__/fetch.test.js +0 -156
  371. package/commands/cms/__tests__/function.test.d.ts +0 -1
  372. package/commands/cms/__tests__/function.test.js +0 -50
  373. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  374. package/commands/cms/__tests__/lint.test.js +0 -33
  375. package/commands/cms/__tests__/list.test.d.ts +0 -1
  376. package/commands/cms/__tests__/list.test.js +0 -42
  377. package/commands/cms/__tests__/module.test.d.ts +0 -1
  378. package/commands/cms/__tests__/module.test.js +0 -45
  379. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  380. package/commands/cms/__tests__/mv.test.js +0 -46
  381. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  382. package/commands/cms/__tests__/theme.test.js +0 -54
  383. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  384. package/commands/cms/__tests__/upload.test.js +0 -308
  385. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  386. package/commands/cms/__tests__/watch.test.js +0 -212
  387. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  388. package/commands/cms/function/__tests__/logs.test.js +0 -70
  389. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  390. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  391. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  392. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  393. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  394. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  395. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  396. package/commands/customObject/__tests__/create.test.js +0 -40
  397. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  398. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  399. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  400. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  401. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  402. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  403. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  404. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  405. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  406. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  407. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  408. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  409. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  410. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  411. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  412. package/commands/filemanager/__tests__/upload.test.js +0 -191
  413. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  414. package/commands/hubdb/__tests__/clear.test.js +0 -28
  415. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  416. package/commands/hubdb/__tests__/create.test.js +0 -28
  417. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  418. package/commands/hubdb/__tests__/delete.test.js +0 -28
  419. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  420. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  421. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  422. package/commands/hubdb/__tests__/list.test.js +0 -88
  423. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  424. package/commands/mcp/__tests__/setup.test.js +0 -26
  425. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  426. package/commands/mcp/__tests__/start.test.js +0 -137
  427. package/commands/project/__tests__/add.test.d.ts +0 -1
  428. package/commands/project/__tests__/add.test.js +0 -107
  429. package/commands/project/__tests__/create.test.d.ts +0 -1
  430. package/commands/project/__tests__/create.test.js +0 -97
  431. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  432. package/commands/project/__tests__/deploy.test.js +0 -307
  433. package/commands/project/__tests__/dev.test.d.ts +0 -1
  434. package/commands/project/__tests__/dev.test.js +0 -273
  435. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  436. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  437. package/commands/project/__tests__/download.test.d.ts +0 -1
  438. package/commands/project/__tests__/download.test.js +0 -39
  439. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  440. package/commands/project/__tests__/installDeps.test.js +0 -140
  441. package/commands/project/__tests__/lint.test.d.ts +0 -1
  442. package/commands/project/__tests__/lint.test.js +0 -704
  443. package/commands/project/__tests__/list.test.d.ts +0 -1
  444. package/commands/project/__tests__/list.test.js +0 -31
  445. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  446. package/commands/project/__tests__/listBuilds.test.js +0 -38
  447. package/commands/project/__tests__/logs.test.d.ts +0 -1
  448. package/commands/project/__tests__/logs.test.js +0 -202
  449. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  450. package/commands/project/__tests__/migrate.test.js +0 -106
  451. package/commands/project/__tests__/open.test.d.ts +0 -1
  452. package/commands/project/__tests__/open.test.js +0 -39
  453. package/commands/project/__tests__/profile.test.d.ts +0 -1
  454. package/commands/project/__tests__/profile.test.js +0 -42
  455. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  456. package/commands/project/__tests__/updateDeps.test.js +0 -140
  457. package/commands/project/__tests__/upload.test.d.ts +0 -1
  458. package/commands/project/__tests__/upload.test.js +0 -234
  459. package/commands/project/__tests__/validate.test.d.ts +0 -1
  460. package/commands/project/__tests__/validate.test.js +0 -381
  461. package/commands/project/__tests__/watch.test.d.ts +0 -1
  462. package/commands/project/__tests__/watch.test.js +0 -35
  463. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  464. package/commands/sandbox/__tests__/create.test.js +0 -245
  465. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  466. package/commands/sandbox/__tests__/delete.test.js +0 -31
  467. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  468. package/commands/secret/__tests__/addSecret.test.js +0 -162
  469. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  470. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  471. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  472. package/commands/secret/__tests__/listSecret.test.js +0 -29
  473. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  474. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  475. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  476. package/commands/testAccount/__tests__/create.test.js +0 -106
  477. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  478. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  479. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  480. package/commands/testAccount/__tests__/delete.test.js +0 -29
  481. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  482. package/commands/testAccount/__tests__/importData.test.js +0 -92
  483. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  484. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  485. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  486. package/lib/__tests__/accountAuth.test.js +0 -258
  487. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  488. package/lib/__tests__/accountTypes.test.js +0 -98
  489. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  490. package/lib/__tests__/buildAccount.test.js +0 -262
  491. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  492. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  493. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  494. package/lib/__tests__/commandSuggestion.test.js +0 -119
  495. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  496. package/lib/__tests__/commonOpts.test.js +0 -80
  497. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  498. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  499. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  500. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  501. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  502. package/lib/__tests__/hasFeature.test.js +0 -167
  503. package/lib/__tests__/http.test.d.ts +0 -1
  504. package/lib/__tests__/http.test.js +0 -40
  505. package/lib/__tests__/importData.test.d.ts +0 -1
  506. package/lib/__tests__/importData.test.js +0 -98
  507. package/lib/__tests__/npmCli.test.d.ts +0 -1
  508. package/lib/__tests__/npmCli.test.js +0 -84
  509. package/lib/__tests__/oauth.test.d.ts +0 -1
  510. package/lib/__tests__/oauth.test.js +0 -109
  511. package/lib/__tests__/parsing.test.d.ts +0 -1
  512. package/lib/__tests__/parsing.test.js +0 -34
  513. package/lib/__tests__/polling.test.d.ts +0 -1
  514. package/lib/__tests__/polling.test.js +0 -76
  515. package/lib/__tests__/process.test.d.ts +0 -1
  516. package/lib/__tests__/process.test.js +0 -89
  517. package/lib/__tests__/sandboxSync.test.d.ts +0 -1
  518. package/lib/__tests__/sandboxSync.test.js +0 -147
  519. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  520. package/lib/__tests__/sandboxes.test.js +0 -156
  521. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  522. package/lib/__tests__/serverlessLogs.test.js +0 -148
  523. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  524. package/lib/__tests__/usageTracking.test.js +0 -197
  525. package/lib/__tests__/validation.test.d.ts +0 -1
  526. package/lib/__tests__/validation.test.js +0 -143
  527. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  528. package/lib/__tests__/yargsUtils.test.js +0 -124
  529. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  530. package/lib/app/__tests__/migrate.test.js +0 -638
  531. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  532. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  533. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  534. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  535. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  536. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  537. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  538. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  539. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  540. package/lib/mcp/__tests__/setup.test.js +0 -194
  541. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  542. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  543. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  544. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  545. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  546. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  547. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  548. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  549. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  550. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  551. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  552. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  553. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  554. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  555. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  556. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  557. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  558. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  559. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  560. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  561. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  562. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  563. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  564. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  565. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  566. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  567. package/lib/projects/__tests__/components.test.d.ts +0 -1
  568. package/lib/projects/__tests__/components.test.js +0 -426
  569. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  570. package/lib/projects/__tests__/deploy.test.js +0 -231
  571. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  572. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  573. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  574. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  575. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  576. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  577. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  578. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  579. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  580. package/lib/projects/__tests__/projects.test.js +0 -58
  581. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  582. package/lib/projects/__tests__/structure.test.js +0 -210
  583. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  584. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  585. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  586. package/lib/projects/__tests__/upload.test.js +0 -183
  587. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  588. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  589. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  590. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  591. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  592. package/lib/projects/create/__tests__/legacy.test.js +0 -90
  593. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  594. package/lib/projects/create/__tests__/v2.test.js +0 -257
  595. package/lib/projects/platformVersion.d.ts +0 -9
  596. package/lib/projects/platformVersion.js +0 -39
  597. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  598. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  599. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  600. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  601. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  602. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  603. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  604. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  605. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  606. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  607. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  608. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  609. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  610. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  611. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  612. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  613. package/lib/sandboxSync.d.ts +0 -4
  614. package/lib/sandboxSync.js +0 -102
  615. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  616. package/lib/theme/__tests__/migrate.test.js +0 -256
  617. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  618. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  619. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  620. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  621. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  622. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
  623. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  624. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
  625. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  626. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
  627. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  628. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
  629. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  630. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
  631. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  632. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
  633. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  634. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
  635. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  636. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
  637. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  638. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
  639. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  640. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
  641. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  642. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  643. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  644. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  645. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  646. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
  647. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  648. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  649. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  650. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  651. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  652. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  653. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  654. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  655. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  656. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  657. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  658. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
  659. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  660. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  661. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  662. package/mcp-server/utils/__tests__/command.test.js +0 -45
  663. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  664. package/mcp-server/utils/__tests__/content.test.js +0 -164
  665. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  666. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
  667. package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
  668. package/mcp-server/utils/__tests__/project.test.js +0 -140
  669. package/mcp-server/utils/project.d.ts +0 -5
  670. package/mcp-server/utils/project.js +0 -18
@@ -0,0 +1,67 @@
1
+ import { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } from '@hubspot/local-dev-lib/constants/config';
2
+ import { isSandbox, isDeveloperTestAccount } from '../accountTypes.js';
3
+ import { getAllConfigAccounts } from '@hubspot/local-dev-lib/config';
4
+ import { commands } from '../../lang/en.js';
5
+ import { renderTable } from '../../ui/render.js';
6
+ import { uiLogger } from './logger.js';
7
+ export function sortAndMapAccounts(accounts) {
8
+ const mappedAccountData = {};
9
+ // Standard and app developer accounts
10
+ accounts
11
+ .filter(p => p.accountType &&
12
+ (p.accountType === HUBSPOT_ACCOUNT_TYPES.STANDARD ||
13
+ p.accountType === HUBSPOT_ACCOUNT_TYPES.APP_DEVELOPER))
14
+ .forEach(account => {
15
+ mappedAccountData[account.accountId] = [account];
16
+ });
17
+ // Non-standard accounts (sandbox, developer test account)
18
+ accounts
19
+ .filter(p => p.accountType && (isSandbox(p) || isDeveloperTestAccount(p)))
20
+ .forEach(p => {
21
+ if (p.parentAccountId) {
22
+ mappedAccountData[p.parentAccountId] = [
23
+ ...(mappedAccountData[p.parentAccountId] || []),
24
+ p,
25
+ ];
26
+ }
27
+ else {
28
+ mappedAccountData[p.accountId] = [p];
29
+ }
30
+ });
31
+ return mappedAccountData;
32
+ }
33
+ export function getAccountData(mappedAccountData) {
34
+ const accountData = [];
35
+ Object.entries(mappedAccountData).forEach(([key, set]) => {
36
+ const hasParentAccount = set.filter(p => p.accountId === parseInt(key, 10))[0];
37
+ set.forEach(account => {
38
+ let name = `${account.name} [${HUBSPOT_ACCOUNT_TYPE_STRINGS[account.accountType]}]`;
39
+ if (isSandbox(account)) {
40
+ if (hasParentAccount && set.length > 1) {
41
+ name = `↳ ${name}`;
42
+ }
43
+ }
44
+ else if (isDeveloperTestAccount(account)) {
45
+ if (hasParentAccount && set.length > 1) {
46
+ name = `↳ ${name}`;
47
+ }
48
+ }
49
+ accountData.push([name, String(account.accountId), account.authType]);
50
+ });
51
+ });
52
+ return accountData;
53
+ }
54
+ export function renderAccountTable(showAllLabel = false) {
55
+ const accountsList = getAllConfigAccounts();
56
+ const mappedAccountData = sortAndMapAccounts(accountsList);
57
+ const accountData = getAccountData(mappedAccountData);
58
+ const tableHeader = [
59
+ commands.account.subcommands.list.labels.name,
60
+ commands.account.subcommands.list.labels.accountId,
61
+ commands.account.subcommands.list.labels.authType,
62
+ ];
63
+ uiLogger.log(showAllLabel
64
+ ? commands.account.subcommands.list.allAccounts
65
+ : commands.account.subcommands.list.accounts);
66
+ renderTable(tableHeader, accountData, true);
67
+ }
@@ -28,5 +28,4 @@ export declare function breakText(text: string, prefixLength: number): string;
28
28
  export declare function getLinesLength(text: string, prefixLength: number): number[];
29
29
  export declare function writeStream(stream: NodeJS.WriteStream, output: string, rawLines: number[]): void;
30
30
  export declare function cleanStream(stream: NodeJS.WriteStream, rawLines: number[]): void;
31
- export declare function terminalSupportsUnicode(): boolean;
32
31
  export {};
@@ -9,6 +9,8 @@ The above copyright notice and this permission notice shall be included in all c
9
9
  **/
10
10
  import readline from 'readline';
11
11
  import stripAnsi from 'strip-ansi';
12
+ import { isUnicodeSupported } from '@hubspot/local-dev-lib/isUnicodeSupported';
13
+ import { getSymbols } from '@hubspot/local-dev-lib/logger';
12
14
  export const VALID_STATUSES = [
13
15
  'succeed',
14
16
  'fail',
@@ -64,7 +66,7 @@ export function purgeSpinnersOptions({ spinner, disableSpins, ...others }) {
64
66
  return { ...colors, ...prefixes, ...disableSpinsOption, spinner };
65
67
  }
66
68
  function turnToValidSpinner(spinner = {}) {
67
- const platformSpinner = terminalSupportsUnicode()
69
+ const platformSpinner = isUnicodeSupported()
68
70
  ? SPINNERS.dots
69
71
  : SPINNERS.dashes;
70
72
  if (typeof spinner !== 'object') {
@@ -101,14 +103,9 @@ export function colorOptions({ color, succeedColor, failColor, spinnerColor, })
101
103
  return colors;
102
104
  }
103
105
  export function prefixOptions({ succeedPrefix, failPrefix, }) {
104
- if (terminalSupportsUnicode()) {
105
- succeedPrefix = succeedPrefix || '✓';
106
- failPrefix = failPrefix || '✖';
107
- }
108
- else {
109
- succeedPrefix = succeedPrefix || '√';
110
- failPrefix = failPrefix || '×';
111
- }
106
+ const symbols = getSymbols();
107
+ succeedPrefix = succeedPrefix || symbols.success;
108
+ failPrefix = failPrefix || symbols.error;
112
109
  return { succeedPrefix, failPrefix };
113
110
  }
114
111
  export function breakText(text, prefixLength) {
@@ -142,10 +139,3 @@ export function cleanStream(stream, rawLines) {
142
139
  readline.clearScreenDown(stream);
143
140
  readline.moveCursor(stream, 0, -rawLines.length);
144
141
  }
145
- export function terminalSupportsUnicode() {
146
- // The default command prompt and powershell in Windows do not support Unicode characters.
147
- // However, the VSCode integrated terminal and the Windows Terminal both do.
148
- return (process.platform !== 'win32' ||
149
- process.env.TERM_PROGRAM === 'vscode' ||
150
- !!process.env.WT_SESSION);
151
- }
@@ -1,4 +1,4 @@
1
- type Meta = {
1
+ export type UsageTrackingMeta = {
2
2
  action?: string;
3
3
  os?: string;
4
4
  nodeVersion?: string;
@@ -24,9 +24,8 @@ export declare function getNodeVersionData(): {
24
24
  nodeMajorVersion: string;
25
25
  };
26
26
  export declare function getPlatform(): string;
27
- export declare function trackCommandUsage(command: string, meta?: Meta, accountId?: number): Promise<void>;
27
+ export declare function trackCommandUsage(command: string, meta?: UsageTrackingMeta, accountId?: number): Promise<void>;
28
28
  export declare function trackHelpUsage(command: string): Promise<void>;
29
29
  export declare function trackConvertFieldsUsage(command: string): Promise<void>;
30
30
  export declare function trackAuthAction(command: string, authType: string, step: string, accountId?: number): Promise<void>;
31
- export declare function trackCommandMetadataUsage(command: string, meta?: Meta, accountId?: number): Promise<void>;
32
- export {};
31
+ export declare function trackCommandMetadataUsage(command: string, meta?: UsageTrackingMeta, accountId?: number): Promise<void>;
@@ -44,11 +44,14 @@ export async function trackCommandUsage(command, meta = {}, accountId) {
44
44
  uiLogger.debug(`Attempting to track usage of "${command}" command`);
45
45
  let authType = 'unknown';
46
46
  if (accountId) {
47
- const accountConfig = getConfigAccountById(accountId);
48
- authType =
49
- accountConfig && accountConfig.authType
50
- ? accountConfig.authType
51
- : API_KEY_AUTH_METHOD.value;
47
+ try {
48
+ const accountConfig = getConfigAccountById(accountId);
49
+ authType =
50
+ accountConfig && accountConfig.authType
51
+ ? accountConfig.authType
52
+ : API_KEY_AUTH_METHOD.value;
53
+ }
54
+ catch (e) { }
52
55
  }
53
56
  return trackCliInteraction({
54
57
  action: 'cli-command',
@@ -159,7 +162,7 @@ async function trackCliInteraction({ action, accountId, command, authType, meta
159
162
  }
160
163
  try {
161
164
  uiLogger.debug('Sent usage tracking command event:', usageTrackingEvent);
162
- return trackUsage('cli-interaction', EventClass.INTERACTION, usageTrackingEvent, accountId);
165
+ await trackUsage('cli-interaction', EventClass.INTERACTION, usageTrackingEvent, accountId);
163
166
  }
164
167
  catch (error) {
165
168
  debugError(error);
@@ -0,0 +1,13 @@
1
+ import { Argv } from 'yargs';
2
+ export declare function makeYargsBuilder<T>(callback: (yargs: Argv) => Argv<T>, command: string | string[], describe?: string, options?: {
3
+ useGlobalOptions?: boolean;
4
+ useAccountOptions?: boolean;
5
+ useConfigOptions?: boolean;
6
+ useEnvironmentOptions?: boolean;
7
+ useTestingOptions?: boolean;
8
+ useCmsPublishModeOptions?: boolean | {
9
+ read?: boolean;
10
+ write?: boolean;
11
+ };
12
+ useJSONOutputOptions?: boolean;
13
+ }): (yargs: Argv) => Promise<Argv<T>>;
@@ -0,0 +1,33 @@
1
+ import { addCustomHelpOutput, addTestingOptions, addAccountOptions, addConfigOptions, addGlobalOptions, addUseEnvironmentOptions, addCmsPublishModeOptions, addJSONOutputOptions, } from '../commonOpts.js';
2
+ export function makeYargsBuilder(callback, command, describe, options = {}) {
3
+ return async function (yargs) {
4
+ if (options.useGlobalOptions) {
5
+ addGlobalOptions(yargs);
6
+ }
7
+ if (options.useAccountOptions) {
8
+ addAccountOptions(yargs);
9
+ }
10
+ if (options.useConfigOptions) {
11
+ addConfigOptions(yargs);
12
+ }
13
+ if (options.useEnvironmentOptions) {
14
+ addUseEnvironmentOptions(yargs);
15
+ }
16
+ if (options.useTestingOptions) {
17
+ addTestingOptions(yargs);
18
+ }
19
+ if (options.useJSONOutputOptions) {
20
+ addJSONOutputOptions(yargs);
21
+ }
22
+ if (options.useCmsPublishModeOptions) {
23
+ const opts = typeof options.useCmsPublishModeOptions === 'object'
24
+ ? options.useCmsPublishModeOptions
25
+ : { write: true };
26
+ addCmsPublishModeOptions(yargs, opts);
27
+ }
28
+ const result = callback(yargs);
29
+ // Must go last to pick up available options
30
+ await addCustomHelpOutput(result, command, describe);
31
+ return result;
32
+ };
33
+ }
@@ -0,0 +1,3 @@
1
+ import { ArgumentsCamelCase } from 'yargs';
2
+ import { CommonArgs } from '../../types/Yargs.js';
3
+ export declare function makeYargsHandlerWithUsageTracking<T extends CommonArgs>(trackingName: string, handler: (args: ArgumentsCamelCase<T>) => Promise<void>): (args: ArgumentsCamelCase<T>) => Promise<void>;
@@ -0,0 +1,95 @@
1
+ import { getConfig } from '@hubspot/local-dev-lib/config';
2
+ import { getStateValue, setStateValue, } from '@hubspot/local-dev-lib/config/state';
3
+ import { STATE_FLAGS } from '@hubspot/local-dev-lib/constants/config';
4
+ import { trackCommandUsage as _trackCommandUsage } from '../usageTracking.js';
5
+ import { pkg } from '../jsonLoader.js';
6
+ import { uiLogger } from '../ui/logger.js';
7
+ import { lib } from '../../lang/en.js';
8
+ import { EXIT_CODES } from '../enums/exitCodes.js';
9
+ import { isPromptExitError } from '../errors/PromptExitError.js';
10
+ import { debugError } from '../errorHandlers/index.js';
11
+ function logUsageTrackingMessage(isJsonOutput) {
12
+ if (isJsonOutput) {
13
+ return;
14
+ }
15
+ try {
16
+ const config = getConfig();
17
+ if (config?.allowUsageTracking !== true) {
18
+ return;
19
+ }
20
+ const lastShownVersion = getStateValue(STATE_FLAGS.USAGE_TRACKING_MESSAGE_LAST_SHOW_VERSION);
21
+ if (lastShownVersion === pkg.version) {
22
+ return;
23
+ }
24
+ setStateValue(STATE_FLAGS.USAGE_TRACKING_MESSAGE_LAST_SHOW_VERSION, pkg.version);
25
+ uiLogger.info(lib.usageTracking.transparencyMessage);
26
+ }
27
+ catch (_e) {
28
+ return;
29
+ }
30
+ }
31
+ export function makeYargsHandlerWithUsageTracking(trackingName, handler) {
32
+ return async (args) => {
33
+ const meta = {};
34
+ let trackingFired = false;
35
+ const trackingArgs = args;
36
+ const addUsageMetadata = (newMeta) => {
37
+ Object.assign(meta, newMeta);
38
+ };
39
+ trackingArgs.addUsageMetadata = addUsageMetadata;
40
+ const trackCommandUsage = async (successful) => {
41
+ if (trackingFired) {
42
+ return;
43
+ }
44
+ trackingFired = true;
45
+ try {
46
+ const { accountId: overrideAccountId, ...trackingMeta } = meta;
47
+ trackingMeta.successful = successful;
48
+ await _trackCommandUsage(trackingName, trackingMeta, overrideAccountId ?? args.derivedAccountId);
49
+ }
50
+ catch (_e) { }
51
+ };
52
+ const onForcedExit = () => {
53
+ process.exit(EXIT_CODES.SUCCESS);
54
+ };
55
+ const onSigint = async () => {
56
+ process.removeListener('SIGINT', onSigint);
57
+ process.on('SIGINT', onForcedExit);
58
+ try {
59
+ await trackCommandUsage(false);
60
+ }
61
+ catch (_e) { }
62
+ process.removeListener('SIGINT', onForcedExit);
63
+ process.exit(EXIT_CODES.SUCCESS);
64
+ };
65
+ process.on('SIGINT', onSigint);
66
+ const trackCommandUsageAndRemoveListeners = async (successful) => {
67
+ await trackCommandUsage(successful);
68
+ process.removeListener('SIGINT', onSigint);
69
+ process.removeListener('SIGINT', onForcedExit);
70
+ };
71
+ trackingArgs.exit = async (code) => {
72
+ await trackCommandUsageAndRemoveListeners(code !== EXIT_CODES.ERROR);
73
+ return process.exit(code);
74
+ };
75
+ const jsonArgs = args;
76
+ logUsageTrackingMessage(Boolean(jsonArgs.json || jsonArgs.formatOutputAsJson));
77
+ try {
78
+ await handler(trackingArgs);
79
+ }
80
+ catch (e) {
81
+ const isSuccessfulPromptExit = isPromptExitError(e)
82
+ ? e.exitCode !== EXIT_CODES.ERROR
83
+ : false;
84
+ await trackCommandUsageAndRemoveListeners(isSuccessfulPromptExit);
85
+ if (isPromptExitError(e)) {
86
+ return process.exit(e.exitCode);
87
+ }
88
+ else {
89
+ debugError(e);
90
+ return process.exit(EXIT_CODES.ERROR);
91
+ }
92
+ }
93
+ await trackCommandUsageAndRemoveListeners(true);
94
+ };
95
+ }
@@ -0,0 +1,4 @@
1
+ import { ArgumentsCamelCase, Argv } from 'yargs';
2
+ type YargsFailureHandler<T> = (message: string | null, error: unknown, parser: Argv<T>) => never;
3
+ export declare function parseYargsOrExit<T>(parser: Argv<T>, handleFailure: YargsFailureHandler<T>): Promise<ArgumentsCamelCase<T>>;
4
+ export {};
@@ -0,0 +1,25 @@
1
+ function getYargsErrorMessage(error) {
2
+ return error instanceof Error && error.name === 'YError' ? error.message : '';
3
+ }
4
+ function getYargsFailureMessage(message, error) {
5
+ if (message) {
6
+ return message;
7
+ }
8
+ return getYargsErrorMessage(error) || message;
9
+ }
10
+ export async function parseYargsOrExit(parser, handleFailure) {
11
+ let failureHandled = false;
12
+ const parserWithFailureHandler = parser.fail((message, error, yargs) => {
13
+ failureHandled = true;
14
+ return handleFailure(getYargsFailureMessage(message, error), error, yargs);
15
+ });
16
+ try {
17
+ return await parserWithFailureHandler.parseAsync();
18
+ }
19
+ catch (error) {
20
+ if (failureHandled) {
21
+ throw error;
22
+ }
23
+ return handleFailure(getYargsErrorMessage(error), error, parserWithFailureHandler);
24
+ }
25
+ }
@@ -0,0 +1 @@
1
+ export declare function strictEnforceBoolean(rawArgs: string[], booleanOptions: string[]): boolean;
@@ -0,0 +1,13 @@
1
+ import { commands } from '../../lang/en.js';
2
+ export function strictEnforceBoolean(rawArgs, booleanOptions) {
3
+ for (const option of booleanOptions) {
4
+ const argIndex = rawArgs.findIndex(arg => arg.startsWith(`--${option}=`));
5
+ if (argIndex !== -1) {
6
+ const value = rawArgs[argIndex].split('=')[1];
7
+ if (value && !['true', 'false'].includes(value.toLowerCase())) {
8
+ throw new Error(commands.config.subcommands.set.errors.invalidBoolean(option, value));
9
+ }
10
+ }
11
+ }
12
+ return true;
13
+ }
@@ -1,16 +1,3 @@
1
- import { Argv } from 'yargs';
2
- import { hasFlag } from './utils/hasFlag.js';
3
- export { hasFlag };
4
- export declare function makeYargsBuilder<T>(callback: (yargs: Argv) => Argv<T>, command: string | string[], describe?: string, options?: {
5
- useGlobalOptions?: boolean;
6
- useAccountOptions?: boolean;
7
- useConfigOptions?: boolean;
8
- useEnvironmentOptions?: boolean;
9
- useTestingOptions?: boolean;
10
- useCmsPublishModeOptions?: boolean | {
11
- read?: boolean;
12
- write?: boolean;
13
- };
14
- useJSONOutputOptions?: boolean;
15
- }): (yargs: Argv) => Promise<Argv<T>>;
16
- export declare function strictEnforceBoolean(rawArgs: string[], booleanOptions: string[]): boolean;
1
+ export { hasFlag } from './utils/hasFlag.js';
2
+ export { makeYargsBuilder } from './yargs/makeYargsBuilder.js';
3
+ export { strictEnforceBoolean } from './yargs/strictEnforceBoolean.js';
package/lib/yargsUtils.js CHANGED
@@ -1,49 +1,4 @@
1
- import { addCustomHelpOutput, addTestingOptions, addAccountOptions, addConfigOptions, addGlobalOptions, addUseEnvironmentOptions, addCmsPublishModeOptions, addJSONOutputOptions, } from './commonOpts.js';
2
- import { hasFlag } from './utils/hasFlag.js';
3
- import { commands } from '../lang/en.js';
4
1
  // Re-export for backwards compatibility
5
- export { hasFlag };
6
- export function makeYargsBuilder(callback, command, describe, options = {}) {
7
- return async function (yargs) {
8
- if (options.useGlobalOptions) {
9
- addGlobalOptions(yargs);
10
- }
11
- if (options.useAccountOptions) {
12
- addAccountOptions(yargs);
13
- }
14
- if (options.useConfigOptions) {
15
- addConfigOptions(yargs);
16
- }
17
- if (options.useEnvironmentOptions) {
18
- addUseEnvironmentOptions(yargs);
19
- }
20
- if (options.useTestingOptions) {
21
- addTestingOptions(yargs);
22
- }
23
- if (options.useJSONOutputOptions) {
24
- addJSONOutputOptions(yargs);
25
- }
26
- if (options.useCmsPublishModeOptions) {
27
- const opts = typeof options.useCmsPublishModeOptions === 'object'
28
- ? options.useCmsPublishModeOptions
29
- : { write: true };
30
- addCmsPublishModeOptions(yargs, opts);
31
- }
32
- const result = callback(yargs);
33
- // Must go last to pick up available options
34
- await addCustomHelpOutput(result, command, describe);
35
- return result;
36
- };
37
- }
38
- export function strictEnforceBoolean(rawArgs, booleanOptions) {
39
- for (const option of booleanOptions) {
40
- const argIndex = rawArgs.findIndex(arg => arg.startsWith(`--${option}=`));
41
- if (argIndex !== -1) {
42
- const value = rawArgs[argIndex].split('=')[1];
43
- if (value && !['true', 'false'].includes(value.toLowerCase())) {
44
- throw new Error(commands.config.subcommands.set.errors.invalidBoolean(option, value));
45
- }
46
- }
47
- }
48
- return true;
49
- }
2
+ export { hasFlag } from './utils/hasFlag.js';
3
+ export { makeYargsBuilder } from './yargs/makeYargsBuilder.js';
4
+ export { strictEnforceBoolean } from './yargs/strictEnforceBoolean.js';
@@ -0,0 +1,15 @@
1
+ import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { McpLogger } from './utils/logger.js';
3
+ import { TextContentResponse } from './types.js';
4
+ export declare class Tool<InputSchema> {
5
+ protected mcpServer: McpServer;
6
+ protected logger: McpLogger;
7
+ protected toolName: string;
8
+ constructor(mcpServer: McpServer, logger: McpLogger, toolName: string);
9
+ register(): RegisteredTool;
10
+ handler(input: InputSchema): TextContentResponse | Promise<TextContentResponse>;
11
+ protected getTrackingMeta(input: InputSchema): {
12
+ [key: string]: string;
13
+ } | undefined;
14
+ protected wrappedHandler(input: InputSchema): Promise<TextContentResponse>;
15
+ }
@@ -0,0 +1,53 @@
1
+ import { formatTextContents } from './utils/content.js';
2
+ import { getErrorMessage } from '../lib/errorHandlers/index.js';
3
+ import { trackToolUsage } from './utils/toolUsageTracking.js';
4
+ export class Tool {
5
+ mcpServer;
6
+ logger;
7
+ toolName;
8
+ constructor(mcpServer, logger, toolName) {
9
+ this.mcpServer = mcpServer;
10
+ this.logger = logger;
11
+ this.toolName = toolName;
12
+ }
13
+ register() {
14
+ throw new Error('Must implement register');
15
+ }
16
+ handler(
17
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
+ input) {
19
+ throw new Error('Must implement handler');
20
+ }
21
+ getTrackingMeta(
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ input) {
24
+ return undefined;
25
+ }
26
+ async wrappedHandler(input) {
27
+ const startTime = Date.now();
28
+ try {
29
+ // `input` is logged unredacted. Tool input schemas MUST NOT include
30
+ // credentials or other sensitive values, since MCP clients (Claude
31
+ // Desktop, Inspector, etc.) will display these logs.
32
+ this.logger.debug(this.toolName, {
33
+ message: 'Tool invoked',
34
+ args: input,
35
+ });
36
+ await trackToolUsage(this.toolName, this.getTrackingMeta(input));
37
+ const result = await this.handler(input);
38
+ this.logger.debug(this.toolName, {
39
+ message: 'Tool completed',
40
+ durationMs: Date.now() - startTime,
41
+ });
42
+ return result;
43
+ }
44
+ catch (error) {
45
+ this.logger.error(this.toolName, {
46
+ message: 'Tool failed',
47
+ error: error instanceof Error ? error.message : String(error),
48
+ durationMs: Date.now() - startTime,
49
+ });
50
+ return formatTextContents(getErrorMessage(error));
51
+ }
52
+ }
53
+ }
@@ -1,13 +1,53 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { registerProjectTools, registerCmsTools } from './tools/index.js';
4
+ import { McpLogger } from './utils/logger.js';
5
+ const instructions = `
6
+ This server exposes the HubSpot CLI (\`hs\`) for local development of HubSpot
7
+ projects, apps, and CMS assets. Prefer these tools over running \`hs\`,
8
+ \`npx hs\`, or HubSpot HTTP APIs directly via shell — they handle config
9
+ loading, auth, platform-version flags, and structured output for you.
10
+
11
+ WHEN TO USE THIS SERVER
12
+ - The user is working in a HubSpot project directory (has an hsproject.json
13
+ or *-hsmeta.json files), or wants to scaffold one.
14
+ - The user asks about HubSpot apps, CMS modules/templates/serverless
15
+ functions, project builds, deploys, or developer test accounts.
16
+ - The user asks a HubSpot platform/API question — answer it from the docs
17
+ via \`search-docs\` + \`fetch-doc\` rather than from prior knowledge.
18
+
19
+ REQUIRED WORKFLOWS
20
+ 1. Documentation lookup: always call \`search-docs\` first, then
21
+ \`fetch-doc\` on the most relevant result(s) before planning, writing
22
+ code, or answering platform/API questions. Do not answer from memory.
23
+ 2. Locating a HubSpot project: when the current working directory is not
24
+ a HubSpot project (no \`hsproject.json\`) or you need to determine
25
+ whether a directory contains one, call \`find-projects\` before
26
+ running any tool that requires a project path.
27
+ 3. Editing \`*-hsmeta.json\`: call \`get-feature-config-schema\` for that
28
+ feature type first to learn the allowed fields and values.
29
+ 4. Debugging a failed build: start with \`get-build-status\` to surface
30
+ error messages, and only reach for \`get-build-logs\` for deeper
31
+ troubleshooting or warnings.
32
+ 5. Reading serverless function logs: call \`list-cms-serverless-functions\`
33
+ first to discover the endpoint path, then
34
+ \`get-cms-serverless-function-logs\`.
35
+ 6. App analytics: call \`get-apps-info\` to discover \`appId\` values
36
+ before \`get-api-usage-patterns-by-app-id\`.
37
+
38
+ OUTPUT
39
+ Tool results contain the relevant \`hs\` stdout/stderr or structured data.
40
+ Surface error text from results to the user verbatim when troubleshooting,
41
+ rather than paraphrasing.
42
+ `.trim();
4
43
  const server = new McpServer({
5
44
  name: 'HubSpot CLI MCP Server',
6
45
  version: '0.0.1',
7
46
  description: 'Helps perform tasks for local development of HubSpot projects.',
8
- });
9
- registerProjectTools(server);
10
- registerCmsTools(server);
47
+ }, { capabilities: { logging: {} }, instructions });
48
+ const logger = new McpLogger(server);
49
+ registerProjectTools(server, logger);
50
+ registerCmsTools(server, logger);
11
51
  // Start receiving messages on stdin and sending messages on stdout
12
52
  const transport = new StdioServerTransport();
13
53
  server.connect(transport);
@@ -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;
@@ -17,7 +19,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
17
19
  }, z.core.$strip>;
18
20
  export type HsCreateFunctionInputSchema = z.infer<typeof inputSchemaZodObject>;
19
21
  export declare class HsCreateFunctionTool extends Tool<HsCreateFunctionInputSchema> {
20
- constructor(mcpServer: McpServer);
22
+ constructor(mcpServer: McpServer, logger: McpLogger);
21
23
  handler({ dest, functionsFolder, filename, endpointMethod, endpointPath, absoluteCurrentWorkingDirectory, }: HsCreateFunctionInputSchema): Promise<TextContentResponse>;
22
24
  register(): RegisteredTool;
23
25
  }
@@ -1,9 +1,8 @@
1
- import { Tool } from '../../types.js';
1
+ import { Tool } from '../../Tool.js';
2
2
  import { z } from 'zod';
3
3
  import { absoluteCurrentWorkingDirectory } from '../project/constants.js';
4
- import { runCommandInDir } from '../../utils/project.js';
4
+ import { runCommandInDir } from '../../utils/command.js';
5
5
  import { formatTextContents, formatTextContent } from '../../utils/content.js';
6
- import { trackToolUsage } from '../../utils/toolUsageTracking.js';
7
6
  import { addFlag } from '../../utils/command.js';
8
7
  import { HTTP_METHODS } from '../../../types/Cms.js';
9
8
  import { setupHubSpotConfig } from '../../utils/config.js';
@@ -35,12 +34,11 @@ const inputSchema = {
35
34
  const inputSchemaZodObject = z.object({ ...inputSchema });
36
35
  const toolName = 'create-cms-function';
37
36
  export class HsCreateFunctionTool extends Tool {
38
- constructor(mcpServer) {
39
- super(mcpServer);
37
+ constructor(mcpServer, logger) {
38
+ super(mcpServer, logger, toolName);
40
39
  }
41
40
  async handler({ dest, functionsFolder, filename, endpointMethod, endpointPath, absoluteCurrentWorkingDirectory, }) {
42
41
  setupHubSpotConfig(absoluteCurrentWorkingDirectory);
43
- await trackToolUsage(toolName);
44
42
  const content = [];
45
43
  // Require functions folder
46
44
  if (!functionsFolder) {
@@ -86,6 +84,10 @@ export class HsCreateFunctionTool extends Tool {
86
84
  return formatTextContents(stdout, stderr);
87
85
  }
88
86
  catch (error) {
87
+ this.logger.debug(toolName, {
88
+ message: 'Handler caught error',
89
+ error: error instanceof Error ? error.message : String(error),
90
+ });
89
91
  return formatTextContents(getErrorMessage(error));
90
92
  }
91
93
  }
@@ -100,6 +102,6 @@ export class HsCreateFunctionTool extends Tool {
100
102
  idempotentHint: false,
101
103
  openWorldHint: false,
102
104
  },
103
- }, this.handler);
105
+ }, input => this.wrappedHandler(input));
104
106
  }
105
107
  }
@@ -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;
@@ -13,7 +15,7 @@ declare const inputSchemaZodObject: z.ZodObject<{
13
15
  }, z.core.$strip>;
14
16
  export type HsCreateModuleInputSchema = z.infer<typeof inputSchemaZodObject>;
15
17
  export declare class HsCreateModuleTool extends Tool<HsCreateModuleInputSchema> {
16
- constructor(mcpServer: McpServer);
18
+ constructor(mcpServer: McpServer, logger: McpLogger);
17
19
  handler({ userSuppliedName, dest, moduleLabel, reactType, contentTypes, global, availableForNewContent, absoluteCurrentWorkingDirectory, }: HsCreateModuleInputSchema): Promise<TextContentResponse>;
18
20
  register(): RegisteredTool;
19
21
  }