@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
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const constants_1 = require("./constants");
|
|
8
|
-
const project_1 = require("../../utils/project");
|
|
9
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { addFlag } from '../../utils/command.js';
|
|
4
|
+
import { absoluteProjectPath } from './constants.js';
|
|
5
|
+
import { runCommandInDir } from '../../utils/project.js';
|
|
6
|
+
import { formatTextContents, formatTextContent } from '../../utils/content.js';
|
|
10
7
|
const inputSchema = {
|
|
11
|
-
absoluteProjectPath
|
|
12
|
-
buildNumber:
|
|
13
|
-
.optional(
|
|
8
|
+
absoluteProjectPath,
|
|
9
|
+
buildNumber: z
|
|
10
|
+
.optional(z.number())
|
|
14
11
|
.describe('The build number to be deployed. This can be found in the project details page using `hs project open`. If no build number is specified, the most recent build is deployed'),
|
|
15
12
|
};
|
|
16
13
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
-
const inputSchemaZodObject =
|
|
14
|
+
const inputSchemaZodObject = z.object({
|
|
18
15
|
...inputSchema,
|
|
19
16
|
});
|
|
20
|
-
class DeployProject extends
|
|
17
|
+
export class DeployProject extends Tool {
|
|
21
18
|
constructor(mcpServer) {
|
|
22
19
|
super(mcpServer);
|
|
23
20
|
}
|
|
@@ -25,19 +22,19 @@ class DeployProject extends types_1.Tool {
|
|
|
25
22
|
let command = `hs project deploy`;
|
|
26
23
|
const content = [];
|
|
27
24
|
if (!buildNumber) {
|
|
28
|
-
const { stdout } = await
|
|
29
|
-
content.push(
|
|
25
|
+
const { stdout } = await runCommandInDir(absoluteProjectPath, `hs project list-builds --limit 100`);
|
|
26
|
+
content.push(formatTextContent(`Ask the user which build number they would like to deploy? Build information: ${stdout}`));
|
|
30
27
|
}
|
|
31
28
|
else {
|
|
32
|
-
command =
|
|
29
|
+
command = addFlag(command, 'build', buildNumber);
|
|
33
30
|
}
|
|
34
31
|
if (content.length) {
|
|
35
32
|
return {
|
|
36
33
|
content,
|
|
37
34
|
};
|
|
38
35
|
}
|
|
39
|
-
const { stdout, stderr } = await
|
|
40
|
-
return
|
|
36
|
+
const { stdout, stderr } = await runCommandInDir(absoluteProjectPath, command);
|
|
37
|
+
return formatTextContents(stdout, stderr);
|
|
41
38
|
}
|
|
42
39
|
register() {
|
|
43
40
|
return this.mcpServer.registerTool('deploy-hubspot-project', {
|
|
@@ -47,4 +44,3 @@ class DeployProject extends types_1.Tool {
|
|
|
47
44
|
}, this.handler);
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
|
-
exports.DeployProject = DeployProject;
|
|
@@ -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,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const command_1 = require("../../utils/command");
|
|
7
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { execAsync } from '../../utils/command.js';
|
|
4
|
+
import { formatTextContents } from '../../utils/content.js';
|
|
8
5
|
const nextCommands = {
|
|
9
6
|
'hs init': 'hs auth',
|
|
10
7
|
'hs auth': 'hs project create',
|
|
@@ -12,42 +9,42 @@ const nextCommands = {
|
|
|
12
9
|
'hs project upload': 'hs project dev',
|
|
13
10
|
};
|
|
14
11
|
const inputSchema = {
|
|
15
|
-
command:
|
|
12
|
+
command: z
|
|
16
13
|
.union([
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
z.literal('hs init'),
|
|
15
|
+
z.literal('hs auth'),
|
|
16
|
+
z.literal('hs project create'),
|
|
17
|
+
z.literal('hs project upload'),
|
|
21
18
|
])
|
|
22
19
|
.describe('The command to learn more about. Start with `hs init`')
|
|
23
20
|
.optional(),
|
|
24
21
|
};
|
|
25
22
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
-
const inputSchemaZodObject =
|
|
23
|
+
const inputSchemaZodObject = z.object({
|
|
27
24
|
...inputSchema,
|
|
28
25
|
});
|
|
29
|
-
class GuidedWalkthroughTool extends
|
|
26
|
+
export class GuidedWalkthroughTool extends Tool {
|
|
30
27
|
constructor(mcpServer) {
|
|
31
28
|
super(mcpServer);
|
|
32
29
|
}
|
|
33
30
|
async handler({ command }) {
|
|
34
31
|
if (command) {
|
|
35
|
-
const { stdout } = await
|
|
36
|
-
return
|
|
32
|
+
const { stdout } = await execAsync(`${command} --help`);
|
|
33
|
+
return formatTextContents(`Display this help output for the user amd wait for them to acknowledge: ${stdout}. ${nextCommands[command] ? `Once they are ready, A good command to look at next is ${nextCommands[command]}` : ''}`);
|
|
37
34
|
}
|
|
38
|
-
return
|
|
35
|
+
return formatTextContents('Is there another command you would like to learn more about?');
|
|
39
36
|
}
|
|
40
37
|
register() {
|
|
41
38
|
return this.mcpServer.registerTool('guided-walkthrough-hubspot-cli', {
|
|
42
39
|
title: 'Guided walkthrough of the CLI',
|
|
43
40
|
description: 'Give the user a guided walkthrough of the HubSpot CLI.',
|
|
44
41
|
inputSchema: {
|
|
45
|
-
command:
|
|
42
|
+
command: z
|
|
46
43
|
.union([
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
z.literal('hs init'),
|
|
45
|
+
z.literal('hs auth'),
|
|
46
|
+
z.literal('hs project create'),
|
|
47
|
+
z.literal('hs project upload'),
|
|
51
48
|
])
|
|
52
49
|
.describe('The command to learn more about. Start with `hs init`')
|
|
53
50
|
.optional(),
|
|
@@ -55,4 +52,3 @@ class GuidedWalkthroughTool extends types_1.Tool {
|
|
|
55
52
|
}, this.handler);
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
|
-
exports.GuidedWalkthroughTool = GuidedWalkthroughTool;
|
|
@@ -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,28 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.UploadProjectTools = void 0;
|
|
7
|
-
const types_1 = require("../../types");
|
|
8
|
-
const project_1 = require("../../utils/project");
|
|
9
|
-
const constants_1 = require("./constants");
|
|
10
|
-
const zod_1 = __importDefault(require("zod"));
|
|
11
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { runCommandInDir } from '../../utils/project.js';
|
|
3
|
+
import { absoluteProjectPath } from './constants.js';
|
|
4
|
+
import z from 'zod';
|
|
5
|
+
import { formatTextContents } from '../../utils/content.js';
|
|
12
6
|
const inputSchema = {
|
|
13
|
-
absoluteProjectPath
|
|
7
|
+
absoluteProjectPath,
|
|
14
8
|
};
|
|
15
9
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
-
const inputSchemaZodObject =
|
|
10
|
+
const inputSchemaZodObject = z.object({
|
|
17
11
|
...inputSchema,
|
|
18
12
|
});
|
|
19
|
-
class UploadProjectTools extends
|
|
13
|
+
export class UploadProjectTools extends Tool {
|
|
20
14
|
constructor(mcpServer) {
|
|
21
15
|
super(mcpServer);
|
|
22
16
|
}
|
|
23
17
|
async handler({ absoluteProjectPath, }) {
|
|
24
|
-
const { stdout, stderr } = await
|
|
25
|
-
return
|
|
18
|
+
const { stdout, stderr } = await runCommandInDir(absoluteProjectPath, `hs project upload --force-create`);
|
|
19
|
+
return formatTextContents(stdout, stderr);
|
|
26
20
|
}
|
|
27
21
|
register() {
|
|
28
22
|
return this.mcpServer.registerTool('upload-hubspot-project', {
|
|
@@ -32,4 +26,3 @@ class UploadProjectTools extends types_1.Tool {
|
|
|
32
26
|
}, this.handler);
|
|
33
27
|
}
|
|
34
28
|
}
|
|
35
|
-
exports.UploadProjectTools = UploadProjectTools;
|
|
@@ -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,27 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
const project_1 = require("../../utils/project");
|
|
8
|
-
const content_1 = require("../../utils/content");
|
|
1
|
+
import { Tool } from '../../types.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { absoluteProjectPath } from './constants.js';
|
|
4
|
+
import { runCommandInDir } from '../../utils/project.js';
|
|
5
|
+
import { formatTextContents } from '../../utils/content.js';
|
|
9
6
|
const inputSchema = {
|
|
10
|
-
absoluteProjectPath
|
|
7
|
+
absoluteProjectPath,
|
|
11
8
|
};
|
|
12
9
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
-
const inputSchemaZodObject =
|
|
14
|
-
class ValidateProjectTool extends
|
|
10
|
+
const inputSchemaZodObject = z.object({ ...inputSchema });
|
|
11
|
+
export class ValidateProjectTool extends Tool {
|
|
15
12
|
constructor(mcpServer) {
|
|
16
13
|
super(mcpServer);
|
|
17
14
|
}
|
|
18
15
|
async handler({ absoluteProjectPath, }) {
|
|
19
16
|
try {
|
|
20
|
-
const { stdout, stderr } = await
|
|
21
|
-
return
|
|
17
|
+
const { stdout, stderr } = await runCommandInDir(absoluteProjectPath, 'hs project validate');
|
|
18
|
+
return formatTextContents(stdout, stderr);
|
|
22
19
|
}
|
|
23
20
|
catch (error) {
|
|
24
|
-
return
|
|
21
|
+
return formatTextContents(error instanceof Error ? error.message : `${error}`);
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
24
|
register() {
|
|
@@ -32,4 +29,3 @@ class ValidateProjectTool extends types_1.Tool {
|
|
|
32
29
|
}, this.handler);
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
|
-
exports.ValidateProjectTool = ValidateProjectTool;
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const command_1 = require("../../../utils/command");
|
|
6
|
-
const constants_1 = require("../../../../lib/constants");
|
|
1
|
+
import { AddFeatureToProject, } from '../AddFeatureToProject.js';
|
|
2
|
+
import { runCommandInDir } from '../../../utils/project.js';
|
|
3
|
+
import { addFlag } from '../../../utils/command.js';
|
|
4
|
+
import { APP_AUTH_TYPES, APP_DISTRIBUTION_TYPES, } from '../../../../lib/constants.js';
|
|
7
5
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
8
6
|
vi.mock('../../../utils/project');
|
|
9
7
|
vi.mock('../../../utils/command');
|
|
10
8
|
vi.mock('../../../../lib/constants');
|
|
11
|
-
const mockRunCommandInDir =
|
|
12
|
-
const mockAddFlag =
|
|
9
|
+
const mockRunCommandInDir = runCommandInDir;
|
|
10
|
+
const mockAddFlag = addFlag;
|
|
13
11
|
describe('mcp-server/tools/project/AddFeatureToProject', () => {
|
|
14
12
|
let mockMcpServer;
|
|
15
13
|
let tool;
|
|
@@ -22,7 +20,7 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
|
|
|
22
20
|
};
|
|
23
21
|
mockRegisteredTool = {};
|
|
24
22
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
25
|
-
tool = new
|
|
23
|
+
tool = new AddFeatureToProject(mockMcpServer);
|
|
26
24
|
// Mock addFlag to simulate command building
|
|
27
25
|
mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
|
|
28
26
|
});
|
|
@@ -93,7 +91,7 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
|
|
|
93
91
|
const input = {
|
|
94
92
|
...baseInput,
|
|
95
93
|
addApp: true,
|
|
96
|
-
distribution:
|
|
94
|
+
distribution: APP_DISTRIBUTION_TYPES.PRIVATE,
|
|
97
95
|
};
|
|
98
96
|
const result = await tool.handler(input);
|
|
99
97
|
expect(result.content).toEqual([
|
|
@@ -111,13 +109,13 @@ describe('mcp-server/tools/project/AddFeatureToProject', () => {
|
|
|
111
109
|
const input = {
|
|
112
110
|
...baseInput,
|
|
113
111
|
addApp: true,
|
|
114
|
-
distribution:
|
|
115
|
-
auth:
|
|
112
|
+
distribution: APP_DISTRIBUTION_TYPES.MARKETPLACE,
|
|
113
|
+
auth: APP_AUTH_TYPES.OAUTH,
|
|
116
114
|
features: ['webhooks'],
|
|
117
115
|
};
|
|
118
116
|
await tool.handler(input);
|
|
119
|
-
expect(mockAddFlag).toHaveBeenCalledWith('hs project add', 'distribution',
|
|
120
|
-
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'auth',
|
|
117
|
+
expect(mockAddFlag).toHaveBeenCalledWith('hs project add', 'distribution', APP_DISTRIBUTION_TYPES.MARKETPLACE);
|
|
118
|
+
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'auth', APP_AUTH_TYPES.OAUTH);
|
|
121
119
|
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'features', [
|
|
122
120
|
'webhooks',
|
|
123
121
|
]);
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const constants_1 = require("../../../../lib/constants");
|
|
7
|
-
const v3_1 = require("../../../../lib/projects/create/v3");
|
|
1
|
+
import { CreateProjectTool, } from '../CreateProjectTool.js';
|
|
2
|
+
import { runCommandInDir } from '../../../utils/project.js';
|
|
3
|
+
import { addFlag } from '../../../utils/command.js';
|
|
4
|
+
import { APP_DISTRIBUTION_TYPES } from '../../../../lib/constants.js';
|
|
5
|
+
import { EMPTY_PROJECT, PROJECT_WITH_APP, } from '../../../../lib/projects/create/v3.js';
|
|
8
6
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
9
7
|
vi.mock('../../../utils/project');
|
|
10
8
|
vi.mock('../../../utils/command');
|
|
11
9
|
vi.mock('../../../../lib/constants');
|
|
12
10
|
vi.mock('../../../../lib/projects/create/v3');
|
|
13
|
-
const mockRunCommandInDir =
|
|
14
|
-
const mockAddFlag =
|
|
11
|
+
const mockRunCommandInDir = runCommandInDir;
|
|
12
|
+
const mockAddFlag = addFlag;
|
|
15
13
|
describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
16
14
|
let mockMcpServer;
|
|
17
15
|
let tool;
|
|
@@ -24,7 +22,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
|
24
22
|
};
|
|
25
23
|
mockRegisteredTool = {};
|
|
26
24
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
27
|
-
tool = new
|
|
25
|
+
tool = new CreateProjectTool(mockMcpServer);
|
|
28
26
|
// Mock addFlag to simulate command building
|
|
29
27
|
mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
|
|
30
28
|
});
|
|
@@ -44,7 +42,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
|
44
42
|
absoluteCurrentWorkingDirectory: '/test/workspace',
|
|
45
43
|
name: 'test-project',
|
|
46
44
|
destination: './test-dest',
|
|
47
|
-
projectBase:
|
|
45
|
+
projectBase: EMPTY_PROJECT,
|
|
48
46
|
};
|
|
49
47
|
it('should handle successful command execution', async () => {
|
|
50
48
|
mockRunCommandInDir.mockResolvedValue({
|
|
@@ -55,7 +53,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
|
55
53
|
expect(mockAddFlag).toHaveBeenCalledWith('hs project create', 'platform-version', '2025.2');
|
|
56
54
|
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'name', 'test-project');
|
|
57
55
|
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'dest', './test-dest');
|
|
58
|
-
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'project-base',
|
|
56
|
+
expect(mockAddFlag).toHaveBeenCalledWith(expect.any(String), 'project-base', EMPTY_PROJECT);
|
|
59
57
|
expect(mockRunCommandInDir).toHaveBeenCalledWith('/test/workspace', expect.any(String));
|
|
60
58
|
expect(result).toEqual({
|
|
61
59
|
content: [
|
|
@@ -75,7 +73,7 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
|
75
73
|
it('should prompt for distribution and auth when creating app project without both', async () => {
|
|
76
74
|
const input = {
|
|
77
75
|
...baseInput,
|
|
78
|
-
projectBase:
|
|
76
|
+
projectBase: PROJECT_WITH_APP,
|
|
79
77
|
};
|
|
80
78
|
const result = await tool.handler(input);
|
|
81
79
|
expect(result.content).toEqual([
|
|
@@ -92,8 +90,8 @@ describe('mcp-server/tools/project/CreateProjectTool', () => {
|
|
|
92
90
|
it('should prompt for auth when creating app project without auth', async () => {
|
|
93
91
|
const input = {
|
|
94
92
|
...baseInput,
|
|
95
|
-
projectBase:
|
|
96
|
-
distribution:
|
|
93
|
+
projectBase: PROJECT_WITH_APP,
|
|
94
|
+
distribution: APP_DISTRIBUTION_TYPES.PRIVATE,
|
|
97
95
|
};
|
|
98
96
|
const result = await tool.handler(input);
|
|
99
97
|
expect(result.content).toEqual([
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const project_1 = require("../../../utils/project");
|
|
5
|
-
const command_1 = require("../../../utils/command");
|
|
1
|
+
import { DeployProject } from '../DeployProject.js';
|
|
2
|
+
import { runCommandInDir } from '../../../utils/project.js';
|
|
3
|
+
import { addFlag } from '../../../utils/command.js';
|
|
6
4
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
7
5
|
vi.mock('../../../utils/project');
|
|
8
6
|
vi.mock('../../../utils/command');
|
|
9
|
-
const mockRunCommandInDir =
|
|
10
|
-
const mockAddFlag =
|
|
7
|
+
const mockRunCommandInDir = runCommandInDir;
|
|
8
|
+
const mockAddFlag = addFlag;
|
|
11
9
|
describe('mcp-server/tools/project/DeployProject', () => {
|
|
12
10
|
let mockMcpServer;
|
|
13
11
|
let tool;
|
|
@@ -20,7 +18,7 @@ describe('mcp-server/tools/project/DeployProject', () => {
|
|
|
20
18
|
};
|
|
21
19
|
mockRegisteredTool = {};
|
|
22
20
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
23
|
-
tool = new
|
|
21
|
+
tool = new DeployProject(mockMcpServer);
|
|
24
22
|
// Mock addFlag to simulate command building
|
|
25
23
|
mockAddFlag.mockImplementation((command, flag, value) => `${command} --${flag} "${value}"`);
|
|
26
24
|
});
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const GuidedWalkthroughTool_1 = require("../GuidedWalkthroughTool");
|
|
4
|
-
const command_1 = require("../../../utils/command");
|
|
1
|
+
import { GuidedWalkthroughTool } from '../GuidedWalkthroughTool.js';
|
|
2
|
+
import { execAsync } from '../../../utils/command.js';
|
|
5
3
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
6
4
|
vi.mock('../../../utils/command');
|
|
7
|
-
const mockExecAsync =
|
|
5
|
+
const mockExecAsync = execAsync;
|
|
8
6
|
describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
|
|
9
7
|
let mockMcpServer;
|
|
10
8
|
let tool;
|
|
@@ -17,7 +15,7 @@ describe('mcp-server/tools/project/GuidedWalkthroughTool', () => {
|
|
|
17
15
|
};
|
|
18
16
|
mockRegisteredTool = {};
|
|
19
17
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
20
|
-
tool = new
|
|
18
|
+
tool = new GuidedWalkthroughTool(mockMcpServer);
|
|
21
19
|
});
|
|
22
20
|
describe('register', () => {
|
|
23
21
|
it('should register tool with correct parameters', () => {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const UploadProjectTools_1 = require("../UploadProjectTools");
|
|
4
|
-
const project_1 = require("../../../utils/project");
|
|
1
|
+
import { UploadProjectTools } from '../UploadProjectTools.js';
|
|
2
|
+
import { runCommandInDir } from '../../../utils/project.js';
|
|
5
3
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
6
4
|
vi.mock('../../../utils/project');
|
|
7
|
-
const mockRunCommandInDir =
|
|
5
|
+
const mockRunCommandInDir = runCommandInDir;
|
|
8
6
|
describe('mcp-server/tools/project/UploadProjectTools', () => {
|
|
9
7
|
let mockMcpServer;
|
|
10
8
|
let tool;
|
|
@@ -17,7 +15,7 @@ describe('mcp-server/tools/project/UploadProjectTools', () => {
|
|
|
17
15
|
};
|
|
18
16
|
mockRegisteredTool = {};
|
|
19
17
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
20
|
-
tool = new
|
|
18
|
+
tool = new UploadProjectTools(mockMcpServer);
|
|
21
19
|
});
|
|
22
20
|
describe('register', () => {
|
|
23
21
|
it('should register tool with correct parameters', () => {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const ValidateProjectTool_1 = require("../ValidateProjectTool");
|
|
4
|
-
const project_1 = require("../../../utils/project");
|
|
1
|
+
import { ValidateProjectTool, } from '../ValidateProjectTool.js';
|
|
2
|
+
import { runCommandInDir } from '../../../utils/project.js';
|
|
5
3
|
vi.mock('@modelcontextprotocol/sdk/server/mcp.js');
|
|
6
4
|
vi.mock('../../../utils/project');
|
|
7
|
-
const mockRunCommandInDir =
|
|
5
|
+
const mockRunCommandInDir = runCommandInDir;
|
|
8
6
|
describe('mcp-server/tools/project/ValidateProjectTool', () => {
|
|
9
7
|
let mockMcpServer;
|
|
10
8
|
let tool;
|
|
@@ -17,7 +15,7 @@ describe('mcp-server/tools/project/ValidateProjectTool', () => {
|
|
|
17
15
|
};
|
|
18
16
|
mockRegisteredTool = {};
|
|
19
17
|
mockMcpServer.registerTool.mockReturnValue(mockRegisteredTool);
|
|
20
|
-
tool = new
|
|
18
|
+
tool = new ValidateProjectTool(mockMcpServer);
|
|
21
19
|
});
|
|
22
20
|
describe('register', () => {
|
|
23
21
|
it('should register tool with correct parameters', () => {
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.absoluteCurrentWorkingDirectory = exports.absoluteProjectPath = void 0;
|
|
7
|
-
const zod_1 = __importDefault(require("zod"));
|
|
8
|
-
exports.absoluteProjectPath = zod_1.default
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export const absoluteProjectPath = z
|
|
9
3
|
.string()
|
|
10
4
|
.describe('The absolute path to the project directory.');
|
|
11
|
-
|
|
5
|
+
export const absoluteCurrentWorkingDirectory = z
|
|
12
6
|
.string()
|
|
13
7
|
.describe('The absolute path to the current working directory.');
|
package/mcp-server/types.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Tool = void 0;
|
|
4
|
-
class Tool {
|
|
1
|
+
export class Tool {
|
|
5
2
|
mcpServer;
|
|
6
3
|
constructor(mcpServer) {
|
|
7
4
|
this.mcpServer = mcpServer;
|
|
@@ -14,4 +11,3 @@ class Tool {
|
|
|
14
11
|
throw new Error('Must implement handler');
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
|
-
exports.Tool = Tool;
|
|
@@ -1,43 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const command_1 = require("../command");
|
|
1
|
+
import { addFlag } from '../command.js';
|
|
4
2
|
vi.mock('child_process');
|
|
5
3
|
vi.mock('util');
|
|
6
4
|
describe('mcp-server/utils/command', () => {
|
|
7
5
|
describe('addFlag', () => {
|
|
8
6
|
it('should add string flag to command', () => {
|
|
9
|
-
const result =
|
|
7
|
+
const result = addFlag('hs project create', 'name', 'test-project');
|
|
10
8
|
expect(result).toBe('hs project create --name "test-project"');
|
|
11
9
|
});
|
|
12
10
|
it('should add number flag to command', () => {
|
|
13
|
-
const result =
|
|
11
|
+
const result = addFlag('hs project deploy', 'build', 123);
|
|
14
12
|
expect(result).toBe('hs project deploy --build "123"');
|
|
15
13
|
});
|
|
16
14
|
it('should add boolean flag to command', () => {
|
|
17
|
-
const result =
|
|
15
|
+
const result = addFlag('hs project upload', 'watch', true);
|
|
18
16
|
expect(result).toBe('hs project upload --watch "true"');
|
|
19
17
|
});
|
|
20
18
|
it('should add array flag to command', () => {
|
|
21
|
-
const result =
|
|
19
|
+
const result = addFlag('hs project create', 'features', [
|
|
22
20
|
'card',
|
|
23
21
|
'settings',
|
|
24
22
|
]);
|
|
25
23
|
expect(result).toBe('hs project create --features "card" "settings"');
|
|
26
24
|
});
|
|
27
25
|
it('should handle empty array', () => {
|
|
28
|
-
const result =
|
|
26
|
+
const result = addFlag('hs project create', 'features', []);
|
|
29
27
|
expect(result).toBe('hs project create --features ');
|
|
30
28
|
});
|
|
31
29
|
it('should handle array with one item', () => {
|
|
32
|
-
const result =
|
|
30
|
+
const result = addFlag('hs project create', 'features', ['card']);
|
|
33
31
|
expect(result).toBe('hs project create --features "card"');
|
|
34
32
|
});
|
|
35
33
|
it('should handle special characters in string values', () => {
|
|
36
|
-
const result =
|
|
34
|
+
const result = addFlag('hs project create', 'name', 'my-project with spaces');
|
|
37
35
|
expect(result).toBe('hs project create --name "my-project with spaces"');
|
|
38
36
|
});
|
|
39
37
|
it('should handle special characters in array values', () => {
|
|
40
|
-
const result =
|
|
38
|
+
const result = addFlag('hs project create', 'features', [
|
|
41
39
|
'card with spaces',
|
|
42
40
|
'settings',
|
|
43
41
|
]);
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const project_1 = require("../project");
|
|
7
|
-
const command_1 = require("../command");
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
1
|
+
import { runCommandInDir } from '../project.js';
|
|
2
|
+
import { execAsync } from '../command.js';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
10
5
|
vi.mock('../command');
|
|
11
6
|
vi.mock('fs');
|
|
12
7
|
vi.mock('path');
|
|
13
|
-
const mockExecAsync =
|
|
14
|
-
const mockExistsSync =
|
|
15
|
-
const mockMkdirSync =
|
|
16
|
-
const mockResolve =
|
|
8
|
+
const mockExecAsync = execAsync;
|
|
9
|
+
const mockExistsSync = fs.existsSync;
|
|
10
|
+
const mockMkdirSync = fs.mkdirSync;
|
|
11
|
+
const mockResolve = path.resolve;
|
|
17
12
|
describe('mcp-server/utils/project', () => {
|
|
18
13
|
beforeEach(() => {
|
|
19
14
|
vi.clearAllMocks();
|
|
@@ -32,7 +27,7 @@ describe('mcp-server/utils/project', () => {
|
|
|
32
27
|
};
|
|
33
28
|
mockExistsSync.mockReturnValue(true);
|
|
34
29
|
mockExecAsync.mockResolvedValue(expectedResult);
|
|
35
|
-
const result = await
|
|
30
|
+
const result = await runCommandInDir(mockDirectory, mockCommand);
|
|
36
31
|
expect(mockExistsSync).toHaveBeenCalledWith(mockDirectory);
|
|
37
32
|
expect(mockMkdirSync).not.toHaveBeenCalled();
|
|
38
33
|
expect(mockResolve).toHaveBeenCalledWith(mockDirectory);
|
|
@@ -48,7 +43,7 @@ describe('mcp-server/utils/project', () => {
|
|
|
48
43
|
};
|
|
49
44
|
mockExistsSync.mockReturnValue(false);
|
|
50
45
|
mockExecAsync.mockResolvedValue(expectedResult);
|
|
51
|
-
const result = await
|
|
46
|
+
const result = await runCommandInDir(mockDirectory, mockCommand);
|
|
52
47
|
expect(mockExistsSync).toHaveBeenCalledWith(mockDirectory);
|
|
53
48
|
expect(mockMkdirSync).toHaveBeenCalledWith(mockDirectory);
|
|
54
49
|
expect(mockResolve).toHaveBeenCalledWith(mockDirectory);
|
|
@@ -61,7 +56,7 @@ describe('mcp-server/utils/project', () => {
|
|
|
61
56
|
const error = new Error('Command failed');
|
|
62
57
|
mockExistsSync.mockReturnValue(true);
|
|
63
58
|
mockExecAsync.mockRejectedValue(error);
|
|
64
|
-
await expect(
|
|
59
|
+
await expect(runCommandInDir(mockDirectory, mockCommand)).rejects.toThrow('Command failed');
|
|
65
60
|
expect(mockExecAsync).toHaveBeenCalledWith(mockCommand, {
|
|
66
61
|
cwd: mockResolvedPath,
|
|
67
62
|
});
|
|
@@ -73,7 +68,7 @@ describe('mcp-server/utils/project', () => {
|
|
|
73
68
|
};
|
|
74
69
|
mockExistsSync.mockReturnValue(true);
|
|
75
70
|
mockExecAsync.mockResolvedValue(expectedResult);
|
|
76
|
-
const result = await
|
|
71
|
+
const result = await runCommandInDir(mockDirectory, mockCommand);
|
|
77
72
|
expect(result.stdout).toBe('some output');
|
|
78
73
|
expect(result.stderr).toBe('warning message');
|
|
79
74
|
});
|