@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
@@ -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,32 +1,21 @@
1
- type Meta = {
2
- action?: string;
3
- os?: string;
4
- nodeVersion?: string;
5
- nodeMajorVersion?: string;
6
- version?: string;
7
- command?: string;
8
- authType?: string;
9
- step?: string;
10
- assetType?: string;
11
- mode?: string;
12
- type?: string | number;
13
- file?: boolean;
14
- successful?: boolean;
15
- };
1
+ import { type UsageTrackingMeta, type ConfigType, type ExecutionSource } from './api/usageTracking.js';
2
+ export type { UsageTrackingMeta, ConfigType, ExecutionSource, } from './api/usageTracking.js';
16
3
  export declare const EventClass: {
17
4
  USAGE: string;
18
5
  INTERACTION: string;
19
6
  VIEW: string;
20
7
  ACTIVATION: string;
21
8
  };
22
- export declare function getNodeVersionData(): {
9
+ export declare function getExecutionEnvironmentMeta(): {
10
+ os: string;
23
11
  nodeVersion: string;
24
12
  nodeMajorVersion: string;
13
+ version: string;
14
+ configType?: ConfigType;
15
+ executionSource: ExecutionSource;
25
16
  };
26
- export declare function getPlatform(): string;
27
- export declare function trackCommandUsage(command: string, meta?: Meta, accountId?: number): Promise<void>;
17
+ export declare function trackCommandUsage(command: string, meta?: UsageTrackingMeta, accountId?: number): Promise<void>;
28
18
  export declare function trackHelpUsage(command: string): Promise<void>;
29
19
  export declare function trackConvertFieldsUsage(command: string): Promise<void>;
30
20
  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 {};
21
+ export declare function trackCommandMetadataUsage(command: string, meta?: UsageTrackingMeta, accountId?: number): Promise<void>;
@@ -1,10 +1,10 @@
1
- import { trackUsage } from '@hubspot/local-dev-lib/trackUsage';
2
- import { getConfigAccountById, getConfig } from '@hubspot/local-dev-lib/config';
1
+ import { getConfig, getConfigAccountById, getConfigFilePath, getGlobalConfigFilePath, } from '@hubspot/local-dev-lib/config';
3
2
  import { API_KEY_AUTH_METHOD } from '@hubspot/local-dev-lib/constants/auth';
4
3
  import { uiLogger } from './ui/logger.js';
5
4
  import { pkg } from './jsonLoader.js';
6
5
  import { debugError } from './errorHandlers/index.js';
7
6
  import { isUsageTrackingDisableFlagSet } from './middleware/usageTrackingMiddleware.js';
7
+ import { sendUsageEvent, } from './api/usageTracking.js';
8
8
  const version = pkg.version;
9
9
  const usageTrackingDiabled = 'Usage tracking is disabled via the --disable-usage-tracking flag, not sending usage events';
10
10
  export const EventClass = {
@@ -13,13 +13,13 @@ export const EventClass = {
13
13
  VIEW: 'VIEW',
14
14
  ACTIVATION: 'ACTIVATION',
15
15
  };
16
- export function getNodeVersionData() {
16
+ function getNodeVersionData() {
17
17
  return {
18
18
  nodeVersion: process.version,
19
19
  nodeMajorVersion: (process.version || '').split('.')[0],
20
20
  };
21
21
  }
22
- export function getPlatform() {
22
+ function getPlatform() {
23
23
  switch (process.platform) {
24
24
  case 'darwin':
25
25
  return 'macos';
@@ -29,6 +29,34 @@ export function getPlatform() {
29
29
  return process.platform;
30
30
  }
31
31
  }
32
+ function getConfigType() {
33
+ try {
34
+ return getConfigFilePath() === getGlobalConfigFilePath()
35
+ ? 'global'
36
+ : 'local';
37
+ }
38
+ catch (_e) {
39
+ return undefined;
40
+ }
41
+ }
42
+ function getExecutionSource() {
43
+ if (process.env.HUBSPOT_MCP_AI_AGENT) {
44
+ return 'mcp';
45
+ }
46
+ if (process.env.CI) {
47
+ return 'ci';
48
+ }
49
+ return 'user';
50
+ }
51
+ export function getExecutionEnvironmentMeta() {
52
+ return {
53
+ os: getPlatform(),
54
+ ...getNodeVersionData(),
55
+ version,
56
+ configType: getConfigType(),
57
+ executionSource: getExecutionSource(),
58
+ };
59
+ }
32
60
  export async function trackCommandUsage(command, meta = {}, accountId) {
33
61
  if (isUsageTrackingDisableFlagSet()) {
34
62
  uiLogger.debug(usageTrackingDiabled);
@@ -44,11 +72,14 @@ export async function trackCommandUsage(command, meta = {}, accountId) {
44
72
  uiLogger.debug(`Attempting to track usage of "${command}" command`);
45
73
  let authType = 'unknown';
46
74
  if (accountId) {
47
- const accountConfig = getConfigAccountById(accountId);
48
- authType =
49
- accountConfig && accountConfig.authType
50
- ? accountConfig.authType
51
- : API_KEY_AUTH_METHOD.value;
75
+ try {
76
+ const accountConfig = getConfigAccountById(accountId);
77
+ authType =
78
+ accountConfig && accountConfig.authType
79
+ ? accountConfig.authType
80
+ : API_KEY_AUTH_METHOD.value;
81
+ }
82
+ catch (e) { }
52
83
  }
53
84
  return trackCliInteraction({
54
85
  action: 'cli-command',
@@ -127,39 +158,25 @@ async function trackCliInteraction({ action, accountId, command, authType, meta
127
158
  if (config?.allowUsageTracking === false) {
128
159
  return;
129
160
  }
161
+ if (isUsageTrackingDisableFlagSet()) {
162
+ uiLogger.debug(usageTrackingDiabled);
163
+ return;
164
+ }
130
165
  const usageTrackingEvent = {
131
166
  action,
132
- os: getPlatform(),
133
- ...getNodeVersionData(),
134
- version,
135
167
  command,
136
168
  authType,
169
+ ...getExecutionEnvironmentMeta(),
137
170
  ...meta,
138
171
  };
139
- if (process.env.HUBSPOT_MCP_AI_AGENT) {
140
- try {
141
- await trackUsage('cli-interaction', EventClass.INTERACTION, {
142
- ...usageTrackingEvent,
143
- action: 'cli-mcp-server',
144
- type: process.env.HUBSPOT_MCP_AI_AGENT,
145
- }, accountId);
146
- uiLogger.debug('Sent AI usage tracking command event:', {
147
- ...usageTrackingEvent,
148
- action: 'cli-mcp-server',
149
- type: process.env.HUBSPOT_MCP_AI_AGENT,
150
- });
151
- }
152
- catch (error) {
153
- debugError(error);
154
- }
155
- }
156
- if (isUsageTrackingDisableFlagSet()) {
157
- uiLogger.debug(usageTrackingDiabled);
158
- return;
159
- }
160
172
  try {
161
173
  uiLogger.debug('Sent usage tracking command event:', usageTrackingEvent);
162
- return trackUsage('cli-interaction', EventClass.INTERACTION, usageTrackingEvent, accountId);
174
+ await sendUsageEvent({
175
+ eventName: 'cli-interaction',
176
+ eventClass: EventClass.INTERACTION,
177
+ meta: usageTrackingEvent,
178
+ accountId,
179
+ });
163
180
  }
164
181
  catch (error) {
165
182
  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,121 @@
1
+ import os from 'os';
2
+ import path from 'path';
3
+ import { getConfig } from '@hubspot/local-dev-lib/config';
4
+ import { getStateValue, setStateValue, } from '@hubspot/local-dev-lib/config/state';
5
+ import { STATE_FLAGS } from '@hubspot/local-dev-lib/constants/config';
6
+ import { logger as ldlLogger } from '@hubspot/local-dev-lib/logger';
7
+ import { trackCommandUsage as _trackCommandUsage } from '../usageTracking.js';
8
+ import { pkg } from '../jsonLoader.js';
9
+ import { uiLogger } from '../ui/logger.js';
10
+ import { lib } from '../../lang/en.js';
11
+ import { EXIT_CODES } from '../enums/exitCodes.js';
12
+ import { isPromptExitError } from '../errors/PromptExitError.js';
13
+ import { debugError } from '../errorHandlers/index.js';
14
+ const HANDLER_LOG_DIR = path.join(os.homedir(), '.hscli', 'logs');
15
+ function logUsageTrackingMessage(isJsonOutput) {
16
+ if (isJsonOutput) {
17
+ return;
18
+ }
19
+ try {
20
+ const config = getConfig();
21
+ if (config?.allowUsageTracking !== true) {
22
+ return;
23
+ }
24
+ const lastShownVersion = getStateValue(STATE_FLAGS.USAGE_TRACKING_MESSAGE_LAST_SHOW_VERSION);
25
+ if (lastShownVersion === pkg.version) {
26
+ return;
27
+ }
28
+ setStateValue(STATE_FLAGS.USAGE_TRACKING_MESSAGE_LAST_SHOW_VERSION, pkg.version);
29
+ uiLogger.info(lib.usageTracking.transparencyMessage);
30
+ }
31
+ catch (_e) {
32
+ return;
33
+ }
34
+ }
35
+ export function makeYargsHandlerWithUsageTracking(trackingName, handler) {
36
+ return async (args) => {
37
+ const startTime = Date.now();
38
+ const meta = {};
39
+ let trackingFired = false;
40
+ const trackingArgs = args;
41
+ const addUsageMetadata = (newMeta) => {
42
+ Object.assign(meta, newMeta);
43
+ };
44
+ trackingArgs.addUsageMetadata = addUsageMetadata;
45
+ const trackCommandUsage = async (successful) => {
46
+ if (trackingFired) {
47
+ return;
48
+ }
49
+ trackingFired = true;
50
+ try {
51
+ const { accountId: overrideAccountId, ...trackingMeta } = meta;
52
+ trackingMeta.successful = successful;
53
+ trackingMeta.executionTime = Date.now() - startTime;
54
+ await _trackCommandUsage(trackingName, trackingMeta, overrideAccountId ?? args.derivedAccountId);
55
+ }
56
+ catch (_e) { }
57
+ };
58
+ const onForcedExit = () => {
59
+ process.exit(EXIT_CODES.SUCCESS);
60
+ };
61
+ const onSigint = async () => {
62
+ process.removeListener('SIGINT', onSigint);
63
+ process.on('SIGINT', onForcedExit);
64
+ try {
65
+ await trackCommandUsage(false);
66
+ }
67
+ catch (_e) { }
68
+ process.removeListener('SIGINT', onForcedExit);
69
+ process.exit(EXIT_CODES.SUCCESS);
70
+ };
71
+ process.on('SIGINT', onSigint);
72
+ const trackCommandUsageAndRemoveListeners = async (successful) => {
73
+ await trackCommandUsage(successful);
74
+ process.removeListener('SIGINT', onSigint);
75
+ process.removeListener('SIGINT', onForcedExit);
76
+ };
77
+ const jsonArgs = args;
78
+ const isJsonOutput = Boolean(jsonArgs.json || jsonArgs.formatOutputAsJson);
79
+ const writeFailureLogFile = () => {
80
+ // Skip in JSON output modes so the side effect + stderr message don't
81
+ // interfere with structured output consumers.
82
+ if (isJsonOutput) {
83
+ return;
84
+ }
85
+ const savedPath = ldlLogger.writeBufferedLogsToFile({
86
+ dir: HANDLER_LOG_DIR,
87
+ filenamePrefix: trackingName,
88
+ });
89
+ if (savedPath) {
90
+ uiLogger.log('');
91
+ uiLogger.error(lib.handlerLogFile.saved(savedPath));
92
+ }
93
+ };
94
+ trackingArgs.exit = async (code) => {
95
+ await trackCommandUsageAndRemoveListeners(code !== EXIT_CODES.ERROR);
96
+ if (code === EXIT_CODES.ERROR) {
97
+ writeFailureLogFile();
98
+ }
99
+ return process.exit(code);
100
+ };
101
+ logUsageTrackingMessage(isJsonOutput);
102
+ try {
103
+ await handler(trackingArgs);
104
+ }
105
+ catch (e) {
106
+ const isSuccessfulPromptExit = isPromptExitError(e)
107
+ ? e.exitCode !== EXIT_CODES.ERROR
108
+ : false;
109
+ await trackCommandUsageAndRemoveListeners(isSuccessfulPromptExit);
110
+ if (isPromptExitError(e)) {
111
+ return process.exit(e.exitCode);
112
+ }
113
+ else {
114
+ debugError(e);
115
+ writeFailureLogFile();
116
+ return process.exit(EXIT_CODES.ERROR);
117
+ }
118
+ }
119
+ await trackCommandUsageAndRemoveListeners(true);
120
+ };
121
+ }
@@ -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
+ }