@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
|
@@ -8,21 +8,21 @@ const zod_1 = require("zod");
|
|
|
8
8
|
const GitLabUrlSchema = zod_1.z
|
|
9
9
|
.string()
|
|
10
10
|
.url()
|
|
11
|
-
.transform(url => {
|
|
11
|
+
.transform((url) => {
|
|
12
12
|
const parsed = new URL(url);
|
|
13
13
|
let path = parsed.pathname;
|
|
14
|
-
if (path ===
|
|
15
|
-
path =
|
|
14
|
+
if (path === '/') {
|
|
15
|
+
path = '';
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
|
-
if (path.endsWith(
|
|
18
|
+
if (path.endsWith('/')) {
|
|
19
19
|
path = path.slice(0, -1);
|
|
20
20
|
}
|
|
21
|
-
for (const apiSuffix of [
|
|
21
|
+
for (const apiSuffix of ['/api/v4', '/api/graphql']) {
|
|
22
22
|
if (path.endsWith(apiSuffix)) {
|
|
23
23
|
path = path.slice(0, -apiSuffix.length);
|
|
24
|
-
if (path ===
|
|
25
|
-
path =
|
|
24
|
+
if (path === '/') {
|
|
25
|
+
path = '';
|
|
26
26
|
}
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
@@ -30,17 +30,17 @@ const GitLabUrlSchema = zod_1.z
|
|
|
30
30
|
}
|
|
31
31
|
return `${parsed.origin}${path}`;
|
|
32
32
|
})
|
|
33
|
-
.describe(
|
|
33
|
+
.describe('GitLab instance URL (e.g., https://gitlab.com or https://example.com/gitlab)');
|
|
34
34
|
exports.InstanceOAuthConfigSchema = zod_1.z
|
|
35
35
|
.object({
|
|
36
|
-
clientId: zod_1.z.string().min(1).describe(
|
|
37
|
-
clientSecret: zod_1.z.string().optional().describe(
|
|
36
|
+
clientId: zod_1.z.string().min(1).describe('OAuth Application ID'),
|
|
37
|
+
clientSecret: zod_1.z.string().optional().describe('OAuth Secret (only for confidential apps)'),
|
|
38
38
|
scopes: zod_1.z
|
|
39
39
|
.string()
|
|
40
|
-
.default(
|
|
41
|
-
.describe(
|
|
40
|
+
.default('api read_user')
|
|
41
|
+
.describe('OAuth scopes to request (space-separated)'),
|
|
42
42
|
})
|
|
43
|
-
.describe(
|
|
43
|
+
.describe('OAuth configuration for this GitLab instance');
|
|
44
44
|
exports.InstanceRateLimitConfigSchema = zod_1.z
|
|
45
45
|
.object({
|
|
46
46
|
maxConcurrent: zod_1.z
|
|
@@ -48,55 +48,55 @@ exports.InstanceRateLimitConfigSchema = zod_1.z
|
|
|
48
48
|
.int()
|
|
49
49
|
.positive()
|
|
50
50
|
.default(100)
|
|
51
|
-
.describe(
|
|
51
|
+
.describe('Maximum parallel requests to this instance'),
|
|
52
52
|
queueSize: zod_1.z
|
|
53
53
|
.number()
|
|
54
54
|
.int()
|
|
55
55
|
.positive()
|
|
56
56
|
.default(500)
|
|
57
|
-
.describe(
|
|
57
|
+
.describe('Maximum requests to queue when at capacity'),
|
|
58
58
|
queueTimeout: zod_1.z
|
|
59
59
|
.number()
|
|
60
60
|
.int()
|
|
61
61
|
.positive()
|
|
62
62
|
.default(60000)
|
|
63
|
-
.describe(
|
|
63
|
+
.describe('Queue wait timeout in milliseconds'),
|
|
64
64
|
})
|
|
65
|
-
.describe(
|
|
65
|
+
.describe('Rate limiting configuration for this instance');
|
|
66
66
|
exports.GitLabInstanceConfigSchema = zod_1.z
|
|
67
67
|
.object({
|
|
68
68
|
url: GitLabUrlSchema,
|
|
69
|
-
label: zod_1.z.string().optional().describe(
|
|
69
|
+
label: zod_1.z.string().optional().describe('Human-readable name for UI display'),
|
|
70
70
|
oauth: exports.InstanceOAuthConfigSchema.optional(),
|
|
71
71
|
rateLimit: exports.InstanceRateLimitConfigSchema.optional(),
|
|
72
72
|
insecureSkipVerify: zod_1.z
|
|
73
73
|
.boolean()
|
|
74
74
|
.default(false)
|
|
75
|
-
.describe(
|
|
75
|
+
.describe('Skip TLS certificate verification (development only!)'),
|
|
76
76
|
})
|
|
77
|
-
.describe(
|
|
77
|
+
.describe('Configuration for a single GitLab instance');
|
|
78
78
|
exports.InstanceDefaultsSchema = zod_1.z
|
|
79
79
|
.object({
|
|
80
80
|
rateLimit: exports.InstanceRateLimitConfigSchema.optional(),
|
|
81
81
|
oauth: zod_1.z
|
|
82
82
|
.object({
|
|
83
|
-
scopes: zod_1.z.string().default(
|
|
83
|
+
scopes: zod_1.z.string().default('api read_user').describe('Default OAuth scopes'),
|
|
84
84
|
})
|
|
85
85
|
.optional(),
|
|
86
86
|
})
|
|
87
|
-
.describe(
|
|
87
|
+
.describe('Default configuration applied to all instances');
|
|
88
88
|
exports.InstancesConfigFileSchema = zod_1.z
|
|
89
89
|
.object({
|
|
90
90
|
instances: zod_1.z
|
|
91
91
|
.array(exports.GitLabInstanceConfigSchema)
|
|
92
92
|
.min(1)
|
|
93
|
-
.describe(
|
|
93
|
+
.describe('List of GitLab instances to connect to'),
|
|
94
94
|
defaults: exports.InstanceDefaultsSchema.optional(),
|
|
95
95
|
})
|
|
96
|
-
.describe(
|
|
97
|
-
exports.ConnectionStatusSchema = zod_1.z.enum([
|
|
96
|
+
.describe('GitLab MCP instances configuration file');
|
|
97
|
+
exports.ConnectionStatusSchema = zod_1.z.enum(['healthy', 'degraded', 'offline']);
|
|
98
98
|
function parseInstanceUrlString(urlString) {
|
|
99
|
-
const protocolSeparatorIndex = urlString.indexOf(
|
|
99
|
+
const protocolSeparatorIndex = urlString.indexOf('://');
|
|
100
100
|
if (protocolSeparatorIndex === -1) {
|
|
101
101
|
throw new Error(`Invalid GitLab instance URL format: ${urlString}`);
|
|
102
102
|
}
|
|
@@ -119,14 +119,14 @@ function parseInstanceUrlString(urlString) {
|
|
|
119
119
|
baseUrlString = undefined;
|
|
120
120
|
}
|
|
121
121
|
if (!baseUrlString) {
|
|
122
|
-
const lastColonIndex = urlString.lastIndexOf(
|
|
122
|
+
const lastColonIndex = urlString.lastIndexOf(':');
|
|
123
123
|
if (lastColonIndex > protocolEnd) {
|
|
124
124
|
const lastSegment = urlString.slice(lastColonIndex + 1);
|
|
125
|
-
if (!lastSegment.includes(
|
|
126
|
-
const secondLastColonIndex = urlString.lastIndexOf(
|
|
125
|
+
if (!lastSegment.includes('/') && !isPortNumber(lastSegment)) {
|
|
126
|
+
const secondLastColonIndex = urlString.lastIndexOf(':', lastColonIndex - 1);
|
|
127
127
|
if (secondLastColonIndex > protocolEnd) {
|
|
128
128
|
const potentialClientId = urlString.slice(secondLastColonIndex + 1, lastColonIndex);
|
|
129
|
-
if (!potentialClientId.includes(
|
|
129
|
+
if (!potentialClientId.includes('/') && !isPortNumber(potentialClientId)) {
|
|
130
130
|
const potentialBaseUrl = urlString.slice(0, secondLastColonIndex);
|
|
131
131
|
try {
|
|
132
132
|
baseUrlString = GitLabUrlSchema.parse(potentialBaseUrl);
|
|
@@ -141,10 +141,10 @@ function parseInstanceUrlString(urlString) {
|
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
if (!baseUrlString) {
|
|
144
|
-
const singleLastColonIndex = urlString.lastIndexOf(
|
|
144
|
+
const singleLastColonIndex = urlString.lastIndexOf(':');
|
|
145
145
|
if (singleLastColonIndex > protocolEnd) {
|
|
146
146
|
const potentialClientId = urlString.slice(singleLastColonIndex + 1);
|
|
147
|
-
if (!potentialClientId.includes(
|
|
147
|
+
if (!potentialClientId.includes('/') && !isPortNumber(potentialClientId)) {
|
|
148
148
|
const potentialBaseUrl = urlString.slice(0, singleLastColonIndex);
|
|
149
149
|
try {
|
|
150
150
|
baseUrlString = GitLabUrlSchema.parse(potentialBaseUrl);
|
|
@@ -166,7 +166,7 @@ function parseInstanceUrlString(urlString) {
|
|
|
166
166
|
if (clientId) {
|
|
167
167
|
config.oauth = {
|
|
168
168
|
clientId,
|
|
169
|
-
scopes:
|
|
169
|
+
scopes: 'api read_user',
|
|
170
170
|
};
|
|
171
171
|
if (clientSecret) {
|
|
172
172
|
config.oauth.clientSecret = clientSecret;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances-schema.js","sourceRoot":"","sources":["../../../src/config/instances-schema.ts"],"names":[],"mappings":";;;AA2LA,wDAqGC;AAKD,0DAEC;AAKD,sDAwBC;AA7TD,6BAAwB;AAQxB,MAAM,eAAe,GAAG,OAAC;KACtB,MAAM,EAAE;KACR,GAAG,EAAE;KACL,SAAS,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"instances-schema.js","sourceRoot":"","sources":["../../../src/config/instances-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Request } from
|
|
1
|
+
import type { Request } from 'express';
|
|
2
2
|
export declare const GITLAB_TOKEN: string | undefined;
|
|
3
3
|
export declare const GITLAB_AUTH_COOKIE_PATH: string | undefined;
|
|
4
4
|
export declare const IS_OLD: boolean;
|
|
@@ -6,7 +6,7 @@ export declare const GITLAB_READ_ONLY_MODE: boolean;
|
|
|
6
6
|
export declare const GITLAB_CROSS_REFS: boolean;
|
|
7
7
|
export declare const GITLAB_DENIED_TOOLS_REGEX: RegExp | undefined;
|
|
8
8
|
export declare const GITLAB_DENIED_ACTIONS: Map<string, Set<string>>;
|
|
9
|
-
import type { LogFormat } from
|
|
9
|
+
import type { LogFormat } from './logging/types.js';
|
|
10
10
|
export declare const LOG_FORMAT: LogFormat;
|
|
11
11
|
export type { LogFormat };
|
|
12
12
|
export interface LogFilterRule {
|
|
@@ -18,9 +18,9 @@ export interface LogFilterRule {
|
|
|
18
18
|
export declare const LOG_FILTER: LogFilterRule[];
|
|
19
19
|
export declare function shouldSkipAccessLog(method: string, path: string, userAgent?: string): boolean;
|
|
20
20
|
export declare function shouldSkipAccessLogRequest(req: Request): boolean;
|
|
21
|
-
export type SchemaMode =
|
|
21
|
+
export type SchemaMode = 'flat' | 'discriminated' | 'auto';
|
|
22
22
|
export declare const GITLAB_SCHEMA_MODE: SchemaMode;
|
|
23
|
-
export declare function detectSchemaMode(clientName?: string):
|
|
23
|
+
export declare function detectSchemaMode(clientName?: string): 'flat' | 'discriminated';
|
|
24
24
|
export declare const USE_GITLAB_WIKI: boolean;
|
|
25
25
|
export declare const USE_MILESTONE: boolean;
|
|
26
26
|
export declare const USE_PIPELINE: boolean;
|
|
@@ -44,17 +44,24 @@ export declare const SSL_KEY_PATH: string | undefined;
|
|
|
44
44
|
export declare const SSL_CA_PATH: string | undefined;
|
|
45
45
|
export declare const SSL_PASSPHRASE: string | undefined;
|
|
46
46
|
export declare const TRUST_PROXY: string | undefined;
|
|
47
|
+
export declare const MAX_SAFE_TIMEOUT_MS = 2147483647;
|
|
47
48
|
export declare const SSE_HEARTBEAT_MS: number;
|
|
48
49
|
export declare const HTTP_KEEPALIVE_TIMEOUT_MS: number;
|
|
49
50
|
export declare const CONNECT_TIMEOUT_MS: number;
|
|
50
51
|
export declare const HEADERS_TIMEOUT_MS: number;
|
|
51
52
|
export declare const BODY_TIMEOUT_MS: number;
|
|
52
53
|
export declare const HANDLER_TIMEOUT_MS: number;
|
|
54
|
+
export declare const INIT_TIMEOUT_MS: number;
|
|
55
|
+
export declare const RECONNECT_BASE_DELAY_MS: number;
|
|
56
|
+
export declare const RECONNECT_MAX_DELAY_MS: number;
|
|
57
|
+
export declare const HEALTH_CHECK_INTERVAL_MS: number;
|
|
58
|
+
export declare const FAILURE_THRESHOLD: number;
|
|
53
59
|
export declare const POOL_MAX_CONNECTIONS: number;
|
|
54
60
|
export declare const API_RETRY_ENABLED: boolean;
|
|
55
61
|
export declare const API_RETRY_MAX_ATTEMPTS: number;
|
|
56
62
|
export declare const API_RETRY_BASE_DELAY_MS: number;
|
|
57
63
|
export declare const API_RETRY_MAX_DELAY_MS: number;
|
|
64
|
+
export declare const RESPONSE_WRITE_TIMEOUT_MS: number;
|
|
58
65
|
export declare const RATE_LIMIT_IP_ENABLED: boolean;
|
|
59
66
|
export declare const RATE_LIMIT_IP_WINDOW_MS: number;
|
|
60
67
|
export declare const RATE_LIMIT_IP_MAX_REQUESTS: number;
|
package/dist/src/config.js
CHANGED
|
@@ -33,8 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.packageVersion = exports.packageName = exports.GITLAB_ALLOWED_PROJECT_IDS = exports.GITLAB_PROJECT_ID = exports.GITLAB_API_URL = exports.GITLAB_BASE_URL = exports.GITLAB_CA_CERT_PATH = exports.NODE_TLS_REJECT_UNAUTHORIZED = exports.HTTPS_PROXY = exports.HTTP_PROXY = exports.DASHBOARD_ENABLED = exports.SKIP_TLS_VERIFY = void 0;
|
|
36
|
+
exports.API_RETRY_MAX_DELAY_MS = exports.API_RETRY_BASE_DELAY_MS = exports.API_RETRY_MAX_ATTEMPTS = exports.API_RETRY_ENABLED = exports.POOL_MAX_CONNECTIONS = exports.FAILURE_THRESHOLD = exports.HEALTH_CHECK_INTERVAL_MS = exports.RECONNECT_MAX_DELAY_MS = exports.RECONNECT_BASE_DELAY_MS = exports.INIT_TIMEOUT_MS = exports.HANDLER_TIMEOUT_MS = exports.BODY_TIMEOUT_MS = exports.HEADERS_TIMEOUT_MS = exports.CONNECT_TIMEOUT_MS = exports.HTTP_KEEPALIVE_TIMEOUT_MS = exports.SSE_HEARTBEAT_MS = exports.MAX_SAFE_TIMEOUT_MS = exports.TRUST_PROXY = exports.SSL_PASSPHRASE = exports.SSL_CA_PATH = exports.SSL_KEY_PATH = exports.SSL_CERT_PATH = exports.PORT = exports.HOST = exports.USE_ITERATIONS = exports.USE_SEARCH = exports.USE_MEMBERS = exports.USE_REFS = exports.USE_RELEASES = exports.USE_INTEGRATIONS = exports.USE_WEBHOOKS = exports.USE_SNIPPETS = exports.USE_VARIABLES = exports.USE_FILES = exports.USE_MRS = exports.USE_LABELS = exports.USE_WORKITEMS = exports.USE_PIPELINE = exports.USE_MILESTONE = exports.USE_GITLAB_WIKI = exports.GITLAB_SCHEMA_MODE = exports.LOG_FILTER = exports.LOG_FORMAT = exports.GITLAB_DENIED_ACTIONS = exports.GITLAB_DENIED_TOOLS_REGEX = exports.GITLAB_CROSS_REFS = exports.GITLAB_READ_ONLY_MODE = exports.IS_OLD = exports.GITLAB_AUTH_COOKIE_PATH = exports.GITLAB_TOKEN = void 0;
|
|
37
|
+
exports.packageVersion = exports.packageName = exports.GITLAB_ALLOWED_PROJECT_IDS = exports.GITLAB_PROJECT_ID = exports.GITLAB_API_URL = exports.GITLAB_BASE_URL = exports.GITLAB_CA_CERT_PATH = exports.NODE_TLS_REJECT_UNAUTHORIZED = exports.HTTPS_PROXY = exports.HTTP_PROXY = exports.DASHBOARD_ENABLED = exports.SKIP_TLS_VERIFY = exports.RATE_LIMIT_SESSION_MAX_REQUESTS = exports.RATE_LIMIT_SESSION_WINDOW_MS = exports.RATE_LIMIT_SESSION_ENABLED = exports.RATE_LIMIT_IP_MAX_REQUESTS = exports.RATE_LIMIT_IP_WINDOW_MS = exports.RATE_LIMIT_IP_ENABLED = exports.RESPONSE_WRITE_TIMEOUT_MS = void 0;
|
|
38
38
|
exports.shouldSkipAccessLog = shouldSkipAccessLog;
|
|
39
39
|
exports.shouldSkipAccessLogRequest = shouldSkipAccessLogRequest;
|
|
40
40
|
exports.detectSchemaMode = detectSchemaMode;
|
|
@@ -47,12 +47,12 @@ exports.getAllowedActions = getAllowedActions;
|
|
|
47
47
|
const path = __importStar(require("path"));
|
|
48
48
|
const fs = __importStar(require("fs"));
|
|
49
49
|
const zod_1 = require("zod");
|
|
50
|
-
const packageJsonPath = path.resolve(process.cwd(),
|
|
50
|
+
const packageJsonPath = path.resolve(process.cwd(), 'package.json');
|
|
51
51
|
exports.GITLAB_TOKEN = process.env.GITLAB_TOKEN;
|
|
52
52
|
exports.GITLAB_AUTH_COOKIE_PATH = process.env.GITLAB_AUTH_COOKIE_PATH;
|
|
53
|
-
exports.IS_OLD = process.env.GITLAB_IS_OLD ===
|
|
54
|
-
exports.GITLAB_READ_ONLY_MODE = process.env.GITLAB_READ_ONLY_MODE ===
|
|
55
|
-
exports.GITLAB_CROSS_REFS = process.env.GITLAB_CROSS_REFS !==
|
|
53
|
+
exports.IS_OLD = process.env.GITLAB_IS_OLD === 'true';
|
|
54
|
+
exports.GITLAB_READ_ONLY_MODE = process.env.GITLAB_READ_ONLY_MODE === 'true';
|
|
55
|
+
exports.GITLAB_CROSS_REFS = process.env.GITLAB_CROSS_REFS !== 'false';
|
|
56
56
|
exports.GITLAB_DENIED_TOOLS_REGEX = process.env.GITLAB_DENIED_TOOLS_REGEX
|
|
57
57
|
? new RegExp(process.env.GITLAB_DENIED_TOOLS_REGEX)
|
|
58
58
|
: undefined;
|
|
@@ -62,11 +62,11 @@ function parseDeniedActions(envValue) {
|
|
|
62
62
|
return deniedActions;
|
|
63
63
|
}
|
|
64
64
|
const pairs = envValue
|
|
65
|
-
.split(
|
|
66
|
-
.map(s => s.trim())
|
|
65
|
+
.split(',')
|
|
66
|
+
.map((s) => s.trim())
|
|
67
67
|
.filter(Boolean);
|
|
68
68
|
for (const pair of pairs) {
|
|
69
|
-
const colonIndex = pair.indexOf(
|
|
69
|
+
const colonIndex = pair.indexOf(':');
|
|
70
70
|
if (colonIndex === -1) {
|
|
71
71
|
continue;
|
|
72
72
|
}
|
|
@@ -87,10 +87,10 @@ function parseDeniedActions(envValue) {
|
|
|
87
87
|
exports.GITLAB_DENIED_ACTIONS = parseDeniedActions(process.env.GITLAB_DENIED_ACTIONS);
|
|
88
88
|
function parseLogFormat(value) {
|
|
89
89
|
const format = value?.toLowerCase();
|
|
90
|
-
if (format ===
|
|
91
|
-
return
|
|
90
|
+
if (format === 'verbose') {
|
|
91
|
+
return 'verbose';
|
|
92
92
|
}
|
|
93
|
-
return
|
|
93
|
+
return 'condensed';
|
|
94
94
|
}
|
|
95
95
|
exports.LOG_FORMAT = parseLogFormat(process.env.LOG_FORMAT);
|
|
96
96
|
const LogFilterRuleSchema = zod_1.z
|
|
@@ -98,7 +98,7 @@ const LogFilterRuleSchema = zod_1.z
|
|
|
98
98
|
method: zod_1.z
|
|
99
99
|
.string()
|
|
100
100
|
.optional()
|
|
101
|
-
.describe(
|
|
101
|
+
.describe('HTTP method to match (exact, case-insensitive). If omitted, matches any method.'),
|
|
102
102
|
path: zod_1.z
|
|
103
103
|
.string()
|
|
104
104
|
.optional()
|
|
@@ -106,24 +106,24 @@ const LogFilterRuleSchema = zod_1.z
|
|
|
106
106
|
userAgent: zod_1.z
|
|
107
107
|
.string()
|
|
108
108
|
.optional()
|
|
109
|
-
.describe(
|
|
109
|
+
.describe('Substring to match in User-Agent header (case-insensitive). If omitted, matches any User-Agent.'),
|
|
110
110
|
})
|
|
111
|
-
.describe(
|
|
112
|
-
const LogFilterSchema = zod_1.z.array(LogFilterRuleSchema).describe(
|
|
111
|
+
.describe('Filter rule for skipping access log entries. All specified conditions must match.');
|
|
112
|
+
const LogFilterSchema = zod_1.z.array(LogFilterRuleSchema).describe('Array of log filter rules');
|
|
113
113
|
function parseLogFilter(envValue) {
|
|
114
|
-
if (!envValue || envValue.trim() ===
|
|
114
|
+
if (!envValue || envValue.trim() === '') {
|
|
115
115
|
return [];
|
|
116
116
|
}
|
|
117
117
|
try {
|
|
118
118
|
const parsed = JSON.parse(envValue);
|
|
119
119
|
const validated = LogFilterSchema.parse(parsed);
|
|
120
|
-
return validated.map(rule => {
|
|
120
|
+
return validated.map((rule) => {
|
|
121
121
|
const result = {};
|
|
122
122
|
if (rule.method) {
|
|
123
123
|
result.method = rule.method.toLowerCase();
|
|
124
124
|
}
|
|
125
125
|
if (rule.path) {
|
|
126
|
-
if (rule.path.endsWith(
|
|
126
|
+
if (rule.path.endsWith('*')) {
|
|
127
127
|
result.path = rule.path.slice(0, -1);
|
|
128
128
|
result.pathIsPrefix = true;
|
|
129
129
|
}
|
|
@@ -144,7 +144,7 @@ function parseLogFilter(envValue) {
|
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
const DEFAULT_LOG_FILTER = [
|
|
147
|
-
{ method:
|
|
147
|
+
{ method: 'get', path: '/', pathIsPrefix: false, userAgent: 'claude-code' },
|
|
148
148
|
];
|
|
149
149
|
exports.LOG_FILTER = process.env.LOG_FILTER?.trim()
|
|
150
150
|
? parseLogFilter(process.env.LOG_FILTER)
|
|
@@ -154,8 +154,8 @@ function shouldSkipAccessLog(method, path, userAgent) {
|
|
|
154
154
|
return false;
|
|
155
155
|
}
|
|
156
156
|
const methodLower = method.toLowerCase();
|
|
157
|
-
const userAgentLower = userAgent?.toLowerCase() ??
|
|
158
|
-
return exports.LOG_FILTER.some(rule => {
|
|
157
|
+
const userAgentLower = userAgent?.toLowerCase() ?? '';
|
|
158
|
+
return exports.LOG_FILTER.some((rule) => {
|
|
159
159
|
if (rule.method && rule.method !== methodLower) {
|
|
160
160
|
return false;
|
|
161
161
|
}
|
|
@@ -178,134 +178,135 @@ function shouldSkipAccessLog(method, path, userAgent) {
|
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
180
|
function shouldSkipAccessLogRequest(req) {
|
|
181
|
-
return shouldSkipAccessLog(req.method, req.path, req.headers[
|
|
181
|
+
return shouldSkipAccessLog(req.method, req.path, req.headers['user-agent']);
|
|
182
182
|
}
|
|
183
183
|
function parseSchemaMode(value) {
|
|
184
184
|
const mode = value?.toLowerCase();
|
|
185
|
-
if (mode ===
|
|
186
|
-
return
|
|
185
|
+
if (mode === 'discriminated') {
|
|
186
|
+
return 'discriminated';
|
|
187
187
|
}
|
|
188
|
-
if (mode ===
|
|
189
|
-
return
|
|
188
|
+
if (mode === 'auto') {
|
|
189
|
+
return 'auto';
|
|
190
190
|
}
|
|
191
|
-
return
|
|
191
|
+
return 'flat';
|
|
192
192
|
}
|
|
193
193
|
exports.GITLAB_SCHEMA_MODE = parseSchemaMode(process.env.GITLAB_SCHEMA_MODE);
|
|
194
194
|
function detectSchemaMode(clientName) {
|
|
195
|
-
const name = clientName?.toLowerCase() ??
|
|
196
|
-
if (name ===
|
|
197
|
-
name.startsWith(
|
|
198
|
-
name ===
|
|
199
|
-
name.startsWith(
|
|
200
|
-
return
|
|
195
|
+
const name = clientName?.toLowerCase() ?? '';
|
|
196
|
+
if (name === 'claude' ||
|
|
197
|
+
name.startsWith('claude-') ||
|
|
198
|
+
name === 'cursor' ||
|
|
199
|
+
name.startsWith('cursor-')) {
|
|
200
|
+
return 'flat';
|
|
201
201
|
}
|
|
202
|
-
if (name ===
|
|
203
|
-
name.startsWith(
|
|
204
|
-
name ===
|
|
205
|
-
name.startsWith(
|
|
206
|
-
return
|
|
202
|
+
if (name === 'inspector' ||
|
|
203
|
+
name.startsWith('inspector-') ||
|
|
204
|
+
name === 'mcp-inspector' ||
|
|
205
|
+
name.startsWith('mcp-inspector-')) {
|
|
206
|
+
return 'discriminated';
|
|
207
207
|
}
|
|
208
|
-
return
|
|
208
|
+
return 'flat';
|
|
209
209
|
}
|
|
210
|
-
exports.USE_GITLAB_WIKI = process.env.USE_GITLAB_WIKI !==
|
|
211
|
-
exports.USE_MILESTONE = process.env.USE_MILESTONE !==
|
|
212
|
-
exports.USE_PIPELINE = process.env.USE_PIPELINE !==
|
|
213
|
-
exports.USE_WORKITEMS = process.env.USE_WORKITEMS !==
|
|
214
|
-
exports.USE_LABELS = process.env.USE_LABELS !==
|
|
215
|
-
exports.USE_MRS = process.env.USE_MRS !==
|
|
216
|
-
exports.USE_FILES = process.env.USE_FILES !==
|
|
217
|
-
exports.USE_VARIABLES = process.env.USE_VARIABLES !==
|
|
218
|
-
exports.USE_SNIPPETS = process.env.USE_SNIPPETS !==
|
|
219
|
-
exports.USE_WEBHOOKS = process.env.USE_WEBHOOKS !==
|
|
220
|
-
exports.USE_INTEGRATIONS = process.env.USE_INTEGRATIONS !==
|
|
221
|
-
exports.USE_RELEASES = process.env.USE_RELEASES !==
|
|
222
|
-
exports.USE_REFS = process.env.USE_REFS !==
|
|
223
|
-
exports.USE_MEMBERS = process.env.USE_MEMBERS !==
|
|
224
|
-
exports.USE_SEARCH = process.env.USE_SEARCH !==
|
|
225
|
-
exports.USE_ITERATIONS = process.env.USE_ITERATIONS !==
|
|
226
|
-
exports.HOST = process.env.HOST ??
|
|
210
|
+
exports.USE_GITLAB_WIKI = process.env.USE_GITLAB_WIKI !== 'false';
|
|
211
|
+
exports.USE_MILESTONE = process.env.USE_MILESTONE !== 'false';
|
|
212
|
+
exports.USE_PIPELINE = process.env.USE_PIPELINE !== 'false';
|
|
213
|
+
exports.USE_WORKITEMS = process.env.USE_WORKITEMS !== 'false';
|
|
214
|
+
exports.USE_LABELS = process.env.USE_LABELS !== 'false';
|
|
215
|
+
exports.USE_MRS = process.env.USE_MRS !== 'false';
|
|
216
|
+
exports.USE_FILES = process.env.USE_FILES !== 'false';
|
|
217
|
+
exports.USE_VARIABLES = process.env.USE_VARIABLES !== 'false';
|
|
218
|
+
exports.USE_SNIPPETS = process.env.USE_SNIPPETS !== 'false';
|
|
219
|
+
exports.USE_WEBHOOKS = process.env.USE_WEBHOOKS !== 'false';
|
|
220
|
+
exports.USE_INTEGRATIONS = process.env.USE_INTEGRATIONS !== 'false';
|
|
221
|
+
exports.USE_RELEASES = process.env.USE_RELEASES !== 'false';
|
|
222
|
+
exports.USE_REFS = process.env.USE_REFS !== 'false';
|
|
223
|
+
exports.USE_MEMBERS = process.env.USE_MEMBERS !== 'false';
|
|
224
|
+
exports.USE_SEARCH = process.env.USE_SEARCH !== 'false';
|
|
225
|
+
exports.USE_ITERATIONS = process.env.USE_ITERATIONS !== 'false';
|
|
226
|
+
exports.HOST = process.env.HOST ?? '127.0.0.1';
|
|
227
227
|
exports.PORT = process.env.PORT ?? 3002;
|
|
228
228
|
exports.SSL_CERT_PATH = process.env.SSL_CERT_PATH;
|
|
229
229
|
exports.SSL_KEY_PATH = process.env.SSL_KEY_PATH;
|
|
230
230
|
exports.SSL_CA_PATH = process.env.SSL_CA_PATH;
|
|
231
231
|
exports.SSL_PASSPHRASE = process.env.SSL_PASSPHRASE;
|
|
232
232
|
exports.TRUST_PROXY = process.env.TRUST_PROXY;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
?
|
|
242
|
-
:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
exports.
|
|
249
|
-
|
|
250
|
-
exports.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
exports.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
exports.
|
|
258
|
-
|
|
259
|
-
exports.
|
|
260
|
-
|
|
261
|
-
exports.
|
|
262
|
-
|
|
263
|
-
exports.API_RETRY_MAX_DELAY_MS =
|
|
264
|
-
exports.
|
|
265
|
-
exports.
|
|
266
|
-
exports.
|
|
267
|
-
exports.
|
|
268
|
-
exports.
|
|
269
|
-
exports.
|
|
270
|
-
exports.
|
|
271
|
-
exports.
|
|
233
|
+
exports.MAX_SAFE_TIMEOUT_MS = 2_147_483_647;
|
|
234
|
+
function parseStrictInt(envValue, fallback, allowZero = false) {
|
|
235
|
+
const raw = envValue?.trim() ?? String(fallback);
|
|
236
|
+
if (!/^\d+$/.test(raw))
|
|
237
|
+
return fallback;
|
|
238
|
+
const parsed = Number(raw);
|
|
239
|
+
if (!Number.isSafeInteger(parsed))
|
|
240
|
+
return fallback;
|
|
241
|
+
const minValue = allowZero ? 0 : 1;
|
|
242
|
+
return parsed >= minValue ? parsed : fallback;
|
|
243
|
+
}
|
|
244
|
+
function parseTimerMs(envValue, fallback, allowZero = false) {
|
|
245
|
+
const parsed = parseStrictInt(envValue, fallback, allowZero);
|
|
246
|
+
return Math.min(parsed, exports.MAX_SAFE_TIMEOUT_MS);
|
|
247
|
+
}
|
|
248
|
+
exports.SSE_HEARTBEAT_MS = parseTimerMs(process.env.GITLAB_SSE_HEARTBEAT_MS, 30000);
|
|
249
|
+
exports.HTTP_KEEPALIVE_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_HTTP_KEEPALIVE_TIMEOUT_MS, 620000);
|
|
250
|
+
exports.CONNECT_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_API_CONNECT_TIMEOUT_MS, 2000);
|
|
251
|
+
exports.HEADERS_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_API_HEADERS_TIMEOUT_MS, 10000);
|
|
252
|
+
exports.BODY_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_API_BODY_TIMEOUT_MS, 30000);
|
|
253
|
+
exports.HANDLER_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_TOOL_TIMEOUT_MS, 120000);
|
|
254
|
+
exports.INIT_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_INIT_TIMEOUT_MS, 5000);
|
|
255
|
+
exports.RECONNECT_BASE_DELAY_MS = parseTimerMs(process.env.GITLAB_RECONNECT_BASE_DELAY_MS, 5000);
|
|
256
|
+
exports.RECONNECT_MAX_DELAY_MS = parseTimerMs(process.env.GITLAB_RECONNECT_MAX_DELAY_MS, 60000);
|
|
257
|
+
exports.HEALTH_CHECK_INTERVAL_MS = parseTimerMs(process.env.GITLAB_HEALTH_CHECK_INTERVAL_MS, 60000);
|
|
258
|
+
exports.FAILURE_THRESHOLD = parseStrictInt(process.env.GITLAB_FAILURE_THRESHOLD, 3);
|
|
259
|
+
exports.POOL_MAX_CONNECTIONS = parseStrictInt(process.env.GITLAB_POOL_MAX_CONNECTIONS, 25);
|
|
260
|
+
exports.API_RETRY_ENABLED = process.env.GITLAB_API_RETRY_ENABLED !== 'false';
|
|
261
|
+
exports.API_RETRY_MAX_ATTEMPTS = parseStrictInt(process.env.GITLAB_API_RETRY_MAX_ATTEMPTS, 3, true);
|
|
262
|
+
exports.API_RETRY_BASE_DELAY_MS = parseTimerMs(process.env.GITLAB_API_RETRY_BASE_DELAY_MS, 1000);
|
|
263
|
+
exports.API_RETRY_MAX_DELAY_MS = parseTimerMs(process.env.GITLAB_API_RETRY_MAX_DELAY_MS, 4000);
|
|
264
|
+
exports.RESPONSE_WRITE_TIMEOUT_MS = parseTimerMs(process.env.GITLAB_RESPONSE_WRITE_TIMEOUT_MS, 10000, true);
|
|
265
|
+
exports.RATE_LIMIT_IP_ENABLED = process.env.RATE_LIMIT_IP_ENABLED !== 'false';
|
|
266
|
+
exports.RATE_LIMIT_IP_WINDOW_MS = parseTimerMs(process.env.RATE_LIMIT_IP_WINDOW_MS, 60000);
|
|
267
|
+
exports.RATE_LIMIT_IP_MAX_REQUESTS = parseStrictInt(process.env.RATE_LIMIT_IP_MAX_REQUESTS, 100);
|
|
268
|
+
exports.RATE_LIMIT_SESSION_ENABLED = process.env.RATE_LIMIT_SESSION_ENABLED === 'true';
|
|
269
|
+
exports.RATE_LIMIT_SESSION_WINDOW_MS = parseTimerMs(process.env.RATE_LIMIT_SESSION_WINDOW_MS, 60000);
|
|
270
|
+
exports.RATE_LIMIT_SESSION_MAX_REQUESTS = parseStrictInt(process.env.RATE_LIMIT_SESSION_MAX_REQUESTS, 300);
|
|
271
|
+
exports.SKIP_TLS_VERIFY = process.env.SKIP_TLS_VERIFY === 'true';
|
|
272
|
+
exports.DASHBOARD_ENABLED = process.env.DASHBOARD_ENABLED !== 'false';
|
|
272
273
|
exports.HTTP_PROXY = process.env.HTTP_PROXY;
|
|
273
274
|
exports.HTTPS_PROXY = process.env.HTTPS_PROXY;
|
|
274
275
|
exports.NODE_TLS_REJECT_UNAUTHORIZED = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
|
|
275
276
|
exports.GITLAB_CA_CERT_PATH = process.env.GITLAB_CA_CERT_PATH;
|
|
276
277
|
function normalizeGitLabBaseUrl(url) {
|
|
277
278
|
if (!url) {
|
|
278
|
-
return
|
|
279
|
+
return 'https://gitlab.com';
|
|
279
280
|
}
|
|
280
|
-
if (url.endsWith(
|
|
281
|
+
if (url.endsWith('/')) {
|
|
281
282
|
url = url.slice(0, -1);
|
|
282
283
|
}
|
|
283
|
-
if (url.endsWith(
|
|
284
|
+
if (url.endsWith('/api/v4')) {
|
|
284
285
|
url = url.slice(0, -7);
|
|
285
286
|
}
|
|
286
287
|
return url;
|
|
287
288
|
}
|
|
288
|
-
exports.GITLAB_BASE_URL = normalizeGitLabBaseUrl(process.env.GITLAB_API_URL ??
|
|
289
|
+
exports.GITLAB_BASE_URL = normalizeGitLabBaseUrl(process.env.GITLAB_API_URL ?? '');
|
|
289
290
|
exports.GITLAB_API_URL = `${exports.GITLAB_BASE_URL}/api/v4`;
|
|
290
291
|
exports.GITLAB_PROJECT_ID = process.env.GITLAB_PROJECT_ID;
|
|
291
|
-
exports.GITLAB_ALLOWED_PROJECT_IDS = process.env.GITLAB_ALLOWED_PROJECT_IDS?.split(
|
|
292
|
+
exports.GITLAB_ALLOWED_PROJECT_IDS = process.env.GITLAB_ALLOWED_PROJECT_IDS?.split(',').map((id) => id.trim()) ?? [];
|
|
292
293
|
function getEffectiveProjectId(projectId) {
|
|
293
294
|
if (exports.GITLAB_PROJECT_ID) {
|
|
294
295
|
return exports.GITLAB_PROJECT_ID;
|
|
295
296
|
}
|
|
296
297
|
if (exports.GITLAB_ALLOWED_PROJECT_IDS.length > 0) {
|
|
297
298
|
if (!exports.GITLAB_ALLOWED_PROJECT_IDS.includes(projectId)) {
|
|
298
|
-
throw new Error(`Project ID ${projectId} is not allowed. Allowed project IDs: ${exports.GITLAB_ALLOWED_PROJECT_IDS.join(
|
|
299
|
+
throw new Error(`Project ID ${projectId} is not allowed. Allowed project IDs: ${exports.GITLAB_ALLOWED_PROJECT_IDS.join(', ')}`);
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
302
|
return projectId;
|
|
302
303
|
}
|
|
303
|
-
let packageName =
|
|
304
|
+
let packageName = 'gitlab-mcp';
|
|
304
305
|
exports.packageName = packageName;
|
|
305
|
-
let packageVersion =
|
|
306
|
+
let packageVersion = 'unknown';
|
|
306
307
|
exports.packageVersion = packageVersion;
|
|
307
308
|
try {
|
|
308
|
-
const packageInfo = JSON.parse(fs.readFileSync(packageJsonPath,
|
|
309
|
+
const packageInfo = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
309
310
|
exports.packageName = packageName = packageInfo.name ?? packageName;
|
|
310
311
|
exports.packageVersion = packageVersion = packageInfo.version ?? packageVersion;
|
|
311
312
|
}
|
|
@@ -313,7 +314,7 @@ catch {
|
|
|
313
314
|
}
|
|
314
315
|
function getToolDescriptionOverrides() {
|
|
315
316
|
const overrides = new Map();
|
|
316
|
-
const prefix =
|
|
317
|
+
const prefix = 'GITLAB_TOOL_';
|
|
317
318
|
for (const [key, value] of Object.entries(process.env)) {
|
|
318
319
|
if (key.startsWith(prefix) && value) {
|
|
319
320
|
const toolName = key.substring(prefix.length).toLowerCase();
|
|
@@ -324,11 +325,11 @@ function getToolDescriptionOverrides() {
|
|
|
324
325
|
}
|
|
325
326
|
function getActionDescriptionOverrides() {
|
|
326
327
|
const overrides = new Map();
|
|
327
|
-
const prefix =
|
|
328
|
+
const prefix = 'GITLAB_ACTION_';
|
|
328
329
|
for (const [key, value] of Object.entries(process.env)) {
|
|
329
330
|
if (key.startsWith(prefix) && value) {
|
|
330
331
|
const rest = key.substring(prefix.length).toLowerCase();
|
|
331
|
-
const lastUnderscoreIndex = rest.lastIndexOf(
|
|
332
|
+
const lastUnderscoreIndex = rest.lastIndexOf('_');
|
|
332
333
|
if (lastUnderscoreIndex === -1) {
|
|
333
334
|
continue;
|
|
334
335
|
}
|
|
@@ -344,11 +345,11 @@ function getActionDescriptionOverrides() {
|
|
|
344
345
|
}
|
|
345
346
|
function getParamDescriptionOverrides() {
|
|
346
347
|
const overrides = new Map();
|
|
347
|
-
const prefix =
|
|
348
|
+
const prefix = 'GITLAB_PARAM_';
|
|
348
349
|
for (const [key, value] of Object.entries(process.env)) {
|
|
349
350
|
if (key.startsWith(prefix) && value) {
|
|
350
351
|
const rest = key.substring(prefix.length).toLowerCase();
|
|
351
|
-
const lastUnderscoreIndex = rest.lastIndexOf(
|
|
352
|
+
const lastUnderscoreIndex = rest.lastIndexOf('_');
|
|
352
353
|
if (lastUnderscoreIndex === -1) {
|
|
353
354
|
continue;
|
|
354
355
|
}
|
|
@@ -374,6 +375,6 @@ function getAllowedActions(toolName, allActions) {
|
|
|
374
375
|
if (!deniedActions || deniedActions.size === 0) {
|
|
375
376
|
return allActions;
|
|
376
377
|
}
|
|
377
|
-
return allActions.filter(action => !deniedActions.has(action.toLowerCase()));
|
|
378
|
+
return allActions.filter((action) => !deniedActions.has(action.toLowerCase()));
|
|
378
379
|
}
|
|
379
380
|
//# sourceMappingURL=config.js.map
|