@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.
- package/api/migrate.js +8 -4
- package/bin/cli.js +12 -6
- package/commands/account/auth.js +7 -7
- package/commands/account/clean.js +7 -6
- package/commands/account/createOverride.js +10 -7
- package/commands/account/info.js +36 -17
- package/commands/account/link.d.ts +4 -0
- package/commands/account/link.js +89 -0
- package/commands/account/list.js +32 -76
- package/commands/account/remove.js +4 -3
- package/commands/account/removeOverride.js +11 -10
- package/commands/account/rename.js +5 -6
- package/commands/account/unlink.d.ts +4 -0
- package/commands/account/unlink.js +70 -0
- package/commands/account/use.js +75 -6
- package/commands/account.js +4 -0
- package/commands/api.d.ts +10 -0
- package/commands/api.js +164 -0
- package/commands/app/migrate.js +13 -13
- package/commands/app/secret/add.js +6 -7
- package/commands/app/secret/delete.js +9 -10
- package/commands/app/secret/list.js +6 -7
- package/commands/app/secret/update.js +8 -9
- package/commands/auth.js +19 -15
- package/commands/cms/app/create.js +9 -5
- package/commands/cms/convertFields.js +8 -8
- package/commands/cms/delete.js +2 -3
- package/commands/cms/fetch.js +7 -7
- package/commands/cms/function/create.js +9 -5
- package/commands/cms/function/deploy.js +2 -3
- package/commands/cms/function/list.js +11 -7
- package/commands/cms/function/logs.js +17 -22
- package/commands/cms/function/server.js +2 -3
- package/commands/cms/getReactModule.js +7 -8
- package/commands/cms/lighthouseScore.js +25 -24
- package/commands/cms/lint.js +4 -5
- package/commands/cms/list.js +5 -6
- package/commands/cms/module/create.js +9 -5
- package/commands/cms/module/marketplace-validate.js +7 -8
- package/commands/cms/mv.js +2 -3
- package/commands/cms/template/create.js +10 -6
- package/commands/cms/theme/create.js +5 -5
- package/commands/cms/theme/generate-selectors.js +5 -4
- package/commands/cms/theme/marketplace-validate.js +8 -9
- package/commands/cms/theme/preview.js +23 -70
- package/commands/cms/upload.js +15 -12
- package/commands/cms/watch.d.ts +0 -1
- package/commands/cms/watch.js +6 -12
- package/commands/cms/webpack/create.js +5 -5
- package/commands/completion.js +3 -5
- package/commands/config/migrate.js +6 -7
- package/commands/config/set.js +5 -6
- package/commands/customObject/create.js +4 -5
- package/commands/customObject/createSchema.js +4 -5
- package/commands/customObject/deleteSchema.js +4 -5
- package/commands/customObject/fetchAllSchemas.js +2 -3
- package/commands/customObject/fetchSchema.js +2 -3
- package/commands/customObject/listSchemas.js +2 -3
- package/commands/customObject/updateSchema.js +4 -5
- package/commands/doctor.js +8 -8
- package/commands/feedback.js +7 -5
- package/commands/filemanager/fetch.js +5 -6
- package/commands/filemanager/upload.js +5 -5
- package/commands/getStarted.js +17 -19
- package/commands/hubdb/clear.js +6 -3
- package/commands/hubdb/create.js +4 -5
- package/commands/hubdb/delete.js +9 -6
- package/commands/hubdb/fetch.js +6 -3
- package/commands/hubdb/list.js +16 -14
- package/commands/init.js +15 -14
- package/commands/mcp/setup.js +5 -14
- package/commands/mcp/start.js +2 -4
- package/commands/open.js +4 -5
- package/commands/project/add.js +13 -8
- package/commands/project/appInstallStatus.d.ts +4 -0
- package/commands/project/appInstallStatus.js +132 -0
- package/commands/project/create.js +28 -17
- package/commands/project/delete.d.ts +7 -0
- package/commands/project/delete.js +74 -0
- package/commands/project/deploy.js +39 -36
- package/commands/project/dev/deprecatedFlow.js +62 -17
- package/commands/project/dev/index.d.ts +3 -3
- package/commands/project/dev/index.js +59 -48
- package/commands/project/dev/unifiedFlow.js +70 -21
- package/commands/project/download.js +12 -9
- package/commands/project/info.d.ts +4 -0
- package/commands/project/info.js +67 -0
- package/commands/project/installDeps.js +9 -6
- package/commands/project/lint.js +31 -10
- package/commands/project/list.js +14 -14
- package/commands/project/listBuilds.js +8 -6
- package/commands/project/logs.js +5 -6
- package/commands/project/migrate.js +18 -18
- package/commands/project/open.js +5 -6
- package/commands/project/profile/add.js +12 -8
- package/commands/project/profile/delete.js +15 -11
- package/commands/project/updateDeps.js +9 -6
- package/commands/project/upload.js +33 -19
- package/commands/project/validate.js +12 -12
- package/commands/project/watch.js +32 -19
- package/commands/project.js +12 -3
- package/commands/sandbox/create.js +18 -45
- package/commands/sandbox/delete.js +13 -14
- package/commands/secret/addSecret.js +6 -7
- package/commands/secret/deleteSecret.js +5 -6
- package/commands/secret/listSecret.js +2 -3
- package/commands/secret/updateSecret.js +4 -5
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +25 -17
- package/commands/testAccount/createConfig.js +7 -8
- package/commands/testAccount/delete.js +27 -18
- package/commands/testAccount/importData.js +6 -7
- package/commands/upgrade.js +9 -10
- package/lang/en.d.ts +248 -14
- package/lang/en.js +265 -28
- package/lib/accountAuth.js +4 -0
- package/lib/app/migrate.js +18 -5
- package/lib/buildAccount.d.ts +1 -6
- package/lib/buildAccount.js +9 -42
- package/lib/commandSuggestion.js +1 -7
- package/lib/constants.d.ts +2 -4
- package/lib/constants.js +4 -4
- package/lib/doctor/Diagnosis.js +5 -5
- package/lib/doctor/Doctor.js +7 -7
- package/lib/errorHandlers/index.js +4 -3
- package/lib/errorHandlers/suppressError.js +4 -0
- package/lib/errors/PromptExitError.d.ts +6 -0
- package/lib/errors/PromptExitError.js +11 -0
- package/lib/generateSelectors.js +1 -2
- package/lib/getStartedV2Actions.d.ts +13 -0
- package/lib/getStartedV2Actions.js +56 -3
- package/lib/hasFeature.js +1 -2
- package/lib/link/accountTableUtils.d.ts +10 -0
- package/lib/link/accountTableUtils.js +39 -0
- package/lib/link/index.d.ts +18 -0
- package/lib/link/index.js +185 -0
- package/lib/link/linkUtils.d.ts +5 -0
- package/lib/link/linkUtils.js +49 -0
- package/lib/link/prompts.d.ts +7 -0
- package/lib/link/prompts.js +126 -0
- package/lib/link/renderLinkedAccountsTable.d.ts +2 -0
- package/lib/link/renderLinkedAccountsTable.js +14 -0
- package/lib/link/warnIfLinkedDirectory.d.ts +1 -0
- package/lib/link/warnIfLinkedDirectory.js +9 -0
- package/lib/mcp/setup.d.ts +1 -0
- package/lib/mcp/setup.js +77 -30
- package/lib/middleware/autoUpdateMiddleware.js +6 -3
- package/lib/process.d.ts +1 -1
- package/lib/process.js +10 -3
- package/lib/projects/ProjectLogsManager.js +6 -3
- package/lib/projects/components.js +15 -4
- package/lib/projects/create/index.js +3 -6
- package/lib/projects/create/legacy.js +5 -10
- package/lib/projects/create/v2.js +5 -14
- package/lib/projects/delete.d.ts +13 -0
- package/lib/projects/delete.js +193 -0
- package/lib/projects/deploy.d.ts +1 -1
- package/lib/projects/deploy.js +2 -2
- package/lib/projects/ensureProjectExists.js +1 -2
- package/lib/projects/localDev/AppDevModeInterface.js +13 -9
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +4 -1
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +3 -3
- package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
- package/lib/projects/localDev/DevSessionManager.js +31 -19
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +5 -0
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +21 -10
- package/lib/projects/localDev/LocalDevProcess.js +6 -5
- package/lib/projects/localDev/LocalDevState.d.ts +3 -2
- package/lib/projects/localDev/LocalDevState.js +3 -1
- package/lib/projects/localDev/helpers/account.d.ts +4 -3
- package/lib/projects/localDev/helpers/account.js +21 -30
- package/lib/projects/localDev/helpers/process.d.ts +1 -1
- package/lib/projects/localDev/helpers/process.js +4 -10
- package/lib/projects/localDev/helpers/project.d.ts +4 -3
- package/lib/projects/localDev/helpers/project.js +31 -15
- package/lib/projects/pollProjectBuildAndDeploy.js +90 -85
- package/lib/projects/projectInfo.d.ts +5 -0
- package/lib/projects/projectInfo.js +82 -0
- package/lib/projects/projectProfiles.d.ts +1 -2
- package/lib/projects/projectProfiles.js +5 -17
- package/lib/projects/uieLinting.d.ts +17 -3
- package/lib/projects/uieLinting.js +93 -28
- package/lib/projects/upload.d.ts +1 -0
- package/lib/projects/upload.js +59 -49
- package/lib/projects/watch.d.ts +2 -1
- package/lib/projects/watch.js +32 -24
- package/lib/projects/workspaces.d.ts +52 -0
- package/lib/projects/workspaces.js +365 -0
- package/lib/prompts/createApiSamplePrompt.js +4 -0
- package/lib/prompts/downloadProjectPrompt.js +11 -10
- package/lib/prompts/installAppPrompt.js +3 -2
- package/lib/prompts/personalAccessKeyPrompt.js +3 -2
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -0
- package/lib/prompts/projectDevTargetAccountPrompt.js +23 -16
- package/lib/prompts/projectProfilePrompt.d.ts +2 -0
- package/lib/prompts/projectProfilePrompt.js +46 -0
- package/lib/prompts/projectsLogsPrompt.js +3 -0
- package/lib/prompts/promptUtils.js +4 -2
- package/lib/prompts/selectHubDBTablePrompt.js +8 -4
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +12 -6
- package/lib/sandboxes.d.ts +1 -9
- package/lib/sandboxes.js +0 -21
- package/lib/serverlessLogs.js +50 -44
- package/lib/theme/cmsDevServerProcess.d.ts +14 -0
- package/lib/theme/cmsDevServerProcess.js +149 -0
- package/lib/theme/cmsDevServerRunner.d.ts +14 -0
- package/lib/theme/cmsDevServerRunner.js +90 -0
- package/lib/theme/migrate.d.ts +1 -1
- package/lib/theme/migrate.js +1 -5
- package/lib/ui/SpinniesManager.d.ts +1 -0
- package/lib/ui/SpinniesManager.js +22 -6
- package/lib/ui/accountTable.d.ts +8 -0
- package/lib/ui/accountTable.js +67 -0
- package/lib/ui/spinniesUtils.d.ts +0 -1
- package/lib/ui/spinniesUtils.js +6 -16
- package/lib/usageTracking.d.ts +3 -4
- package/lib/usageTracking.js +9 -6
- package/lib/yargs/makeYargsBuilder.d.ts +13 -0
- package/lib/yargs/makeYargsBuilder.js +33 -0
- package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
- package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
- package/lib/yargs/parseYargsOrExit.d.ts +4 -0
- package/lib/yargs/parseYargsOrExit.js +25 -0
- package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
- package/lib/yargs/strictEnforceBoolean.js +13 -0
- package/lib/yargsUtils.d.ts +3 -16
- package/lib/yargsUtils.js +3 -48
- package/mcp-server/Tool.d.ts +15 -0
- package/mcp-server/Tool.js +53 -0
- package/mcp-server/server.js +43 -3
- package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsCreateFunctionTool.js +9 -7
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsCreateModuleTool.js +9 -7
- package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsCreateTemplateTool.js +9 -7
- package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsFunctionLogsTool.js +9 -7
- package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsListFunctionsTool.js +9 -7
- package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
- package/mcp-server/tools/cms/HsListTool.js +9 -7
- package/mcp-server/tools/index.d.ts +3 -2
- package/mcp-server/tools/index.js +24 -22
- package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +25 -5
- package/mcp-server/tools/project/AddFeatureToProjectTool.js +16 -18
- package/mcp-server/tools/project/CreateProjectTool.d.ts +29 -6
- package/mcp-server/tools/project/CreateProjectTool.js +16 -18
- package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
- package/mcp-server/tools/project/CreateTestAccountTool.js +22 -10
- package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
- package/mcp-server/tools/project/DeployProjectTool.js +6 -8
- package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
- package/mcp-server/tools/project/DocFetchTool.js +8 -6
- package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
- package/mcp-server/tools/project/DocsSearchTool.js +32 -9
- package/mcp-server/tools/project/FindProjectsTool.d.ts +15 -0
- package/mcp-server/tools/project/FindProjectsTool.js +60 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +13 -14
- package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
- package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
- package/mcp-server/tools/project/GetBuildLogsTool.d.ts +6 -4
- package/mcp-server/tools/project/GetBuildLogsTool.js +15 -14
- package/mcp-server/tools/project/GetBuildStatusTool.d.ts +5 -3
- package/mcp-server/tools/project/GetBuildStatusTool.js +12 -11
- package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
- package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +10 -3
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +5 -12
- package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
- package/mcp-server/tools/project/UploadProjectTools.js +11 -9
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
- package/mcp-server/tools/project/ValidateProjectTool.js +10 -8
- package/mcp-server/tools/project/constants.d.ts +13 -1
- package/mcp-server/tools/project/constants.js +13 -16
- package/mcp-server/types.d.ts +0 -7
- package/mcp-server/types.js +1 -13
- package/mcp-server/utils/command.d.ts +5 -0
- package/mcp-server/utils/command.js +24 -0
- package/mcp-server/utils/feedbackTracking.js +2 -17
- package/mcp-server/utils/logger.d.ts +10 -0
- package/mcp-server/utils/logger.js +29 -0
- package/mcp-server/utils/toolUsageTracking.js +0 -2
- package/package.json +15 -11
- package/types/Link.d.ts +32 -0
- package/types/Link.js +5 -0
- package/types/LocalDev.d.ts +5 -0
- package/types/PackageJson.d.ts +1 -0
- package/types/Projects.d.ts +19 -0
- package/types/Prompts.d.ts +1 -0
- package/types/Yargs.d.ts +19 -1
- package/ui/components/getStarted/GetStartedFlow.js +79 -2
- package/ui/components/getStarted/reducer.d.ts +20 -0
- package/ui/components/getStarted/reducer.js +36 -0
- package/ui/components/getStarted/screens/InstallationScreen.d.ts +7 -0
- package/ui/components/getStarted/screens/InstallationScreen.js +16 -0
- package/ui/components/getStarted/screens/ProjectSetupScreen.js +2 -1
- package/ui/lib/constants.d.ts +1 -0
- package/ui/lib/constants.js +1 -0
- package/api/__tests__/migrate.test.d.ts +0 -1
- package/api/__tests__/migrate.test.js +0 -199
- package/commands/__tests__/account.test.d.ts +0 -1
- package/commands/__tests__/account.test.js +0 -69
- package/commands/__tests__/auth.test.d.ts +0 -1
- package/commands/__tests__/auth.test.js +0 -43
- package/commands/__tests__/cms.test.d.ts +0 -1
- package/commands/__tests__/cms.test.js +0 -87
- package/commands/__tests__/config.test.d.ts +0 -1
- package/commands/__tests__/config.test.js +0 -44
- package/commands/__tests__/customObject.test.d.ts +0 -1
- package/commands/__tests__/customObject.test.js +0 -68
- package/commands/__tests__/doctor.test.d.ts +0 -1
- package/commands/__tests__/doctor.test.js +0 -132
- package/commands/__tests__/feedback.test.d.ts +0 -1
- package/commands/__tests__/feedback.test.js +0 -24
- package/commands/__tests__/filemanager.test.d.ts +0 -1
- package/commands/__tests__/filemanager.test.js +0 -45
- package/commands/__tests__/getStarted.test.d.ts +0 -1
- package/commands/__tests__/getStarted.test.js +0 -173
- package/commands/__tests__/hubdb.test.d.ts +0 -1
- package/commands/__tests__/hubdb.test.js +0 -50
- package/commands/__tests__/init.test.d.ts +0 -1
- package/commands/__tests__/init.test.js +0 -42
- package/commands/__tests__/mcp.test.d.ts +0 -1
- package/commands/__tests__/mcp.test.js +0 -46
- package/commands/__tests__/open.test.d.ts +0 -1
- package/commands/__tests__/open.test.js +0 -58
- package/commands/__tests__/project.test.d.ts +0 -1
- package/commands/__tests__/project.test.js +0 -125
- package/commands/__tests__/sandbox.test.d.ts +0 -1
- package/commands/__tests__/sandbox.test.js +0 -44
- package/commands/__tests__/secret.test.d.ts +0 -1
- package/commands/__tests__/secret.test.js +0 -49
- package/commands/__tests__/testAccount.test.d.ts +0 -1
- package/commands/__tests__/testAccount.test.js +0 -57
- package/commands/__tests__/upgrade.test.d.ts +0 -1
- package/commands/__tests__/upgrade.test.js +0 -309
- package/commands/account/__tests__/auth.test.d.ts +0 -1
- package/commands/account/__tests__/auth.test.js +0 -206
- package/commands/account/__tests__/clean.test.d.ts +0 -1
- package/commands/account/__tests__/clean.test.js +0 -28
- package/commands/account/__tests__/createOverride.test.d.ts +0 -1
- package/commands/account/__tests__/createOverride.test.js +0 -32
- package/commands/account/__tests__/info.test.d.ts +0 -1
- package/commands/account/__tests__/info.test.js +0 -28
- package/commands/account/__tests__/list.test.d.ts +0 -1
- package/commands/account/__tests__/list.test.js +0 -153
- package/commands/account/__tests__/remove.test.d.ts +0 -1
- package/commands/account/__tests__/remove.test.js +0 -36
- package/commands/account/__tests__/removeOverride.d.ts +0 -1
- package/commands/account/__tests__/removeOverride.js +0 -25
- package/commands/account/__tests__/rename.test.d.ts +0 -1
- package/commands/account/__tests__/rename.test.js +0 -82
- package/commands/account/__tests__/use.test.d.ts +0 -1
- package/commands/account/__tests__/use.test.js +0 -170
- package/commands/app/__tests__/migrate.test.d.ts +0 -1
- package/commands/app/__tests__/migrate.test.js +0 -111
- package/commands/app/secret/__tests__/add.test.d.ts +0 -1
- package/commands/app/secret/__tests__/add.test.js +0 -140
- package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
- package/commands/app/secret/__tests__/delete.test.js +0 -28
- package/commands/app/secret/__tests__/list.test.d.ts +0 -1
- package/commands/app/secret/__tests__/list.test.js +0 -25
- package/commands/app/secret/__tests__/update.test.d.ts +0 -1
- package/commands/app/secret/__tests__/update.test.js +0 -28
- package/commands/cms/__tests__/delete.test.d.ts +0 -1
- package/commands/cms/__tests__/delete.test.js +0 -39
- package/commands/cms/__tests__/fetch.test.d.ts +0 -1
- package/commands/cms/__tests__/fetch.test.js +0 -156
- package/commands/cms/__tests__/function.test.d.ts +0 -1
- package/commands/cms/__tests__/function.test.js +0 -50
- package/commands/cms/__tests__/lint.test.d.ts +0 -1
- package/commands/cms/__tests__/lint.test.js +0 -33
- package/commands/cms/__tests__/list.test.d.ts +0 -1
- package/commands/cms/__tests__/list.test.js +0 -42
- package/commands/cms/__tests__/module.test.d.ts +0 -1
- package/commands/cms/__tests__/module.test.js +0 -45
- package/commands/cms/__tests__/mv.test.d.ts +0 -1
- package/commands/cms/__tests__/mv.test.js +0 -46
- package/commands/cms/__tests__/theme.test.d.ts +0 -1
- package/commands/cms/__tests__/theme.test.js +0 -54
- package/commands/cms/__tests__/upload.test.d.ts +0 -1
- package/commands/cms/__tests__/upload.test.js +0 -308
- package/commands/cms/__tests__/watch.test.d.ts +0 -1
- package/commands/cms/__tests__/watch.test.js +0 -212
- package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
- package/commands/cms/function/__tests__/logs.test.js +0 -70
- package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
- package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
- package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
- package/commands/cms/theme/__tests__/preview.test.js +0 -54
- package/commands/customObject/__tests__/create.test.d.ts +0 -1
- package/commands/customObject/__tests__/create.test.js +0 -40
- package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/createSchema.test.js +0 -28
- package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
- package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
- package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
- package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
- package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
- package/commands/customObject/__tests__/listSchemas.test.js +0 -29
- package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
- package/commands/customObject/__tests__/updateSchema.test.js +0 -40
- package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
- package/commands/filemanager/__tests__/fetch.test.js +0 -32
- package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
- package/commands/filemanager/__tests__/upload.test.js +0 -191
- package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
- package/commands/hubdb/__tests__/clear.test.js +0 -28
- package/commands/hubdb/__tests__/create.test.d.ts +0 -1
- package/commands/hubdb/__tests__/create.test.js +0 -28
- package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
- package/commands/hubdb/__tests__/delete.test.js +0 -28
- package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
- package/commands/hubdb/__tests__/fetch.test.js +0 -28
- package/commands/hubdb/__tests__/list.test.d.ts +0 -1
- package/commands/hubdb/__tests__/list.test.js +0 -88
- package/commands/mcp/__tests__/setup.test.d.ts +0 -1
- package/commands/mcp/__tests__/setup.test.js +0 -26
- package/commands/mcp/__tests__/start.test.d.ts +0 -1
- package/commands/mcp/__tests__/start.test.js +0 -137
- package/commands/project/__tests__/add.test.d.ts +0 -1
- package/commands/project/__tests__/add.test.js +0 -107
- package/commands/project/__tests__/create.test.d.ts +0 -1
- package/commands/project/__tests__/create.test.js +0 -97
- package/commands/project/__tests__/deploy.test.d.ts +0 -1
- package/commands/project/__tests__/deploy.test.js +0 -307
- package/commands/project/__tests__/dev.test.d.ts +0 -1
- package/commands/project/__tests__/dev.test.js +0 -273
- package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
- package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
- package/commands/project/__tests__/download.test.d.ts +0 -1
- package/commands/project/__tests__/download.test.js +0 -39
- package/commands/project/__tests__/installDeps.test.d.ts +0 -1
- package/commands/project/__tests__/installDeps.test.js +0 -140
- package/commands/project/__tests__/lint.test.d.ts +0 -1
- package/commands/project/__tests__/lint.test.js +0 -704
- package/commands/project/__tests__/list.test.d.ts +0 -1
- package/commands/project/__tests__/list.test.js +0 -31
- package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
- package/commands/project/__tests__/listBuilds.test.js +0 -38
- package/commands/project/__tests__/logs.test.d.ts +0 -1
- package/commands/project/__tests__/logs.test.js +0 -202
- package/commands/project/__tests__/migrate.test.d.ts +0 -1
- package/commands/project/__tests__/migrate.test.js +0 -106
- package/commands/project/__tests__/open.test.d.ts +0 -1
- package/commands/project/__tests__/open.test.js +0 -39
- package/commands/project/__tests__/profile.test.d.ts +0 -1
- package/commands/project/__tests__/profile.test.js +0 -42
- package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
- package/commands/project/__tests__/updateDeps.test.js +0 -140
- package/commands/project/__tests__/upload.test.d.ts +0 -1
- package/commands/project/__tests__/upload.test.js +0 -234
- package/commands/project/__tests__/validate.test.d.ts +0 -1
- package/commands/project/__tests__/validate.test.js +0 -381
- package/commands/project/__tests__/watch.test.d.ts +0 -1
- package/commands/project/__tests__/watch.test.js +0 -35
- package/commands/sandbox/__tests__/create.test.d.ts +0 -1
- package/commands/sandbox/__tests__/create.test.js +0 -245
- package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
- package/commands/sandbox/__tests__/delete.test.js +0 -31
- package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/addSecret.test.js +0 -162
- package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/deleteSecret.test.js +0 -41
- package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/listSecret.test.js +0 -29
- package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
- package/commands/secret/__tests__/updateSecret.test.js +0 -29
- package/commands/testAccount/__tests__/create.test.d.ts +0 -1
- package/commands/testAccount/__tests__/create.test.js +0 -106
- package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
- package/commands/testAccount/__tests__/createConfig.test.js +0 -32
- package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
- package/commands/testAccount/__tests__/delete.test.js +0 -29
- package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
- package/commands/testAccount/__tests__/importData.test.js +0 -92
- package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
- package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
- package/lib/__tests__/accountAuth.test.d.ts +0 -1
- package/lib/__tests__/accountAuth.test.js +0 -258
- package/lib/__tests__/accountTypes.test.d.ts +0 -1
- package/lib/__tests__/accountTypes.test.js +0 -98
- package/lib/__tests__/buildAccount.test.d.ts +0 -1
- package/lib/__tests__/buildAccount.test.js +0 -262
- package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
- package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
- package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
- package/lib/__tests__/commandSuggestion.test.js +0 -119
- package/lib/__tests__/commonOpts.test.d.ts +0 -1
- package/lib/__tests__/commonOpts.test.js +0 -80
- package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
- package/lib/__tests__/dependencyManagement.test.js +0 -1067
- package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
- package/lib/__tests__/developerTestAccounts.test.js +0 -156
- package/lib/__tests__/hasFeature.test.d.ts +0 -1
- package/lib/__tests__/hasFeature.test.js +0 -167
- package/lib/__tests__/http.test.d.ts +0 -1
- package/lib/__tests__/http.test.js +0 -40
- package/lib/__tests__/importData.test.d.ts +0 -1
- package/lib/__tests__/importData.test.js +0 -98
- package/lib/__tests__/npmCli.test.d.ts +0 -1
- package/lib/__tests__/npmCli.test.js +0 -84
- package/lib/__tests__/oauth.test.d.ts +0 -1
- package/lib/__tests__/oauth.test.js +0 -109
- package/lib/__tests__/parsing.test.d.ts +0 -1
- package/lib/__tests__/parsing.test.js +0 -34
- package/lib/__tests__/polling.test.d.ts +0 -1
- package/lib/__tests__/polling.test.js +0 -76
- package/lib/__tests__/process.test.d.ts +0 -1
- package/lib/__tests__/process.test.js +0 -89
- package/lib/__tests__/sandboxSync.test.d.ts +0 -1
- package/lib/__tests__/sandboxSync.test.js +0 -147
- package/lib/__tests__/sandboxes.test.d.ts +0 -1
- package/lib/__tests__/sandboxes.test.js +0 -156
- package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
- package/lib/__tests__/serverlessLogs.test.js +0 -148
- package/lib/__tests__/usageTracking.test.d.ts +0 -1
- package/lib/__tests__/usageTracking.test.js +0 -197
- package/lib/__tests__/validation.test.d.ts +0 -1
- package/lib/__tests__/validation.test.js +0 -143
- package/lib/__tests__/yargsUtils.test.d.ts +0 -1
- package/lib/__tests__/yargsUtils.test.js +0 -124
- package/lib/app/__tests__/migrate.test.d.ts +0 -1
- package/lib/app/__tests__/migrate.test.js +0 -638
- package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
- package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
- package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
- package/lib/doctor/__tests__/Doctor.test.js +0 -560
- package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
- package/lib/errorHandlers/__tests__/index.test.js +0 -278
- package/lib/mcp/__tests__/setup.test.d.ts +0 -1
- package/lib/mcp/__tests__/setup.test.js +0 -194
- package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
- package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
- package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
- package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
- package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
- package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
- package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
- package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
- package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
- package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
- package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
- package/lib/projects/__tests__/DevServerManager.test.js +0 -185
- package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
- package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
- package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
- package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
- package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
- package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
- package/lib/projects/__tests__/components.test.d.ts +0 -1
- package/lib/projects/__tests__/components.test.js +0 -426
- package/lib/projects/__tests__/deploy.test.d.ts +0 -1
- package/lib/projects/__tests__/deploy.test.js +0 -231
- package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
- package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
- package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
- package/lib/projects/__tests__/platformVersion.test.js +0 -63
- package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
- package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
- package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
- package/lib/projects/__tests__/projectProfiles.test.js +0 -441
- package/lib/projects/__tests__/projects.test.d.ts +0 -1
- package/lib/projects/__tests__/projects.test.js +0 -58
- package/lib/projects/__tests__/structure.test.d.ts +0 -1
- package/lib/projects/__tests__/structure.test.js +0 -210
- package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
- package/lib/projects/__tests__/uieLinting.test.js +0 -631
- package/lib/projects/__tests__/upload.test.d.ts +0 -1
- package/lib/projects/__tests__/upload.test.js +0 -183
- package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
- package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
- package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
- package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
- package/lib/projects/create/__tests__/legacy.test.js +0 -90
- package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
- package/lib/projects/create/__tests__/v2.test.js +0 -257
- package/lib/projects/platformVersion.d.ts +0 -9
- package/lib/projects/platformVersion.js +0 -39
- package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
- package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
- package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
- package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
- package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
- package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
- package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
- package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
- package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
- package/lib/sandboxSync.d.ts +0 -4
- package/lib/sandboxSync.js +0 -102
- package/lib/theme/__tests__/migrate.test.d.ts +0 -1
- package/lib/theme/__tests__/migrate.test.js +0 -256
- package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
- package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
- package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
- package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
- package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -255
- package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -228
- package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -209
- package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -187
- package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -125
- package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
- package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -125
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -158
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -133
- package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -462
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -126
- package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
- package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -178
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
- package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
- package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -179
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
- package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/command.test.js +0 -45
- package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/content.test.js +0 -164
- package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -124
- package/mcp-server/utils/__tests__/project.test.d.ts +0 -1
- package/mcp-server/utils/__tests__/project.test.js +0 -140
- package/mcp-server/utils/project.d.ts +0 -5
- 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 {};
|
package/lib/ui/spinniesUtils.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
}
|
package/lib/usageTracking.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type
|
|
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?:
|
|
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?:
|
|
32
|
-
export {};
|
|
31
|
+
export declare function trackCommandMetadataUsage(command: string, meta?: UsageTrackingMeta, accountId?: number): Promise<void>;
|
package/lib/usageTracking.js
CHANGED
|
@@ -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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/lib/yargsUtils.d.ts
CHANGED
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export {
|
|
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
|
|
7
|
-
|
|
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
|
+
}
|
package/mcp-server/server.js
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
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
|
|
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 '../../
|
|
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/
|
|
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.
|
|
105
|
+
}, input => this.wrappedHandler(input));
|
|
104
106
|
}
|
|
105
107
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { TextContentResponse
|
|
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
|
}
|