@structured-world/gitlab-mcp 6.62.1 → 7.0.1
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/README.md +22 -1
- package/README.md.in +21 -0
- package/dist/generated/prisma/client.js.map +1 -1
- package/dist/generated/prisma/internal/class.js +2 -2
- package/dist/generated/prisma/internal/class.js.map +1 -1
- package/dist/generated/prisma/internal/prismaNamespace.js +2 -2
- package/dist/generated/prisma/models/AuthCodeFlowState.d.ts +1 -2
- package/dist/generated/prisma/models/AuthorizationCode.d.ts +1 -2
- package/dist/generated/prisma/models/DeviceFlowState.d.ts +1 -2
- package/dist/generated/prisma/models/McpSessionMapping.d.ts +1 -2
- package/dist/generated/prisma/models/OAuthSession.d.ts +1 -2
- package/dist/src/cli/docker/container-runtime.d.ts +1 -1
- package/dist/src/cli/docker/container-runtime.js +14 -14
- package/dist/src/cli/docker/docker-command.d.ts +1 -1
- package/dist/src/cli/docker/docker-command.js +113 -113
- package/dist/src/cli/docker/docker-command.js.map +1 -1
- package/dist/src/cli/docker/docker-utils.d.ts +3 -3
- package/dist/src/cli/docker/docker-utils.js +74 -74
- package/dist/src/cli/docker/docker-utils.js.map +1 -1
- package/dist/src/cli/docker/index.d.ts +4 -4
- package/dist/src/cli/docker/types.d.ts +3 -3
- package/dist/src/cli/docker/types.js +5 -5
- package/dist/src/cli/init/browser.js +2 -2
- package/dist/src/cli/init/config-generator.d.ts +2 -2
- package/dist/src/cli/init/config-generator.js +22 -22
- package/dist/src/cli/init/connection.d.ts +1 -1
- package/dist/src/cli/init/connection.js +27 -27
- package/dist/src/cli/init/connection.js.map +1 -1
- package/dist/src/cli/init/index.d.ts +4 -4
- package/dist/src/cli/init/types.d.ts +3 -3
- package/dist/src/cli/init/types.js +36 -36
- package/dist/src/cli/init/wizard.js +80 -80
- package/dist/src/cli/init/wizard.js.map +1 -1
- package/dist/src/cli/inject-tool-refs.js +47 -47
- package/dist/src/cli/inject-tool-refs.js.map +1 -1
- package/dist/src/cli/install/backup.d.ts +1 -1
- package/dist/src/cli/install/backup.js +3 -3
- package/dist/src/cli/install/detector.d.ts +2 -2
- package/dist/src/cli/install/detector.js +18 -18
- package/dist/src/cli/install/detector.js.map +1 -1
- package/dist/src/cli/install/index.d.ts +5 -5
- package/dist/src/cli/install/install-command.d.ts +2 -2
- package/dist/src/cli/install/install-command.js +68 -68
- package/dist/src/cli/install/install-command.js.map +1 -1
- package/dist/src/cli/install/installers.d.ts +2 -2
- package/dist/src/cli/install/installers.js +55 -55
- package/dist/src/cli/install/installers.js.map +1 -1
- package/dist/src/cli/install/types.d.ts +4 -4
- package/dist/src/cli/install/types.js +48 -48
- package/dist/src/cli/instances/index.d.ts +2 -2
- package/dist/src/cli/instances/instances-command.d.ts +1 -1
- package/dist/src/cli/instances/instances-command.js +70 -66
- package/dist/src/cli/instances/instances-command.js.map +1 -1
- package/dist/src/cli/list-tools.js +396 -396
- package/dist/src/cli/list-tools.js.map +1 -1
- package/dist/src/cli/setup/discovery.d.ts +1 -1
- package/dist/src/cli/setup/discovery.js +10 -10
- package/dist/src/cli/setup/discovery.js.map +1 -1
- package/dist/src/cli/setup/flows/configure-existing.d.ts +1 -1
- package/dist/src/cli/setup/flows/configure-existing.js +57 -57
- package/dist/src/cli/setup/flows/configure-existing.js.map +1 -1
- package/dist/src/cli/setup/flows/local-setup.d.ts +1 -1
- package/dist/src/cli/setup/flows/local-setup.js +51 -51
- package/dist/src/cli/setup/flows/local-setup.js.map +1 -1
- package/dist/src/cli/setup/flows/server-setup.d.ts +1 -1
- package/dist/src/cli/setup/flows/server-setup.js +50 -50
- package/dist/src/cli/setup/flows/server-setup.js.map +1 -1
- package/dist/src/cli/setup/flows/tool-selection.d.ts +1 -1
- package/dist/src/cli/setup/flows/tool-selection.js +94 -94
- package/dist/src/cli/setup/flows/tool-selection.js.map +1 -1
- package/dist/src/cli/setup/index.d.ts +4 -4
- package/dist/src/cli/setup/presets.d.ts +1 -1
- package/dist/src/cli/setup/presets.js +157 -157
- package/dist/src/cli/setup/presets.js.map +1 -1
- package/dist/src/cli/setup/types.d.ts +7 -7
- package/dist/src/cli/setup/wizard.d.ts +1 -1
- package/dist/src/cli/setup/wizard.js +25 -25
- package/dist/src/cli/utils/index.d.ts +1 -1
- package/dist/src/cli/utils/path-utils.js +3 -3
- package/dist/src/cli-utils.d.ts +2 -2
- package/dist/src/cli-utils.js +46 -46
- package/dist/src/config/index.d.ts +4 -4
- package/dist/src/config/instances-loader.d.ts +3 -3
- package/dist/src/config/instances-loader.js +53 -53
- package/dist/src/config/instances-loader.js.map +1 -1
- package/dist/src/config/instances-schema.d.ts +1 -1
- package/dist/src/config/instances-schema.js +33 -33
- package/dist/src/config/instances-schema.js.map +1 -1
- package/dist/src/config.d.ts +11 -4
- package/dist/src/config.js +112 -111
- package/dist/src/config.js.map +1 -1
- package/dist/src/dashboard/handler.d.ts +2 -2
- package/dist/src/dashboard/handler.js +7 -7
- package/dist/src/dashboard/html-template.d.ts +1 -1
- package/dist/src/dashboard/html-template.js +44 -44
- package/dist/src/dashboard/html-template.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +4 -4
- package/dist/src/dashboard/metrics.d.ts +3 -3
- package/dist/src/dashboard/metrics.js +42 -42
- package/dist/src/discovery/auto.d.ts +3 -3
- package/dist/src/discovery/auto.js +28 -28
- package/dist/src/discovery/git-remote.d.ts +2 -2
- package/dist/src/discovery/git-remote.js +18 -18
- package/dist/src/discovery/index.d.ts +3 -3
- package/dist/src/discovery/profile-matcher.d.ts +2 -2
- package/dist/src/discovery/profile-matcher.js +8 -8
- package/dist/src/discovery/profile-matcher.js.map +1 -1
- package/dist/src/entities/context/context-manager.d.ts +3 -3
- package/dist/src/entities/context/context-manager.js +34 -34
- package/dist/src/entities/context/context-manager.js.map +1 -1
- package/dist/src/entities/context/handlers.d.ts +2 -2
- package/dist/src/entities/context/handlers.js +8 -8
- package/dist/src/entities/context/index.d.ts +8 -8
- package/dist/src/entities/context/index.js +1 -1
- package/dist/src/entities/context/registry.d.ts +1 -1
- package/dist/src/entities/context/registry.js +4 -4
- package/dist/src/entities/context/schema.d.ts +1 -1
- package/dist/src/entities/context/schema.js +19 -19
- package/dist/src/entities/context/types.d.ts +9 -9
- package/dist/src/entities/context/whoami.d.ts +1 -1
- package/dist/src/entities/context/whoami.js +31 -31
- package/dist/src/entities/context/whoami.js.map +1 -1
- package/dist/src/entities/core/index.d.ts +5 -5
- package/dist/src/entities/core/index.js +1 -1
- package/dist/src/entities/core/registry.d.ts +1 -1
- package/dist/src/entities/core/registry.js +194 -194
- package/dist/src/entities/core/registry.js.map +1 -1
- package/dist/src/entities/core/schema-readonly.d.ts +1 -1
- package/dist/src/entities/core/schema-readonly.js +117 -117
- package/dist/src/entities/core/schema.d.ts +1 -1
- package/dist/src/entities/core/schema.js +67 -67
- package/dist/src/entities/files/index.d.ts +5 -5
- package/dist/src/entities/files/index.js +1 -1
- package/dist/src/entities/files/registry.d.ts +1 -1
- package/dist/src/entities/files/registry.js +45 -45
- package/dist/src/entities/files/registry.js.map +1 -1
- package/dist/src/entities/files/schema-readonly.d.ts +1 -1
- package/dist/src/entities/files/schema-readonly.js +13 -13
- package/dist/src/entities/files/schema.d.ts +1 -1
- package/dist/src/entities/files/schema.js +29 -29
- package/dist/src/entities/index.d.ts +17 -17
- package/dist/src/entities/integrations/index.d.ts +4 -4
- package/dist/src/entities/integrations/registry.d.ts +1 -1
- package/dist/src/entities/integrations/registry.js +17 -17
- package/dist/src/entities/integrations/registry.js.map +1 -1
- package/dist/src/entities/integrations/schema-readonly.d.ts +1 -1
- package/dist/src/entities/integrations/schema-readonly.js +5 -5
- package/dist/src/entities/integrations/schema.d.ts +1 -1
- package/dist/src/entities/integrations/schema.js +69 -69
- package/dist/src/entities/iterations/index.d.ts +2 -2
- package/dist/src/entities/iterations/registry.d.ts +1 -1
- package/dist/src/entities/iterations/registry.js +13 -13
- package/dist/src/entities/iterations/registry.js.map +1 -1
- package/dist/src/entities/iterations/schema-readonly.d.ts +1 -1
- package/dist/src/entities/iterations/schema-readonly.js +9 -9
- package/dist/src/entities/labels/index.d.ts +5 -5
- package/dist/src/entities/labels/index.js +1 -1
- package/dist/src/entities/labels/registry.d.ts +1 -1
- package/dist/src/entities/labels/registry.js +19 -19
- package/dist/src/entities/labels/registry.js.map +1 -1
- package/dist/src/entities/labels/schema-readonly.d.ts +1 -1
- package/dist/src/entities/labels/schema-readonly.js +8 -8
- package/dist/src/entities/labels/schema.d.ts +1 -1
- package/dist/src/entities/labels/schema.js +11 -11
- package/dist/src/entities/members/index.d.ts +3 -3
- package/dist/src/entities/members/registry.d.ts +1 -1
- package/dist/src/entities/members/registry.js +26 -26
- package/dist/src/entities/members/registry.js.map +1 -1
- package/dist/src/entities/members/schema-readonly.d.ts +1 -1
- package/dist/src/entities/members/schema-readonly.js +32 -32
- package/dist/src/entities/members/schema-readonly.js.map +1 -1
- package/dist/src/entities/members/schema.d.ts +1 -1
- package/dist/src/entities/members/schema.js +28 -28
- package/dist/src/entities/milestones/index.d.ts +5 -5
- package/dist/src/entities/milestones/index.js +1 -1
- package/dist/src/entities/milestones/registry.d.ts +1 -1
- package/dist/src/entities/milestones/registry.js +25 -25
- package/dist/src/entities/milestones/registry.js.map +1 -1
- package/dist/src/entities/milestones/schema-readonly.d.ts +2 -2
- package/dist/src/entities/milestones/schema-readonly.js +15 -15
- package/dist/src/entities/milestones/schema.d.ts +1 -1
- package/dist/src/entities/milestones/schema.js +16 -16
- package/dist/src/entities/milestones/schema.js.map +1 -1
- package/dist/src/entities/mrs/index.d.ts +5 -5
- package/dist/src/entities/mrs/index.js +1 -1
- package/dist/src/entities/mrs/registry.d.ts +1 -1
- package/dist/src/entities/mrs/registry.js +102 -102
- package/dist/src/entities/mrs/registry.js.map +1 -1
- package/dist/src/entities/mrs/schema-readonly.d.ts +1 -1
- package/dist/src/entities/mrs/schema-readonly.js +126 -126
- package/dist/src/entities/mrs/schema-readonly.js.map +1 -1
- package/dist/src/entities/mrs/schema.d.ts +1 -1
- package/dist/src/entities/mrs/schema.js +111 -111
- package/dist/src/entities/mrs/schema.js.map +1 -1
- package/dist/src/entities/pipelines/index.d.ts +5 -5
- package/dist/src/entities/pipelines/index.js +1 -1
- package/dist/src/entities/pipelines/registry.d.ts +1 -1
- package/dist/src/entities/pipelines/registry.js +45 -45
- package/dist/src/entities/pipelines/registry.js.map +1 -1
- package/dist/src/entities/pipelines/schema-readonly.d.ts +2 -2
- package/dist/src/entities/pipelines/schema-readonly.js +73 -73
- package/dist/src/entities/pipelines/schema.d.ts +1 -1
- package/dist/src/entities/pipelines/schema.js +21 -21
- package/dist/src/entities/refs/index.d.ts +3 -3
- package/dist/src/entities/refs/registry.d.ts +1 -1
- package/dist/src/entities/refs/registry.js +31 -31
- package/dist/src/entities/refs/registry.js.map +1 -1
- package/dist/src/entities/refs/schema-readonly.d.ts +1 -1
- package/dist/src/entities/refs/schema-readonly.js +21 -21
- package/dist/src/entities/refs/schema.d.ts +1 -1
- package/dist/src/entities/refs/schema.js +56 -56
- package/dist/src/entities/releases/index.d.ts +3 -3
- package/dist/src/entities/releases/registry.d.ts +1 -1
- package/dist/src/entities/releases/registry.js +21 -21
- package/dist/src/entities/releases/registry.js.map +1 -1
- package/dist/src/entities/releases/schema-readonly.d.ts +1 -1
- package/dist/src/entities/releases/schema-readonly.js +13 -13
- package/dist/src/entities/releases/schema.d.ts +1 -1
- package/dist/src/entities/releases/schema.js +21 -21
- package/dist/src/entities/search/index.d.ts +2 -2
- package/dist/src/entities/search/registry.d.ts +1 -1
- package/dist/src/entities/search/registry.js +13 -13
- package/dist/src/entities/search/schema-readonly.d.ts +1 -1
- package/dist/src/entities/search/schema-readonly.js +23 -23
- package/dist/src/entities/shared.d.ts +1 -1
- package/dist/src/entities/shared.js +5 -5
- package/dist/src/entities/snippets/index.d.ts +5 -5
- package/dist/src/entities/snippets/index.js +1 -1
- package/dist/src/entities/snippets/registry.d.ts +1 -1
- package/dist/src/entities/snippets/registry.js +24 -24
- package/dist/src/entities/snippets/registry.js.map +1 -1
- package/dist/src/entities/snippets/schema-readonly.d.ts +1 -1
- package/dist/src/entities/snippets/schema-readonly.js +11 -11
- package/dist/src/entities/snippets/schema.d.ts +1 -1
- package/dist/src/entities/snippets/schema.js +27 -27
- package/dist/src/entities/snippets/schema.js.map +1 -1
- package/dist/src/entities/utils.d.ts +2 -2
- package/dist/src/entities/utils.js +8 -8
- package/dist/src/entities/utils.js.map +1 -1
- package/dist/src/entities/variables/index.d.ts +5 -5
- package/dist/src/entities/variables/index.js +1 -1
- package/dist/src/entities/variables/registry.d.ts +1 -1
- package/dist/src/entities/variables/registry.js +22 -22
- package/dist/src/entities/variables/registry.js.map +1 -1
- package/dist/src/entities/variables/schema-readonly.d.ts +1 -1
- package/dist/src/entities/variables/schema-readonly.js +6 -6
- package/dist/src/entities/variables/schema.d.ts +1 -1
- package/dist/src/entities/variables/schema.js +21 -21
- package/dist/src/entities/variables/schema.js.map +1 -1
- package/dist/src/entities/webhooks/index.d.ts +4 -4
- package/dist/src/entities/webhooks/registry.d.ts +1 -1
- package/dist/src/entities/webhooks/registry.js +29 -29
- package/dist/src/entities/webhooks/registry.js.map +1 -1
- package/dist/src/entities/webhooks/schema-readonly.d.ts +1 -1
- package/dist/src/entities/webhooks/schema-readonly.js +9 -9
- package/dist/src/entities/webhooks/schema.d.ts +1 -1
- package/dist/src/entities/webhooks/schema.js +59 -59
- package/dist/src/entities/wiki/index.d.ts +5 -5
- package/dist/src/entities/wiki/index.js +1 -1
- package/dist/src/entities/wiki/registry.d.ts +1 -1
- package/dist/src/entities/wiki/registry.js +19 -19
- package/dist/src/entities/wiki/registry.js.map +1 -1
- package/dist/src/entities/wiki/schema-readonly.d.ts +1 -1
- package/dist/src/entities/wiki/schema-readonly.js +6 -6
- package/dist/src/entities/wiki/schema.d.ts +1 -1
- package/dist/src/entities/wiki/schema.js +12 -12
- package/dist/src/entities/workitems/index.d.ts +5 -5
- package/dist/src/entities/workitems/index.js +1 -1
- package/dist/src/entities/workitems/registry.d.ts +1 -1
- package/dist/src/entities/workitems/registry.js +101 -101
- package/dist/src/entities/workitems/registry.js.map +1 -1
- package/dist/src/entities/workitems/schema-readonly.d.ts +1 -1
- package/dist/src/entities/workitems/schema-readonly.js +27 -27
- package/dist/src/entities/workitems/schema-readonly.js.map +1 -1
- package/dist/src/entities/workitems/schema.d.ts +1 -1
- package/dist/src/entities/workitems/schema.js +58 -58
- package/dist/src/graphql/DynamicWorkItemsQuery.d.ts +2 -2
- package/dist/src/graphql/DynamicWorkItemsQuery.js +47 -47
- package/dist/src/graphql/DynamicWorkItemsQuery.js.map +1 -1
- package/dist/src/graphql/client.d.ts +1 -1
- package/dist/src/graphql/client.js +4 -4
- package/dist/src/graphql/client.js.map +1 -1
- package/dist/src/graphql/index.d.ts +2 -2
- package/dist/src/graphql/workItems.d.ts +38 -38
- package/dist/src/graphql/workItems.js +30 -30
- package/dist/src/handlers.d.ts +2 -1
- package/dist/src/handlers.js +258 -86
- package/dist/src/handlers.js.map +1 -1
- package/dist/src/http-client.js +3 -3
- package/dist/src/logger.js +25 -25
- package/dist/src/logging/access-log.d.ts +2 -2
- package/dist/src/logging/access-log.js +25 -25
- package/dist/src/logging/connection-tracker.d.ts +1 -1
- package/dist/src/logging/connection-tracker.js +3 -3
- package/dist/src/logging/index.d.ts +5 -5
- package/dist/src/logging/request-tracker.d.ts +3 -3
- package/dist/src/logging/request-tracker.js +4 -4
- package/dist/src/logging/types.d.ts +3 -3
- package/dist/src/logging/types.js +1 -1
- package/dist/src/logging/types.js.map +1 -1
- package/dist/src/main.js +28 -28
- package/dist/src/middleware/index.d.ts +3 -2
- package/dist/src/middleware/index.js +3 -1
- package/dist/src/middleware/index.js.map +1 -1
- package/dist/src/middleware/oauth-auth.d.ts +1 -1
- package/dist/src/middleware/oauth-auth.js +17 -17
- package/dist/src/middleware/rate-limiter.d.ts +1 -1
- package/dist/src/middleware/rate-limiter.js +32 -32
- package/dist/src/middleware/response-write-timeout.d.ts +2 -0
- package/dist/src/middleware/response-write-timeout.js +62 -0
- package/dist/src/middleware/response-write-timeout.js.map +1 -0
- package/dist/src/oauth/config.d.ts +1 -1
- package/dist/src/oauth/config.js +18 -18
- package/dist/src/oauth/config.js.map +1 -1
- package/dist/src/oauth/endpoints/authorize.d.ts +1 -1
- package/dist/src/oauth/endpoints/authorize.js +32 -32
- package/dist/src/oauth/endpoints/callback.d.ts +1 -1
- package/dist/src/oauth/endpoints/callback.js +26 -26
- package/dist/src/oauth/endpoints/index.d.ts +5 -5
- package/dist/src/oauth/endpoints/metadata.d.ts +1 -1
- package/dist/src/oauth/endpoints/metadata.js +12 -12
- package/dist/src/oauth/endpoints/register.d.ts +1 -1
- package/dist/src/oauth/endpoints/register.js +9 -9
- package/dist/src/oauth/endpoints/token.d.ts +1 -1
- package/dist/src/oauth/endpoints/token.js +28 -28
- package/dist/src/oauth/gitlab-device-flow.d.ts +2 -2
- package/dist/src/oauth/gitlab-device-flow.js +73 -68
- package/dist/src/oauth/gitlab-device-flow.js.map +1 -1
- package/dist/src/oauth/index.d.ts +10 -10
- package/dist/src/oauth/session-store.d.ts +2 -2
- package/dist/src/oauth/session-store.js +40 -40
- package/dist/src/oauth/session-store.js.map +1 -1
- package/dist/src/oauth/storage/factory.d.ts +2 -2
- package/dist/src/oauth/storage/factory.js +16 -16
- package/dist/src/oauth/storage/file.d.ts +2 -2
- package/dist/src/oauth/storage/file.js +22 -22
- package/dist/src/oauth/storage/file.js.map +1 -1
- package/dist/src/oauth/storage/index.d.ts +5 -5
- package/dist/src/oauth/storage/memory.d.ts +2 -2
- package/dist/src/oauth/storage/memory.js +18 -18
- package/dist/src/oauth/storage/memory.js.map +1 -1
- package/dist/src/oauth/storage/postgresql.d.ts +2 -2
- package/dist/src/oauth/storage/postgresql.js +11 -11
- package/dist/src/oauth/storage/postgresql.js.map +1 -1
- package/dist/src/oauth/storage/types.d.ts +3 -3
- package/dist/src/oauth/token-context.d.ts +1 -1
- package/dist/src/oauth/token-context.js +1 -1
- package/dist/src/oauth/token-utils.d.ts +1 -1
- package/dist/src/oauth/token-utils.js +20 -20
- package/dist/src/oauth/types.d.ts +3 -3
- package/dist/src/profiles/applicator.d.ts +1 -1
- package/dist/src/profiles/applicator.js +48 -48
- package/dist/src/profiles/index.d.ts +5 -5
- package/dist/src/profiles/loader.d.ts +3 -3
- package/dist/src/profiles/loader.js +25 -25
- package/dist/src/profiles/loader.js.map +1 -1
- package/dist/src/profiles/project-loader.d.ts +1 -1
- package/dist/src/profiles/project-loader.js +23 -23
- package/dist/src/profiles/project-loader.js.map +1 -1
- package/dist/src/profiles/scope-enforcer.d.ts +2 -2
- package/dist/src/profiles/scope-enforcer.js +25 -25
- package/dist/src/profiles/scope-enforcer.js.map +1 -1
- package/dist/src/profiles/types.d.ts +2 -2
- package/dist/src/profiles/types.js +50 -48
- package/dist/src/profiles/types.js.map +1 -1
- package/dist/src/registry-manager.d.ts +19 -11
- package/dist/src/registry-manager.js +257 -172
- package/dist/src/registry-manager.js.map +1 -1
- package/dist/src/server.js +165 -149
- package/dist/src/server.js.map +1 -1
- package/dist/src/services/ConnectionManager.d.ts +33 -24
- package/dist/src/services/ConnectionManager.js +304 -179
- package/dist/src/services/ConnectionManager.js.map +1 -1
- package/dist/src/services/GitLabVersionDetector.d.ts +2 -2
- package/dist/src/services/GitLabVersionDetector.js +45 -45
- package/dist/src/services/GitLabVersionDetector.js.map +1 -1
- package/dist/src/services/HealthMonitor.d.ts +42 -0
- package/dist/src/services/HealthMonitor.js +544 -0
- package/dist/src/services/HealthMonitor.js.map +1 -0
- package/dist/src/services/InstanceConnectionPool.d.ts +2 -2
- package/dist/src/services/InstanceConnectionPool.js +13 -13
- package/dist/src/services/InstanceConnectionPool.js.map +1 -1
- package/dist/src/services/InstanceRateLimiter.js +6 -6
- package/dist/src/services/InstanceRateLimiter.js.map +1 -1
- package/dist/src/services/InstanceRegistry.d.ts +4 -5
- package/dist/src/services/InstanceRegistry.js +29 -41
- package/dist/src/services/InstanceRegistry.js.map +1 -1
- package/dist/src/services/NamespaceTierDetector.d.ts +2 -2
- package/dist/src/services/NamespaceTierDetector.js +30 -30
- package/dist/src/services/NamespaceTierDetector.js.map +1 -1
- package/dist/src/services/SchemaIntrospector.d.ts +2 -1
- package/dist/src/services/SchemaIntrospector.js +45 -42
- package/dist/src/services/SchemaIntrospector.js.map +1 -1
- package/dist/src/services/TokenScopeDetector.d.ts +4 -4
- package/dist/src/services/TokenScopeDetector.js +133 -110
- package/dist/src/services/TokenScopeDetector.js.map +1 -1
- package/dist/src/services/ToolAvailability.d.ts +15 -11
- package/dist/src/services/ToolAvailability.js +150 -130
- package/dist/src/services/ToolAvailability.js.map +1 -1
- package/dist/src/services/WidgetAvailability.d.ts +5 -5
- package/dist/src/services/WidgetAvailability.js +40 -39
- package/dist/src/services/WidgetAvailability.js.map +1 -1
- package/dist/src/session-manager.d.ts +3 -2
- package/dist/src/session-manager.js +17 -14
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.js +4 -4
- package/dist/src/utils/description-utils.js +4 -4
- package/dist/src/utils/description-utils.js.map +1 -1
- package/dist/src/utils/error-handler.d.ts +19 -10
- package/dist/src/utils/error-handler.js +272 -187
- package/dist/src/utils/error-handler.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +7 -0
- package/dist/src/utils/fetch.js +136 -122
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/gitlab-api.d.ts +1 -1
- package/dist/src/utils/gitlab-api.js +29 -26
- package/dist/src/utils/gitlab-api.js.map +1 -1
- package/dist/src/utils/idConversion.js +47 -47
- package/dist/src/utils/idConversion.js.map +1 -1
- package/dist/src/utils/namespace.d.ts +2 -2
- package/dist/src/utils/namespace.js +15 -15
- package/dist/src/utils/projectIdentifier.js +4 -4
- package/dist/src/utils/request-logger.d.ts +4 -4
- package/dist/src/utils/request-logger.js +5 -5
- package/dist/src/utils/schema-utils.js +24 -24
- package/dist/src/utils/schema-utils.js.map +1 -1
- package/dist/src/utils/smart-user-search.d.ts +1 -1
- package/dist/src/utils/smart-user-search.js +10 -10
- package/dist/src/utils/url.d.ts +1 -0
- package/dist/src/utils/url.js +38 -0
- package/dist/src/utils/url.js.map +1 -0
- package/dist/src/utils/version.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +22 -31
- package/dist/structured-world-gitlab-mcp-6.62.1.tgz +0 -0
|
@@ -12,228 +12,230 @@ exports.createVersionRestrictedError = createVersionRestrictedError;
|
|
|
12
12
|
exports.parseGitLabApiError = parseGitLabApiError;
|
|
13
13
|
exports.parseTimeoutError = parseTimeoutError;
|
|
14
14
|
exports.isStructuredToolError = isStructuredToolError;
|
|
15
|
+
exports.classifyError = classifyError;
|
|
16
|
+
exports.createConnectionFailedError = createConnectionFailedError;
|
|
15
17
|
const ConnectionManager_js_1 = require("../services/ConnectionManager.js");
|
|
16
18
|
const version_js_1 = require("./version.js");
|
|
17
19
|
const FEATURE_METADATA = {
|
|
18
20
|
workItems: {
|
|
19
|
-
name:
|
|
20
|
-
requiredTier:
|
|
21
|
-
docsUrl:
|
|
21
|
+
name: 'Work Items',
|
|
22
|
+
requiredTier: 'Free',
|
|
23
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/work_items/',
|
|
22
24
|
alternatives: [],
|
|
23
25
|
},
|
|
24
26
|
epics: {
|
|
25
|
-
name:
|
|
26
|
-
requiredTier:
|
|
27
|
-
docsUrl:
|
|
27
|
+
name: 'Epics',
|
|
28
|
+
requiredTier: 'Premium',
|
|
29
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/epics/',
|
|
28
30
|
alternatives: [
|
|
29
31
|
{
|
|
30
|
-
action:
|
|
31
|
-
description:
|
|
32
|
-
available_on:
|
|
32
|
+
action: 'Use issues for tracking',
|
|
33
|
+
description: 'Create issues with labels to organize work instead of epics',
|
|
34
|
+
available_on: 'Free',
|
|
33
35
|
},
|
|
34
36
|
{
|
|
35
|
-
action:
|
|
36
|
-
description:
|
|
37
|
-
available_on:
|
|
37
|
+
action: 'Use milestones',
|
|
38
|
+
description: 'Group related issues under milestones for release planning',
|
|
39
|
+
available_on: 'Free',
|
|
38
40
|
},
|
|
39
41
|
],
|
|
40
42
|
},
|
|
41
43
|
iterations: {
|
|
42
|
-
name:
|
|
43
|
-
requiredTier:
|
|
44
|
-
docsUrl:
|
|
44
|
+
name: 'Iterations',
|
|
45
|
+
requiredTier: 'Premium',
|
|
46
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/iterations/',
|
|
45
47
|
alternatives: [
|
|
46
48
|
{
|
|
47
|
-
action:
|
|
48
|
-
description:
|
|
49
|
-
available_on:
|
|
49
|
+
action: 'Use milestones',
|
|
50
|
+
description: 'Use milestones to track time-boxed work periods',
|
|
51
|
+
available_on: 'Free',
|
|
50
52
|
},
|
|
51
53
|
],
|
|
52
54
|
},
|
|
53
55
|
roadmaps: {
|
|
54
|
-
name:
|
|
55
|
-
requiredTier:
|
|
56
|
-
docsUrl:
|
|
56
|
+
name: 'Roadmaps',
|
|
57
|
+
requiredTier: 'Premium',
|
|
58
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/roadmap/',
|
|
57
59
|
alternatives: [
|
|
58
60
|
{
|
|
59
|
-
action:
|
|
60
|
-
description:
|
|
61
|
-
available_on:
|
|
61
|
+
action: 'Use milestone views',
|
|
62
|
+
description: 'View milestones timeline for basic roadmap functionality',
|
|
63
|
+
available_on: 'Free',
|
|
62
64
|
},
|
|
63
65
|
],
|
|
64
66
|
},
|
|
65
67
|
portfolioManagement: {
|
|
66
|
-
name:
|
|
67
|
-
requiredTier:
|
|
68
|
-
docsUrl:
|
|
68
|
+
name: 'Portfolio Management',
|
|
69
|
+
requiredTier: 'Ultimate',
|
|
70
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/planning_hierarchy/',
|
|
69
71
|
alternatives: [
|
|
70
72
|
{
|
|
71
|
-
action:
|
|
72
|
-
description:
|
|
73
|
-
available_on:
|
|
73
|
+
action: 'Use group-level milestones',
|
|
74
|
+
description: 'Track progress across projects using group milestones',
|
|
75
|
+
available_on: 'Free',
|
|
74
76
|
},
|
|
75
77
|
],
|
|
76
78
|
},
|
|
77
79
|
advancedSearch: {
|
|
78
|
-
name:
|
|
79
|
-
requiredTier:
|
|
80
|
-
docsUrl:
|
|
80
|
+
name: 'Advanced Search',
|
|
81
|
+
requiredTier: 'Premium',
|
|
82
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/search/advanced_search.html',
|
|
81
83
|
alternatives: [
|
|
82
84
|
{
|
|
83
|
-
action:
|
|
84
|
-
description:
|
|
85
|
-
available_on:
|
|
85
|
+
action: 'Use basic search',
|
|
86
|
+
description: 'Use standard GitLab search functionality',
|
|
87
|
+
available_on: 'Free',
|
|
86
88
|
},
|
|
87
89
|
],
|
|
88
90
|
},
|
|
89
91
|
codeReview: {
|
|
90
|
-
name:
|
|
91
|
-
requiredTier:
|
|
92
|
-
docsUrl:
|
|
92
|
+
name: 'Code Review Analytics',
|
|
93
|
+
requiredTier: 'Premium',
|
|
94
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/analytics/code_review_analytics.html',
|
|
93
95
|
alternatives: [],
|
|
94
96
|
},
|
|
95
97
|
securityDashboard: {
|
|
96
|
-
name:
|
|
97
|
-
requiredTier:
|
|
98
|
-
docsUrl:
|
|
98
|
+
name: 'Security Dashboard',
|
|
99
|
+
requiredTier: 'Ultimate',
|
|
100
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/application_security/security_dashboard/',
|
|
99
101
|
alternatives: [],
|
|
100
102
|
},
|
|
101
103
|
complianceFramework: {
|
|
102
|
-
name:
|
|
103
|
-
requiredTier:
|
|
104
|
-
docsUrl:
|
|
104
|
+
name: 'Compliance Framework',
|
|
105
|
+
requiredTier: 'Ultimate',
|
|
106
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/settings/compliance_frameworks.html',
|
|
105
107
|
alternatives: [],
|
|
106
108
|
},
|
|
107
109
|
valueStreamAnalytics: {
|
|
108
|
-
name:
|
|
109
|
-
requiredTier:
|
|
110
|
-
docsUrl:
|
|
110
|
+
name: 'Value Stream Analytics',
|
|
111
|
+
requiredTier: 'Premium',
|
|
112
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/value_stream_analytics/',
|
|
111
113
|
alternatives: [],
|
|
112
114
|
},
|
|
113
115
|
customFields: {
|
|
114
|
-
name:
|
|
115
|
-
requiredTier:
|
|
116
|
-
docsUrl:
|
|
116
|
+
name: 'Custom Fields',
|
|
117
|
+
requiredTier: 'Ultimate',
|
|
118
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/working_with_projects.html',
|
|
117
119
|
alternatives: [
|
|
118
120
|
{
|
|
119
|
-
action:
|
|
120
|
-
description:
|
|
121
|
-
available_on:
|
|
121
|
+
action: 'Use labels',
|
|
122
|
+
description: 'Use labels to categorize and tag work items',
|
|
123
|
+
available_on: 'Free',
|
|
122
124
|
},
|
|
123
125
|
],
|
|
124
126
|
},
|
|
125
127
|
okrs: {
|
|
126
|
-
name:
|
|
127
|
-
requiredTier:
|
|
128
|
-
docsUrl:
|
|
128
|
+
name: 'OKRs (Objectives and Key Results)',
|
|
129
|
+
requiredTier: 'Ultimate',
|
|
130
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/okrs/',
|
|
129
131
|
alternatives: [
|
|
130
132
|
{
|
|
131
|
-
action:
|
|
132
|
-
description:
|
|
133
|
-
available_on:
|
|
133
|
+
action: 'Use issues with labels',
|
|
134
|
+
description: 'Track objectives as issues with specific labels',
|
|
135
|
+
available_on: 'Free',
|
|
134
136
|
},
|
|
135
137
|
],
|
|
136
138
|
},
|
|
137
139
|
healthStatus: {
|
|
138
|
-
name:
|
|
139
|
-
requiredTier:
|
|
140
|
-
docsUrl:
|
|
140
|
+
name: 'Health Status',
|
|
141
|
+
requiredTier: 'Ultimate',
|
|
142
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#health-status',
|
|
141
143
|
alternatives: [
|
|
142
144
|
{
|
|
143
|
-
action:
|
|
145
|
+
action: 'Use labels for status',
|
|
144
146
|
description: "Create labels like 'on-track', 'at-risk', 'needs-attention'",
|
|
145
|
-
available_on:
|
|
147
|
+
available_on: 'Free',
|
|
146
148
|
},
|
|
147
149
|
],
|
|
148
150
|
},
|
|
149
151
|
weight: {
|
|
150
|
-
name:
|
|
151
|
-
requiredTier:
|
|
152
|
-
docsUrl:
|
|
152
|
+
name: 'Issue Weight',
|
|
153
|
+
requiredTier: 'Premium',
|
|
154
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/issues/issue_weight.html',
|
|
153
155
|
alternatives: [
|
|
154
156
|
{
|
|
155
|
-
action:
|
|
157
|
+
action: 'Use labels for estimation',
|
|
156
158
|
description: "Create labels like 'size::S', 'size::M', 'size::L' for estimation",
|
|
157
|
-
available_on:
|
|
159
|
+
available_on: 'Free',
|
|
158
160
|
},
|
|
159
161
|
],
|
|
160
162
|
},
|
|
161
163
|
multiLevelEpics: {
|
|
162
|
-
name:
|
|
163
|
-
requiredTier:
|
|
164
|
-
docsUrl:
|
|
164
|
+
name: 'Multi-level Epics',
|
|
165
|
+
requiredTier: 'Ultimate',
|
|
166
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/group/epics/manage_epics.html#multi-level-child-epics',
|
|
165
167
|
alternatives: [
|
|
166
168
|
{
|
|
167
|
-
action:
|
|
168
|
-
description:
|
|
169
|
-
available_on:
|
|
169
|
+
action: 'Use flat epics',
|
|
170
|
+
description: 'Organize work with single-level epics (Premium)',
|
|
171
|
+
available_on: 'Premium',
|
|
170
172
|
},
|
|
171
173
|
],
|
|
172
174
|
},
|
|
173
175
|
serviceDesk: {
|
|
174
|
-
name:
|
|
175
|
-
requiredTier:
|
|
176
|
-
docsUrl:
|
|
176
|
+
name: 'Service Desk',
|
|
177
|
+
requiredTier: 'Premium',
|
|
178
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/service_desk/',
|
|
177
179
|
alternatives: [],
|
|
178
180
|
},
|
|
179
181
|
requirements: {
|
|
180
|
-
name:
|
|
181
|
-
requiredTier:
|
|
182
|
-
docsUrl:
|
|
182
|
+
name: 'Requirements Management',
|
|
183
|
+
requiredTier: 'Ultimate',
|
|
184
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/requirements/',
|
|
183
185
|
alternatives: [
|
|
184
186
|
{
|
|
185
|
-
action:
|
|
186
|
-
description:
|
|
187
|
-
available_on:
|
|
187
|
+
action: 'Use issues',
|
|
188
|
+
description: 'Track requirements as issues with a dedicated label',
|
|
189
|
+
available_on: 'Free',
|
|
188
190
|
},
|
|
189
191
|
],
|
|
190
192
|
},
|
|
191
193
|
qualityManagement: {
|
|
192
|
-
name:
|
|
193
|
-
requiredTier:
|
|
194
|
-
docsUrl:
|
|
194
|
+
name: 'Quality Management',
|
|
195
|
+
requiredTier: 'Ultimate',
|
|
196
|
+
docsUrl: 'https://docs.gitlab.com/ee/ci/testing/',
|
|
195
197
|
alternatives: [],
|
|
196
198
|
},
|
|
197
199
|
timeTracking: {
|
|
198
|
-
name:
|
|
199
|
-
requiredTier:
|
|
200
|
-
docsUrl:
|
|
200
|
+
name: 'Time Tracking',
|
|
201
|
+
requiredTier: 'Premium',
|
|
202
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/time_tracking.html',
|
|
201
203
|
alternatives: [],
|
|
202
204
|
},
|
|
203
205
|
crmContacts: {
|
|
204
|
-
name:
|
|
205
|
-
requiredTier:
|
|
206
|
-
docsUrl:
|
|
206
|
+
name: 'CRM Contacts',
|
|
207
|
+
requiredTier: 'Ultimate',
|
|
208
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/crm/',
|
|
207
209
|
alternatives: [],
|
|
208
210
|
},
|
|
209
211
|
vulnerabilities: {
|
|
210
|
-
name:
|
|
211
|
-
requiredTier:
|
|
212
|
-
docsUrl:
|
|
212
|
+
name: 'Vulnerability Management',
|
|
213
|
+
requiredTier: 'Ultimate',
|
|
214
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/application_security/vulnerabilities/',
|
|
213
215
|
alternatives: [],
|
|
214
216
|
},
|
|
215
217
|
errorTracking: {
|
|
216
|
-
name:
|
|
217
|
-
requiredTier:
|
|
218
|
-
docsUrl:
|
|
218
|
+
name: 'Error Tracking',
|
|
219
|
+
requiredTier: 'Ultimate',
|
|
220
|
+
docsUrl: 'https://docs.gitlab.com/ee/operations/error_tracking.html',
|
|
219
221
|
alternatives: [],
|
|
220
222
|
},
|
|
221
223
|
designManagement: {
|
|
222
|
-
name:
|
|
223
|
-
requiredTier:
|
|
224
|
-
docsUrl:
|
|
224
|
+
name: 'Design Management',
|
|
225
|
+
requiredTier: 'Premium',
|
|
226
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/issues/design_management.html',
|
|
225
227
|
alternatives: [],
|
|
226
228
|
},
|
|
227
229
|
linkedResources: {
|
|
228
|
-
name:
|
|
229
|
-
requiredTier:
|
|
230
|
-
docsUrl:
|
|
230
|
+
name: 'Linked Resources',
|
|
231
|
+
requiredTier: 'Premium',
|
|
232
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/issues/related_issues.html',
|
|
231
233
|
alternatives: [],
|
|
232
234
|
},
|
|
233
235
|
emailParticipants: {
|
|
234
|
-
name:
|
|
235
|
-
requiredTier:
|
|
236
|
-
docsUrl:
|
|
236
|
+
name: 'Email Participants',
|
|
237
|
+
requiredTier: 'Premium',
|
|
238
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#add-an-email-participant',
|
|
237
239
|
alternatives: [],
|
|
238
240
|
},
|
|
239
241
|
};
|
|
@@ -247,31 +249,31 @@ function detectTierRestriction(tool, action, toolArgs) {
|
|
|
247
249
|
}
|
|
248
250
|
const currentTierRaw = connectionManager.getTier();
|
|
249
251
|
const currentTier = normalizeTier(currentTierRaw);
|
|
250
|
-
if (tool ===
|
|
252
|
+
if (tool === 'browse_work_items' || tool === 'manage_work_item') {
|
|
251
253
|
const restriction = checkWorkItemTypeRestriction(connectionManager, toolArgs, currentTier);
|
|
252
254
|
if (restriction)
|
|
253
255
|
return restriction;
|
|
254
256
|
}
|
|
255
|
-
if (tool ===
|
|
256
|
-
if (!connectionManager.isFeatureAvailable(
|
|
257
|
-
return createRestrictionInfo(
|
|
257
|
+
if (tool === 'browse_iterations') {
|
|
258
|
+
if (!connectionManager.isFeatureAvailable('iterations')) {
|
|
259
|
+
return createRestrictionInfo('iterations', currentTier);
|
|
258
260
|
}
|
|
259
261
|
}
|
|
260
|
-
if ((tool ===
|
|
261
|
-
if (!connectionManager.isFeatureAvailable(
|
|
262
|
+
if ((tool === 'browse_webhooks' || tool === 'manage_webhook') && toolArgs?.scope === 'group') {
|
|
263
|
+
if (!connectionManager.isFeatureAvailable('serviceDesk')) {
|
|
262
264
|
return {
|
|
263
|
-
feature:
|
|
264
|
-
name:
|
|
265
|
-
requiredTier:
|
|
265
|
+
feature: 'serviceDesk',
|
|
266
|
+
name: 'Group Webhooks',
|
|
267
|
+
requiredTier: 'Premium',
|
|
266
268
|
currentTier,
|
|
267
269
|
alternatives: [
|
|
268
270
|
{
|
|
269
|
-
action:
|
|
270
|
-
description:
|
|
271
|
-
available_on:
|
|
271
|
+
action: 'Use project-level webhooks',
|
|
272
|
+
description: 'Configure webhooks on individual projects instead',
|
|
273
|
+
available_on: 'Free',
|
|
272
274
|
},
|
|
273
275
|
],
|
|
274
|
-
docsUrl:
|
|
276
|
+
docsUrl: 'https://docs.gitlab.com/ee/user/project/integrations/webhooks.html',
|
|
275
277
|
};
|
|
276
278
|
}
|
|
277
279
|
}
|
|
@@ -281,19 +283,19 @@ function checkWorkItemTypeRestriction(connectionManager, toolArgs, currentTier)
|
|
|
281
283
|
if (!toolArgs)
|
|
282
284
|
return null;
|
|
283
285
|
const types = extractWorkItemTypes(toolArgs);
|
|
284
|
-
if (types.includes(
|
|
285
|
-
if (!connectionManager.isFeatureAvailable(
|
|
286
|
-
return createRestrictionInfo(
|
|
286
|
+
if (types.includes('EPIC')) {
|
|
287
|
+
if (!connectionManager.isFeatureAvailable('epics')) {
|
|
288
|
+
return createRestrictionInfo('epics', currentTier);
|
|
287
289
|
}
|
|
288
290
|
}
|
|
289
|
-
if (types.includes(
|
|
290
|
-
if (!connectionManager.isFeatureAvailable(
|
|
291
|
-
return createRestrictionInfo(
|
|
291
|
+
if (types.includes('OBJECTIVE') || types.includes('KEY_RESULT')) {
|
|
292
|
+
if (!connectionManager.isFeatureAvailable('okrs')) {
|
|
293
|
+
return createRestrictionInfo('okrs', currentTier);
|
|
292
294
|
}
|
|
293
295
|
}
|
|
294
|
-
if (types.includes(
|
|
295
|
-
if (!connectionManager.isFeatureAvailable(
|
|
296
|
-
return createRestrictionInfo(
|
|
296
|
+
if (types.includes('REQUIREMENT')) {
|
|
297
|
+
if (!connectionManager.isFeatureAvailable('requirements')) {
|
|
298
|
+
return createRestrictionInfo('requirements', currentTier);
|
|
297
299
|
}
|
|
298
300
|
}
|
|
299
301
|
return null;
|
|
@@ -301,12 +303,12 @@ function checkWorkItemTypeRestriction(connectionManager, toolArgs, currentTier)
|
|
|
301
303
|
function extractWorkItemTypes(toolArgs) {
|
|
302
304
|
const types = [];
|
|
303
305
|
if (Array.isArray(toolArgs.types)) {
|
|
304
|
-
types.push(...toolArgs.types.map(t => String(t).toUpperCase()));
|
|
306
|
+
types.push(...toolArgs.types.map((t) => String(t).toUpperCase()));
|
|
305
307
|
}
|
|
306
|
-
if (typeof toolArgs.workItemType ===
|
|
308
|
+
if (typeof toolArgs.workItemType === 'string') {
|
|
307
309
|
types.push(toolArgs.workItemType.toUpperCase());
|
|
308
310
|
}
|
|
309
|
-
if (typeof toolArgs.type ===
|
|
311
|
+
if (typeof toolArgs.type === 'string') {
|
|
310
312
|
types.push(toolArgs.type.toUpperCase());
|
|
311
313
|
}
|
|
312
314
|
return types;
|
|
@@ -324,15 +326,15 @@ function createRestrictionInfo(feature, currentTier) {
|
|
|
324
326
|
}
|
|
325
327
|
function normalizeTier(tier) {
|
|
326
328
|
const lower = tier.toLowerCase();
|
|
327
|
-
if (lower ===
|
|
328
|
-
return
|
|
329
|
-
if (lower ===
|
|
330
|
-
return
|
|
331
|
-
return
|
|
329
|
+
if (lower === 'ultimate' || lower === 'gold')
|
|
330
|
+
return 'Ultimate';
|
|
331
|
+
if (lower === 'premium' || lower === 'silver')
|
|
332
|
+
return 'Premium';
|
|
333
|
+
return 'Free';
|
|
332
334
|
}
|
|
333
335
|
function handleGitLabError(error, tool, action, toolArgs) {
|
|
334
336
|
const { status, message, error: errorMsg, error_description } = error;
|
|
335
|
-
const rawMessage = message ?? errorMsg ?? error_description ??
|
|
337
|
+
const rawMessage = message ?? errorMsg ?? error_description ?? 'Unknown error';
|
|
336
338
|
if (status === 403) {
|
|
337
339
|
const tierRestriction = detectTierRestriction(tool, action, toolArgs);
|
|
338
340
|
if (tierRestriction) {
|
|
@@ -345,39 +347,39 @@ function handleGitLabError(error, tool, action, toolArgs) {
|
|
|
345
347
|
}
|
|
346
348
|
if (status === 429) {
|
|
347
349
|
return {
|
|
348
|
-
error_code:
|
|
350
|
+
error_code: 'RATE_LIMITED',
|
|
349
351
|
tool,
|
|
350
352
|
action,
|
|
351
353
|
http_status: status,
|
|
352
|
-
message:
|
|
353
|
-
suggested_fix:
|
|
354
|
+
message: 'Rate limit exceeded. Please wait before retrying.',
|
|
355
|
+
suggested_fix: 'Wait a few minutes and try again, or reduce request frequency',
|
|
354
356
|
gitlab_error: rawMessage,
|
|
355
357
|
};
|
|
356
358
|
}
|
|
357
359
|
if (status >= 500) {
|
|
358
360
|
return {
|
|
359
|
-
error_code:
|
|
361
|
+
error_code: 'SERVER_ERROR',
|
|
360
362
|
tool,
|
|
361
363
|
action,
|
|
362
364
|
http_status: status,
|
|
363
|
-
message:
|
|
364
|
-
suggested_fix:
|
|
365
|
+
message: 'GitLab server error. The service may be temporarily unavailable.',
|
|
366
|
+
suggested_fix: 'Wait and retry. If the problem persists, check GitLab status page.',
|
|
365
367
|
gitlab_error: rawMessage,
|
|
366
368
|
};
|
|
367
369
|
}
|
|
368
370
|
return {
|
|
369
|
-
error_code:
|
|
371
|
+
error_code: 'API_ERROR',
|
|
370
372
|
tool,
|
|
371
373
|
action,
|
|
372
374
|
http_status: status,
|
|
373
375
|
message: rawMessage,
|
|
374
|
-
suggested_fix:
|
|
376
|
+
suggested_fix: 'Check the GitLab API documentation for this endpoint',
|
|
375
377
|
gitlab_error: rawMessage,
|
|
376
378
|
};
|
|
377
379
|
}
|
|
378
380
|
function createTierRestrictedError(tool, action, status, restriction) {
|
|
379
381
|
return {
|
|
380
|
-
error_code:
|
|
382
|
+
error_code: 'TIER_RESTRICTED',
|
|
381
383
|
tool,
|
|
382
384
|
action,
|
|
383
385
|
http_status: status,
|
|
@@ -390,16 +392,16 @@ function createTierRestrictedError(tool, action, status, restriction) {
|
|
|
390
392
|
: `Upgrade to GitLab ${restriction.requiredTier} to access this feature`,
|
|
391
393
|
alternatives: restriction.alternatives.length > 0 ? restriction.alternatives : undefined,
|
|
392
394
|
docs_url: restriction.docsUrl,
|
|
393
|
-
upgrade_url:
|
|
395
|
+
upgrade_url: 'https://about.gitlab.com/pricing/',
|
|
394
396
|
};
|
|
395
397
|
}
|
|
396
398
|
function createPermissionDeniedError(tool, action, status, rawMessage) {
|
|
397
|
-
const baseSuggestedFix =
|
|
398
|
-
const suggestedFix = rawMessage && rawMessage !==
|
|
399
|
+
const baseSuggestedFix = 'Check your access level for this project/group. Reporter access or higher may be required.';
|
|
400
|
+
const suggestedFix = rawMessage && rawMessage !== 'Unknown error' && !rawMessage.includes('403')
|
|
399
401
|
? `${baseSuggestedFix} GitLab message: ${rawMessage}`
|
|
400
402
|
: baseSuggestedFix;
|
|
401
403
|
return {
|
|
402
|
-
error_code:
|
|
404
|
+
error_code: 'PERMISSION_DENIED',
|
|
403
405
|
tool,
|
|
404
406
|
action,
|
|
405
407
|
http_status: status,
|
|
@@ -407,9 +409,9 @@ function createPermissionDeniedError(tool, action, status, rawMessage) {
|
|
|
407
409
|
suggested_fix: suggestedFix,
|
|
408
410
|
alternatives: [
|
|
409
411
|
{
|
|
410
|
-
action:
|
|
411
|
-
description:
|
|
412
|
-
available_on:
|
|
412
|
+
action: 'Verify your access level',
|
|
413
|
+
description: 'Check your role in the project settings or contact a project maintainer',
|
|
414
|
+
available_on: 'Free',
|
|
413
415
|
},
|
|
414
416
|
],
|
|
415
417
|
};
|
|
@@ -418,23 +420,23 @@ function createNotFoundError(tool, action, status, rawMessage) {
|
|
|
418
420
|
let resourceType;
|
|
419
421
|
let resourceId;
|
|
420
422
|
const lowerMessage = rawMessage.toLowerCase();
|
|
421
|
-
if (lowerMessage.includes(
|
|
422
|
-
resourceType =
|
|
423
|
+
if (lowerMessage.includes('project')) {
|
|
424
|
+
resourceType = 'project';
|
|
423
425
|
}
|
|
424
|
-
else if (lowerMessage.includes(
|
|
425
|
-
resourceType =
|
|
426
|
+
else if (lowerMessage.includes('merge request') || lowerMessage.includes('mr')) {
|
|
427
|
+
resourceType = 'merge_request';
|
|
426
428
|
}
|
|
427
|
-
else if (lowerMessage.includes(
|
|
428
|
-
resourceType =
|
|
429
|
+
else if (lowerMessage.includes('issue')) {
|
|
430
|
+
resourceType = 'issue';
|
|
429
431
|
}
|
|
430
|
-
else if (lowerMessage.includes(
|
|
431
|
-
resourceType =
|
|
432
|
+
else if (lowerMessage.includes('pipeline')) {
|
|
433
|
+
resourceType = 'pipeline';
|
|
432
434
|
}
|
|
433
|
-
else if (lowerMessage.includes(
|
|
434
|
-
resourceType =
|
|
435
|
+
else if (lowerMessage.includes('branch')) {
|
|
436
|
+
resourceType = 'branch';
|
|
435
437
|
}
|
|
436
|
-
else if (lowerMessage.includes(
|
|
437
|
-
resourceType =
|
|
438
|
+
else if (lowerMessage.includes('user')) {
|
|
439
|
+
resourceType = 'user';
|
|
438
440
|
}
|
|
439
441
|
const pathMatch = rawMessage.match(/['"]([a-zA-Z0-9_-]+(?:\/[a-zA-Z0-9_-]+)+)['"]/);
|
|
440
442
|
if (pathMatch) {
|
|
@@ -453,40 +455,40 @@ function createNotFoundError(tool, action, status, rawMessage) {
|
|
|
453
455
|
}
|
|
454
456
|
}
|
|
455
457
|
return {
|
|
456
|
-
error_code:
|
|
458
|
+
error_code: 'NOT_FOUND',
|
|
457
459
|
tool,
|
|
458
460
|
action,
|
|
459
461
|
http_status: status,
|
|
460
462
|
message: "Resource not found or you don't have access to it",
|
|
461
|
-
suggested_fix:
|
|
463
|
+
suggested_fix: 'Verify the ID/path is correct and you have at least Reporter access to the project',
|
|
462
464
|
resource_type: resourceType,
|
|
463
465
|
resource_id: resourceId,
|
|
464
466
|
};
|
|
465
467
|
}
|
|
466
468
|
function createMissingFieldsError(tool, action, missingFields, actionRequiredFields) {
|
|
467
469
|
return {
|
|
468
|
-
error_code:
|
|
470
|
+
error_code: 'MISSING_REQUIRED_FIELD',
|
|
469
471
|
tool,
|
|
470
472
|
action,
|
|
471
|
-
message: `Missing required field(s): ${missingFields.join(
|
|
473
|
+
message: `Missing required field(s): ${missingFields.join(', ')}`,
|
|
472
474
|
missing_fields: missingFields,
|
|
473
|
-
suggested_fix: `Add required fields: ${missingFields.join(
|
|
475
|
+
suggested_fix: `Add required fields: ${missingFields.join(', ')}`,
|
|
474
476
|
action_required_fields: actionRequiredFields,
|
|
475
477
|
};
|
|
476
478
|
}
|
|
477
479
|
function createInvalidActionError(tool, action, validActions) {
|
|
478
480
|
return {
|
|
479
|
-
error_code:
|
|
481
|
+
error_code: 'INVALID_ACTION',
|
|
480
482
|
tool,
|
|
481
483
|
action,
|
|
482
|
-
message: `Invalid action '${action}'. Valid actions are: ${validActions.join(
|
|
483
|
-
suggested_fix: `Use one of the valid actions: ${validActions.join(
|
|
484
|
+
message: `Invalid action '${action}'. Valid actions are: ${validActions.join(', ')}`,
|
|
485
|
+
suggested_fix: `Use one of the valid actions: ${validActions.join(', ')}`,
|
|
484
486
|
valid_actions: validActions,
|
|
485
487
|
};
|
|
486
488
|
}
|
|
487
489
|
function createTypeMismatchError(tool, action, field, expected, received) {
|
|
488
490
|
return {
|
|
489
|
-
error_code:
|
|
491
|
+
error_code: 'TYPE_MISMATCH',
|
|
490
492
|
tool,
|
|
491
493
|
action,
|
|
492
494
|
message: `Type mismatch for field '${field}': expected ${expected}, got ${received}`,
|
|
@@ -496,19 +498,19 @@ function createTypeMismatchError(tool, action, field, expected, received) {
|
|
|
496
498
|
}
|
|
497
499
|
function createValidationError(tool, action, zodMessage) {
|
|
498
500
|
return {
|
|
499
|
-
error_code:
|
|
501
|
+
error_code: 'VALIDATION_ERROR',
|
|
500
502
|
tool,
|
|
501
503
|
action,
|
|
502
504
|
message: zodMessage,
|
|
503
|
-
suggested_fix:
|
|
505
|
+
suggested_fix: 'Check the tool documentation for correct parameter format',
|
|
504
506
|
};
|
|
505
507
|
}
|
|
506
508
|
function createTimeoutError(tool, action, timeoutMs, retryable = false) {
|
|
507
509
|
const retryHint = retryable
|
|
508
|
-
?
|
|
509
|
-
:
|
|
510
|
+
? ' This is a read-only operation - you can safely retry.'
|
|
511
|
+
: ' This is a write operation - check if it completed before retrying.';
|
|
510
512
|
return {
|
|
511
|
-
error_code:
|
|
513
|
+
error_code: 'TIMEOUT',
|
|
512
514
|
tool,
|
|
513
515
|
action,
|
|
514
516
|
timeout_ms: timeoutMs,
|
|
@@ -536,7 +538,7 @@ function createVersionRestrictedError(tool, action, widget, parameter, requiredV
|
|
|
536
538
|
suggestedFix = `Upgrade GitLab to version ${requiredVersion} or higher to use the '${parameter}' parameter`;
|
|
537
539
|
}
|
|
538
540
|
return {
|
|
539
|
-
error_code:
|
|
541
|
+
error_code: 'VERSION_RESTRICTED',
|
|
540
542
|
tool,
|
|
541
543
|
action,
|
|
542
544
|
widget,
|
|
@@ -547,7 +549,7 @@ function createVersionRestrictedError(tool, action, widget, parameter, requiredV
|
|
|
547
549
|
current_tier: isTierInsufficient ? currentTier : undefined,
|
|
548
550
|
message,
|
|
549
551
|
suggested_fix: suggestedFix,
|
|
550
|
-
docs_url:
|
|
552
|
+
docs_url: 'https://docs.gitlab.com/ee/user/project/work_items/',
|
|
551
553
|
};
|
|
552
554
|
}
|
|
553
555
|
function parseGitLabApiError(errorMessage) {
|
|
@@ -555,8 +557,8 @@ function parseGitLabApiError(errorMessage) {
|
|
|
555
557
|
if (!match)
|
|
556
558
|
return null;
|
|
557
559
|
const status = parseInt(match[1], 10);
|
|
558
|
-
const statusText = match[2]?.trim() ??
|
|
559
|
-
const details = match[3]?.trim() ??
|
|
560
|
+
const statusText = match[2]?.trim() ?? '';
|
|
561
|
+
const details = match[3]?.trim() ?? '';
|
|
560
562
|
let message;
|
|
561
563
|
if (statusText && details) {
|
|
562
564
|
message = `${status} ${statusText} - ${details}`;
|
|
@@ -580,7 +582,7 @@ class StructuredToolError extends Error {
|
|
|
580
582
|
structuredError;
|
|
581
583
|
constructor(structuredError) {
|
|
582
584
|
super(structuredError.message);
|
|
583
|
-
this.name =
|
|
585
|
+
this.name = 'StructuredToolError';
|
|
584
586
|
this.structuredError = structuredError;
|
|
585
587
|
if (Error.captureStackTrace) {
|
|
586
588
|
Error.captureStackTrace(this, StructuredToolError);
|
|
@@ -594,4 +596,87 @@ exports.StructuredToolError = StructuredToolError;
|
|
|
594
596
|
function isStructuredToolError(error) {
|
|
595
597
|
return error instanceof StructuredToolError;
|
|
596
598
|
}
|
|
599
|
+
const TRANSIENT_ERROR_CODES = new Set([
|
|
600
|
+
'ECONNREFUSED',
|
|
601
|
+
'ECONNRESET',
|
|
602
|
+
'ECONNABORTED',
|
|
603
|
+
'ETIMEDOUT',
|
|
604
|
+
'ENETUNREACH',
|
|
605
|
+
'EHOSTUNREACH',
|
|
606
|
+
'EPIPE',
|
|
607
|
+
'EAI_AGAIN',
|
|
608
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
609
|
+
'UND_ERR_HEADERS_TIMEOUT',
|
|
610
|
+
'UND_ERR_BODY_TIMEOUT',
|
|
611
|
+
'UND_ERR_SOCKET',
|
|
612
|
+
]);
|
|
613
|
+
function classifyError(error) {
|
|
614
|
+
if (!(error instanceof Error)) {
|
|
615
|
+
return 'permanent';
|
|
616
|
+
}
|
|
617
|
+
const message = error.message.toLowerCase();
|
|
618
|
+
const code = error.code;
|
|
619
|
+
const causeCode = error.cause?.code;
|
|
620
|
+
const effectiveCode = code ?? causeCode;
|
|
621
|
+
if (effectiveCode && TRANSIENT_ERROR_CODES.has(effectiveCode)) {
|
|
622
|
+
return 'transient';
|
|
623
|
+
}
|
|
624
|
+
const parsed = parseGitLabApiError(error.message);
|
|
625
|
+
if (parsed) {
|
|
626
|
+
const { status } = parsed;
|
|
627
|
+
if (status === 401) {
|
|
628
|
+
return 'auth';
|
|
629
|
+
}
|
|
630
|
+
if (status === 403) {
|
|
631
|
+
return 'permanent';
|
|
632
|
+
}
|
|
633
|
+
if (status === 408 || status === 429 || status >= 500) {
|
|
634
|
+
return 'transient';
|
|
635
|
+
}
|
|
636
|
+
return 'permanent';
|
|
637
|
+
}
|
|
638
|
+
if (message.includes('timed out') ||
|
|
639
|
+
message.includes('request timeout') ||
|
|
640
|
+
message.includes('connect timeout') ||
|
|
641
|
+
message.includes('initialization timeout') ||
|
|
642
|
+
message.includes('socket hang up') ||
|
|
643
|
+
message.includes('network error') ||
|
|
644
|
+
message.includes('health check failed') ||
|
|
645
|
+
message.includes('econnrefused') ||
|
|
646
|
+
message.includes('econnreset')) {
|
|
647
|
+
return 'transient';
|
|
648
|
+
}
|
|
649
|
+
return 'permanent';
|
|
650
|
+
}
|
|
651
|
+
function createConnectionFailedError(toolName, action, instanceUrl, connectionState) {
|
|
652
|
+
const reconnecting = connectionState === 'connecting';
|
|
653
|
+
const autoRetryEnabled = connectionState !== 'failed';
|
|
654
|
+
let message;
|
|
655
|
+
if (connectionState === 'failed') {
|
|
656
|
+
message =
|
|
657
|
+
`GitLab instance ${instanceUrl} connection failed due to a permanent authentication, ` +
|
|
658
|
+
`permission, or configuration error. Automatic reconnection is disabled.`;
|
|
659
|
+
}
|
|
660
|
+
else if (connectionState === 'connecting') {
|
|
661
|
+
message = `GitLab instance ${instanceUrl} is not ready yet. A connection attempt is in progress.`;
|
|
662
|
+
}
|
|
663
|
+
else {
|
|
664
|
+
message = `GitLab instance ${instanceUrl} is currently unreachable. Connection will be retried automatically.`;
|
|
665
|
+
}
|
|
666
|
+
const suggestedFix = connectionState === 'failed'
|
|
667
|
+
? 'Check authentication/authorization, permissions or tier access, and the configured GitLab instance URL. ' +
|
|
668
|
+
"Use manage_context with action 'whoami' to check connection status."
|
|
669
|
+
: 'Check network connectivity, VPN status, or GitLab instance availability. ' +
|
|
670
|
+
"Use manage_context with action 'whoami' to check connection status.";
|
|
671
|
+
return {
|
|
672
|
+
error_code: 'CONNECTION_FAILED',
|
|
673
|
+
tool: toolName,
|
|
674
|
+
action,
|
|
675
|
+
instance_url: instanceUrl,
|
|
676
|
+
reconnecting,
|
|
677
|
+
auto_retry_enabled: autoRetryEnabled,
|
|
678
|
+
message,
|
|
679
|
+
suggested_fix: suggestedFix,
|
|
680
|
+
};
|
|
681
|
+
}
|
|
597
682
|
//# sourceMappingURL=error-handler.js.map
|