@structured-world/gitlab-mcp 6.53.1 → 6.55.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.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/dist/generated/prisma/commonInputTypes.d.ts +31 -31
  3. package/dist/generated/prisma/internal/class.js +2 -2
  4. package/dist/generated/prisma/internal/class.js.map +1 -1
  5. package/dist/generated/prisma/internal/prismaNamespace.d.ts +2 -0
  6. package/dist/generated/prisma/internal/prismaNamespace.js +2 -0
  7. package/dist/generated/prisma/internal/prismaNamespace.js.map +1 -1
  8. package/dist/generated/prisma/models/DeviceFlowState.d.ts +0 -3
  9. package/dist/generated/prisma/models/OAuthSession.d.ts +76 -1
  10. package/dist/src/cli/instances/index.d.ts +2 -0
  11. package/dist/src/cli/instances/index.js +7 -0
  12. package/dist/src/cli/instances/index.js.map +1 -0
  13. package/dist/src/cli/instances/instances-command.d.ts +6 -0
  14. package/dist/src/cli/instances/instances-command.js +351 -0
  15. package/dist/src/cli/instances/instances-command.js.map +1 -0
  16. package/dist/src/config/index.d.ts +4 -0
  17. package/dist/src/config/index.js +19 -0
  18. package/dist/src/config/index.js.map +1 -0
  19. package/dist/src/config/instances-loader.d.ts +10 -0
  20. package/dist/src/config/instances-loader.js +292 -0
  21. package/dist/src/config/instances-loader.js.map +1 -0
  22. package/dist/src/config/instances-schema.d.ts +89 -0
  23. package/dist/src/config/instances-schema.js +196 -0
  24. package/dist/src/config/instances-schema.js.map +1 -0
  25. package/dist/src/entities/context/context-manager.d.ts +1 -0
  26. package/dist/src/entities/context/context-manager.js +76 -0
  27. package/dist/src/entities/context/context-manager.js.map +1 -1
  28. package/dist/src/graphql/client.d.ts +3 -1
  29. package/dist/src/graphql/client.js +8 -2
  30. package/dist/src/graphql/client.js.map +1 -1
  31. package/dist/src/middleware/oauth-auth.js +5 -0
  32. package/dist/src/middleware/oauth-auth.js.map +1 -1
  33. package/dist/src/oauth/endpoints/authorize.js +3 -0
  34. package/dist/src/oauth/endpoints/authorize.js.map +1 -1
  35. package/dist/src/oauth/endpoints/callback.js +3 -0
  36. package/dist/src/oauth/endpoints/callback.js.map +1 -1
  37. package/dist/src/oauth/index.d.ts +1 -1
  38. package/dist/src/oauth/index.js +4 -2
  39. package/dist/src/oauth/index.js.map +1 -1
  40. package/dist/src/oauth/storage/postgresql.js +4 -0
  41. package/dist/src/oauth/storage/postgresql.js.map +1 -1
  42. package/dist/src/oauth/token-context.d.ts +2 -0
  43. package/dist/src/oauth/token-context.js +10 -0
  44. package/dist/src/oauth/token-context.js.map +1 -1
  45. package/dist/src/oauth/types.d.ts +13 -0
  46. package/dist/src/server.js +4 -0
  47. package/dist/src/server.js.map +1 -1
  48. package/dist/src/services/ConnectionManager.d.ts +6 -1
  49. package/dist/src/services/ConnectionManager.js +101 -12
  50. package/dist/src/services/ConnectionManager.js.map +1 -1
  51. package/dist/src/services/InstanceConnectionPool.d.ts +51 -0
  52. package/dist/src/services/InstanceConnectionPool.js +170 -0
  53. package/dist/src/services/InstanceConnectionPool.js.map +1 -0
  54. package/dist/src/services/InstanceRateLimiter.d.ts +35 -0
  55. package/dist/src/services/InstanceRateLimiter.js +131 -0
  56. package/dist/src/services/InstanceRateLimiter.js.map +1 -0
  57. package/dist/src/services/InstanceRegistry.d.ts +61 -0
  58. package/dist/src/services/InstanceRegistry.js +250 -0
  59. package/dist/src/services/InstanceRegistry.js.map +1 -0
  60. package/dist/src/services/NamespaceTierDetector.d.ts +9 -0
  61. package/dist/src/services/NamespaceTierDetector.js +249 -0
  62. package/dist/src/services/NamespaceTierDetector.js.map +1 -0
  63. package/dist/src/utils/fetch.d.ts +4 -0
  64. package/dist/src/utils/fetch.js +112 -49
  65. package/dist/src/utils/fetch.js.map +1 -1
  66. package/dist/structured-world-gitlab-mcp-6.55.0.tgz +0 -0
  67. package/dist/tsconfig.build.tsbuildinfo +1 -1
  68. package/package.json +7 -7
  69. package/dist/structured-world-gitlab-mcp-6.53.1.tgz +0 -0
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadInstancesConfig = loadInstancesConfig;
37
+ exports.getInstanceByUrl = getInstanceByUrl;
38
+ exports.isKnownInstance = isKnownInstance;
39
+ exports.generateSampleConfig = generateSampleConfig;
40
+ const fs = __importStar(require("fs"));
41
+ const os = __importStar(require("os"));
42
+ const path = __importStar(require("path"));
43
+ const logger_js_1 = require("../logger.js");
44
+ const instances_schema_js_1 = require("./instances-schema.js");
45
+ async function loadYamlFile(filePath) {
46
+ try {
47
+ const yaml = await Promise.resolve().then(() => __importStar(require("yaml")));
48
+ const content = fs.readFileSync(filePath, "utf-8");
49
+ return yaml.parse(content);
50
+ }
51
+ catch (error) {
52
+ const err = error;
53
+ const code = err.code;
54
+ const message = err.message;
55
+ const isModuleNotFoundCode = code === "MODULE_NOT_FOUND" || code === "ERR_MODULE_NOT_FOUND";
56
+ const isYamlNotFoundMessage = typeof message === "string" &&
57
+ (message.includes("Cannot find package 'yaml'") ||
58
+ message.includes("Cannot find module 'yaml'"));
59
+ if (isModuleNotFoundCode || isYamlNotFoundMessage) {
60
+ throw new Error(`YAML configuration requires 'yaml' package. Install with: yarn add yaml`);
61
+ }
62
+ throw error;
63
+ }
64
+ }
65
+ function loadJsonFile(filePath) {
66
+ const content = fs.readFileSync(filePath, "utf-8");
67
+ return JSON.parse(content);
68
+ }
69
+ async function loadConfigFile(filePath) {
70
+ const resolvedPath = filePath.startsWith("~")
71
+ ? path.join(os.homedir(), filePath.slice(1))
72
+ : filePath;
73
+ if (!fs.existsSync(resolvedPath)) {
74
+ throw new Error(`Configuration file not found: ${resolvedPath}`);
75
+ }
76
+ const ext = path.extname(resolvedPath).toLowerCase();
77
+ let rawConfig;
78
+ if (ext === ".yaml" || ext === ".yml") {
79
+ rawConfig = await loadYamlFile(resolvedPath);
80
+ }
81
+ else if (ext === ".json") {
82
+ rawConfig = loadJsonFile(resolvedPath);
83
+ }
84
+ else {
85
+ const content = fs.readFileSync(resolvedPath, "utf-8").trim();
86
+ if (content.startsWith("{")) {
87
+ rawConfig = JSON.parse(content);
88
+ }
89
+ else {
90
+ rawConfig = await loadYamlFile(resolvedPath);
91
+ }
92
+ }
93
+ return (0, instances_schema_js_1.validateInstancesConfig)(rawConfig);
94
+ }
95
+ function parseInstancesEnvVar(value) {
96
+ const trimmed = value.trim();
97
+ if (trimmed.startsWith("{")) {
98
+ const parsed = JSON.parse(trimmed);
99
+ const config = (0, instances_schema_js_1.validateInstancesConfig)(parsed);
100
+ return config.instances;
101
+ }
102
+ if (trimmed.startsWith("[")) {
103
+ const parsed = JSON.parse(trimmed);
104
+ return parsed.map((url) => (0, instances_schema_js_1.parseInstanceUrlString)(url));
105
+ }
106
+ if (trimmed.startsWith("(") && trimmed.endsWith(")")) {
107
+ const inner = trimmed.slice(1, -1).trim();
108
+ const urls = inner.match(/(?:[^\s"]+|"[^"]*")+/g) ?? [];
109
+ return urls.map((url) => {
110
+ const cleanUrl = url.startsWith('"') && url.endsWith('"') ? url.slice(1, -1) : url;
111
+ return (0, instances_schema_js_1.parseInstanceUrlString)(cleanUrl);
112
+ });
113
+ }
114
+ if (/\s/.test(trimmed)) {
115
+ const urls = trimmed.split(/\s+/).filter(url => url.length > 0);
116
+ return urls.map((url) => (0, instances_schema_js_1.parseInstanceUrlString)(url));
117
+ }
118
+ return [(0, instances_schema_js_1.parseInstanceUrlString)(trimmed)];
119
+ }
120
+ async function loadInstancesConfig() {
121
+ const instancesFile = process.env.GITLAB_INSTANCES_FILE;
122
+ const instancesEnv = process.env.GITLAB_INSTANCES;
123
+ const legacyBaseUrl = process.env.GITLAB_API_URL;
124
+ if (instancesFile) {
125
+ try {
126
+ (0, logger_js_1.logDebug)("Loading instances from configuration file", { path: instancesFile });
127
+ const config = await loadConfigFile(instancesFile);
128
+ const instances = config.instances.map(inst => (0, instances_schema_js_1.applyInstanceDefaults)(inst, config.defaults));
129
+ (0, logger_js_1.logInfo)("Loaded GitLab instances from configuration file", {
130
+ path: instancesFile,
131
+ count: instances.length,
132
+ instances: instances.map(i => i.label ?? i.url),
133
+ });
134
+ return {
135
+ instances,
136
+ source: "file",
137
+ sourceDetails: instancesFile,
138
+ };
139
+ }
140
+ catch (error) {
141
+ (0, logger_js_1.logError)("Failed to load instances configuration file", {
142
+ path: instancesFile,
143
+ err: error instanceof Error ? error : new Error(String(error)),
144
+ });
145
+ throw error;
146
+ }
147
+ }
148
+ if (instancesEnv) {
149
+ try {
150
+ (0, logger_js_1.logDebug)("Loading instances from GITLAB_INSTANCES env var");
151
+ const instances = parseInstancesEnvVar(instancesEnv);
152
+ (0, logger_js_1.logInfo)("Loaded GitLab instances from environment variable", {
153
+ count: instances.length,
154
+ instances: instances.map(i => i.label ?? i.url),
155
+ });
156
+ return {
157
+ instances,
158
+ source: "env",
159
+ sourceDetails: "GITLAB_INSTANCES",
160
+ };
161
+ }
162
+ catch (error) {
163
+ (0, logger_js_1.logError)("Failed to parse GITLAB_INSTANCES environment variable", {
164
+ err: error instanceof Error ? error : new Error(String(error)),
165
+ });
166
+ throw error;
167
+ }
168
+ }
169
+ if (legacyBaseUrl) {
170
+ (0, logger_js_1.logDebug)("Using legacy GITLAB_API_URL configuration");
171
+ let normalizedUrl = legacyBaseUrl;
172
+ if (normalizedUrl.endsWith("/")) {
173
+ normalizedUrl = normalizedUrl.slice(0, -1);
174
+ }
175
+ if (normalizedUrl.endsWith("/api/v4")) {
176
+ normalizedUrl = normalizedUrl.slice(0, -7);
177
+ }
178
+ if (normalizedUrl.endsWith("/api/graphql")) {
179
+ normalizedUrl = normalizedUrl.slice(0, -12);
180
+ }
181
+ const instance = {
182
+ url: normalizedUrl,
183
+ label: "Default Instance",
184
+ insecureSkipVerify: process.env.SKIP_TLS_VERIFY === "true",
185
+ };
186
+ (0, logger_js_1.logInfo)("Using legacy single-instance configuration", {
187
+ url: normalizedUrl,
188
+ });
189
+ return {
190
+ instances: [instance],
191
+ source: "legacy",
192
+ sourceDetails: "GITLAB_API_URL",
193
+ };
194
+ }
195
+ (0, logger_js_1.logWarn)("No GitLab instance configuration found, using gitlab.com as default");
196
+ return {
197
+ instances: [
198
+ {
199
+ url: "https://gitlab.com",
200
+ label: "GitLab.com",
201
+ insecureSkipVerify: false,
202
+ },
203
+ ],
204
+ source: "none",
205
+ sourceDetails: "default",
206
+ };
207
+ }
208
+ function getInstanceByUrl(instances, url) {
209
+ let normalizedSearch = url;
210
+ if (normalizedSearch.endsWith("/")) {
211
+ normalizedSearch = normalizedSearch.slice(0, -1);
212
+ }
213
+ if (normalizedSearch.endsWith("/api/v4")) {
214
+ normalizedSearch = normalizedSearch.slice(0, -7);
215
+ }
216
+ if (normalizedSearch.endsWith("/api/graphql")) {
217
+ normalizedSearch = normalizedSearch.slice(0, -12);
218
+ }
219
+ return instances.find(inst => inst.url === normalizedSearch);
220
+ }
221
+ function isKnownInstance(instances, url) {
222
+ return getInstanceByUrl(instances, url) !== undefined;
223
+ }
224
+ function generateSampleConfig(format) {
225
+ const config = {
226
+ instances: [
227
+ {
228
+ url: "https://gitlab.com",
229
+ label: "GitLab.com",
230
+ insecureSkipVerify: false,
231
+ },
232
+ {
233
+ url: "https://git.corp.io",
234
+ label: "Corporate GitLab",
235
+ oauth: {
236
+ clientId: "your_app_id",
237
+ clientSecret: "your_secret",
238
+ scopes: "api read_user",
239
+ },
240
+ rateLimit: {
241
+ maxConcurrent: 50,
242
+ queueSize: 200,
243
+ queueTimeout: 30000,
244
+ },
245
+ insecureSkipVerify: false,
246
+ },
247
+ ],
248
+ defaults: {
249
+ rateLimit: {
250
+ maxConcurrent: 100,
251
+ queueSize: 500,
252
+ queueTimeout: 60000,
253
+ },
254
+ oauth: {
255
+ scopes: "api read_user",
256
+ },
257
+ },
258
+ };
259
+ if (format === "json") {
260
+ return JSON.stringify(config, null, 2);
261
+ }
262
+ return `# GitLab MCP Instances Configuration
263
+ # Documentation: https://gitlab-mcp.sw.foundation/advanced/multi-instance
264
+
265
+ instances:
266
+ # Minimal configuration (OAuth disabled or uses global credentials)
267
+ - url: https://gitlab.com
268
+ label: "GitLab.com"
269
+
270
+ # Full configuration with OAuth
271
+ - url: https://git.corp.io
272
+ label: "Corporate GitLab"
273
+ oauth:
274
+ clientId: "your_app_id"
275
+ clientSecret: "your_secret" # Only for confidential apps
276
+ scopes: "api read_user" # Optional, default: api read_user
277
+ rateLimit:
278
+ maxConcurrent: 50 # Max parallel requests
279
+ queueSize: 200 # Max queued requests
280
+ queueTimeout: 30000 # Queue wait timeout (ms)
281
+
282
+ # Global defaults (applied to all instances unless overridden)
283
+ defaults:
284
+ rateLimit:
285
+ maxConcurrent: 100
286
+ queueSize: 500
287
+ queueTimeout: 60000
288
+ oauth:
289
+ scopes: "api read_user"
290
+ `;
291
+ }
292
+ //# sourceMappingURL=instances-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instances-loader.js","sourceRoot":"","sources":["../../../src/config/instances-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { z } from "zod";
2
+ export declare const InstanceOAuthConfigSchema: z.ZodObject<{
3
+ clientId: z.ZodString;
4
+ clientSecret: z.ZodOptional<z.ZodString>;
5
+ scopes: z.ZodDefault<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ export declare const InstanceRateLimitConfigSchema: z.ZodObject<{
8
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
9
+ queueSize: z.ZodDefault<z.ZodNumber>;
10
+ queueTimeout: z.ZodDefault<z.ZodNumber>;
11
+ }, z.core.$strip>;
12
+ export declare const GitLabInstanceConfigSchema: z.ZodObject<{
13
+ url: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
14
+ label: z.ZodOptional<z.ZodString>;
15
+ oauth: z.ZodOptional<z.ZodObject<{
16
+ clientId: z.ZodString;
17
+ clientSecret: z.ZodOptional<z.ZodString>;
18
+ scopes: z.ZodDefault<z.ZodString>;
19
+ }, z.core.$strip>>;
20
+ rateLimit: z.ZodOptional<z.ZodObject<{
21
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
22
+ queueSize: z.ZodDefault<z.ZodNumber>;
23
+ queueTimeout: z.ZodDefault<z.ZodNumber>;
24
+ }, z.core.$strip>>;
25
+ insecureSkipVerify: z.ZodDefault<z.ZodBoolean>;
26
+ }, z.core.$strip>;
27
+ export declare const InstanceDefaultsSchema: z.ZodObject<{
28
+ rateLimit: z.ZodOptional<z.ZodObject<{
29
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
30
+ queueSize: z.ZodDefault<z.ZodNumber>;
31
+ queueTimeout: z.ZodDefault<z.ZodNumber>;
32
+ }, z.core.$strip>>;
33
+ oauth: z.ZodOptional<z.ZodObject<{
34
+ scopes: z.ZodDefault<z.ZodString>;
35
+ }, z.core.$strip>>;
36
+ }, z.core.$strip>;
37
+ export declare const InstancesConfigFileSchema: z.ZodObject<{
38
+ instances: z.ZodArray<z.ZodObject<{
39
+ url: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
40
+ label: z.ZodOptional<z.ZodString>;
41
+ oauth: z.ZodOptional<z.ZodObject<{
42
+ clientId: z.ZodString;
43
+ clientSecret: z.ZodOptional<z.ZodString>;
44
+ scopes: z.ZodDefault<z.ZodString>;
45
+ }, z.core.$strip>>;
46
+ rateLimit: z.ZodOptional<z.ZodObject<{
47
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
48
+ queueSize: z.ZodDefault<z.ZodNumber>;
49
+ queueTimeout: z.ZodDefault<z.ZodNumber>;
50
+ }, z.core.$strip>>;
51
+ insecureSkipVerify: z.ZodDefault<z.ZodBoolean>;
52
+ }, z.core.$strip>>;
53
+ defaults: z.ZodOptional<z.ZodObject<{
54
+ rateLimit: z.ZodOptional<z.ZodObject<{
55
+ maxConcurrent: z.ZodDefault<z.ZodNumber>;
56
+ queueSize: z.ZodDefault<z.ZodNumber>;
57
+ queueTimeout: z.ZodDefault<z.ZodNumber>;
58
+ }, z.core.$strip>>;
59
+ oauth: z.ZodOptional<z.ZodObject<{
60
+ scopes: z.ZodDefault<z.ZodString>;
61
+ }, z.core.$strip>>;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>;
64
+ export declare const ConnectionStatusSchema: z.ZodEnum<{
65
+ healthy: "healthy";
66
+ degraded: "degraded";
67
+ offline: "offline";
68
+ }>;
69
+ export type InstanceOAuthConfig = z.infer<typeof InstanceOAuthConfigSchema>;
70
+ export type InstanceRateLimitConfig = z.infer<typeof InstanceRateLimitConfigSchema>;
71
+ export type GitLabInstanceConfig = z.infer<typeof GitLabInstanceConfigSchema>;
72
+ export type InstanceDefaults = z.infer<typeof InstanceDefaultsSchema>;
73
+ export type InstancesConfigFile = z.infer<typeof InstancesConfigFileSchema>;
74
+ export type ConnectionStatus = z.infer<typeof ConnectionStatusSchema>;
75
+ export interface GitLabInstanceState extends GitLabInstanceConfig {
76
+ connectionStatus: ConnectionStatus;
77
+ lastHealthCheck: Date | null;
78
+ introspectionCache: CachedIntrospection | null;
79
+ }
80
+ export interface CachedIntrospection {
81
+ version: string;
82
+ tier: string;
83
+ features: Record<string, boolean>;
84
+ schemaInfo: unknown;
85
+ cachedAt: Date;
86
+ }
87
+ export declare function parseInstanceUrlString(urlString: string): GitLabInstanceConfig;
88
+ export declare function validateInstancesConfig(config: unknown): InstancesConfigFile;
89
+ export declare function applyInstanceDefaults(instance: GitLabInstanceConfig, defaults?: InstanceDefaults): GitLabInstanceConfig;
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectionStatusSchema = exports.InstancesConfigFileSchema = exports.InstanceDefaultsSchema = exports.GitLabInstanceConfigSchema = exports.InstanceRateLimitConfigSchema = exports.InstanceOAuthConfigSchema = void 0;
4
+ exports.parseInstanceUrlString = parseInstanceUrlString;
5
+ exports.validateInstancesConfig = validateInstancesConfig;
6
+ exports.applyInstanceDefaults = applyInstanceDefaults;
7
+ const zod_1 = require("zod");
8
+ const GitLabUrlSchema = zod_1.z
9
+ .string()
10
+ .url()
11
+ .transform(url => {
12
+ const parsed = new URL(url);
13
+ let path = parsed.pathname;
14
+ if (path === "/") {
15
+ path = "";
16
+ }
17
+ else {
18
+ if (path.endsWith("/")) {
19
+ path = path.slice(0, -1);
20
+ }
21
+ for (const apiSuffix of ["/api/v4", "/api/graphql"]) {
22
+ if (path.endsWith(apiSuffix)) {
23
+ path = path.slice(0, -apiSuffix.length);
24
+ if (path === "/") {
25
+ path = "";
26
+ }
27
+ break;
28
+ }
29
+ }
30
+ }
31
+ return `${parsed.origin}${path}`;
32
+ })
33
+ .describe("GitLab instance URL (e.g., https://gitlab.com or https://example.com/gitlab)");
34
+ exports.InstanceOAuthConfigSchema = zod_1.z
35
+ .object({
36
+ clientId: zod_1.z.string().min(1).describe("OAuth Application ID"),
37
+ clientSecret: zod_1.z.string().optional().describe("OAuth Secret (only for confidential apps)"),
38
+ scopes: zod_1.z
39
+ .string()
40
+ .default("api read_user")
41
+ .describe("OAuth scopes to request (space-separated)"),
42
+ })
43
+ .describe("OAuth configuration for this GitLab instance");
44
+ exports.InstanceRateLimitConfigSchema = zod_1.z
45
+ .object({
46
+ maxConcurrent: zod_1.z
47
+ .number()
48
+ .int()
49
+ .positive()
50
+ .default(100)
51
+ .describe("Maximum parallel requests to this instance"),
52
+ queueSize: zod_1.z
53
+ .number()
54
+ .int()
55
+ .positive()
56
+ .default(500)
57
+ .describe("Maximum requests to queue when at capacity"),
58
+ queueTimeout: zod_1.z
59
+ .number()
60
+ .int()
61
+ .positive()
62
+ .default(60000)
63
+ .describe("Queue wait timeout in milliseconds"),
64
+ })
65
+ .describe("Rate limiting configuration for this instance");
66
+ exports.GitLabInstanceConfigSchema = zod_1.z
67
+ .object({
68
+ url: GitLabUrlSchema,
69
+ label: zod_1.z.string().optional().describe("Human-readable name for UI display"),
70
+ oauth: exports.InstanceOAuthConfigSchema.optional(),
71
+ rateLimit: exports.InstanceRateLimitConfigSchema.optional(),
72
+ insecureSkipVerify: zod_1.z
73
+ .boolean()
74
+ .default(false)
75
+ .describe("Skip TLS certificate verification (development only!)"),
76
+ })
77
+ .describe("Configuration for a single GitLab instance");
78
+ exports.InstanceDefaultsSchema = zod_1.z
79
+ .object({
80
+ rateLimit: exports.InstanceRateLimitConfigSchema.optional(),
81
+ oauth: zod_1.z
82
+ .object({
83
+ scopes: zod_1.z.string().default("api read_user").describe("Default OAuth scopes"),
84
+ })
85
+ .optional(),
86
+ })
87
+ .describe("Default configuration applied to all instances");
88
+ exports.InstancesConfigFileSchema = zod_1.z
89
+ .object({
90
+ instances: zod_1.z
91
+ .array(exports.GitLabInstanceConfigSchema)
92
+ .min(1)
93
+ .describe("List of GitLab instances to connect to"),
94
+ defaults: exports.InstanceDefaultsSchema.optional(),
95
+ })
96
+ .describe("GitLab MCP instances configuration file");
97
+ exports.ConnectionStatusSchema = zod_1.z.enum(["healthy", "degraded", "offline"]);
98
+ function parseInstanceUrlString(urlString) {
99
+ const protocolSeparatorIndex = urlString.indexOf("://");
100
+ if (protocolSeparatorIndex === -1) {
101
+ throw new Error(`Invalid GitLab instance URL format: ${urlString}`);
102
+ }
103
+ const protocolEnd = protocolSeparatorIndex + 3;
104
+ const isPortNumber = (str) => {
105
+ if (!/^\d+$/.test(str))
106
+ return false;
107
+ const num = parseInt(str, 10);
108
+ return num >= 1 && num <= 65535;
109
+ };
110
+ let baseUrlString;
111
+ let clientId;
112
+ let clientSecret;
113
+ try {
114
+ baseUrlString = GitLabUrlSchema.parse(urlString);
115
+ clientId = undefined;
116
+ clientSecret = undefined;
117
+ }
118
+ catch {
119
+ baseUrlString = undefined;
120
+ }
121
+ if (!baseUrlString) {
122
+ const lastColonIndex = urlString.lastIndexOf(":");
123
+ if (lastColonIndex > protocolEnd) {
124
+ const lastSegment = urlString.slice(lastColonIndex + 1);
125
+ if (!lastSegment.includes("/") && !isPortNumber(lastSegment)) {
126
+ const secondLastColonIndex = urlString.lastIndexOf(":", lastColonIndex - 1);
127
+ if (secondLastColonIndex > protocolEnd) {
128
+ const potentialClientId = urlString.slice(secondLastColonIndex + 1, lastColonIndex);
129
+ if (!potentialClientId.includes("/") && !isPortNumber(potentialClientId)) {
130
+ const potentialBaseUrl = urlString.slice(0, secondLastColonIndex);
131
+ try {
132
+ baseUrlString = GitLabUrlSchema.parse(potentialBaseUrl);
133
+ clientId = potentialClientId;
134
+ clientSecret = lastSegment;
135
+ }
136
+ catch {
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ if (!baseUrlString) {
144
+ const singleLastColonIndex = urlString.lastIndexOf(":");
145
+ if (singleLastColonIndex > protocolEnd) {
146
+ const potentialClientId = urlString.slice(singleLastColonIndex + 1);
147
+ if (!potentialClientId.includes("/") && !isPortNumber(potentialClientId)) {
148
+ const potentialBaseUrl = urlString.slice(0, singleLastColonIndex);
149
+ try {
150
+ baseUrlString = GitLabUrlSchema.parse(potentialBaseUrl);
151
+ clientId = potentialClientId;
152
+ clientSecret = undefined;
153
+ }
154
+ catch {
155
+ }
156
+ }
157
+ }
158
+ }
159
+ if (!baseUrlString) {
160
+ throw new Error(`Invalid GitLab instance URL format: ${urlString}`);
161
+ }
162
+ const config = {
163
+ url: baseUrlString,
164
+ insecureSkipVerify: false,
165
+ };
166
+ if (clientId) {
167
+ config.oauth = {
168
+ clientId,
169
+ scopes: "api read_user",
170
+ };
171
+ if (clientSecret) {
172
+ config.oauth.clientSecret = clientSecret;
173
+ }
174
+ }
175
+ return config;
176
+ }
177
+ function validateInstancesConfig(config) {
178
+ return exports.InstancesConfigFileSchema.parse(config);
179
+ }
180
+ function applyInstanceDefaults(instance, defaults) {
181
+ if (!defaults) {
182
+ return instance;
183
+ }
184
+ const result = { ...instance };
185
+ if (defaults.rateLimit && !result.rateLimit) {
186
+ result.rateLimit = { ...defaults.rateLimit };
187
+ }
188
+ if (defaults.oauth?.scopes && result.oauth && !result.oauth.scopes) {
189
+ result.oauth = {
190
+ ...result.oauth,
191
+ scopes: defaults.oauth.scopes,
192
+ };
193
+ }
194
+ return result;
195
+ }
196
+ //# sourceMappingURL=instances-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instances-schema.js","sourceRoot":"","sources":["../../../src/config/instances-schema.ts"],"names":[],"mappings":"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"}
@@ -26,5 +26,6 @@ export declare class ContextManager {
26
26
  hasScope(): boolean;
27
27
  getCurrentPreset(): Preset | null;
28
28
  getCurrentPresetName(): string | null;
29
+ switchInstance(instanceUrl: string): Promise<SwitchResult>;
29
30
  }
30
31
  export declare function getContextManager(): ContextManager;