@hubspot/cli 7.7.20-experimental.0 → 7.7.21-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/__tests__/migrate.test.js +27 -29
- package/api/migrate.js +14 -22
- package/bin/cli.js +92 -97
- package/bin/hs +2 -2
- package/bin/hscms +2 -2
- package/bin/silenceErrors.js +1 -2
- package/commands/__tests__/account.test.js +29 -34
- package/commands/__tests__/auth.test.js +11 -16
- package/commands/__tests__/cms.test.js +15 -20
- package/commands/__tests__/config.test.js +14 -19
- package/commands/__tests__/create.test.js +10 -15
- package/commands/__tests__/customObject.test.js +14 -19
- package/commands/__tests__/doctor.test.js +43 -48
- package/commands/__tests__/feedback.test.js +7 -45
- package/commands/__tests__/fetch.test.js +29 -28
- package/commands/__tests__/filemanager.test.js +14 -19
- package/commands/__tests__/function.test.js +16 -21
- package/commands/__tests__/getStarted.test.js +48 -53
- package/commands/__tests__/hubdb.test.js +17 -22
- package/commands/__tests__/init.test.js +12 -17
- package/commands/__tests__/lint.test.js +13 -18
- package/commands/__tests__/list.test.js +18 -23
- package/commands/__tests__/logs.test.js +28 -27
- package/commands/__tests__/mcp.test.js +14 -19
- package/commands/__tests__/mv.test.js +14 -52
- package/commands/__tests__/open.test.js +13 -51
- package/commands/__tests__/project.test.js +44 -49
- package/commands/__tests__/remove.test.js +13 -51
- package/commands/__tests__/sandbox.test.js +14 -19
- package/commands/__tests__/secret.test.js +16 -21
- package/commands/__tests__/testAccount.test.js +16 -21
- package/commands/__tests__/theme.test.js +15 -20
- package/commands/account/__tests__/auth.test.js +11 -16
- package/commands/account/__tests__/clean.test.js +12 -17
- package/commands/account/__tests__/createOverride.test.js +10 -15
- package/commands/account/__tests__/info.test.js +11 -16
- package/commands/account/__tests__/list.test.js +11 -16
- package/commands/account/__tests__/remove.test.js +13 -18
- package/commands/account/__tests__/removeOverride.js +8 -13
- package/commands/account/__tests__/rename.test.js +15 -20
- package/commands/account/__tests__/use.test.js +10 -15
- package/commands/account/auth.d.ts +1 -1
- package/commands/account/auth.js +65 -67
- package/commands/account/clean.d.ts +1 -1
- package/commands/account/clean.js +55 -60
- package/commands/account/createOverride.d.ts +1 -1
- package/commands/account/createOverride.js +52 -57
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +33 -35
- package/commands/account/list.d.ts +1 -1
- package/commands/account/list.js +43 -45
- package/commands/account/remove.d.ts +1 -1
- package/commands/account/remove.js +37 -42
- package/commands/account/removeOverride.d.ts +1 -1
- package/commands/account/removeOverride.js +38 -43
- package/commands/account/rename.d.ts +1 -1
- package/commands/account/rename.js +18 -20
- package/commands/account/use.d.ts +1 -1
- package/commands/account/use.js +29 -31
- package/commands/account.d.ts +1 -1
- package/commands/account.js +23 -28
- package/commands/app/__tests__/migrate.test.js +29 -34
- package/commands/app/migrate.d.ts +2 -2
- package/commands/app/migrate.js +40 -43
- package/commands/app/secret/__tests__/add.test.js +6 -11
- package/commands/app/secret/__tests__/delete.test.js +6 -11
- package/commands/app/secret/__tests__/list.test.js +6 -11
- package/commands/app/secret/__tests__/update.test.js +6 -11
- package/commands/app/secret/add.d.ts +1 -1
- package/commands/app/secret/add.js +28 -30
- package/commands/app/secret/delete.d.ts +1 -1
- package/commands/app/secret/delete.js +34 -36
- package/commands/app/secret/list.d.ts +1 -1
- package/commands/app/secret/list.js +25 -27
- package/commands/app/secret/update.d.ts +1 -1
- package/commands/app/secret/update.js +32 -34
- package/commands/app/secret.d.ts +1 -1
- package/commands/app/secret.js +12 -17
- package/commands/app.d.ts +1 -1
- package/commands/app.js +6 -11
- package/commands/auth.d.ts +1 -1
- package/commands/auth.js +70 -72
- package/commands/cms/convertFields.d.ts +1 -1
- package/commands/cms/convertFields.js +34 -39
- package/commands/cms/getReactModule.d.ts +1 -1
- package/commands/cms/getReactModule.js +32 -37
- package/commands/cms/lighthouseScore.d.ts +1 -1
- package/commands/cms/lighthouseScore.js +67 -72
- package/commands/cms.d.ts +1 -1
- package/commands/cms.js +11 -16
- package/commands/completion.d.ts +1 -1
- package/commands/completion.js +10 -15
- package/commands/config/migrate.d.ts +1 -1
- package/commands/config/migrate.js +27 -32
- package/commands/config/set.d.ts +1 -1
- package/commands/config/set.js +23 -25
- package/commands/config.d.ts +1 -1
- package/commands/config.js +8 -13
- package/commands/create/api-sample.d.ts +1 -1
- package/commands/create/api-sample.js +28 -33
- package/commands/create/app.d.ts +1 -1
- package/commands/create/app.js +3 -5
- package/commands/create/function.d.ts +1 -1
- package/commands/create/function.js +9 -11
- package/commands/create/index.d.ts +1 -1
- package/commands/create/index.js +19 -24
- package/commands/create/module.d.ts +1 -1
- package/commands/create/module.js +12 -14
- package/commands/create/react-app.d.ts +1 -1
- package/commands/create/react-app.js +3 -5
- package/commands/create/template.d.ts +1 -1
- package/commands/create/template.js +12 -14
- package/commands/create/vue-app.d.ts +1 -1
- package/commands/create/vue-app.js +3 -5
- package/commands/create/webpack-serverless.d.ts +1 -1
- package/commands/create/webpack-serverless.js +3 -5
- package/commands/create/website-theme.d.ts +1 -1
- package/commands/create/website-theme.js +5 -7
- package/commands/create.d.ts +2 -2
- package/commands/create.js +30 -35
- package/commands/customObject/__tests__/create.test.js +13 -18
- package/commands/customObject/__tests__/schema.test.js +18 -23
- package/commands/customObject/create.d.ts +1 -1
- package/commands/customObject/create.js +28 -30
- package/commands/customObject/schema/__tests__/create.test.js +13 -18
- package/commands/customObject/schema/__tests__/delete.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch-all.test.js +13 -18
- package/commands/customObject/schema/__tests__/fetch.test.js +13 -18
- package/commands/customObject/schema/__tests__/list.test.js +13 -18
- package/commands/customObject/schema/__tests__/update.test.js +13 -18
- package/commands/customObject/schema/create.d.ts +1 -1
- package/commands/customObject/schema/create.js +28 -30
- package/commands/customObject/schema/delete.d.ts +1 -1
- package/commands/customObject/schema/delete.js +24 -26
- package/commands/customObject/schema/fetch-all.d.ts +1 -1
- package/commands/customObject/schema/fetch-all.js +22 -24
- package/commands/customObject/schema/fetch.d.ts +1 -1
- package/commands/customObject/schema/fetch.js +24 -26
- package/commands/customObject/schema/list.d.ts +1 -1
- package/commands/customObject/schema/list.js +13 -15
- package/commands/customObject/schema/update.d.ts +1 -1
- package/commands/customObject/schema/update.js +32 -34
- package/commands/customObject/schema.d.ts +1 -1
- package/commands/customObject/schema.js +17 -22
- package/commands/customObject.d.ts +1 -1
- package/commands/customObject.js +13 -18
- package/commands/doctor.d.ts +1 -1
- package/commands/doctor.js +28 -33
- package/commands/feedback.d.ts +1 -1
- package/commands/feedback.js +19 -24
- package/commands/fetch.d.ts +1 -1
- package/commands/fetch.js +28 -30
- package/commands/filemanager/__tests__/fetch.test.js +17 -22
- package/commands/filemanager/__tests__/upload.test.js +15 -20
- package/commands/filemanager/fetch.d.ts +1 -1
- package/commands/filemanager/fetch.js +23 -25
- package/commands/filemanager/upload.d.ts +1 -1
- package/commands/filemanager/upload.js +39 -44
- package/commands/filemanager.d.ts +1 -1
- package/commands/filemanager.js +8 -13
- package/commands/function/deploy.d.ts +1 -1
- package/commands/function/deploy.js +35 -40
- package/commands/function/list.d.ts +1 -1
- package/commands/function/list.js +24 -29
- package/commands/function/server.d.ts +1 -1
- package/commands/function/server.js +15 -17
- package/commands/function.d.ts +1 -1
- package/commands/function.js +12 -18
- package/commands/getStarted.d.ts +1 -1
- package/commands/getStarted.js +124 -130
- package/commands/hubdb/__tests__/clear.test.js +13 -18
- package/commands/hubdb/__tests__/create.test.js +13 -18
- package/commands/hubdb/__tests__/delete.test.js +13 -18
- package/commands/hubdb/__tests__/fetch.test.js +13 -18
- package/commands/hubdb/__tests__/list.test.js +23 -28
- package/commands/hubdb/clear.d.ts +1 -1
- package/commands/hubdb/clear.js +20 -22
- package/commands/hubdb/create.d.ts +1 -1
- package/commands/hubdb/create.js +30 -35
- package/commands/hubdb/delete.d.ts +1 -1
- package/commands/hubdb/delete.js +24 -26
- package/commands/hubdb/fetch.d.ts +1 -1
- package/commands/hubdb/fetch.js +17 -19
- package/commands/hubdb/list.d.ts +1 -1
- package/commands/hubdb/list.js +33 -35
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +18 -24
- package/commands/init.d.ts +1 -1
- package/commands/init.js +83 -88
- package/commands/lint.d.ts +1 -1
- package/commands/lint.js +24 -26
- package/commands/list.d.ts +1 -1
- package/commands/list.js +32 -37
- package/commands/logs.d.ts +1 -1
- package/commands/logs.js +35 -37
- package/commands/mcp/__tests__/setup.test.js +7 -12
- package/commands/mcp/__tests__/start.test.js +7 -12
- package/commands/mcp/setup.d.ts +1 -1
- package/commands/mcp/setup.js +17 -19
- package/commands/mcp/start.d.ts +1 -1
- package/commands/mcp/start.js +29 -34
- package/commands/mcp.d.ts +1 -1
- package/commands/mcp.js +7 -12
- package/commands/module/marketplace-validate.d.ts +1 -1
- package/commands/module/marketplace-validate.js +21 -26
- package/commands/module.d.ts +1 -1
- package/commands/module.js +7 -13
- package/commands/mv.d.ts +1 -1
- package/commands/mv.js +20 -22
- package/commands/open.d.ts +1 -1
- package/commands/open.js +19 -21
- package/commands/project/__tests__/add.test.js +10 -15
- package/commands/project/__tests__/create.test.js +14 -19
- package/commands/project/__tests__/deploy.test.js +93 -131
- package/commands/project/__tests__/devUnifiedFlow.test.js +135 -140
- package/commands/project/__tests__/download.test.js +14 -19
- package/commands/project/__tests__/installDeps.test.js +32 -70
- package/commands/project/__tests__/listBuilds.test.js +14 -19
- package/commands/project/__tests__/logs.test.js +56 -94
- package/commands/project/__tests__/migrate.test.js +25 -30
- package/commands/project/__tests__/migrateApp.test.js +17 -22
- package/commands/project/__tests__/open.test.js +16 -21
- package/commands/project/__tests__/profile.test.js +14 -19
- package/commands/project/__tests__/upload.test.js +18 -23
- package/commands/project/__tests__/watch.test.js +14 -19
- package/commands/project/add.d.ts +1 -1
- package/commands/project/add.js +34 -36
- package/commands/project/cloneApp.d.ts +1 -1
- package/commands/project/cloneApp.js +67 -72
- package/commands/project/create.d.ts +2 -2
- package/commands/project/create.js +62 -67
- package/commands/project/deploy.d.ts +1 -1
- package/commands/project/deploy.js +72 -77
- package/commands/project/dev/deprecatedFlow.d.ts +2 -2
- package/commands/project/dev/deprecatedFlow.js +52 -58
- package/commands/project/dev/index.d.ts +1 -1
- package/commands/project/dev/index.js +44 -47
- package/commands/project/dev/unifiedFlow.d.ts +3 -3
- package/commands/project/dev/unifiedFlow.js +62 -68
- package/commands/project/download.d.ts +1 -1
- package/commands/project/download.js +35 -40
- package/commands/project/installDeps.d.ts +1 -1
- package/commands/project/installDeps.js +29 -34
- package/commands/project/listBuilds.d.ts +1 -1
- package/commands/project/listBuilds.js +40 -45
- package/commands/project/logs.d.ts +1 -1
- package/commands/project/logs.js +52 -54
- package/commands/project/migrate.d.ts +1 -1
- package/commands/project/migrate.js +24 -26
- package/commands/project/migrateApp.d.ts +2 -2
- package/commands/project/migrateApp.js +18 -20
- package/commands/project/open.d.ts +1 -1
- package/commands/project/open.js +25 -30
- package/commands/project/profile/add.d.ts +1 -1
- package/commands/project/profile/add.js +68 -73
- package/commands/project/profile/delete.d.ts +1 -1
- package/commands/project/profile/delete.js +51 -56
- package/commands/project/profile.d.ts +1 -1
- package/commands/project/profile.js +9 -14
- package/commands/project/upload.d.ts +1 -1
- package/commands/project/upload.js +50 -55
- package/commands/project/validate.d.ts +1 -1
- package/commands/project/validate.js +35 -40
- package/commands/project/watch.d.ts +1 -1
- package/commands/project/watch.js +59 -61
- package/commands/project.d.ts +1 -1
- package/commands/project.js +38 -43
- package/commands/remove.d.ts +1 -1
- package/commands/remove.js +15 -17
- package/commands/sandbox/__tests__/create.test.js +15 -20
- package/commands/sandbox/__tests__/delete.test.js +15 -20
- package/commands/sandbox/create.d.ts +1 -1
- package/commands/sandbox/create.js +67 -69
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox/delete.js +94 -96
- package/commands/sandbox.d.ts +1 -1
- package/commands/sandbox.js +9 -14
- package/commands/secret/__tests__/addSecret.test.js +13 -18
- package/commands/secret/__tests__/deleteSecret.test.js +13 -18
- package/commands/secret/__tests__/listSecret.test.js +13 -18
- package/commands/secret/__tests__/updateSecret.test.js +13 -18
- package/commands/secret/addSecret.d.ts +1 -1
- package/commands/secret/addSecret.js +26 -28
- package/commands/secret/deleteSecret.d.ts +1 -1
- package/commands/secret/deleteSecret.js +27 -29
- package/commands/secret/listSecret.d.ts +1 -1
- package/commands/secret/listSecret.js +19 -21
- package/commands/secret/updateSecret.d.ts +1 -1
- package/commands/secret/updateSecret.js +25 -27
- package/commands/secret.d.ts +1 -1
- package/commands/secret.js +13 -18
- package/commands/testAccount/__tests__/create.test.js +17 -22
- package/commands/testAccount/__tests__/createConfig.test.js +6 -11
- package/commands/testAccount/__tests__/delete.test.js +15 -20
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +50 -55
- package/commands/testAccount/createConfig.d.ts +2 -2
- package/commands/testAccount/createConfig.js +36 -41
- package/commands/testAccount/delete.d.ts +1 -1
- package/commands/testAccount/delete.js +17 -19
- package/commands/testAccount.d.ts +1 -1
- package/commands/testAccount.js +10 -15
- package/commands/theme/__tests__/generate-selectors.test.js +7 -12
- package/commands/theme/__tests__/marketplace-validate.test.js +14 -19
- package/commands/theme/__tests__/preview.test.js +12 -17
- package/commands/theme/generate-selectors.d.ts +1 -1
- package/commands/theme/generate-selectors.js +23 -28
- package/commands/theme/marketplace-validate.d.ts +1 -1
- package/commands/theme/marketplace-validate.js +19 -24
- package/commands/theme/preview.d.ts +1 -1
- package/commands/theme/preview.js +60 -65
- package/commands/theme.d.ts +1 -1
- package/commands/theme.js +11 -16
- package/commands/upload.d.ts +1 -1
- package/commands/upload.js +77 -82
- package/commands/watch.d.ts +1 -1
- package/commands/watch.js +45 -51
- package/lang/en.d.ts +0 -1
- package/lang/en.js +369 -376
- package/lib/__tests__/accountTypes.test.js +20 -22
- package/lib/__tests__/buildAccount.test.js +26 -61
- package/lib/__tests__/commonOpts.test.js +20 -22
- package/lib/__tests__/dependencyManagement.test.js +46 -51
- package/lib/__tests__/developerTestAccounts.test.js +27 -62
- package/lib/__tests__/hasFeature.test.js +6 -8
- package/lib/__tests__/npm.test.js +15 -20
- package/lib/__tests__/oauth.test.js +23 -28
- package/lib/__tests__/parsing.test.js +18 -20
- package/lib/__tests__/polling.test.js +24 -26
- package/lib/__tests__/process.test.js +14 -19
- package/lib/__tests__/projectProfiles.test.js +34 -39
- package/lib/__tests__/sandboxSync.test.js +30 -35
- package/lib/__tests__/sandboxes.test.js +29 -31
- package/lib/__tests__/serverlessLogs.test.js +8 -13
- package/lib/__tests__/usageTracking.test.js +33 -34
- package/lib/__tests__/validation.test.js +18 -20
- package/lib/__tests__/yargsUtils.test.js +6 -41
- package/lib/accountTypes.js +24 -34
- package/lib/app/__tests__/migrate.test.js +94 -99
- package/lib/app/__tests__/migrate_legacy.test.js +29 -31
- package/lib/app/migrate.d.ts +3 -3
- package/lib/app/migrate.js +127 -145
- package/lib/app/migrate_legacy.d.ts +1 -1
- package/lib/app/migrate_legacy.js +72 -78
- package/lib/app/urls.js +5 -9
- package/lib/buildAccount.d.ts +1 -1
- package/lib/buildAccount.js +59 -67
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +42 -59
- package/lib/configMigrate.js +34 -38
- package/lib/configOptions.js +34 -40
- package/lib/constants.js +31 -34
- package/lib/customObject.js +2 -6
- package/lib/dependencyManagement.js +37 -45
- package/lib/developerTestAccounts.d.ts +1 -1
- package/lib/developerTestAccounts.js +34 -39
- package/lib/doctor/Diagnosis.d.ts +1 -1
- package/lib/doctor/Diagnosis.js +25 -29
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +1 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +30 -37
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +94 -101
- package/lib/doctor/__tests__/Diagnosis.test.js +9 -14
- package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +29 -34
- package/lib/doctor/__tests__/Doctor.test.js +24 -26
- package/lib/enums/exitCodes.js +1 -4
- package/lib/errorHandlers/index.js +32 -41
- package/lib/errorHandlers/suppressError.d.ts +1 -1
- package/lib/errorHandlers/suppressError.js +28 -31
- package/lib/filesystem.js +8 -15
- package/lib/generateSelectors.js +18 -29
- package/lib/hasFeature.d.ts +1 -1
- package/lib/hasFeature.js +3 -6
- package/lib/interpolation.js +11 -18
- package/lib/lang.d.ts +1 -1
- package/lib/lang.js +22 -27
- package/lib/links.js +16 -24
- package/lib/marketplaceValidate.js +29 -39
- package/lib/mcp/setup.js +69 -97
- package/lib/middleware/__test__/configMiddleware.test.js +20 -55
- package/lib/middleware/__test__/gitMiddleware.test.js +7 -42
- package/lib/middleware/__test__/notificationsMiddleware.test.js +2 -4
- package/lib/middleware/__test__/requestMiddleware.test.js +6 -11
- package/lib/middleware/__test__/utils.test.js +9 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +9 -44
- package/lib/middleware/autoUpdateMiddleware.js +33 -40
- package/lib/middleware/configMiddleware.js +36 -42
- package/lib/middleware/fireAlarmMiddleware.js +12 -18
- package/lib/middleware/gitMiddleware.js +5 -8
- package/lib/middleware/notificationsMiddleware.js +16 -23
- package/lib/middleware/requestMiddleware.js +4 -10
- package/lib/middleware/utils.js +1 -4
- package/lib/middleware/yargsChecksMiddleware.js +10 -13
- package/lib/npm.js +14 -23
- package/lib/oauth.js +29 -35
- package/lib/parsing.js +3 -6
- package/lib/polling.js +11 -15
- package/lib/process.js +11 -19
- package/lib/projectProfiles.d.ts +2 -2
- package/lib/projectProfiles.js +32 -42
- package/lib/projects/ProjectLogsManager.js +18 -21
- package/lib/projects/__tests__/AppDevModeInterface.test.js +140 -145
- package/lib/projects/__tests__/LocalDevProcess.test.js +68 -73
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +32 -37
- package/lib/projects/__tests__/ProjectLogsManager.test.js +56 -58
- package/lib/projects/__tests__/buildAndDeploy.test.js +7 -9
- package/lib/projects/__tests__/components.test.js +9 -14
- package/lib/projects/__tests__/projects.test.js +35 -40
- package/lib/projects/__tests__/structure.test.js +43 -81
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +26 -28
- package/lib/projects/add/__tests__/v3AddComponent.test.js +25 -30
- package/lib/projects/add/legacyAddComponent.d.ts +1 -1
- package/lib/projects/add/legacyAddComponent.js +23 -29
- package/lib/projects/add/v3AddComponent.d.ts +1 -1
- package/lib/projects/add/v3AddComponent.js +35 -41
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +88 -97
- package/lib/projects/components.js +19 -25
- package/lib/projects/config.d.ts +1 -1
- package/lib/projects/config.js +32 -41
- package/lib/projects/create/__tests__/legacy.test.js +22 -57
- package/lib/projects/create/__tests__/v3.test.js +5 -7
- package/lib/projects/create/index.d.ts +3 -3
- package/lib/projects/create/index.js +19 -22
- package/lib/projects/create/legacy.d.ts +1 -1
- package/lib/projects/create/legacy.js +25 -31
- package/lib/projects/create/v3.d.ts +3 -3
- package/lib/projects/create/v3.js +49 -59
- package/lib/projects/ensureProjectExists.js +31 -37
- package/lib/projects/localDev/AppDevModeInterface.d.ts +3 -3
- package/lib/projects/localDev/AppDevModeInterface.js +58 -60
- package/lib/projects/localDev/DevServerManager.d.ts +1 -1
- package/lib/projects/localDev/DevServerManager.js +24 -26
- package/lib/projects/localDev/DevServerManagerV2.d.ts +2 -2
- package/lib/projects/localDev/DevServerManagerV2.js +17 -22
- package/lib/projects/localDev/LocalDevLogger.d.ts +1 -1
- package/lib/projects/localDev/LocalDevLogger.js +59 -64
- package/lib/projects/localDev/LocalDevManager.d.ts +1 -1
- package/lib/projects/localDev/LocalDevManager.js +106 -111
- package/lib/projects/localDev/LocalDevProcess.d.ts +4 -4
- package/lib/projects/localDev/LocalDevProcess.js +25 -30
- package/lib/projects/localDev/LocalDevState.d.ts +3 -3
- package/lib/projects/localDev/LocalDevState.js +3 -5
- package/lib/projects/localDev/LocalDevWatcher.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWatcher.js +6 -11
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +1 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +25 -27
- package/lib/projects/localDev/helpers.d.ts +3 -3
- package/lib/projects/localDev/helpers.js +156 -174
- package/lib/projects/structure.d.ts +3 -3
- package/lib/projects/structure.js +32 -78
- package/lib/projects/ui.js +10 -13
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +55 -64
- package/lib/projects/urls.js +14 -24
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +48 -54
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +9 -11
- package/lib/prompts/__tests__/projectsLogsPrompt.test.js +11 -16
- package/lib/prompts/accountNamePrompt.d.ts +1 -1
- package/lib/prompts/accountNamePrompt.js +26 -31
- package/lib/prompts/accountsPrompt.js +12 -15
- package/lib/prompts/cmsFieldPrompt.js +13 -19
- package/lib/prompts/createApiSamplePrompt.d.ts +1 -1
- package/lib/prompts/createApiSamplePrompt.js +9 -12
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.d.ts +1 -1
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +16 -19
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.js +12 -15
- package/lib/prompts/createTemplatePrompt.js +5 -8
- package/lib/prompts/downloadProjectPrompt.js +17 -20
- package/lib/prompts/installAppPrompt.js +19 -26
- package/lib/prompts/personalAccessKeyPrompt.d.ts +2 -2
- package/lib/prompts/personalAccessKeyPrompt.js +40 -47
- package/lib/prompts/previewPrompt.js +15 -22
- package/lib/prompts/projectAddPrompt.d.ts +1 -1
- package/lib/prompts/projectAddPrompt.js +14 -18
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +1 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +48 -54
- package/lib/prompts/projectNameAndDestPrompt.d.ts +1 -1
- package/lib/prompts/projectNameAndDestPrompt.js +22 -29
- package/lib/prompts/projectNamePrompt.js +11 -14
- package/lib/prompts/projectsLogsPrompt.js +5 -8
- package/lib/prompts/promptUtils.d.ts +1 -1
- package/lib/prompts/promptUtils.js +15 -22
- package/lib/prompts/sandboxesPrompt.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +26 -30
- package/lib/prompts/secretPrompt.js +10 -15
- package/lib/prompts/selectAppPrompt.js +11 -14
- package/lib/prompts/selectHubDBTablePrompt.js +24 -30
- package/lib/prompts/selectProjectTemplatePrompt.d.ts +1 -1
- package/lib/prompts/selectProjectTemplatePrompt.js +10 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +22 -25
- package/lib/prompts/setAsDefaultAccountPrompt.js +13 -16
- package/lib/prompts/uploadPrompt.js +11 -17
- package/lib/sandboxSync.d.ts +1 -1
- package/lib/sandboxSync.js +58 -65
- package/lib/sandboxes.d.ts +1 -1
- package/lib/sandboxes.js +68 -76
- package/lib/schema.js +12 -23
- package/lib/serverlessLogs.js +45 -52
- package/lib/testUtils.js +4 -8
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/SpinniesManager.js +29 -34
- package/lib/ui/boxen.js +11 -14
- package/lib/ui/git.js +14 -20
- package/lib/ui/index.js +55 -73
- package/lib/ui/logger.js +10 -13
- package/lib/ui/serverlessFunctionLogs.js +14 -20
- package/lib/ui/spinniesUtils.js +24 -39
- package/lib/ui/supportHyperlinks.js +3 -6
- package/lib/ui/supportsColor.js +11 -17
- package/lib/ui/table.js +6 -13
- package/lib/upload.js +15 -21
- package/lib/usageTracking.js +44 -50
- package/lib/utils/hasFlag.js +2 -8
- package/lib/validation.js +48 -87
- package/lib/yargsUtils.d.ts +1 -1
- package/lib/yargsUtils.js +13 -16
- package/mcp-server/server.js +6 -8
- package/mcp-server/tools/index.js +13 -16
- package/mcp-server/tools/project/AddFeatureToProject.d.ts +1 -1
- package/mcp-server/tools/project/AddFeatureToProject.js +33 -37
- package/mcp-server/tools/project/CreateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/CreateProjectTool.js +44 -48
- package/mcp-server/tools/project/DeployProject.d.ts +1 -1
- package/mcp-server/tools/project/DeployProject.js +16 -20
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +1 -1
- package/mcp-server/tools/project/GuidedWalkthroughTool.js +19 -23
- package/mcp-server/tools/project/UploadProjectTools.d.ts +1 -1
- package/mcp-server/tools/project/UploadProjectTools.js +10 -17
- package/mcp-server/tools/project/ValidateProjectTool.d.ts +1 -1
- package/mcp-server/tools/project/ValidateProjectTool.js +11 -15
- package/mcp-server/tools/project/__tests__/AddFeatureToProject.test.js +12 -14
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +13 -15
- package/mcp-server/tools/project/__tests__/DeployProject.test.js +6 -8
- package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +4 -6
- package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +4 -6
- package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +4 -6
- package/mcp-server/tools/project/constants.js +3 -9
- package/mcp-server/types.js +1 -5
- package/mcp-server/utils/__tests__/command.test.js +9 -11
- package/mcp-server/utils/__tests__/project.test.js +12 -17
- package/mcp-server/utils/command.d.ts +1 -1
- package/mcp-server/utils/command.js +4 -11
- package/mcp-server/utils/content.d.ts +1 -1
- package/mcp-server/utils/content.js +2 -6
- package/mcp-server/utils/project.js +8 -14
- package/package.json +15 -11
- package/types/LocalDev.d.ts +4 -4
- package/types/LocalDev.js +1 -2
- package/types/ProjectComponents.d.ts +2 -2
- package/types/ProjectComponents.js +1 -2
- package/types/Projects.d.ts +1 -1
- package/types/Projects.js +2 -5
- package/types/Prompts.js +1 -2
- package/types/Yargs.js +1 -2
- package/types/{Cms.d.ts → cms.d.ts} +1 -1
- package/types/cms.js +1 -0
- package/types/sandboxes.js +1 -0
- package/types/Cms.js +0 -2
- package/types/Sandboxes.js +0 -2
- /package/types/{Sandboxes.d.ts → sandboxes.d.ts} +0 -0
package/lib/validation.js
CHANGED
|
@@ -1,152 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.validateAccount = validateAccount;
|
|
37
|
-
exports.validateCmsPublishMode = validateCmsPublishMode;
|
|
38
|
-
exports.fileExists = fileExists;
|
|
39
|
-
exports.checkAndConvertToJson = checkAndConvertToJson;
|
|
40
|
-
const fs = __importStar(require("fs"));
|
|
41
|
-
const path = __importStar(require("path"));
|
|
42
|
-
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
43
|
-
const files_1 = require("@hubspot/local-dev-lib/constants/files");
|
|
44
|
-
const auth_1 = require("@hubspot/local-dev-lib/constants/auth");
|
|
45
|
-
const text_1 = require("@hubspot/local-dev-lib/text");
|
|
46
|
-
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
47
|
-
const oauth_1 = require("@hubspot/local-dev-lib/oauth");
|
|
48
|
-
const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
|
|
49
|
-
const path_1 = require("@hubspot/local-dev-lib/path");
|
|
50
|
-
const commonOpts_1 = require("./commonOpts");
|
|
51
|
-
const index_1 = require("./errorHandlers/index");
|
|
52
|
-
async function validateAccount(options) {
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { logger } from '@hubspot/local-dev-lib/logger';
|
|
4
|
+
import { CMS_PUBLISH_MODE } from '@hubspot/local-dev-lib/constants/files';
|
|
5
|
+
import { API_KEY_AUTH_METHOD, OAUTH_AUTH_METHOD, PERSONAL_ACCESS_KEY_AUTH_METHOD, } from '@hubspot/local-dev-lib/constants/auth';
|
|
6
|
+
import { commaSeparatedValues } from '@hubspot/local-dev-lib/text';
|
|
7
|
+
import { getConfigPath, getAccountConfig, getAccountId, loadConfigFromEnvironment, } from '@hubspot/local-dev-lib/config';
|
|
8
|
+
import { getOauthManager } from '@hubspot/local-dev-lib/oauth';
|
|
9
|
+
import { accessTokenForPersonalAccessKey } from '@hubspot/local-dev-lib/personalAccessKey';
|
|
10
|
+
import { getAbsoluteFilePath, getCwd, getExt, } from '@hubspot/local-dev-lib/path';
|
|
11
|
+
import { getCmsPublishMode } from './commonOpts.js';
|
|
12
|
+
import { logError } from './errorHandlers/index.js';
|
|
13
|
+
export async function validateAccount(options) {
|
|
53
14
|
const { derivedAccountId, userProvidedAccount } = options;
|
|
54
|
-
const accountId =
|
|
15
|
+
const accountId = getAccountId(derivedAccountId);
|
|
55
16
|
if (!accountId) {
|
|
56
17
|
if (userProvidedAccount) {
|
|
57
|
-
|
|
18
|
+
logger.error(`The account "${userProvidedAccount}" could not be found in the config`);
|
|
58
19
|
}
|
|
59
20
|
else {
|
|
60
|
-
|
|
21
|
+
logger.error('An account needs to be supplied either via "--account" or through setting a "defaultPortal"');
|
|
61
22
|
}
|
|
62
23
|
return false;
|
|
63
24
|
}
|
|
64
|
-
if (userProvidedAccount &&
|
|
25
|
+
if (userProvidedAccount && loadConfigFromEnvironment()) {
|
|
65
26
|
throw new Error('Cannot specify an account when environment variables are supplied. Please unset the environment variables or do not use the "--account" flag.');
|
|
66
27
|
}
|
|
67
|
-
const accountConfig =
|
|
28
|
+
const accountConfig = getAccountConfig(accountId);
|
|
68
29
|
if (!accountConfig) {
|
|
69
|
-
|
|
30
|
+
logger.error(`The account ${accountId} has not been configured`);
|
|
70
31
|
return false;
|
|
71
32
|
}
|
|
72
33
|
const { authType, auth, apiKey, personalAccessKey } = accountConfig;
|
|
73
34
|
if (typeof authType === 'string' && authType !== authType.toLowerCase()) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
35
|
+
logger.error(`Invalid "authType" value "${authType}" for account "${accountId}" in config file: ${getConfigPath()}. Valid values are ${commaSeparatedValues([
|
|
36
|
+
PERSONAL_ACCESS_KEY_AUTH_METHOD,
|
|
37
|
+
OAUTH_AUTH_METHOD,
|
|
38
|
+
API_KEY_AUTH_METHOD,
|
|
78
39
|
].map(method => method.value))}.`);
|
|
79
40
|
}
|
|
80
41
|
if (authType === 'oauth2') {
|
|
81
42
|
if (typeof auth !== 'object') {
|
|
82
|
-
|
|
43
|
+
logger.error(`The OAuth2 auth configuration for account ${accountId} is missing`);
|
|
83
44
|
return false;
|
|
84
45
|
}
|
|
85
46
|
const { clientId, clientSecret, tokenInfo } = auth;
|
|
86
47
|
if (!clientId || !clientSecret || !tokenInfo || !tokenInfo.refreshToken) {
|
|
87
|
-
|
|
88
|
-
|
|
48
|
+
logger.error(`The OAuth2 configuration for account ${accountId} is incorrect`);
|
|
49
|
+
logger.error('Run "hs auth --type=oauth2" to reauthenticate');
|
|
89
50
|
return false;
|
|
90
51
|
}
|
|
91
|
-
const oauth =
|
|
52
|
+
const oauth = getOauthManager(accountId, accountConfig);
|
|
92
53
|
try {
|
|
93
54
|
let accessToken;
|
|
94
55
|
if (oauth) {
|
|
95
56
|
accessToken = await oauth.accessToken();
|
|
96
57
|
}
|
|
97
58
|
if (!accessToken) {
|
|
98
|
-
|
|
59
|
+
logger.error(`The OAuth2 access token could not be found for accountId ${accountId}`);
|
|
99
60
|
return false;
|
|
100
61
|
}
|
|
101
62
|
}
|
|
102
63
|
catch (e) {
|
|
103
|
-
|
|
64
|
+
logError(e);
|
|
104
65
|
return false;
|
|
105
66
|
}
|
|
106
67
|
}
|
|
107
68
|
else if (authType === 'personalaccesskey') {
|
|
108
69
|
if (!personalAccessKey) {
|
|
109
|
-
|
|
70
|
+
logger.error(`The account "${accountId}" is configured to use a access key for authentication and is missing a "personalAccessKey" in the configuration file`);
|
|
110
71
|
return false;
|
|
111
72
|
}
|
|
112
73
|
try {
|
|
113
|
-
const accessToken = await
|
|
74
|
+
const accessToken = await accessTokenForPersonalAccessKey(accountId);
|
|
114
75
|
if (!accessToken) {
|
|
115
|
-
|
|
76
|
+
logger.error(`An OAuth2 access token for account "${accountId} could not be retrieved using the "personalAccessKey" provided`);
|
|
116
77
|
return false;
|
|
117
78
|
}
|
|
118
79
|
}
|
|
119
80
|
catch (e) {
|
|
120
|
-
|
|
81
|
+
logError(e);
|
|
121
82
|
return false;
|
|
122
83
|
}
|
|
123
84
|
}
|
|
124
85
|
else if (!apiKey) {
|
|
125
|
-
|
|
86
|
+
logger.error(`The accountId ${accountId} is missing authentication configuration`);
|
|
126
87
|
return false;
|
|
127
88
|
}
|
|
128
89
|
return true;
|
|
129
90
|
}
|
|
130
|
-
function validateCmsPublishMode(options) {
|
|
131
|
-
const cmsPublishMode =
|
|
132
|
-
if (
|
|
91
|
+
export function validateCmsPublishMode(options) {
|
|
92
|
+
const cmsPublishMode = getCmsPublishMode(options);
|
|
93
|
+
if (CMS_PUBLISH_MODE[cmsPublishMode]) {
|
|
133
94
|
return true;
|
|
134
95
|
}
|
|
135
|
-
const modesMessage = `Available CMS publish modes are: ${Object.values(
|
|
96
|
+
const modesMessage = `Available CMS publish modes are: ${Object.values(CMS_PUBLISH_MODE).join(', ')}.`;
|
|
136
97
|
if (cmsPublishMode != null) {
|
|
137
|
-
|
|
98
|
+
logger.error([
|
|
138
99
|
`The CMS publish mode "${cmsPublishMode}" is invalid.`,
|
|
139
100
|
modesMessage,
|
|
140
101
|
].join(' '));
|
|
141
102
|
}
|
|
142
103
|
else {
|
|
143
|
-
|
|
104
|
+
logger.error(['The CMS publish mode option is missing.', modesMessage].join(' '));
|
|
144
105
|
}
|
|
145
106
|
return false;
|
|
146
107
|
}
|
|
147
|
-
function fileExists(_path) {
|
|
108
|
+
export function fileExists(_path) {
|
|
148
109
|
try {
|
|
149
|
-
const absoluteSrcPath = path.resolve(
|
|
110
|
+
const absoluteSrcPath = path.resolve(getCwd(), _path);
|
|
150
111
|
if (!absoluteSrcPath)
|
|
151
112
|
return false;
|
|
152
113
|
const stats = fs.statSync(absoluteSrcPath);
|
|
@@ -160,14 +121,14 @@ function fileExists(_path) {
|
|
|
160
121
|
}
|
|
161
122
|
return true;
|
|
162
123
|
}
|
|
163
|
-
function checkAndConvertToJson(_path) {
|
|
164
|
-
const filePath =
|
|
124
|
+
export function checkAndConvertToJson(_path) {
|
|
125
|
+
const filePath = getAbsoluteFilePath(_path);
|
|
165
126
|
if (!fileExists(filePath)) {
|
|
166
|
-
|
|
127
|
+
logger.error(`The path "${_path}" is not a path to a file`);
|
|
167
128
|
return null;
|
|
168
129
|
}
|
|
169
|
-
if (
|
|
170
|
-
|
|
130
|
+
if (getExt(_path) !== 'json') {
|
|
131
|
+
logger.error(`The file "${_path}" must be a valid JSON file`);
|
|
171
132
|
return null;
|
|
172
133
|
}
|
|
173
134
|
let result;
|
|
@@ -175,7 +136,7 @@ function checkAndConvertToJson(_path) {
|
|
|
175
136
|
result = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
176
137
|
}
|
|
177
138
|
catch (e) {
|
|
178
|
-
|
|
139
|
+
logger.error(`The file "${_path}" contains invalid JSON`);
|
|
179
140
|
result = null;
|
|
180
141
|
}
|
|
181
142
|
return result;
|
package/lib/yargsUtils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Argv } from 'yargs';
|
|
2
|
-
import { hasFlag } from './utils/hasFlag';
|
|
2
|
+
import { hasFlag } from './utils/hasFlag.js';
|
|
3
3
|
export { hasFlag };
|
|
4
4
|
export declare function makeYargsBuilder<T>(callback: (yargs: Argv) => Argv<T>, command: string | string[], describe?: string, options?: {
|
|
5
5
|
useGlobalOptions?: boolean;
|
package/lib/yargsUtils.js
CHANGED
|
@@ -1,39 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const hasFlag_1 = require("./utils/hasFlag");
|
|
7
|
-
Object.defineProperty(exports, "hasFlag", { enumerable: true, get: function () { return hasFlag_1.hasFlag; } });
|
|
8
|
-
function makeYargsBuilder(callback, command, describe, options = {}) {
|
|
1
|
+
import { addCustomHelpOutput, addTestingOptions, addAccountOptions, addConfigOptions, addGlobalOptions, addUseEnvironmentOptions, addCmsPublishModeOptions, addJSONOutputOptions, } from './commonOpts.js';
|
|
2
|
+
import { hasFlag } from './utils/hasFlag.js';
|
|
3
|
+
// Re-export for backwards compatibility
|
|
4
|
+
export { hasFlag };
|
|
5
|
+
export function makeYargsBuilder(callback, command, describe, options = {}) {
|
|
9
6
|
return async function (yargs) {
|
|
10
7
|
if (options.useGlobalOptions) {
|
|
11
|
-
|
|
8
|
+
addGlobalOptions(yargs);
|
|
12
9
|
}
|
|
13
10
|
if (options.useAccountOptions) {
|
|
14
|
-
|
|
11
|
+
addAccountOptions(yargs);
|
|
15
12
|
}
|
|
16
13
|
if (options.useConfigOptions) {
|
|
17
|
-
|
|
14
|
+
addConfigOptions(yargs);
|
|
18
15
|
}
|
|
19
16
|
if (options.useEnvironmentOptions) {
|
|
20
|
-
|
|
17
|
+
addUseEnvironmentOptions(yargs);
|
|
21
18
|
}
|
|
22
19
|
if (options.useTestingOptions) {
|
|
23
|
-
|
|
20
|
+
addTestingOptions(yargs);
|
|
24
21
|
}
|
|
25
22
|
if (options.useJSONOutputOptions) {
|
|
26
|
-
|
|
23
|
+
addJSONOutputOptions(yargs);
|
|
27
24
|
}
|
|
28
25
|
if (options.useCmsPublishModeOptions) {
|
|
29
26
|
const opts = typeof options.useCmsPublishModeOptions === 'object'
|
|
30
27
|
? options.useCmsPublishModeOptions
|
|
31
28
|
: { write: true };
|
|
32
|
-
|
|
29
|
+
addCmsPublishModeOptions(yargs, opts);
|
|
33
30
|
}
|
|
34
31
|
const result = callback(yargs);
|
|
35
32
|
// Must go last to pick up available options
|
|
36
|
-
await
|
|
33
|
+
await addCustomHelpOutput(result, command, describe);
|
|
37
34
|
return result;
|
|
38
35
|
};
|
|
39
36
|
}
|
package/mcp-server/server.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const tools_1 = require("./tools");
|
|
6
|
-
const server = new mcp_js_1.McpServer({
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { registerProjectTools } from './tools/index.js';
|
|
4
|
+
const server = new McpServer({
|
|
7
5
|
name: 'HubSpot CLI MCP Server',
|
|
8
6
|
version: '0.0.1',
|
|
9
7
|
description: 'Helps perform tasks for local development of HubSpot projects.',
|
|
@@ -12,7 +10,7 @@ const server = new mcp_js_1.McpServer({
|
|
|
12
10
|
prompts: {},
|
|
13
11
|
},
|
|
14
12
|
});
|
|
15
|
-
|
|
13
|
+
registerProjectTools(server);
|
|
16
14
|
// Start receiving messages on stdin and sending messages on stdout
|
|
17
|
-
const transport = new
|
|
15
|
+
const transport = new StdioServerTransport();
|
|
18
16
|
server.connect(transport);
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const AddFeatureToProject_1 = require("./project/AddFeatureToProject");
|
|
9
|
-
const ValidateProjectTool_1 = require("./project/ValidateProjectTool");
|
|
10
|
-
function registerProjectTools(mcpServer) {
|
|
1
|
+
import { UploadProjectTools } from './project/UploadProjectTools.js';
|
|
2
|
+
import { CreateProjectTool } from './project/CreateProjectTool.js';
|
|
3
|
+
import { GuidedWalkthroughTool } from './project/GuidedWalkthroughTool.js';
|
|
4
|
+
import { DeployProject } from './project/DeployProject.js';
|
|
5
|
+
import { AddFeatureToProject } from './project/AddFeatureToProject.js';
|
|
6
|
+
import { ValidateProjectTool } from './project/ValidateProjectTool.js';
|
|
7
|
+
export function registerProjectTools(mcpServer) {
|
|
11
8
|
return [
|
|
12
|
-
new
|
|
13
|
-
new
|
|
14
|
-
new
|
|
15
|
-
new
|
|
16
|
-
new
|
|
17
|
-
new
|
|
9
|
+
new UploadProjectTools(mcpServer).register(),
|
|
10
|
+
new CreateProjectTool(mcpServer).register(),
|
|
11
|
+
new GuidedWalkthroughTool(mcpServer).register(),
|
|
12
|
+
new DeployProject(mcpServer).register(),
|
|
13
|
+
new AddFeatureToProject(mcpServer).register(),
|
|
14
|
+
new ValidateProjectTool(mcpServer).register(),
|
|
18
15
|
];
|
|
19
16
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextContentResponse, Tool } from '../../types';
|
|
1
|
+
import { TextContentResponse, Tool } from '../../types.js';
|
|
2
2
|
import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
declare const inputSchemaZodObject: z.ZodObject<{
|
|
@@ -1,46 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const constants_2 = require("./constants");
|
|
9
|
-
const project_1 = require("../../utils/project");
|
|
10
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, } from '../../../lib/constants.js';
|
|
4
|
+
import { addFlag } from '../../utils/command.js';
|
|
5
|
+
import { absoluteProjectPath } from './constants.js';
|
|
6
|
+
import { runCommandInDir } from '../../utils/project.js';
|
|
7
|
+
import { formatTextContents, formatTextContent } from '../../utils/content.js';
|
|
11
8
|
const inputSchema = {
|
|
12
|
-
absoluteProjectPath
|
|
13
|
-
addApp:
|
|
9
|
+
absoluteProjectPath,
|
|
10
|
+
addApp: z
|
|
14
11
|
.boolean()
|
|
15
12
|
.describe('Should an app be added? If there is no app in the project, an app must be added to add a feature'),
|
|
16
|
-
distribution:
|
|
17
|
-
.optional(
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
distribution: z
|
|
14
|
+
.optional(z.union([
|
|
15
|
+
z.literal(APP_DISTRIBUTION_TYPES.MARKETPLACE),
|
|
16
|
+
z.literal(APP_DISTRIBUTION_TYPES.PRIVATE),
|
|
20
17
|
]))
|
|
21
18
|
.describe('Private is used if you do not wish to distribute your application on the HubSpot marketplace. If not specified by the user, do not choose for them. This cannot be changed after a project is uploaded.'),
|
|
22
|
-
auth:
|
|
23
|
-
.optional(
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
auth: z
|
|
20
|
+
.optional(z.union([
|
|
21
|
+
z.literal(APP_AUTH_TYPES.STATIC),
|
|
22
|
+
z.literal(APP_AUTH_TYPES.OAUTH),
|
|
26
23
|
]))
|
|
27
24
|
.describe('Static uses a static non changing authentication token, and is only available for private distribution. If not specified by the user, do not choose for them. This cannot be changed after a project is uploaded.'),
|
|
28
|
-
features:
|
|
29
|
-
.array(
|
|
25
|
+
features: z
|
|
26
|
+
.array(z
|
|
30
27
|
.union([
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
z.literal('card'),
|
|
29
|
+
z.literal('settings'),
|
|
30
|
+
z.literal('app-function'),
|
|
31
|
+
z.literal('webhooks'),
|
|
35
32
|
])
|
|
36
33
|
.describe('The features to include in the project, multiple options can be selected'))
|
|
37
34
|
.optional(),
|
|
38
35
|
};
|
|
39
36
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
40
|
-
const inputSchemaZodObject =
|
|
37
|
+
const inputSchemaZodObject = z.object({
|
|
41
38
|
...inputSchema,
|
|
42
39
|
});
|
|
43
|
-
class AddFeatureToProject extends
|
|
40
|
+
export class AddFeatureToProject extends Tool {
|
|
44
41
|
constructor(mcpServer) {
|
|
45
42
|
super(mcpServer);
|
|
46
43
|
}
|
|
@@ -49,16 +46,16 @@ class AddFeatureToProject extends types_1.Tool {
|
|
|
49
46
|
let command = `hs project add`;
|
|
50
47
|
const content = [];
|
|
51
48
|
if (distribution) {
|
|
52
|
-
command =
|
|
49
|
+
command = addFlag(command, 'distribution', distribution);
|
|
53
50
|
}
|
|
54
51
|
else if (addApp) {
|
|
55
|
-
content.push(
|
|
52
|
+
content.push(formatTextContent(`Ask the user how they would you like to distribute the application. Options are ${APP_DISTRIBUTION_TYPES.MARKETPLACE} and ${APP_DISTRIBUTION_TYPES.PRIVATE}`));
|
|
56
53
|
}
|
|
57
54
|
if (auth) {
|
|
58
|
-
command =
|
|
55
|
+
command = addFlag(command, 'auth', auth);
|
|
59
56
|
}
|
|
60
57
|
else if (addApp) {
|
|
61
|
-
content.push(
|
|
58
|
+
content.push(formatTextContent(`Ask the user which auth type they would like to use. Options are ${APP_AUTH_TYPES.STATIC} and ${APP_AUTH_TYPES.OAUTH}`));
|
|
62
59
|
}
|
|
63
60
|
if (content.length > 0) {
|
|
64
61
|
return {
|
|
@@ -66,12 +63,12 @@ class AddFeatureToProject extends types_1.Tool {
|
|
|
66
63
|
};
|
|
67
64
|
}
|
|
68
65
|
// If features isn't provided, pass an empty array to bypass the prompt
|
|
69
|
-
command =
|
|
70
|
-
const { stdout, stderr } = await
|
|
71
|
-
return
|
|
66
|
+
command = addFlag(command, 'features', features || []);
|
|
67
|
+
const { stdout, stderr } = await runCommandInDir(absoluteProjectPath, command);
|
|
68
|
+
return formatTextContents(stdout, stderr);
|
|
72
69
|
}
|
|
73
70
|
catch (error) {
|
|
74
|
-
return
|
|
71
|
+
return formatTextContents(error instanceof Error ? error.message : `${error}`);
|
|
75
72
|
}
|
|
76
73
|
}
|
|
77
74
|
register() {
|
|
@@ -82,4 +79,3 @@ class AddFeatureToProject extends types_1.Tool {
|
|
|
82
79
|
}, this.handler);
|
|
83
80
|
}
|
|
84
81
|
}
|
|
85
|
-
exports.AddFeatureToProject = AddFeatureToProject;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextContentResponse, Tool } from '../../types';
|
|
1
|
+
import { TextContentResponse, Tool } from '../../types.js';
|
|
2
2
|
import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
declare const inputSchemaZodObject: z.ZodObject<{
|
|
@@ -1,82 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const constants_2 = require("./constants");
|
|
10
|
-
const project_1 = require("../../utils/project");
|
|
11
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, } from '../../../lib/constants.js';
|
|
4
|
+
import { addFlag } from '../../utils/command.js';
|
|
5
|
+
import { EMPTY_PROJECT, PROJECT_WITH_APP, } from '../../../lib/projects/create/v3.js';
|
|
6
|
+
import { absoluteCurrentWorkingDirectory } from './constants.js';
|
|
7
|
+
import { runCommandInDir } from '../../utils/project.js';
|
|
8
|
+
import { formatTextContents, formatTextContent } from '../../utils/content.js';
|
|
12
9
|
const inputSchema = {
|
|
13
|
-
absoluteCurrentWorkingDirectory
|
|
14
|
-
name:
|
|
10
|
+
absoluteCurrentWorkingDirectory,
|
|
11
|
+
name: z
|
|
15
12
|
.string()
|
|
16
13
|
.describe('The name of the project to be created. This name is how your project will appear in HubSpot. If not specified by the user, do not choose for them. Changing this is potentially destructive.')
|
|
17
14
|
.optional(),
|
|
18
|
-
destination:
|
|
15
|
+
destination: z
|
|
19
16
|
.string()
|
|
20
17
|
.describe('Relative path to the directory the project will be created in. DO NOT use the current directory unless the user has explicitly stated to do so.'),
|
|
21
|
-
projectBase:
|
|
22
|
-
.union([
|
|
18
|
+
projectBase: z
|
|
19
|
+
.union([z.literal(EMPTY_PROJECT), z.literal(PROJECT_WITH_APP)])
|
|
23
20
|
.describe('Empty will create an empty project, and app will create a project with an app inside of it.'),
|
|
24
|
-
distribution:
|
|
25
|
-
.optional(
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
distribution: z
|
|
22
|
+
.optional(z.union([
|
|
23
|
+
z.literal(APP_DISTRIBUTION_TYPES.MARKETPLACE),
|
|
24
|
+
z.literal(APP_DISTRIBUTION_TYPES.PRIVATE),
|
|
28
25
|
]))
|
|
29
26
|
.describe('Private is used if you do not wish to distribute your application on the HubSpot marketplace. If not specified by the user, do not choose for them. This cannot be changed after a project is uploaded.'),
|
|
30
|
-
auth:
|
|
31
|
-
.optional(
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
auth: z
|
|
28
|
+
.optional(z.union([
|
|
29
|
+
z.literal(APP_AUTH_TYPES.STATIC),
|
|
30
|
+
z.literal(APP_AUTH_TYPES.OAUTH),
|
|
34
31
|
]))
|
|
35
32
|
.describe('Static uses a static non changing authentication token, and is only available for private distribution. If not specified by the user, do not choose for them. This cannot be changed after a project is uploaded.')
|
|
36
33
|
.optional(),
|
|
37
|
-
features:
|
|
38
|
-
.array(
|
|
34
|
+
features: z
|
|
35
|
+
.array(z
|
|
39
36
|
.union([
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
z.literal('card'),
|
|
38
|
+
z.literal('settings'),
|
|
39
|
+
z.literal('app-function'),
|
|
40
|
+
z.literal('webhooks'),
|
|
44
41
|
])
|
|
45
42
|
.describe('The features to include in the project, multiple options can be selected'))
|
|
46
43
|
.optional(),
|
|
47
44
|
};
|
|
48
45
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
-
const inputSchemaZodObject =
|
|
50
|
-
class CreateProjectTool extends
|
|
46
|
+
const inputSchemaZodObject = z.object({ ...inputSchema });
|
|
47
|
+
export class CreateProjectTool extends Tool {
|
|
51
48
|
constructor(mcpServer) {
|
|
52
49
|
super(mcpServer);
|
|
53
50
|
}
|
|
54
51
|
async handler({ name, destination, projectBase, distribution, auth, features, absoluteCurrentWorkingDirectory, }) {
|
|
55
|
-
let command =
|
|
52
|
+
let command = addFlag('hs project create', 'platform-version', '2025.2');
|
|
56
53
|
const content = [];
|
|
57
54
|
if (name) {
|
|
58
|
-
command =
|
|
55
|
+
command = addFlag(command, 'name', name);
|
|
59
56
|
}
|
|
60
57
|
else {
|
|
61
|
-
content.push(
|
|
58
|
+
content.push(formatTextContent(`Ask the user what they would like to name the project.`));
|
|
62
59
|
}
|
|
63
60
|
if (destination) {
|
|
64
|
-
command =
|
|
61
|
+
command = addFlag(command, 'dest', destination);
|
|
65
62
|
}
|
|
66
63
|
if (projectBase) {
|
|
67
|
-
command =
|
|
64
|
+
command = addFlag(command, 'project-base', projectBase);
|
|
68
65
|
}
|
|
69
66
|
if (distribution) {
|
|
70
|
-
command =
|
|
67
|
+
command = addFlag(command, 'distribution', distribution);
|
|
71
68
|
}
|
|
72
|
-
else if (projectBase ===
|
|
73
|
-
content.push(
|
|
69
|
+
else if (projectBase === PROJECT_WITH_APP) {
|
|
70
|
+
content.push(formatTextContent(`Ask the user how they would you like to distribute the application? Options are ${APP_DISTRIBUTION_TYPES.MARKETPLACE} and ${APP_DISTRIBUTION_TYPES.PRIVATE}`));
|
|
74
71
|
}
|
|
75
72
|
if (auth) {
|
|
76
|
-
command =
|
|
73
|
+
command = addFlag(command, 'auth', auth);
|
|
77
74
|
}
|
|
78
|
-
else if (projectBase ===
|
|
79
|
-
content.push(
|
|
75
|
+
else if (projectBase === PROJECT_WITH_APP) {
|
|
76
|
+
content.push(formatTextContent(`Ask the user which auth type they would like to use? Options are ${APP_AUTH_TYPES.STATIC} and ${APP_AUTH_TYPES.OAUTH}`));
|
|
80
77
|
}
|
|
81
78
|
if (content.length > 0) {
|
|
82
79
|
return {
|
|
@@ -84,13 +81,13 @@ class CreateProjectTool extends types_1.Tool {
|
|
|
84
81
|
};
|
|
85
82
|
}
|
|
86
83
|
// Always pass features, even if it is an empty array to bypass the prompts
|
|
87
|
-
command =
|
|
84
|
+
command = addFlag(command, 'features', features || []);
|
|
88
85
|
try {
|
|
89
|
-
const { stdout, stderr } = await
|
|
90
|
-
return
|
|
86
|
+
const { stdout, stderr } = await runCommandInDir(absoluteCurrentWorkingDirectory, command);
|
|
87
|
+
return formatTextContents(stdout, stderr);
|
|
91
88
|
}
|
|
92
89
|
catch (error) {
|
|
93
|
-
return
|
|
90
|
+
return formatTextContents(error instanceof Error ? error.message : `${error}`);
|
|
94
91
|
}
|
|
95
92
|
}
|
|
96
93
|
register() {
|
|
@@ -101,4 +98,3 @@ class CreateProjectTool extends types_1.Tool {
|
|
|
101
98
|
}, this.handler);
|
|
102
99
|
}
|
|
103
100
|
}
|
|
104
|
-
exports.CreateProjectTool = CreateProjectTool;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextContentResponse, Tool } from '../../types';
|
|
1
|
+
import { TextContentResponse, Tool } from '../../types.js';
|
|
2
2
|
import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
declare const inputSchemaZodObject: z.ZodObject<{
|