@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
|
@@ -1,778 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.coreToolRegistry = void 0;
|
|
4
|
-
exports.getCoreReadOnlyToolNames = getCoreReadOnlyToolNames;
|
|
5
|
-
exports.getCoreToolDefinitions = getCoreToolDefinitions;
|
|
6
|
-
exports.getFilteredCoreTools = getFilteredCoreTools;
|
|
7
|
-
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
8
|
-
const schema_readonly_1 = require("./schema-readonly");
|
|
9
|
-
const schema_1 = require("./schema");
|
|
10
|
-
const fetch_1 = require("../../utils/fetch");
|
|
11
|
-
const projectIdentifier_1 = require("../../utils/projectIdentifier");
|
|
12
|
-
const smart_user_search_1 = require("../../utils/smart-user-search");
|
|
13
|
-
const idConversion_1 = require("../../utils/idConversion");
|
|
14
|
-
exports.coreToolRegistry = new Map([
|
|
15
|
-
[
|
|
16
|
-
"search_repositories",
|
|
17
|
-
{
|
|
18
|
-
name: "search_repositories",
|
|
19
|
-
description: "DISCOVER projects across ALL of GitLab using search criteria. Use when: You DON'T know the project name/path, Looking for ANY project (not just yours), Searching by language/keywords/topics. Use with_programming_language parameter for efficient language filtering. See also: Use list_projects for YOUR accessible projects only.",
|
|
20
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.SearchRepositoriesSchema),
|
|
21
|
-
handler: async (args) => {
|
|
22
|
-
const options = schema_readonly_1.SearchRepositoriesSchema.parse(args);
|
|
23
|
-
const { q, with_programming_language, ...otherOptions } = options;
|
|
24
|
-
const queryParams = new URLSearchParams();
|
|
25
|
-
let finalLanguage = with_programming_language;
|
|
26
|
-
let finalSearchTerms = q ?? "";
|
|
27
|
-
if (q && !with_programming_language) {
|
|
28
|
-
const languageMatch = q.match(/language:(\w+)/);
|
|
29
|
-
if (languageMatch) {
|
|
30
|
-
finalLanguage = languageMatch[1];
|
|
31
|
-
finalSearchTerms = q.replace(/language:\w+/g, "").trim();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (q) {
|
|
35
|
-
const userMatch = q.match(/user:(\w+)/);
|
|
36
|
-
if (userMatch) {
|
|
37
|
-
queryParams.set("owned", "true");
|
|
38
|
-
finalSearchTerms = finalSearchTerms.replace(/user:\w+/g, "").trim();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (q) {
|
|
42
|
-
const topicMatches = q.match(/topic:(\w+)/g);
|
|
43
|
-
if (topicMatches) {
|
|
44
|
-
const topics = topicMatches.map(match => match.replace("topic:", ""));
|
|
45
|
-
queryParams.set("topic", topics.join(","));
|
|
46
|
-
finalSearchTerms = finalSearchTerms.replace(/topic:\w+/g, "").trim();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (finalLanguage) {
|
|
50
|
-
queryParams.set("with_programming_language", finalLanguage);
|
|
51
|
-
}
|
|
52
|
-
if (finalSearchTerms) {
|
|
53
|
-
queryParams.set("search", finalSearchTerms.replace(/\s+/g, "+"));
|
|
54
|
-
}
|
|
55
|
-
Object.entries(otherOptions).forEach(([key, value]) => {
|
|
56
|
-
if (value !== undefined) {
|
|
57
|
-
queryParams.set(key, String(value));
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
queryParams.set("active", "true");
|
|
61
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects?${queryParams}`;
|
|
62
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
63
|
-
headers: {
|
|
64
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
if (!response.ok) {
|
|
68
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
69
|
-
}
|
|
70
|
-
const projects = await response.json();
|
|
71
|
-
const minimalProjects = projects.map((project) => ({
|
|
72
|
-
id: project.id,
|
|
73
|
-
name: project.name,
|
|
74
|
-
path_with_namespace: project.path_with_namespace,
|
|
75
|
-
description: project.description,
|
|
76
|
-
}));
|
|
77
|
-
return minimalProjects;
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
[
|
|
82
|
-
"list_projects",
|
|
83
|
-
{
|
|
84
|
-
name: "list_projects",
|
|
85
|
-
description: "List GitLab projects with flexible scoping. DEFAULT (no group_id): Lists YOUR accessible projects across GitLab (owned/member/starred). Use for: browsing your projects, finding your work, managing personal project lists. GROUP SCOPE (with group_id): Lists all projects within a specific group/organization. Use for: exploring team structure, finding organizational projects, auditing group resources. Parameters automatically validate based on scope.",
|
|
86
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListProjectsSchema),
|
|
87
|
-
handler: async (args) => {
|
|
88
|
-
const options = schema_readonly_1.ListProjectsSchema.parse(args);
|
|
89
|
-
const { group_id, ...otherOptions } = options;
|
|
90
|
-
if (group_id) {
|
|
91
|
-
const userOnlyParams = [
|
|
92
|
-
"active",
|
|
93
|
-
"imported",
|
|
94
|
-
"membership",
|
|
95
|
-
"statistics",
|
|
96
|
-
"with_programming_language",
|
|
97
|
-
"wiki_checksum_failed",
|
|
98
|
-
"repository_checksum_failed",
|
|
99
|
-
"id_after",
|
|
100
|
-
"id_before",
|
|
101
|
-
"last_activity_after",
|
|
102
|
-
"last_activity_before",
|
|
103
|
-
"marked_for_deletion_on",
|
|
104
|
-
"repository_storage",
|
|
105
|
-
];
|
|
106
|
-
const invalidParams = userOnlyParams.filter(param => otherOptions[param] !== undefined);
|
|
107
|
-
if (invalidParams.length > 0) {
|
|
108
|
-
throw new Error(`Invalid parameters for group scope: ${invalidParams.join(", ")}. These parameters are only valid without group_id (user scope).`);
|
|
109
|
-
}
|
|
110
|
-
const queryParams = new URLSearchParams();
|
|
111
|
-
const groupDefaults = {
|
|
112
|
-
order_by: "created_at",
|
|
113
|
-
sort: "desc",
|
|
114
|
-
simple: true,
|
|
115
|
-
per_page: 20,
|
|
116
|
-
};
|
|
117
|
-
const finalParameters = { ...groupDefaults, ...otherOptions };
|
|
118
|
-
Object.entries(finalParameters).forEach(([key, value]) => {
|
|
119
|
-
if (value !== undefined) {
|
|
120
|
-
queryParams.set(key, String(value));
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/groups/${encodeURIComponent(group_id)}/projects?${queryParams}`;
|
|
124
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
125
|
-
headers: {
|
|
126
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
if (!response.ok) {
|
|
130
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
131
|
-
}
|
|
132
|
-
const projects = await response.json();
|
|
133
|
-
return (0, idConversion_1.cleanGidsFromObject)(projects);
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
const groupOnlyParams = [
|
|
137
|
-
"include_subgroups",
|
|
138
|
-
"with_shared",
|
|
139
|
-
"with_security_reports",
|
|
140
|
-
"topic",
|
|
141
|
-
"with_issues_enabled",
|
|
142
|
-
"with_merge_requests_enabled",
|
|
143
|
-
];
|
|
144
|
-
const invalidParams = groupOnlyParams.filter(param => otherOptions[param] !== undefined);
|
|
145
|
-
if (invalidParams.length > 0) {
|
|
146
|
-
throw new Error(`Invalid parameters for user scope: ${invalidParams.join(", ")}. These parameters require group_id (group scope).`);
|
|
147
|
-
}
|
|
148
|
-
const queryParams = new URLSearchParams();
|
|
149
|
-
const defaults = {
|
|
150
|
-
active: true,
|
|
151
|
-
order_by: "created_at",
|
|
152
|
-
sort: "desc",
|
|
153
|
-
simple: true,
|
|
154
|
-
per_page: 20,
|
|
155
|
-
};
|
|
156
|
-
const finalParameters = { ...defaults, ...otherOptions };
|
|
157
|
-
Object.entries(finalParameters).forEach(([key, value]) => {
|
|
158
|
-
if (value !== undefined) {
|
|
159
|
-
queryParams.set(key, String(value));
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects?${queryParams}`;
|
|
163
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
164
|
-
headers: {
|
|
165
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
if (!response.ok) {
|
|
169
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
170
|
-
}
|
|
171
|
-
const projects = await response.json();
|
|
172
|
-
return (0, idConversion_1.cleanGidsFromObject)(projects);
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
],
|
|
177
|
-
[
|
|
178
|
-
"list_namespaces",
|
|
179
|
-
{
|
|
180
|
-
name: "list_namespaces",
|
|
181
|
-
description: "BROWSE: List GitLab namespaces (groups and user namespaces) accessible to you. Use when: Discovering available groups for project creation, Browsing organizational structure, Finding where to create/fork projects. Returns both user and group namespaces. See also: get_namespace for specific namespace details.",
|
|
182
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListNamespacesSchema),
|
|
183
|
-
handler: async (args) => {
|
|
184
|
-
const options = schema_readonly_1.ListNamespacesSchema.parse(args);
|
|
185
|
-
const queryParams = new URLSearchParams();
|
|
186
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
187
|
-
if (value !== undefined) {
|
|
188
|
-
queryParams.set(key, String(value));
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/namespaces?${queryParams}`;
|
|
192
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
193
|
-
headers: {
|
|
194
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
195
|
-
},
|
|
196
|
-
});
|
|
197
|
-
if (!response.ok) {
|
|
198
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
199
|
-
}
|
|
200
|
-
const namespaces = await response.json();
|
|
201
|
-
return (0, idConversion_1.cleanGidsFromObject)(namespaces);
|
|
202
|
-
},
|
|
203
|
-
},
|
|
204
|
-
],
|
|
205
|
-
[
|
|
206
|
-
"get_users",
|
|
207
|
-
{
|
|
208
|
-
name: "get_users",
|
|
209
|
-
description: 'FIND USERS: Search and retrieve GitLab users with intelligent pattern detection. RECOMMENDED: Use "search" parameter for most queries - automatically detects emails, usernames, or names with automatic transliteration and multi-phase fallback search. ADVANCED: Use "username" or "public_email" for exact matches when you need precise control. Supports filtering by active status, creation date, and user type (human/bot).',
|
|
210
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetUsersSchema),
|
|
211
|
-
handler: async (args) => {
|
|
212
|
-
const options = schema_readonly_1.GetUsersSchema.parse(args);
|
|
213
|
-
const { smart_search, search, username, public_email, ...otherParams } = options;
|
|
214
|
-
const hasUsernameOrEmail = Boolean(username) || Boolean(public_email);
|
|
215
|
-
const hasOnlySearch = Boolean(search) && !hasUsernameOrEmail;
|
|
216
|
-
const shouldUseSmartSearch = smart_search === false ? false : smart_search === true || hasOnlySearch;
|
|
217
|
-
if (shouldUseSmartSearch && (search || username || public_email)) {
|
|
218
|
-
const query = search ?? username ?? public_email ?? "";
|
|
219
|
-
const additionalParams = {};
|
|
220
|
-
Object.entries(otherParams).forEach(([key, value]) => {
|
|
221
|
-
if (value !== undefined && key !== "smart_search") {
|
|
222
|
-
additionalParams[key] = value;
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
const result = await (0, smart_user_search_1.smartUserSearch)(query, additionalParams);
|
|
226
|
-
return result;
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
const queryParams = new URLSearchParams();
|
|
230
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
231
|
-
if (value !== undefined && key !== "smart_search") {
|
|
232
|
-
queryParams.set(key, String(value));
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/users?${queryParams}`;
|
|
236
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
237
|
-
headers: {
|
|
238
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
239
|
-
},
|
|
240
|
-
});
|
|
241
|
-
if (!response.ok) {
|
|
242
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
243
|
-
}
|
|
244
|
-
const users = await response.json();
|
|
245
|
-
return (0, idConversion_1.cleanGidsFromObject)(users);
|
|
246
|
-
}
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
],
|
|
250
|
-
[
|
|
251
|
-
"get_project",
|
|
252
|
-
{
|
|
253
|
-
name: "get_project",
|
|
254
|
-
description: "GET DETAILS: Retrieve comprehensive project information including settings and metadata. Use when: Need complete project details, Checking project configuration, Getting project statistics. Accepts either project_id (numeric ID or URL-encoded path) or namespace (group/project format). See also: list_projects to find projects first.",
|
|
255
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetProjectSchema),
|
|
256
|
-
handler: async (args) => {
|
|
257
|
-
const options = schema_readonly_1.GetProjectSchema.parse(args);
|
|
258
|
-
const { project_id, namespace } = options;
|
|
259
|
-
const projectIdentifier = namespace ?? project_id;
|
|
260
|
-
if (!projectIdentifier) {
|
|
261
|
-
throw new Error("Either project_id or namespace must be provided");
|
|
262
|
-
}
|
|
263
|
-
const queryParams = new URLSearchParams();
|
|
264
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
265
|
-
if (value !== undefined && key !== "project_id" && key !== "namespace") {
|
|
266
|
-
queryParams.set(key, String(value));
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${(0, projectIdentifier_1.normalizeProjectId)(projectIdentifier)}?${queryParams}`;
|
|
270
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
271
|
-
headers: {
|
|
272
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
273
|
-
},
|
|
274
|
-
});
|
|
275
|
-
if (!response.ok) {
|
|
276
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
277
|
-
}
|
|
278
|
-
const project = await response.json();
|
|
279
|
-
return (0, idConversion_1.cleanGidsFromObject)(project);
|
|
280
|
-
},
|
|
281
|
-
},
|
|
282
|
-
],
|
|
283
|
-
[
|
|
284
|
-
"get_namespace",
|
|
285
|
-
{
|
|
286
|
-
name: "get_namespace",
|
|
287
|
-
description: "GET DETAILS: Retrieve comprehensive namespace information (group or user). Use when: Need complete namespace metadata, Checking namespace settings, Getting storage statistics. Requires namespace ID or URL-encoded path. See also: list_namespaces to browse all namespaces.",
|
|
288
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetNamespaceSchema),
|
|
289
|
-
handler: async (args) => {
|
|
290
|
-
const options = schema_readonly_1.GetNamespaceSchema.parse(args);
|
|
291
|
-
const { namespace_id } = options;
|
|
292
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/namespaces/${encodeURIComponent(namespace_id)}`;
|
|
293
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
294
|
-
headers: {
|
|
295
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
296
|
-
},
|
|
297
|
-
});
|
|
298
|
-
if (!response.ok) {
|
|
299
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
300
|
-
}
|
|
301
|
-
const namespace = await response.json();
|
|
302
|
-
return (0, idConversion_1.cleanGidsFromObject)(namespace);
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
|
-
],
|
|
306
|
-
[
|
|
307
|
-
"verify_namespace",
|
|
308
|
-
{
|
|
309
|
-
name: "verify_namespace",
|
|
310
|
-
description: "CHECK EXISTS: Verify if a namespace (group or user) exists and is accessible. ONLY works with namespaces - NOT project paths. Use when: Checking group/user namespace availability, Validating group references before creation, Testing namespace access permissions. For projects use get_project instead. Returns exists=true/false with namespace details if found.",
|
|
311
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.VerifyNamespaceSchema),
|
|
312
|
-
handler: async (args) => {
|
|
313
|
-
const options = schema_readonly_1.VerifyNamespaceSchema.parse(args);
|
|
314
|
-
const { namespace } = options;
|
|
315
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/namespaces/${encodeURIComponent(namespace)}`;
|
|
316
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
317
|
-
headers: {
|
|
318
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
319
|
-
},
|
|
320
|
-
});
|
|
321
|
-
return {
|
|
322
|
-
exists: response.ok,
|
|
323
|
-
status: response.status,
|
|
324
|
-
namespace: namespace,
|
|
325
|
-
data: response.ok ? await response.json() : null,
|
|
326
|
-
};
|
|
327
|
-
},
|
|
328
|
-
},
|
|
329
|
-
],
|
|
330
|
-
[
|
|
331
|
-
"list_project_members",
|
|
332
|
-
{
|
|
333
|
-
name: "list_project_members",
|
|
334
|
-
description: "TEAM MEMBERS: List all members of a project with their access levels. Use when: Auditing project access, Finding collaborators, Checking user permissions. Shows access levels: 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner. Supports username filtering.",
|
|
335
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListProjectMembersSchema),
|
|
336
|
-
handler: async (args) => {
|
|
337
|
-
const options = schema_readonly_1.ListProjectMembersSchema.parse(args);
|
|
338
|
-
const { project_id } = options;
|
|
339
|
-
const queryParams = new URLSearchParams();
|
|
340
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
341
|
-
if (value !== undefined && key !== "project_id") {
|
|
342
|
-
queryParams.set(key, String(value));
|
|
343
|
-
}
|
|
344
|
-
});
|
|
345
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/members?${queryParams}`;
|
|
346
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
347
|
-
headers: {
|
|
348
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
349
|
-
},
|
|
350
|
-
});
|
|
351
|
-
if (!response.ok) {
|
|
352
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
353
|
-
}
|
|
354
|
-
const members = await response.json();
|
|
355
|
-
return (0, idConversion_1.cleanGidsFromObject)(members);
|
|
356
|
-
},
|
|
357
|
-
},
|
|
358
|
-
],
|
|
359
|
-
[
|
|
360
|
-
"list_commits",
|
|
361
|
-
{
|
|
362
|
-
name: "list_commits",
|
|
363
|
-
description: "HISTORY: List repository commit history with filtering. Use when: Analyzing project history, Finding commits by author/date, Tracking file changes. Supports date ranges (since/until), author filter, and specific file paths. See also: get_commit for specific commit details.",
|
|
364
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListCommitsSchema),
|
|
365
|
-
handler: async (args) => {
|
|
366
|
-
const options = schema_readonly_1.ListCommitsSchema.parse(args);
|
|
367
|
-
const { project_id } = options;
|
|
368
|
-
const queryParams = new URLSearchParams();
|
|
369
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
370
|
-
if (value !== undefined && key !== "project_id") {
|
|
371
|
-
queryParams.set(key, String(value));
|
|
372
|
-
}
|
|
373
|
-
});
|
|
374
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/repository/commits?${queryParams}`;
|
|
375
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
376
|
-
headers: {
|
|
377
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
378
|
-
},
|
|
379
|
-
});
|
|
380
|
-
if (!response.ok) {
|
|
381
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
382
|
-
}
|
|
383
|
-
const commits = await response.json();
|
|
384
|
-
return commits;
|
|
385
|
-
},
|
|
386
|
-
},
|
|
387
|
-
],
|
|
388
|
-
[
|
|
389
|
-
"get_commit",
|
|
390
|
-
{
|
|
391
|
-
name: "get_commit",
|
|
392
|
-
description: "COMMIT DETAILS: Get comprehensive information about a specific commit. Use when: Inspecting commit metadata, Reviewing change statistics, Getting commit message/author. Shows additions/deletions per file with stats=true. See also: get_commit_diff for actual code changes.",
|
|
393
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetCommitSchema),
|
|
394
|
-
handler: async (args) => {
|
|
395
|
-
const options = schema_readonly_1.GetCommitSchema.parse(args);
|
|
396
|
-
const { project_id, commit_sha } = options;
|
|
397
|
-
const queryParams = new URLSearchParams();
|
|
398
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
399
|
-
if (value !== undefined && key !== "project_id" && key !== "commit_sha") {
|
|
400
|
-
queryParams.set(key, String(value));
|
|
401
|
-
}
|
|
402
|
-
});
|
|
403
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/repository/commits/${encodeURIComponent(commit_sha)}?${queryParams}`;
|
|
404
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
405
|
-
headers: {
|
|
406
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
407
|
-
},
|
|
408
|
-
});
|
|
409
|
-
if (!response.ok) {
|
|
410
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
411
|
-
}
|
|
412
|
-
const commit = await response.json();
|
|
413
|
-
return commit;
|
|
414
|
-
},
|
|
415
|
-
},
|
|
416
|
-
],
|
|
417
|
-
[
|
|
418
|
-
"get_commit_diff",
|
|
419
|
-
{
|
|
420
|
-
name: "get_commit_diff",
|
|
421
|
-
description: "COMMIT DIFF: Get actual code changes from a commit. Use when: Reviewing code modifications, Generating patches, Analyzing line-by-line changes. Returns unified diff format (git diff style). See also: get_commit for metadata without diff.",
|
|
422
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetCommitDiffSchema),
|
|
423
|
-
handler: async (args) => {
|
|
424
|
-
const options = schema_readonly_1.GetCommitDiffSchema.parse(args);
|
|
425
|
-
const { project_id, commit_sha } = options;
|
|
426
|
-
const queryParams = new URLSearchParams();
|
|
427
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
428
|
-
if (value !== undefined && key !== "project_id" && key !== "commit_sha") {
|
|
429
|
-
queryParams.set(key, String(value));
|
|
430
|
-
}
|
|
431
|
-
});
|
|
432
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/repository/commits/${encodeURIComponent(commit_sha)}/diff?${queryParams}`;
|
|
433
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
434
|
-
headers: {
|
|
435
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
436
|
-
},
|
|
437
|
-
});
|
|
438
|
-
if (!response.ok) {
|
|
439
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
440
|
-
}
|
|
441
|
-
const diff = await response.json();
|
|
442
|
-
return diff;
|
|
443
|
-
},
|
|
444
|
-
},
|
|
445
|
-
],
|
|
446
|
-
[
|
|
447
|
-
"list_group_iterations",
|
|
448
|
-
{
|
|
449
|
-
name: "list_group_iterations",
|
|
450
|
-
description: "SPRINTS: List iterations/sprints for agile planning (Premium feature). Use when: Viewing sprint schedules, Tracking iteration progress, Planning releases. Filter by state: current=active sprint, upcoming=future, closed=completed. Requires GitLab Premium or higher.",
|
|
451
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListGroupIterationsSchema),
|
|
452
|
-
handler: async (args) => {
|
|
453
|
-
const options = schema_readonly_1.ListGroupIterationsSchema.parse(args);
|
|
454
|
-
const { group_id } = options;
|
|
455
|
-
const queryParams = new URLSearchParams();
|
|
456
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
457
|
-
if (value !== undefined && key !== "group_id") {
|
|
458
|
-
queryParams.set(key, String(value));
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/groups/${encodeURIComponent(group_id)}/iterations?${queryParams}`;
|
|
462
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
463
|
-
headers: {
|
|
464
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
465
|
-
},
|
|
466
|
-
});
|
|
467
|
-
if (!response.ok) {
|
|
468
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
469
|
-
}
|
|
470
|
-
const iterations = await response.json();
|
|
471
|
-
return iterations;
|
|
472
|
-
},
|
|
473
|
-
},
|
|
474
|
-
],
|
|
475
|
-
[
|
|
476
|
-
"download_attachment",
|
|
477
|
-
{
|
|
478
|
-
name: "download_attachment",
|
|
479
|
-
description: "DOWNLOAD: Retrieve uploaded file attachments from issues/MRs/wikis. Use when: Downloading images from issues, Getting attached documents, Retrieving uploaded files. Requires secret token and filename from the attachment URL (/uploads/[secret]/[filename]).",
|
|
480
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.DownloadAttachmentSchema),
|
|
481
|
-
handler: async (args) => {
|
|
482
|
-
const options = schema_readonly_1.DownloadAttachmentSchema.parse(args);
|
|
483
|
-
const { project_id, secret, filename } = options;
|
|
484
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/uploads/${secret}/${filename}`;
|
|
485
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
486
|
-
headers: {
|
|
487
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
488
|
-
},
|
|
489
|
-
});
|
|
490
|
-
if (!response.ok) {
|
|
491
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
492
|
-
}
|
|
493
|
-
const attachment = await response.arrayBuffer();
|
|
494
|
-
return {
|
|
495
|
-
filename,
|
|
496
|
-
content: Buffer.from(attachment).toString("base64"),
|
|
497
|
-
contentType: response.headers.get("content-type") ?? "application/octet-stream",
|
|
498
|
-
};
|
|
499
|
-
},
|
|
500
|
-
},
|
|
501
|
-
],
|
|
502
|
-
[
|
|
503
|
-
"list_events",
|
|
504
|
-
{
|
|
505
|
-
name: "list_events",
|
|
506
|
-
description: "USER ACTIVITY: List YOUR activity events across all projects. Use when: Tracking your contributions, Auditing your actions, Reviewing your history. Date format: YYYY-MM-DD only (not timestamps). Filters: action=created/updated/pushed, target_type=issue/merge_request.",
|
|
507
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.ListEventsSchema),
|
|
508
|
-
handler: async (args) => {
|
|
509
|
-
const options = schema_readonly_1.ListEventsSchema.parse(args);
|
|
510
|
-
const queryParams = new URLSearchParams();
|
|
511
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
512
|
-
if (value !== undefined) {
|
|
513
|
-
queryParams.set(key, String(value));
|
|
514
|
-
}
|
|
515
|
-
});
|
|
516
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/events?${queryParams}`;
|
|
517
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
518
|
-
headers: {
|
|
519
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
520
|
-
},
|
|
521
|
-
});
|
|
522
|
-
if (!response.ok) {
|
|
523
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
524
|
-
}
|
|
525
|
-
const events = await response.json();
|
|
526
|
-
return events;
|
|
527
|
-
},
|
|
528
|
-
},
|
|
529
|
-
],
|
|
530
|
-
[
|
|
531
|
-
"get_project_events",
|
|
532
|
-
{
|
|
533
|
-
name: "get_project_events",
|
|
534
|
-
description: "PROJECT ACTIVITY: List all events within a specific project. Use when: Monitoring project activity, Tracking team contributions, Auditing project changes. Date format: YYYY-MM-DD only (not timestamps). Shows: commits, issues, MRs, member changes.",
|
|
535
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_readonly_1.GetProjectEventsSchema),
|
|
536
|
-
handler: async (args) => {
|
|
537
|
-
const options = schema_readonly_1.GetProjectEventsSchema.parse(args);
|
|
538
|
-
const { project_id } = options;
|
|
539
|
-
const queryParams = new URLSearchParams();
|
|
540
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
541
|
-
if (value !== undefined && key !== "project_id") {
|
|
542
|
-
queryParams.set(key, String(value));
|
|
543
|
-
}
|
|
544
|
-
});
|
|
545
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(project_id)}/events?${queryParams}`;
|
|
546
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
547
|
-
headers: {
|
|
548
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
549
|
-
},
|
|
550
|
-
});
|
|
551
|
-
if (!response.ok) {
|
|
552
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
553
|
-
}
|
|
554
|
-
const events = await response.json();
|
|
555
|
-
return events;
|
|
556
|
-
},
|
|
557
|
-
},
|
|
558
|
-
],
|
|
559
|
-
[
|
|
560
|
-
"create_repository",
|
|
561
|
-
{
|
|
562
|
-
name: "create_repository",
|
|
563
|
-
description: "CREATE NEW: Initialize a new GitLab project/repository with automatic validation. Features: (1) Automatically checks if project already exists before creation, (2) Resolves namespace paths to IDs automatically, (3) Generates URL-safe project path from name, (4) Returns detailed validation information. Use when: Starting new projects, Setting up repository structure, Automating project creation. Creates in your namespace by default if no namespace specified.",
|
|
564
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_1.CreateRepositorySchema),
|
|
565
|
-
handler: async (args) => {
|
|
566
|
-
const options = schema_1.CreateRepositorySchema.parse(args);
|
|
567
|
-
const { namespace, name, ...otherOptions } = options;
|
|
568
|
-
let namespaceId;
|
|
569
|
-
let resolvedNamespace = null;
|
|
570
|
-
if (namespace) {
|
|
571
|
-
const namespaceApiUrl = `${process.env.GITLAB_API_URL}/api/v4/namespaces/${encodeURIComponent(namespace)}`;
|
|
572
|
-
const namespaceResponse = await (0, fetch_1.enhancedFetch)(namespaceApiUrl, {
|
|
573
|
-
headers: {
|
|
574
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
575
|
-
},
|
|
576
|
-
});
|
|
577
|
-
if (namespaceResponse.ok) {
|
|
578
|
-
resolvedNamespace = (await namespaceResponse.json());
|
|
579
|
-
namespaceId = String(resolvedNamespace.id);
|
|
580
|
-
}
|
|
581
|
-
else {
|
|
582
|
-
throw new Error(`Namespace '${namespace}' not found or not accessible`);
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
const targetNamespacePath = resolvedNamespace
|
|
586
|
-
? resolvedNamespace.full_path
|
|
587
|
-
: "current-user";
|
|
588
|
-
const projectPath = `${targetNamespacePath}/${name}`;
|
|
589
|
-
const checkProjectUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(projectPath)}`;
|
|
590
|
-
const checkResponse = await (0, fetch_1.enhancedFetch)(checkProjectUrl, {
|
|
591
|
-
headers: {
|
|
592
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
593
|
-
},
|
|
594
|
-
});
|
|
595
|
-
if (checkResponse.ok) {
|
|
596
|
-
const existingProject = (await checkResponse.json());
|
|
597
|
-
throw new Error(`Project '${projectPath}' already exists (ID: ${existingProject.id}). Use a different name or update the existing project.`);
|
|
598
|
-
}
|
|
599
|
-
const body = new URLSearchParams();
|
|
600
|
-
body.set("name", name);
|
|
601
|
-
const generatedPath = name
|
|
602
|
-
.toLowerCase()
|
|
603
|
-
.replace(/[^a-z0-9-]/g, "-")
|
|
604
|
-
.replace(/-+/g, "-")
|
|
605
|
-
.replace(/^-|-$/g, "");
|
|
606
|
-
body.set("path", generatedPath);
|
|
607
|
-
if (namespaceId) {
|
|
608
|
-
body.set("namespace_id", namespaceId);
|
|
609
|
-
}
|
|
610
|
-
Object.entries(otherOptions).forEach(([key, value]) => {
|
|
611
|
-
if (value !== undefined) {
|
|
612
|
-
if (Array.isArray(value)) {
|
|
613
|
-
body.set(key, value.join(","));
|
|
614
|
-
}
|
|
615
|
-
else {
|
|
616
|
-
body.set(key, String(value));
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
});
|
|
620
|
-
const createApiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects`;
|
|
621
|
-
const createResponse = await (0, fetch_1.enhancedFetch)(createApiUrl, {
|
|
622
|
-
method: "POST",
|
|
623
|
-
headers: {
|
|
624
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
625
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
626
|
-
},
|
|
627
|
-
body: body.toString(),
|
|
628
|
-
});
|
|
629
|
-
if (!createResponse.ok) {
|
|
630
|
-
throw new Error(`GitLab API error: ${createResponse.status} ${createResponse.statusText}`);
|
|
631
|
-
}
|
|
632
|
-
const project = await createResponse.json();
|
|
633
|
-
return {
|
|
634
|
-
...project,
|
|
635
|
-
validation: {
|
|
636
|
-
namespace_resolved: namespace ? `${namespace} → ${namespaceId}` : "current-user",
|
|
637
|
-
project_name_available: true,
|
|
638
|
-
created_in_expected_namespace: !namespace ||
|
|
639
|
-
project.namespace.full_path ===
|
|
640
|
-
resolvedNamespace?.full_path,
|
|
641
|
-
generated_path: generatedPath,
|
|
642
|
-
},
|
|
643
|
-
};
|
|
644
|
-
},
|
|
645
|
-
},
|
|
646
|
-
],
|
|
647
|
-
[
|
|
648
|
-
"fork_repository",
|
|
649
|
-
{
|
|
650
|
-
name: "fork_repository",
|
|
651
|
-
description: "FORK: Create your own copy of an existing project. Use when: Contributing to other projects, Creating experimental versions, Maintaining custom forks. Preserves fork relationship for MRs back to parent. Target namespace optional (defaults to your namespace).",
|
|
652
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_1.ForkRepositorySchema),
|
|
653
|
-
handler: async (args) => {
|
|
654
|
-
const options = schema_1.ForkRepositorySchema.parse(args);
|
|
655
|
-
const body = new URLSearchParams();
|
|
656
|
-
Object.entries(options).forEach(([key, value]) => {
|
|
657
|
-
if (value !== undefined && key !== "project_id") {
|
|
658
|
-
body.set(key, String(value));
|
|
659
|
-
}
|
|
660
|
-
});
|
|
661
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(options.project_id)}/fork`;
|
|
662
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
663
|
-
method: "POST",
|
|
664
|
-
headers: {
|
|
665
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
666
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
667
|
-
},
|
|
668
|
-
body: body.toString(),
|
|
669
|
-
});
|
|
670
|
-
if (!response.ok) {
|
|
671
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
672
|
-
}
|
|
673
|
-
const fork = await response.json();
|
|
674
|
-
return fork;
|
|
675
|
-
},
|
|
676
|
-
},
|
|
677
|
-
],
|
|
678
|
-
[
|
|
679
|
-
"create_branch",
|
|
680
|
-
{
|
|
681
|
-
name: "create_branch",
|
|
682
|
-
description: "NEW BRANCH: Create a Git branch from existing ref. Use when: Starting new features, Preparing bug fixes, Creating release branches. REQUIRED before creating MRs. Ref can be: branch name (main), tag (v1.0), or commit SHA. Branch names cannot contain spaces.",
|
|
683
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_1.CreateBranchSchema),
|
|
684
|
-
handler: async (args) => {
|
|
685
|
-
const options = schema_1.CreateBranchSchema.parse(args);
|
|
686
|
-
const body = new URLSearchParams();
|
|
687
|
-
body.set("branch", options.branch);
|
|
688
|
-
body.set("ref", options.ref);
|
|
689
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/projects/${encodeURIComponent(options.project_id)}/repository/branches`;
|
|
690
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
691
|
-
method: "POST",
|
|
692
|
-
headers: {
|
|
693
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
694
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
695
|
-
},
|
|
696
|
-
body: body.toString(),
|
|
697
|
-
});
|
|
698
|
-
if (!response.ok) {
|
|
699
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
700
|
-
}
|
|
701
|
-
const branch = await response.json();
|
|
702
|
-
return branch;
|
|
703
|
-
},
|
|
704
|
-
},
|
|
705
|
-
],
|
|
706
|
-
[
|
|
707
|
-
"create_group",
|
|
708
|
-
{
|
|
709
|
-
name: "create_group",
|
|
710
|
-
description: "CREATE GROUP: Create a new GitLab group/namespace for organizing projects and teams. Use when: Setting up team spaces, Creating organizational structure, Establishing project hierarchies. Groups can contain projects and subgroups.",
|
|
711
|
-
inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(schema_1.CreateGroupSchema),
|
|
712
|
-
handler: async (args) => {
|
|
713
|
-
const options = schema_1.CreateGroupSchema.parse(args);
|
|
714
|
-
const body = new URLSearchParams();
|
|
715
|
-
body.set("name", options.name);
|
|
716
|
-
body.set("path", options.path);
|
|
717
|
-
if (options.description)
|
|
718
|
-
body.set("description", options.description);
|
|
719
|
-
if (options.visibility)
|
|
720
|
-
body.set("visibility", options.visibility);
|
|
721
|
-
if (options.parent_id !== undefined)
|
|
722
|
-
body.set("parent_id", String(options.parent_id));
|
|
723
|
-
if (options.lfs_enabled !== undefined)
|
|
724
|
-
body.set("lfs_enabled", String(options.lfs_enabled));
|
|
725
|
-
if (options.request_access_enabled !== undefined)
|
|
726
|
-
body.set("request_access_enabled", String(options.request_access_enabled));
|
|
727
|
-
if (options.default_branch_protection !== undefined)
|
|
728
|
-
body.set("default_branch_protection", String(options.default_branch_protection));
|
|
729
|
-
if (options.avatar)
|
|
730
|
-
body.set("avatar", options.avatar);
|
|
731
|
-
const apiUrl = `${process.env.GITLAB_API_URL}/api/v4/groups`;
|
|
732
|
-
const response = await (0, fetch_1.enhancedFetch)(apiUrl, {
|
|
733
|
-
method: "POST",
|
|
734
|
-
headers: {
|
|
735
|
-
Authorization: `Bearer ${process.env.GITLAB_TOKEN}`,
|
|
736
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
737
|
-
},
|
|
738
|
-
body: body.toString(),
|
|
739
|
-
});
|
|
740
|
-
if (!response.ok) {
|
|
741
|
-
throw new Error(`GitLab API error: ${response.status} ${response.statusText}`);
|
|
742
|
-
}
|
|
743
|
-
const group = await response.json();
|
|
744
|
-
return group;
|
|
745
|
-
},
|
|
746
|
-
},
|
|
747
|
-
],
|
|
748
|
-
]);
|
|
749
|
-
function getCoreReadOnlyToolNames() {
|
|
750
|
-
return [
|
|
751
|
-
"search_repositories",
|
|
752
|
-
"list_namespaces",
|
|
753
|
-
"get_namespace",
|
|
754
|
-
"verify_namespace",
|
|
755
|
-
"get_project",
|
|
756
|
-
"list_projects",
|
|
757
|
-
"list_project_members",
|
|
758
|
-
"get_users",
|
|
759
|
-
"list_commits",
|
|
760
|
-
"get_commit",
|
|
761
|
-
"get_commit_diff",
|
|
762
|
-
"list_group_iterations",
|
|
763
|
-
"download_attachment",
|
|
764
|
-
"list_events",
|
|
765
|
-
"get_project_events",
|
|
766
|
-
];
|
|
767
|
-
}
|
|
768
|
-
function getCoreToolDefinitions() {
|
|
769
|
-
return Array.from(exports.coreToolRegistry.values());
|
|
770
|
-
}
|
|
771
|
-
function getFilteredCoreTools(readOnlyMode = false) {
|
|
772
|
-
if (readOnlyMode) {
|
|
773
|
-
const readOnlyNames = getCoreReadOnlyToolNames();
|
|
774
|
-
return Array.from(exports.coreToolRegistry.values()).filter(tool => readOnlyNames.includes(tool.name));
|
|
775
|
-
}
|
|
776
|
-
return getCoreToolDefinitions();
|
|
777
|
-
}
|
|
778
|
-
//# sourceMappingURL=registry.js.map
|