@structured-world/gitlab-mcp 5.7.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +251 -1
- package/dist/generated/prisma/client.d.ts +13 -0
- package/dist/generated/prisma/client.js +46 -0
- package/dist/generated/prisma/client.js.map +1 -0
- package/dist/generated/prisma/commonInputTypes.d.ts +245 -0
- package/dist/generated/prisma/commonInputTypes.js +3 -0
- package/dist/generated/prisma/commonInputTypes.js.map +1 -0
- package/dist/generated/prisma/enums.d.ts +1 -0
- package/dist/generated/prisma/enums.js +3 -0
- package/dist/generated/prisma/enums.js.map +1 -0
- package/dist/generated/prisma/internal/class.d.ts +47 -0
- package/dist/generated/prisma/internal/class.js +66 -0
- package/dist/generated/prisma/internal/class.js.map +1 -0
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +712 -0
- package/dist/generated/prisma/internal/prismaNamespace.js +139 -0
- package/dist/generated/prisma/internal/prismaNamespace.js.map +1 -0
- package/dist/generated/prisma/models/AuthCodeFlowState.d.ts +513 -0
- package/dist/generated/prisma/models/AuthCodeFlowState.js +3 -0
- package/dist/generated/prisma/models/AuthCodeFlowState.js.map +1 -0
- package/dist/generated/prisma/models/AuthorizationCode.d.ts +641 -0
- package/dist/generated/prisma/models/AuthorizationCode.js +3 -0
- package/dist/generated/prisma/models/AuthorizationCode.js.map +1 -0
- package/dist/generated/prisma/models/DeviceFlowState.d.ts +606 -0
- package/dist/generated/prisma/models/DeviceFlowState.js +3 -0
- package/dist/generated/prisma/models/DeviceFlowState.js.map +1 -0
- package/dist/generated/prisma/models/McpSessionMapping.d.ts +438 -0
- package/dist/generated/prisma/models/McpSessionMapping.js +3 -0
- package/dist/generated/prisma/models/McpSessionMapping.js.map +1 -0
- package/dist/generated/prisma/models/OAuthSession.d.ts +962 -0
- package/dist/generated/prisma/models/OAuthSession.js +3 -0
- package/dist/generated/prisma/models/OAuthSession.js.map +1 -0
- package/dist/generated/prisma/models.d.ts +6 -0
- package/dist/generated/prisma/models.js +3 -0
- package/dist/generated/prisma/models.js.map +1 -0
- package/dist/{config.d.ts → src/config.d.ts} +11 -0
- package/dist/{config.js → src/config.js} +12 -1
- package/dist/src/config.js.map +1 -0
- package/dist/src/entities/core/index.js.map +1 -0
- package/dist/src/entities/core/registry.js +745 -0
- package/dist/src/entities/core/registry.js.map +1 -0
- package/dist/src/entities/core/schema-readonly.d.ts +290 -0
- package/dist/src/entities/core/schema-readonly.js +296 -0
- package/dist/src/entities/core/schema-readonly.js.map +1 -0
- package/dist/src/entities/core/schema.d.ts +71 -0
- package/dist/src/entities/core/schema.js +93 -0
- package/dist/src/entities/core/schema.js.map +1 -0
- package/dist/src/entities/files/index.js.map +1 -0
- package/dist/src/entities/files/registry.js +165 -0
- package/dist/src/entities/files/registry.js.map +1 -0
- package/dist/src/entities/files/schema-readonly.d.ts +93 -0
- package/dist/{entities → src/entities}/files/schema-readonly.js +20 -1
- package/dist/src/entities/files/schema-readonly.js.map +1 -0
- package/dist/src/entities/files/schema.d.ts +82 -0
- package/dist/src/entities/files/schema.js +79 -0
- package/dist/src/entities/files/schema.js.map +1 -0
- package/dist/src/entities/index.js.map +1 -0
- package/dist/src/entities/labels/index.js.map +1 -0
- package/dist/src/entities/labels/registry.js +139 -0
- package/dist/src/entities/labels/registry.js.map +1 -0
- package/dist/src/entities/labels/schema-readonly.d.ts +14 -0
- package/dist/src/entities/labels/schema-readonly.js.map +1 -0
- package/dist/src/entities/labels/schema.d.ts +23 -0
- package/dist/src/entities/labels/schema.js.map +1 -0
- package/dist/src/entities/milestones/index.js.map +1 -0
- package/dist/src/entities/milestones/registry.js +197 -0
- package/dist/src/entities/milestones/registry.js.map +1 -0
- package/dist/src/entities/milestones/schema-readonly.d.ts +58 -0
- package/dist/src/entities/milestones/schema-readonly.js.map +1 -0
- package/dist/src/entities/milestones/schema.d.ts +32 -0
- package/dist/src/entities/milestones/schema.js.map +1 -0
- package/dist/src/entities/mrs/index.js.map +1 -0
- package/dist/{entities → src/entities}/mrs/registry.js +64 -81
- package/dist/src/entities/mrs/registry.js.map +1 -0
- package/dist/src/entities/mrs/schema-readonly.d.ts +127 -0
- package/dist/src/entities/mrs/schema-readonly.js.map +1 -0
- package/dist/src/entities/mrs/schema.d.ts +285 -0
- package/dist/src/entities/mrs/schema.js.map +1 -0
- package/dist/src/entities/pipelines/index.js.map +1 -0
- package/dist/{entities → src/entities}/pipelines/registry.js +72 -200
- package/dist/src/entities/pipelines/registry.js.map +1 -0
- package/dist/src/entities/pipelines/schema-readonly.d.ts +238 -0
- package/dist/src/entities/pipelines/schema-readonly.js.map +1 -0
- package/dist/src/entities/pipelines/schema.d.ts +49 -0
- package/dist/src/entities/pipelines/schema.js.map +1 -0
- package/dist/src/entities/shared.d.ts +291 -0
- package/dist/src/entities/shared.js.map +1 -0
- package/dist/src/entities/utils.d.ts +3 -0
- package/dist/src/entities/utils.js.map +1 -0
- package/dist/src/entities/variables/index.js.map +1 -0
- package/dist/src/entities/variables/registry.js +153 -0
- package/dist/src/entities/variables/registry.js.map +1 -0
- package/dist/src/entities/variables/schema-readonly.d.ts +15 -0
- package/dist/src/entities/variables/schema-readonly.js.map +1 -0
- package/dist/src/entities/variables/schema.d.ts +42 -0
- package/dist/src/entities/variables/schema.js.map +1 -0
- package/dist/src/entities/wiki/index.js.map +1 -0
- package/dist/src/entities/wiki/registry.js +136 -0
- package/dist/src/entities/wiki/registry.js.map +1 -0
- package/dist/src/entities/wiki/schema-readonly.d.ts +22 -0
- package/dist/src/entities/wiki/schema-readonly.js.map +1 -0
- package/dist/{entities → src/entities}/wiki/schema.d.ts +3 -31
- package/dist/src/entities/wiki/schema.js.map +1 -0
- package/dist/src/entities/workitems/index.js.map +1 -0
- package/dist/{entities → src/entities}/workitems/registry.js +40 -7
- package/dist/src/entities/workitems/registry.js.map +1 -0
- package/dist/src/entities/workitems/schema-readonly.d.ts +52 -0
- package/dist/{entities → src/entities}/workitems/schema-readonly.js +1 -1
- package/dist/src/entities/workitems/schema-readonly.js.map +1 -0
- package/dist/src/entities/workitems/schema.d.ts +37 -0
- package/dist/src/entities/workitems/schema.js.map +1 -0
- package/dist/src/graphql/DynamicWorkItemsQuery.js.map +1 -0
- package/dist/src/graphql/client.js.map +1 -0
- package/dist/src/graphql/index.js.map +1 -0
- package/dist/src/graphql/workItems.js.map +1 -0
- package/dist/{handlers.js → src/handlers.js} +15 -0
- package/dist/src/handlers.js.map +1 -0
- package/dist/{http-client.js → src/http-client.js} +0 -4
- package/dist/src/http-client.js.map +1 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/middleware/index.d.ts +2 -0
- package/dist/src/middleware/index.js +12 -0
- package/dist/src/middleware/index.js.map +1 -0
- package/dist/src/middleware/oauth-auth.d.ts +4 -0
- package/dist/src/middleware/oauth-auth.js +119 -0
- package/dist/src/middleware/oauth-auth.js.map +1 -0
- package/dist/src/middleware/rate-limiter.d.ts +11 -0
- package/dist/src/middleware/rate-limiter.js +145 -0
- package/dist/src/middleware/rate-limiter.js.map +1 -0
- package/dist/src/oauth/config.d.ts +19 -0
- package/dist/src/oauth/config.js +70 -0
- package/dist/src/oauth/config.js.map +1 -0
- package/dist/src/oauth/endpoints/authorize.d.ts +3 -0
- package/dist/src/oauth/endpoints/authorize.js +454 -0
- package/dist/src/oauth/endpoints/authorize.js.map +1 -0
- package/dist/src/oauth/endpoints/callback.d.ts +2 -0
- package/dist/src/oauth/endpoints/callback.js +129 -0
- package/dist/src/oauth/endpoints/callback.js.map +1 -0
- package/dist/src/oauth/endpoints/index.d.ts +5 -0
- package/dist/src/oauth/endpoints/index.js +20 -0
- package/dist/src/oauth/endpoints/index.js.map +1 -0
- package/dist/src/oauth/endpoints/metadata.d.ts +5 -0
- package/dist/src/oauth/endpoints/metadata.js +48 -0
- package/dist/src/oauth/endpoints/metadata.js.map +1 -0
- package/dist/src/oauth/endpoints/register.d.ts +15 -0
- package/dist/src/oauth/endpoints/register.js +85 -0
- package/dist/src/oauth/endpoints/register.js.map +1 -0
- package/dist/src/oauth/endpoints/token.d.ts +2 -0
- package/dist/src/oauth/endpoints/token.js +159 -0
- package/dist/src/oauth/endpoints/token.js.map +1 -0
- package/dist/src/oauth/gitlab-device-flow.d.ts +10 -0
- package/dist/src/oauth/gitlab-device-flow.js +215 -0
- package/dist/src/oauth/gitlab-device-flow.js.map +1 -0
- package/dist/src/oauth/index.d.ts +10 -0
- package/dist/src/oauth/index.js +65 -0
- package/dist/src/oauth/index.js.map +1 -0
- package/dist/src/oauth/session-store.d.ts +54 -0
- package/dist/src/oauth/session-store.js +302 -0
- package/dist/src/oauth/session-store.js.map +1 -0
- package/dist/src/oauth/storage/factory.d.ts +4 -0
- package/dist/src/oauth/storage/factory.js +75 -0
- package/dist/src/oauth/storage/factory.js.map +1 -0
- package/dist/src/oauth/storage/file.d.ts +50 -0
- package/dist/src/oauth/storage/file.js +287 -0
- package/dist/src/oauth/storage/file.js.map +1 -0
- package/dist/src/oauth/storage/index.d.ts +5 -0
- package/dist/src/oauth/storage/index.js +22 -0
- package/dist/src/oauth/storage/index.js.map +1 -0
- package/dist/src/oauth/storage/memory.d.ts +76 -0
- package/dist/src/oauth/storage/memory.js +277 -0
- package/dist/src/oauth/storage/memory.js.map +1 -0
- package/dist/src/oauth/storage/postgresql.d.ts +41 -0
- package/dist/src/oauth/storage/postgresql.js +435 -0
- package/dist/src/oauth/storage/postgresql.js.map +1 -0
- package/dist/src/oauth/storage/types.d.ts +67 -0
- package/dist/src/oauth/storage/types.js +5 -0
- package/dist/src/oauth/storage/types.js.map +1 -0
- package/dist/src/oauth/token-context.d.ts +8 -0
- package/dist/src/oauth/token-context.js +40 -0
- package/dist/src/oauth/token-context.js.map +1 -0
- package/dist/src/oauth/token-utils.d.ts +14 -0
- package/dist/src/oauth/token-utils.js +148 -0
- package/dist/src/oauth/token-utils.js.map +1 -0
- package/dist/src/oauth/types.d.ts +104 -0
- package/dist/src/oauth/types.js +3 -0
- package/dist/src/oauth/types.js.map +1 -0
- package/dist/src/registry-manager.js.map +1 -0
- package/dist/{server.d.ts → src/server.d.ts} +11 -0
- package/dist/src/server.js +444 -0
- package/dist/src/server.js.map +1 -0
- package/dist/{services → src/services}/ConnectionManager.d.ts +2 -0
- package/dist/{services → src/services}/ConnectionManager.js +99 -7
- package/dist/src/services/ConnectionManager.js.map +1 -0
- package/dist/src/services/GitLabVersionDetector.js.map +1 -0
- package/dist/src/services/SchemaIntrospector.js.map +1 -0
- package/dist/{services → src/services}/ToolAvailability.js +3 -4
- package/dist/src/services/ToolAvailability.js.map +1 -0
- package/dist/src/services/WidgetAvailability.js.map +1 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +5 -0
- package/dist/{utils → src/utils}/fetch.js +89 -52
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/gitlab-api.d.ts +21 -0
- package/dist/src/utils/gitlab-api.js +132 -0
- package/dist/src/utils/gitlab-api.js.map +1 -0
- package/dist/src/utils/idConversion.js.map +1 -0
- package/dist/{utils → src/utils}/namespace.js +1 -5
- package/dist/src/utils/namespace.js.map +1 -0
- package/dist/src/utils/projectIdentifier.js.map +1 -0
- package/dist/{utils → src/utils}/smart-user-search.js +1 -5
- package/dist/src/utils/smart-user-search.js.map +1 -0
- package/dist/src/utils/workItemTypes.js.map +1 -0
- package/dist/structured-world-gitlab-mcp-6.0.0.tgz +0 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +34 -31
- package/dist/config.js.map +0 -1
- package/dist/entities/core/index.js.map +0 -1
- package/dist/entities/core/registry.js +0 -778
- package/dist/entities/core/registry.js.map +0 -1
- package/dist/entities/core/schema-readonly.d.ts +0 -547
- package/dist/entities/core/schema-readonly.js +0 -471
- package/dist/entities/core/schema-readonly.js.map +0 -1
- package/dist/entities/core/schema.d.ts +0 -210
- package/dist/entities/core/schema.js +0 -230
- package/dist/entities/core/schema.js.map +0 -1
- package/dist/entities/files/index.js.map +0 -1
- package/dist/entities/files/registry.js +0 -207
- package/dist/entities/files/registry.js.map +0 -1
- package/dist/entities/files/schema-readonly.d.ts +0 -178
- package/dist/entities/files/schema-readonly.js.map +0 -1
- package/dist/entities/files/schema.d.ts +0 -107
- package/dist/entities/files/schema.js +0 -38
- package/dist/entities/files/schema.js.map +0 -1
- package/dist/entities/index.js.map +0 -1
- package/dist/entities/labels/index.js.map +0 -1
- package/dist/entities/labels/registry.js +0 -176
- package/dist/entities/labels/registry.js.map +0 -1
- package/dist/entities/labels/schema-readonly.d.ts +0 -32
- package/dist/entities/labels/schema-readonly.js.map +0 -1
- package/dist/entities/labels/schema.d.ts +0 -55
- package/dist/entities/labels/schema.js.map +0 -1
- package/dist/entities/milestones/index.js.map +0 -1
- package/dist/entities/milestones/registry.js +0 -300
- package/dist/entities/milestones/registry.js.map +0 -1
- package/dist/entities/milestones/schema-readonly.d.ts +0 -138
- package/dist/entities/milestones/schema-readonly.js.map +0 -1
- package/dist/entities/milestones/schema.d.ts +0 -69
- package/dist/entities/milestones/schema.js.map +0 -1
- package/dist/entities/mrs/index.js.map +0 -1
- package/dist/entities/mrs/registry.js.map +0 -1
- package/dist/entities/mrs/schema-readonly.d.ts +0 -302
- package/dist/entities/mrs/schema-readonly.js.map +0 -1
- package/dist/entities/mrs/schema.d.ts +0 -1028
- package/dist/entities/mrs/schema.js.map +0 -1
- package/dist/entities/pipelines/index.js.map +0 -1
- package/dist/entities/pipelines/registry.js.map +0 -1
- package/dist/entities/pipelines/schema-readonly.d.ts +0 -648
- package/dist/entities/pipelines/schema-readonly.js.map +0 -1
- package/dist/entities/pipelines/schema.d.ts +0 -123
- package/dist/entities/pipelines/schema.js.map +0 -1
- package/dist/entities/shared.d.ts +0 -968
- package/dist/entities/shared.js.map +0 -1
- package/dist/entities/utils.d.ts +0 -3
- package/dist/entities/utils.js.map +0 -1
- package/dist/entities/variables/index.js.map +0 -1
- package/dist/entities/variables/registry.js +0 -308
- package/dist/entities/variables/registry.js.map +0 -1
- package/dist/entities/variables/schema-readonly.d.ts +0 -40
- package/dist/entities/variables/schema-readonly.js.map +0 -1
- package/dist/entities/variables/schema.d.ts +0 -102
- package/dist/entities/variables/schema.js.map +0 -1
- package/dist/entities/wiki/index.js.map +0 -1
- package/dist/entities/wiki/registry.js +0 -173
- package/dist/entities/wiki/registry.js.map +0 -1
- package/dist/entities/wiki/schema-readonly.d.ts +0 -53
- package/dist/entities/wiki/schema-readonly.js.map +0 -1
- package/dist/entities/wiki/schema.js.map +0 -1
- package/dist/entities/workitems/index.js.map +0 -1
- package/dist/entities/workitems/registry.js.map +0 -1
- package/dist/entities/workitems/schema-readonly.d.ts +0 -49
- package/dist/entities/workitems/schema-readonly.js.map +0 -1
- package/dist/entities/workitems/schema.d.ts +0 -61
- package/dist/entities/workitems/schema.js.map +0 -1
- package/dist/graphql/DynamicWorkItemsQuery.js.map +0 -1
- package/dist/graphql/client.js.map +0 -1
- package/dist/graphql/index.js.map +0 -1
- package/dist/graphql/workItems.js.map +0 -1
- package/dist/handlers.js.map +0 -1
- package/dist/http-client.js.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/main.js.map +0 -1
- package/dist/registry-manager.js.map +0 -1
- package/dist/server.js +0 -202
- package/dist/server.js.map +0 -1
- package/dist/services/ConnectionManager.js.map +0 -1
- package/dist/services/GitLabVersionDetector.js.map +0 -1
- package/dist/services/SchemaIntrospector.js.map +0 -1
- package/dist/services/ToolAvailability.js.map +0 -1
- package/dist/services/WidgetAvailability.js.map +0 -1
- package/dist/structured-world-gitlab-mcp-5.7.0.tgz +0 -0
- package/dist/types.js.map +0 -1
- package/dist/utils/fetch.d.ts +0 -9
- package/dist/utils/fetch.js.map +0 -1
- package/dist/utils/idConversion.js.map +0 -1
- package/dist/utils/namespace.js.map +0 -1
- package/dist/utils/projectIdentifier.js.map +0 -1
- package/dist/utils/smart-user-search.js.map +0 -1
- package/dist/utils/workItemTypes.js.map +0 -1
- /package/dist/{entities → src/entities}/core/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/core/index.js +0 -0
- /package/dist/{entities → src/entities}/core/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/files/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/files/index.js +0 -0
- /package/dist/{entities → src/entities}/files/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/index.js +0 -0
- /package/dist/{entities → src/entities}/labels/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/labels/index.js +0 -0
- /package/dist/{entities → src/entities}/labels/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/labels/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/labels/schema.js +0 -0
- /package/dist/{entities → src/entities}/milestones/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/milestones/index.js +0 -0
- /package/dist/{entities → src/entities}/milestones/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/milestones/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/milestones/schema.js +0 -0
- /package/dist/{entities → src/entities}/mrs/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/mrs/index.js +0 -0
- /package/dist/{entities → src/entities}/mrs/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/mrs/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/mrs/schema.js +0 -0
- /package/dist/{entities → src/entities}/pipelines/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/pipelines/index.js +0 -0
- /package/dist/{entities → src/entities}/pipelines/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/pipelines/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/pipelines/schema.js +0 -0
- /package/dist/{entities → src/entities}/shared.js +0 -0
- /package/dist/{entities → src/entities}/utils.js +0 -0
- /package/dist/{entities → src/entities}/variables/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/variables/index.js +0 -0
- /package/dist/{entities → src/entities}/variables/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/variables/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/variables/schema.js +0 -0
- /package/dist/{entities → src/entities}/wiki/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/wiki/index.js +0 -0
- /package/dist/{entities → src/entities}/wiki/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/wiki/schema-readonly.js +0 -0
- /package/dist/{entities → src/entities}/wiki/schema.js +0 -0
- /package/dist/{entities → src/entities}/workitems/index.d.ts +0 -0
- /package/dist/{entities → src/entities}/workitems/index.js +0 -0
- /package/dist/{entities → src/entities}/workitems/registry.d.ts +0 -0
- /package/dist/{entities → src/entities}/workitems/schema.js +0 -0
- /package/dist/{graphql → src/graphql}/DynamicWorkItemsQuery.d.ts +0 -0
- /package/dist/{graphql → src/graphql}/DynamicWorkItemsQuery.js +0 -0
- /package/dist/{graphql → src/graphql}/client.d.ts +0 -0
- /package/dist/{graphql → src/graphql}/client.js +0 -0
- /package/dist/{graphql → src/graphql}/index.d.ts +0 -0
- /package/dist/{graphql → src/graphql}/index.js +0 -0
- /package/dist/{graphql → src/graphql}/workItems.d.ts +0 -0
- /package/dist/{graphql → src/graphql}/workItems.js +0 -0
- /package/dist/{handlers.d.ts → src/handlers.d.ts} +0 -0
- /package/dist/{http-client.d.ts → src/http-client.d.ts} +0 -0
- /package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
- /package/dist/{logger.js → src/logger.js} +0 -0
- /package/dist/{main.d.ts → src/main.d.ts} +0 -0
- /package/dist/{main.js → src/main.js} +0 -0
- /package/dist/{registry-manager.d.ts → src/registry-manager.d.ts} +0 -0
- /package/dist/{registry-manager.js → src/registry-manager.js} +0 -0
- /package/dist/{services → src/services}/GitLabVersionDetector.d.ts +0 -0
- /package/dist/{services → src/services}/GitLabVersionDetector.js +0 -0
- /package/dist/{services → src/services}/SchemaIntrospector.d.ts +0 -0
- /package/dist/{services → src/services}/SchemaIntrospector.js +0 -0
- /package/dist/{services → src/services}/ToolAvailability.d.ts +0 -0
- /package/dist/{services → src/services}/WidgetAvailability.d.ts +0 -0
- /package/dist/{services → src/services}/WidgetAvailability.js +0 -0
- /package/dist/{types.d.ts → src/types.d.ts} +0 -0
- /package/dist/{types.js → src/types.js} +0 -0
- /package/dist/{utils → src/utils}/idConversion.d.ts +0 -0
- /package/dist/{utils → src/utils}/idConversion.js +0 -0
- /package/dist/{utils → src/utils}/namespace.d.ts +0 -0
- /package/dist/{utils → src/utils}/projectIdentifier.d.ts +0 -0
- /package/dist/{utils → src/utils}/projectIdentifier.js +0 -0
- /package/dist/{utils → src/utils}/smart-user-search.d.ts +0 -0
- /package/dist/{utils → src/utils}/workItemTypes.d.ts +0 -0
- /package/dist/{utils → src/utils}/workItemTypes.js +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const WorkItemIdSchema: z.ZodString;
|
|
3
|
+
export declare const WorkItemTypeEnumSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
4
|
+
OBJECTIVE: "OBJECTIVE";
|
|
5
|
+
KEY_RESULT: "KEY_RESULT";
|
|
6
|
+
REQUIREMENT: "REQUIREMENT";
|
|
7
|
+
ISSUE: "ISSUE";
|
|
8
|
+
INCIDENT: "INCIDENT";
|
|
9
|
+
TEST_CASE: "TEST_CASE";
|
|
10
|
+
TASK: "TASK";
|
|
11
|
+
EPIC: "EPIC";
|
|
12
|
+
}>>;
|
|
13
|
+
export declare const WorkItemStateSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
14
|
+
OPEN: "OPEN";
|
|
15
|
+
CLOSED: "CLOSED";
|
|
16
|
+
}>>;
|
|
17
|
+
export declare const WorkItemStateEventSchema: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
18
|
+
CLOSE: "CLOSE";
|
|
19
|
+
REOPEN: "REOPEN";
|
|
20
|
+
}>>;
|
|
21
|
+
export declare const ListWorkItemsSchema: z.ZodObject<{
|
|
22
|
+
namespace: z.ZodString;
|
|
23
|
+
types: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
24
|
+
OBJECTIVE: "OBJECTIVE";
|
|
25
|
+
KEY_RESULT: "KEY_RESULT";
|
|
26
|
+
REQUIREMENT: "REQUIREMENT";
|
|
27
|
+
ISSUE: "ISSUE";
|
|
28
|
+
INCIDENT: "INCIDENT";
|
|
29
|
+
TEST_CASE: "TEST_CASE";
|
|
30
|
+
TASK: "TASK";
|
|
31
|
+
EPIC: "EPIC";
|
|
32
|
+
}>>>>;
|
|
33
|
+
state: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
34
|
+
OPEN: "OPEN";
|
|
35
|
+
CLOSED: "CLOSED";
|
|
36
|
+
}>>>>>;
|
|
37
|
+
first: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
38
|
+
after: z.ZodOptional<z.ZodString>;
|
|
39
|
+
simple: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
40
|
+
active: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export declare const GetWorkItemSchema: z.ZodObject<{
|
|
43
|
+
id: z.ZodString;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
export declare const GetWorkItemTypesSchema: z.ZodObject<{
|
|
46
|
+
namespace: z.ZodString;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export type ListWorkItemsOptions = z.infer<typeof ListWorkItemsSchema>;
|
|
49
|
+
export type GetWorkItemOptions = z.infer<typeof GetWorkItemSchema>;
|
|
50
|
+
export type GetWorkItemTypesOptions = z.infer<typeof GetWorkItemTypesSchema>;
|
|
51
|
+
export type WorkItemTypeEnum = z.infer<typeof WorkItemTypeEnumSchema>;
|
|
52
|
+
export type WorkItemState = z.infer<typeof WorkItemStateSchema>;
|
|
@@ -46,7 +46,7 @@ exports.ListWorkItemsSchema = zod_1.z.object({
|
|
|
46
46
|
.boolean()
|
|
47
47
|
.optional()
|
|
48
48
|
.default(true)
|
|
49
|
-
.describe("Return simplified structure with essential fields only (id, title, state, type, assignees, labels).
|
|
49
|
+
.describe("Return simplified structure with essential fields only (id, title, state, type, assignees, labels). RECOMMENDED: Use default true for most cases. Only set false when full widget details are specifically needed."),
|
|
50
50
|
active: zod_1.z
|
|
51
51
|
.boolean()
|
|
52
52
|
.optional()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-readonly.js","sourceRoot":"","sources":["../../../../src/entities/workitems/schema-readonly.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGX,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE9D,QAAA,sBAAsB,GAAG,OAAC;KACpC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACxD,IAAI,CACH,OAAC,CAAC,IAAI,CAAC;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAC,CACH;KACA,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEpB,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACnC,IAAI,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAErB,QAAA,wBAAwB,GAAG,OAAC;KACtC,MAAM,EAAE;KACR,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACnC,IAAI,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;KACjC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AAGrC,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,iHAAiH,CAClH;IACH,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,8BAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvF,KAAK,EAAE,OAAC;SACL,KAAK,CAAC,2BAAmB,CAAC;SAC1B,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;SACjB,QAAQ,CACP,+FAA+F,CAChG;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC9E,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,MAAM,EAAE,OAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,oNAAoN,CACrN;IACH,MAAM,EAAE,OAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,4HAA4H,CAC7H;CACJ,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,wBAAgB;CACrB,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC/F,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const CreateWorkItemSchema: z.ZodObject<{
|
|
3
|
+
namespace: z.ZodString;
|
|
4
|
+
title: z.ZodString;
|
|
5
|
+
workItemType: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
6
|
+
OBJECTIVE: "OBJECTIVE";
|
|
7
|
+
KEY_RESULT: "KEY_RESULT";
|
|
8
|
+
REQUIREMENT: "REQUIREMENT";
|
|
9
|
+
ISSUE: "ISSUE";
|
|
10
|
+
INCIDENT: "INCIDENT";
|
|
11
|
+
TEST_CASE: "TEST_CASE";
|
|
12
|
+
TASK: "TASK";
|
|
13
|
+
EPIC: "EPIC";
|
|
14
|
+
}>>;
|
|
15
|
+
description: z.ZodOptional<z.ZodString>;
|
|
16
|
+
assigneeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
17
|
+
labelIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
milestoneId: z.ZodOptional<z.ZodString>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
export declare const UpdateWorkItemSchema: z.ZodObject<{
|
|
21
|
+
id: z.ZodString;
|
|
22
|
+
title: z.ZodOptional<z.ZodString>;
|
|
23
|
+
description: z.ZodOptional<z.ZodString>;
|
|
24
|
+
state: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodEnum<{
|
|
25
|
+
CLOSE: "CLOSE";
|
|
26
|
+
REOPEN: "REOPEN";
|
|
27
|
+
}>>>;
|
|
28
|
+
assigneeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
labelIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
+
milestoneId: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const DeleteWorkItemSchema: z.ZodObject<{
|
|
33
|
+
id: z.ZodString;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type CreateWorkItemOptions = z.infer<typeof CreateWorkItemSchema>;
|
|
36
|
+
export type UpdateWorkItemOptions = z.infer<typeof UpdateWorkItemSchema>;
|
|
37
|
+
export type DeleteWorkItemOptions = z.infer<typeof DeleteWorkItemSchema>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/entities/workitems/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,uDAI2B;AA4Bd,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,mMAAmM,CACpM;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACpD,YAAY,EAAE,wCAAsB;IACpC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3E,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClF,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,kCAAgB;IACpB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACpE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAChF,KAAK,EAAE,0CAAwB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjD,+CAA+C,CAChD;IACD,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAClF,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACvE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,EAAE,EAAE,kCAAgB;CACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicWorkItemsQuery.js","sourceRoot":"","sources":["../../../src/graphql/DynamicWorkItemsQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/graphql/client.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAEjD,gDAAiD;AACjD,0CAA+C;AAO/C,MAAa,aAAa;IACR,QAAQ,CAAS;IACzB,cAAc,CAAyB;IAE/C,YAAY,QAAgB,EAAE,OAA8C;QAC1E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAgD,EAChD,SAAsB,EACtB,cAAuC;QAEvC,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,QAAQ,CAAC,CAAC;QAG9B,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAG,6BAAe;YAClB,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,cAAc;SAClB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAa,EAAC,IAAI,CAAC,QAAQ,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,SAAS,EAAE,SAAS,IAAI,EAAE;aAC3B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,MAAM,MAAM,GAA6B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;QAE7F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,OAA+B;QACxC,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAzDD,sCAyDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphql/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AACtB,8CAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workItems.js","sourceRoot":"","sources":["../../../src/graphql/workItems.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,9 +47,11 @@ async function setupHandlers(server) {
|
|
|
47
47
|
logger_1.logger.warn(`Initial connection failed during setup, will retry on first tool call: ${error instanceof Error ? error.message : String(error)}`);
|
|
48
48
|
}
|
|
49
49
|
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
50
|
+
logger_1.logger.info("ListToolsRequest received");
|
|
50
51
|
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require("./registry-manager")));
|
|
51
52
|
const registryManager = RegistryManager.getInstance();
|
|
52
53
|
const tools = registryManager.getAllToolDefinitions();
|
|
54
|
+
logger_1.logger.info({ toolCount: tools.length }, "Returning tools list");
|
|
53
55
|
function resolveRefs(schema, rootSchema) {
|
|
54
56
|
if (!schema || typeof schema !== "object")
|
|
55
57
|
return schema;
|
|
@@ -117,8 +119,13 @@ async function setupHandlers(server) {
|
|
|
117
119
|
}
|
|
118
120
|
logger_1.logger.info(`Tool called: ${request.params.name}`);
|
|
119
121
|
const connectionManager = ConnectionManager_1.ConnectionManager.getInstance();
|
|
122
|
+
const { isOAuthEnabled } = await Promise.resolve().then(() => __importStar(require("./oauth/index")));
|
|
123
|
+
const oauthMode = isOAuthEnabled();
|
|
120
124
|
try {
|
|
121
125
|
connectionManager.getClient();
|
|
126
|
+
if (oauthMode) {
|
|
127
|
+
await connectionManager.ensureIntrospected();
|
|
128
|
+
}
|
|
122
129
|
const instanceInfo = connectionManager.getInstanceInfo();
|
|
123
130
|
logger_1.logger.info(`Connection verified: ${instanceInfo.version} ${instanceInfo.tier}`);
|
|
124
131
|
}
|
|
@@ -127,6 +134,9 @@ async function setupHandlers(server) {
|
|
|
127
134
|
try {
|
|
128
135
|
await connectionManager.initialize();
|
|
129
136
|
connectionManager.getClient();
|
|
137
|
+
if (oauthMode) {
|
|
138
|
+
await connectionManager.ensureIntrospected();
|
|
139
|
+
}
|
|
130
140
|
const instanceInfo = connectionManager.getInstanceInfo();
|
|
131
141
|
logger_1.logger.info(`Connection initialized: ${instanceInfo.version} ${instanceInfo.tier}`);
|
|
132
142
|
}
|
|
@@ -143,6 +153,11 @@ async function setupHandlers(server) {
|
|
|
143
153
|
throw new Error(`Tool '${toolName}' is not available or has been filtered out`);
|
|
144
154
|
}
|
|
145
155
|
logger_1.logger.info(`Executing tool: ${toolName}`);
|
|
156
|
+
const { isOAuthEnabled, getTokenContext } = await Promise.resolve().then(() => __importStar(require("./oauth/index")));
|
|
157
|
+
if (isOAuthEnabled()) {
|
|
158
|
+
const context = getTokenContext();
|
|
159
|
+
logger_1.logger.debug({ hasContext: !!context, hasToken: !!context?.gitlabToken, tool: toolName }, "OAuth context check before tool execution");
|
|
160
|
+
}
|
|
146
161
|
const result = await registryManager.executeTool(toolName, request.params.arguments);
|
|
147
162
|
return {
|
|
148
163
|
content: [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_HEADERS = void 0;
|
|
4
|
-
const config_1 = require("./config");
|
|
5
4
|
exports.DEFAULT_HEADERS = {
|
|
6
5
|
"User-Agent": "GitLab MCP Server",
|
|
7
6
|
"Content-Type": "application/json",
|
|
8
7
|
Accept: "application/json",
|
|
9
8
|
};
|
|
10
|
-
if (config_1.GITLAB_TOKEN) {
|
|
11
|
-
exports.DEFAULT_HEADERS.Authorization = `Bearer ${config_1.GITLAB_TOKEN}`;
|
|
12
|
-
}
|
|
13
9
|
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/http-client.ts"],"names":[],"mappings":";;;AAGa,QAAA,eAAe,GAA2B;IACrD,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,kBAAkB;IAClC,MAAM,EAAE,kBAAkB;CAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAErB,MAAM,YAAY,GAAG,CAAC,IAAa,EAAE,EAAE;IAC5C,OAAO,IAAA,WAAI,EAAC;QACV,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE;YACT,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,cAAc;aACvB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAbW,QAAA,YAAY,gBAavB;AAEW,QAAA,MAAM,GAAG,IAAA,oBAAY,EAAC,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AACvC,qCAAkC;AAGlC,IAAA,oBAAW,GAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACrC,eAAM,CAAC,KAAK,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRateLimitStats = exports.stopRateLimitCleanup = exports.rateLimiterMiddleware = exports.optionalOAuthMiddleware = exports.createOAuthMiddleware = exports.oauthAuthMiddleware = void 0;
|
|
4
|
+
var oauth_auth_1 = require("./oauth-auth");
|
|
5
|
+
Object.defineProperty(exports, "oauthAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.oauthAuthMiddleware; } });
|
|
6
|
+
Object.defineProperty(exports, "createOAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.createOAuthMiddleware; } });
|
|
7
|
+
Object.defineProperty(exports, "optionalOAuthMiddleware", { enumerable: true, get: function () { return oauth_auth_1.optionalOAuthMiddleware; } });
|
|
8
|
+
var rate_limiter_1 = require("./rate-limiter");
|
|
9
|
+
Object.defineProperty(exports, "rateLimiterMiddleware", { enumerable: true, get: function () { return rate_limiter_1.rateLimiterMiddleware; } });
|
|
10
|
+
Object.defineProperty(exports, "stopRateLimitCleanup", { enumerable: true, get: function () { return rate_limiter_1.stopCleanup; } });
|
|
11
|
+
Object.defineProperty(exports, "getRateLimitStats", { enumerable: true, get: function () { return rate_limiter_1.getRateLimitStats; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":";;;AAMA,2CAAmG;AAA1F,iHAAA,mBAAmB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAAE,qHAAA,uBAAuB,OAAA;AAC5E,+CAIwB;AAHtB,qHAAA,qBAAqB,OAAA;AACrB,oHAAA,WAAW,OAAwB;AACnC,iHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Request, Response, NextFunction } from "express";
|
|
2
|
+
export declare function oauthAuthMiddleware(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
3
|
+
export declare function createOAuthMiddleware(): typeof oauthAuthMiddleware;
|
|
4
|
+
export declare function optionalOAuthMiddleware(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oauthAuthMiddleware = oauthAuthMiddleware;
|
|
4
|
+
exports.createOAuthMiddleware = createOAuthMiddleware;
|
|
5
|
+
exports.optionalOAuthMiddleware = optionalOAuthMiddleware;
|
|
6
|
+
const config_1 = require("../oauth/config");
|
|
7
|
+
const session_store_1 = require("../oauth/session-store");
|
|
8
|
+
const token_utils_1 = require("../oauth/token-utils");
|
|
9
|
+
const gitlab_device_flow_1 = require("../oauth/gitlab-device-flow");
|
|
10
|
+
const metadata_1 = require("../oauth/endpoints/metadata");
|
|
11
|
+
const logger_1 = require("../logger");
|
|
12
|
+
async function oauthAuthMiddleware(req, res, next) {
|
|
13
|
+
const config = (0, config_1.loadOAuthConfig)();
|
|
14
|
+
if (!config) {
|
|
15
|
+
sendUnauthorized(req, res, "server_error", "OAuth not configured");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const authHeader = req.headers.authorization;
|
|
19
|
+
if (!authHeader) {
|
|
20
|
+
sendUnauthorized(req, res, "unauthorized", "Missing Authorization header");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!authHeader.startsWith("Bearer ")) {
|
|
24
|
+
sendUnauthorized(req, res, "unauthorized", "Invalid Authorization header format. Expected: Bearer <token>");
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const token = authHeader.slice(7);
|
|
28
|
+
if (!token) {
|
|
29
|
+
sendUnauthorized(req, res, "unauthorized", "Empty Bearer token");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const payload = (0, token_utils_1.verifyMCPToken)(token, config.sessionSecret);
|
|
33
|
+
if (!payload) {
|
|
34
|
+
sendUnauthorized(req, res, "invalid_token", "Token is invalid or expired");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const sessionId = payload.sid;
|
|
38
|
+
const session = session_store_1.sessionStore.getSession(sessionId);
|
|
39
|
+
if (!session) {
|
|
40
|
+
sendUnauthorized(req, res, "invalid_token", "Session not found or expired");
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (session.mcpAccessToken !== token) {
|
|
44
|
+
sendUnauthorized(req, res, "invalid_token", "Token has been superseded");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if ((0, token_utils_1.isTokenExpiringSoon)(session.gitlabTokenExpiry)) {
|
|
48
|
+
try {
|
|
49
|
+
const newTokens = await (0, gitlab_device_flow_1.refreshGitLabToken)(session.gitlabRefreshToken, config);
|
|
50
|
+
session_store_1.sessionStore.updateSession(sessionId, {
|
|
51
|
+
gitlabAccessToken: newTokens.access_token,
|
|
52
|
+
gitlabRefreshToken: newTokens.refresh_token,
|
|
53
|
+
gitlabTokenExpiry: (0, token_utils_1.calculateTokenExpiry)(newTokens.expires_in),
|
|
54
|
+
});
|
|
55
|
+
logger_1.logger.debug({ sessionId: sessionId.substring(0, 8) + "..." }, "GitLab token refreshed during request");
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
logger_1.logger.error({ err: error }, "Failed to refresh GitLab token during request");
|
|
59
|
+
sendUnauthorized(req, res, "invalid_token", "GitLab token refresh failed. Please re-authenticate.");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const updatedSession = session_store_1.sessionStore.getSession(sessionId);
|
|
64
|
+
if (!updatedSession) {
|
|
65
|
+
sendUnauthorized(req, res, "invalid_token", "Session lost during token refresh");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
res.locals.oauthSessionId = updatedSession.id;
|
|
69
|
+
res.locals.gitlabToken = updatedSession.gitlabAccessToken;
|
|
70
|
+
res.locals.gitlabUserId = updatedSession.gitlabUserId;
|
|
71
|
+
res.locals.gitlabUsername = updatedSession.gitlabUsername;
|
|
72
|
+
logger_1.logger.debug({ sessionId: updatedSession.id.substring(0, 8) + "...", method: req.method, path: req.path }, "OAuth session validated, passing to route handler");
|
|
73
|
+
next();
|
|
74
|
+
}
|
|
75
|
+
function createOAuthMiddleware() {
|
|
76
|
+
return oauthAuthMiddleware;
|
|
77
|
+
}
|
|
78
|
+
async function optionalOAuthMiddleware(req, res, next) {
|
|
79
|
+
const config = (0, config_1.loadOAuthConfig)();
|
|
80
|
+
if (!config) {
|
|
81
|
+
next();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const authHeader = req.headers.authorization;
|
|
85
|
+
if (!authHeader?.startsWith("Bearer ")) {
|
|
86
|
+
next();
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const token = authHeader.slice(7);
|
|
90
|
+
if (!token) {
|
|
91
|
+
next();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const payload = (0, token_utils_1.verifyMCPToken)(token, config.sessionSecret);
|
|
95
|
+
if (!payload) {
|
|
96
|
+
next();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const session = session_store_1.sessionStore.getSession(payload.sid);
|
|
100
|
+
if (session?.mcpAccessToken !== token) {
|
|
101
|
+
next();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
res.locals.oauthSessionId = session.id;
|
|
105
|
+
res.locals.gitlabToken = session.gitlabAccessToken;
|
|
106
|
+
res.locals.gitlabUserId = session.gitlabUserId;
|
|
107
|
+
res.locals.gitlabUsername = session.gitlabUsername;
|
|
108
|
+
next();
|
|
109
|
+
}
|
|
110
|
+
function sendUnauthorized(req, res, error, description) {
|
|
111
|
+
const response = {
|
|
112
|
+
error,
|
|
113
|
+
error_description: description,
|
|
114
|
+
};
|
|
115
|
+
const baseUrl = (0, metadata_1.getBaseUrl)(req);
|
|
116
|
+
res.setHeader("WWW-Authenticate", `Bearer realm="gitlab-mcp", resource_metadata="${baseUrl}/.well-known/oauth-protected-resource"`);
|
|
117
|
+
res.status(401).json(response);
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=oauth-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-auth.js","sourceRoot":"","sources":["../../../src/middleware/oauth-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RequestHandler } from "express";
|
|
2
|
+
export declare function stopCleanup(): void;
|
|
3
|
+
export declare function rateLimiterMiddleware(): RequestHandler;
|
|
4
|
+
export declare function getRateLimitStats(): {
|
|
5
|
+
totalEntries: number;
|
|
6
|
+
entries: Array<{
|
|
7
|
+
key: string;
|
|
8
|
+
count: number;
|
|
9
|
+
resetAt: Date;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stopCleanup = stopCleanup;
|
|
4
|
+
exports.rateLimiterMiddleware = rateLimiterMiddleware;
|
|
5
|
+
exports.getRateLimitStats = getRateLimitStats;
|
|
6
|
+
const config_1 = require("../config");
|
|
7
|
+
const logger_1 = require("../logger");
|
|
8
|
+
const rateLimitStore = new Map();
|
|
9
|
+
const CLEANUP_INTERVAL_MS = 60000;
|
|
10
|
+
let cleanupInterval = null;
|
|
11
|
+
function startCleanup() {
|
|
12
|
+
if (cleanupInterval)
|
|
13
|
+
return;
|
|
14
|
+
cleanupInterval = setInterval(() => {
|
|
15
|
+
const now = Date.now();
|
|
16
|
+
let cleaned = 0;
|
|
17
|
+
for (const [key, entry] of rateLimitStore.entries()) {
|
|
18
|
+
if (entry.resetAt <= now) {
|
|
19
|
+
rateLimitStore.delete(key);
|
|
20
|
+
cleaned++;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (cleaned > 0) {
|
|
24
|
+
logger_1.logger.debug(`Rate limiter cleanup: removed ${cleaned} expired entries`);
|
|
25
|
+
}
|
|
26
|
+
}, CLEANUP_INTERVAL_MS);
|
|
27
|
+
cleanupInterval.unref();
|
|
28
|
+
}
|
|
29
|
+
function stopCleanup() {
|
|
30
|
+
if (cleanupInterval) {
|
|
31
|
+
clearInterval(cleanupInterval);
|
|
32
|
+
cleanupInterval = null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function getIpAddress(req) {
|
|
36
|
+
return req.ip ?? req.socket.remoteAddress ?? "unknown";
|
|
37
|
+
}
|
|
38
|
+
function isAuthenticated(req, res) {
|
|
39
|
+
const oauthSessionId = res.locals.oauthSessionId;
|
|
40
|
+
if (oauthSessionId) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const mcpSessionId = req.headers["mcp-session-id"];
|
|
44
|
+
if (mcpSessionId) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
function checkRateLimit(key, windowMs, maxRequests) {
|
|
50
|
+
const now = Date.now();
|
|
51
|
+
let entry = rateLimitStore.get(key);
|
|
52
|
+
if (!entry || entry.resetAt <= now) {
|
|
53
|
+
entry = {
|
|
54
|
+
count: 0,
|
|
55
|
+
resetAt: now + windowMs,
|
|
56
|
+
};
|
|
57
|
+
rateLimitStore.set(key, entry);
|
|
58
|
+
}
|
|
59
|
+
const allowed = entry.count < maxRequests;
|
|
60
|
+
if (allowed) {
|
|
61
|
+
entry.count++;
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
allowed,
|
|
65
|
+
remaining: Math.max(0, maxRequests - entry.count),
|
|
66
|
+
resetAt: entry.resetAt,
|
|
67
|
+
total: maxRequests,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function setRateLimitHeaders(res, info) {
|
|
71
|
+
res.set("X-RateLimit-Limit", info.total.toString());
|
|
72
|
+
res.set("X-RateLimit-Remaining", info.remaining.toString());
|
|
73
|
+
res.set("X-RateLimit-Reset", Math.ceil(info.resetAt / 1000).toString());
|
|
74
|
+
}
|
|
75
|
+
function rateLimiterMiddleware() {
|
|
76
|
+
startCleanup();
|
|
77
|
+
return (req, res, next) => {
|
|
78
|
+
if (req.path === "/health") {
|
|
79
|
+
next();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const authenticated = isAuthenticated(req, res);
|
|
83
|
+
if (authenticated) {
|
|
84
|
+
if (!config_1.RATE_LIMIT_SESSION_ENABLED) {
|
|
85
|
+
next();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const sessionId = res.locals.oauthSessionId || req.headers["mcp-session-id"];
|
|
89
|
+
const key = `session:${sessionId}`;
|
|
90
|
+
const info = checkRateLimit(key, config_1.RATE_LIMIT_SESSION_WINDOW_MS, config_1.RATE_LIMIT_SESSION_MAX_REQUESTS);
|
|
91
|
+
setRateLimitHeaders(res, info);
|
|
92
|
+
if (!info.allowed) {
|
|
93
|
+
const retryAfter = Math.ceil((info.resetAt - Date.now()) / 1000);
|
|
94
|
+
logger_1.logger.warn(`Session rate limit exceeded for ${sessionId}`);
|
|
95
|
+
res.set("Retry-After", retryAfter.toString());
|
|
96
|
+
res.status(429).json({
|
|
97
|
+
error: "Too Many Requests",
|
|
98
|
+
message: "Session rate limit exceeded. Please slow down your requests.",
|
|
99
|
+
retryAfter,
|
|
100
|
+
limit: info.total,
|
|
101
|
+
remaining: info.remaining,
|
|
102
|
+
resetAt: new Date(info.resetAt).toISOString(),
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
next();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (!config_1.RATE_LIMIT_IP_ENABLED) {
|
|
110
|
+
next();
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const ip = getIpAddress(req);
|
|
114
|
+
const key = `ip:${ip}`;
|
|
115
|
+
const info = checkRateLimit(key, config_1.RATE_LIMIT_IP_WINDOW_MS, config_1.RATE_LIMIT_IP_MAX_REQUESTS);
|
|
116
|
+
setRateLimitHeaders(res, info);
|
|
117
|
+
if (!info.allowed) {
|
|
118
|
+
const retryAfter = Math.ceil((info.resetAt - Date.now()) / 1000);
|
|
119
|
+
logger_1.logger.warn(`IP rate limit exceeded for ${ip}`);
|
|
120
|
+
res.set("Retry-After", retryAfter.toString());
|
|
121
|
+
res.status(429).json({
|
|
122
|
+
error: "Too Many Requests",
|
|
123
|
+
message: "Rate limit exceeded. Please authenticate or slow down your requests.",
|
|
124
|
+
retryAfter,
|
|
125
|
+
limit: info.total,
|
|
126
|
+
remaining: info.remaining,
|
|
127
|
+
resetAt: new Date(info.resetAt).toISOString(),
|
|
128
|
+
});
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
next();
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function getRateLimitStats() {
|
|
135
|
+
const entries = Array.from(rateLimitStore.entries()).map(([key, entry]) => ({
|
|
136
|
+
key,
|
|
137
|
+
count: entry.count,
|
|
138
|
+
resetAt: new Date(entry.resetAt),
|
|
139
|
+
}));
|
|
140
|
+
return {
|
|
141
|
+
totalEntries: rateLimitStore.size,
|
|
142
|
+
entries,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/middleware/rate-limiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const OAuthConfigSchema: z.ZodObject<{
|
|
3
|
+
enabled: z.ZodLiteral<true>;
|
|
4
|
+
sessionSecret: z.ZodString;
|
|
5
|
+
gitlabClientId: z.ZodString;
|
|
6
|
+
gitlabClientSecret: z.ZodOptional<z.ZodString>;
|
|
7
|
+
gitlabScopes: z.ZodDefault<z.ZodString>;
|
|
8
|
+
tokenTtl: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
refreshTokenTtl: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
devicePollInterval: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
deviceTimeout: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export type OAuthConfig = z.infer<typeof OAuthConfigSchema>;
|
|
14
|
+
export declare function loadOAuthConfig(): OAuthConfig | null;
|
|
15
|
+
export declare function validateStaticConfig(): void;
|
|
16
|
+
export declare function isOAuthEnabled(): boolean;
|
|
17
|
+
export declare function resetOAuthConfigCache(): void;
|
|
18
|
+
export declare function getAuthModeDescription(): string;
|
|
19
|
+
export {};
|