@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,351 @@
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.parseInstanceSubcommand = parseInstanceSubcommand;
37
+ exports.runInstanceCommand = runInstanceCommand;
38
+ const p = __importStar(require("@clack/prompts"));
39
+ const InstanceRegistry_js_1 = require("../../services/InstanceRegistry.js");
40
+ const instances_loader_js_1 = require("../../config/instances-loader.js");
41
+ function parseInstanceSubcommand(args) {
42
+ const subcommand = args[0];
43
+ const subArgs = args.slice(1);
44
+ const validSubcommands = [
45
+ "list",
46
+ "add",
47
+ "remove",
48
+ "test",
49
+ "info",
50
+ "sample-config",
51
+ ];
52
+ if (subcommand && !validSubcommands.includes(subcommand)) {
53
+ return { subcommand: undefined, subArgs: args };
54
+ }
55
+ return { subcommand, subArgs };
56
+ }
57
+ async function runInstanceCommand(args) {
58
+ const { subcommand, subArgs } = parseInstanceSubcommand(args);
59
+ if (!subcommand) {
60
+ showHelp();
61
+ return;
62
+ }
63
+ switch (subcommand) {
64
+ case "list":
65
+ await listInstances();
66
+ break;
67
+ case "add":
68
+ await addInstance();
69
+ break;
70
+ case "remove":
71
+ await removeInstance(subArgs[0]);
72
+ break;
73
+ case "test":
74
+ await testInstance(subArgs[0]);
75
+ break;
76
+ case "info":
77
+ await showInstanceInfo(subArgs[0]);
78
+ break;
79
+ case "sample-config":
80
+ showSampleConfig(subArgs[0]);
81
+ break;
82
+ }
83
+ }
84
+ function showHelp() {
85
+ console.log(`
86
+ GitLab Instance Management Commands
87
+
88
+ Usage: npx @structured-world/gitlab-mcp instances <command> [options]
89
+
90
+ Commands:
91
+ list List all configured GitLab instances
92
+ add Add a new GitLab instance (interactive)
93
+ remove <url> Remove a GitLab instance
94
+ test [url] Test connection to instance(s)
95
+ info <url> Show detailed instance information
96
+ sample-config [fmt] Generate sample config file (yaml or json)
97
+
98
+ Configuration:
99
+ Instances can be configured via:
100
+ 1. GITLAB_INSTANCES_FILE - Path to YAML/JSON config file
101
+ 2. GITLAB_INSTANCES - Environment variable (URL, array, or JSON)
102
+ 3. GITLAB_API_URL - Legacy single-instance mode
103
+
104
+ Examples:
105
+ npx @structured-world/gitlab-mcp instances list
106
+ npx @structured-world/gitlab-mcp instances add
107
+ npx @structured-world/gitlab-mcp instances test https://gitlab.com
108
+ npx @structured-world/gitlab-mcp instances sample-config yaml
109
+ `);
110
+ }
111
+ async function listInstances() {
112
+ const config = await (0, instances_loader_js_1.loadInstancesConfig)();
113
+ console.log(`\nConfigured GitLab Instances (source: ${config.source})`);
114
+ console.log(`─`.repeat(60));
115
+ if (config.instances.length === 0) {
116
+ console.log("No instances configured.");
117
+ return;
118
+ }
119
+ for (const instance of config.instances) {
120
+ const label = instance.label ? ` (${instance.label})` : "";
121
+ const oauth = instance.oauth ? " [OAuth]" : "";
122
+ const rateLimit = instance.rateLimit
123
+ ? ` [Rate: ${instance.rateLimit.maxConcurrent} concurrent]`
124
+ : "";
125
+ const tls = instance.insecureSkipVerify ? " [TLS: skip]" : "";
126
+ console.log(` ${instance.url}${label}${oauth}${rateLimit}${tls}`);
127
+ }
128
+ console.log(`\nTotal: ${config.instances.length} instance(s)`);
129
+ }
130
+ async function addInstance() {
131
+ p.intro("Add GitLab Instance");
132
+ const url = await p.text({
133
+ message: "GitLab instance URL:",
134
+ placeholder: "https://gitlab.com",
135
+ validate: value => {
136
+ if (!value)
137
+ return "URL is required";
138
+ try {
139
+ new URL(value);
140
+ return undefined;
141
+ }
142
+ catch {
143
+ return "Please enter a valid URL";
144
+ }
145
+ },
146
+ });
147
+ if (p.isCancel(url)) {
148
+ p.cancel("Cancelled");
149
+ return;
150
+ }
151
+ const label = await p.text({
152
+ message: "Label (optional):",
153
+ placeholder: "My GitLab",
154
+ });
155
+ if (p.isCancel(label)) {
156
+ p.cancel("Cancelled");
157
+ return;
158
+ }
159
+ const useOAuth = await p.confirm({
160
+ message: "Configure OAuth?",
161
+ initialValue: false,
162
+ });
163
+ if (p.isCancel(useOAuth)) {
164
+ p.cancel("Cancelled");
165
+ return;
166
+ }
167
+ let oauth;
168
+ if (useOAuth) {
169
+ const clientId = await p.text({
170
+ message: "OAuth Application ID:",
171
+ validate: value => (value ? undefined : "Required"),
172
+ });
173
+ if (p.isCancel(clientId)) {
174
+ p.cancel("Cancelled");
175
+ return;
176
+ }
177
+ const clientSecret = await p.password({
178
+ message: "OAuth Secret (optional, for confidential apps):",
179
+ });
180
+ if (p.isCancel(clientSecret)) {
181
+ p.cancel("Cancelled");
182
+ return;
183
+ }
184
+ oauth = {
185
+ clientId: clientId,
186
+ clientSecret: clientSecret || undefined,
187
+ scopes: "api read_user",
188
+ };
189
+ }
190
+ const config = {
191
+ url: url,
192
+ label: label || undefined,
193
+ oauth,
194
+ insecureSkipVerify: false,
195
+ };
196
+ const logConfigPreview = {
197
+ url: config.url,
198
+ label: config.label,
199
+ insecureSkipVerify: config.insecureSkipVerify,
200
+ oauthConfigured: !!config.oauth,
201
+ };
202
+ console.log("\nInstance Configuration:");
203
+ console.log(JSON.stringify(logConfigPreview, null, 2));
204
+ const confirmed = await p.confirm({
205
+ message: "Add this configuration?",
206
+ initialValue: true,
207
+ });
208
+ if (p.isCancel(confirmed) || !confirmed) {
209
+ p.cancel("Cancelled");
210
+ return;
211
+ }
212
+ p.outro(`
213
+ Instance configured! To use it, add to your configuration:
214
+
215
+ Environment variable:
216
+ GITLAB_INSTANCES="${config.url}${oauth ? `:${oauth.clientId}` : ""}"
217
+
218
+ Or add to instances.yaml:
219
+ instances:
220
+ - url: ${config.url}
221
+ label: "${config.label ?? ""}"
222
+ ${oauth ? ` oauth:\n clientId: "${oauth.clientId}"` : ""}
223
+ `);
224
+ }
225
+ async function removeInstance(url) {
226
+ if (!url) {
227
+ console.log("Usage: instances remove <url>");
228
+ console.log("Example: instances remove https://gitlab.com");
229
+ return;
230
+ }
231
+ console.log(`\nTo remove instance ${url}, edit your configuration file`);
232
+ console.log("and remove the corresponding entry from the instances array.");
233
+ }
234
+ async function testInstance(url) {
235
+ const registry = InstanceRegistry_js_1.InstanceRegistry.getInstance();
236
+ if (!registry.isInitialized()) {
237
+ await registry.initialize();
238
+ }
239
+ const urls = url ? [url] : registry.getUrls();
240
+ if (urls.length === 0) {
241
+ console.log("No instances to test.");
242
+ return;
243
+ }
244
+ console.log("\nTesting GitLab Instance Connections");
245
+ console.log(`─`.repeat(60));
246
+ for (const instanceUrl of urls) {
247
+ process.stdout.write(` ${instanceUrl}... `);
248
+ try {
249
+ const versionUrl = `${instanceUrl}/api/v4/version`;
250
+ const response = await fetch(versionUrl, {
251
+ headers: { Accept: "application/json" },
252
+ });
253
+ if (response.ok) {
254
+ const data = (await response.json());
255
+ console.log(`✓ Connected (v${data.version ?? "unknown"})`);
256
+ }
257
+ else if (response.status === 401) {
258
+ console.log("✓ Reachable (authentication required)");
259
+ }
260
+ else {
261
+ console.log(`✗ Error: HTTP ${response.status}`);
262
+ }
263
+ }
264
+ catch (error) {
265
+ const message = error instanceof Error ? error.message : String(error);
266
+ console.log(`✗ Failed: ${message}`);
267
+ }
268
+ }
269
+ }
270
+ async function showInstanceInfo(url) {
271
+ if (!url) {
272
+ console.log("Usage: instances info <url>");
273
+ console.log("Example: instances info https://gitlab.com");
274
+ return;
275
+ }
276
+ const registry = InstanceRegistry_js_1.InstanceRegistry.getInstance();
277
+ if (!registry.isInitialized()) {
278
+ await registry.initialize();
279
+ }
280
+ const entry = registry.get(url);
281
+ if (!entry) {
282
+ console.log(`Instance not found: ${url}`);
283
+ console.log("Use 'instances list' to see configured instances.");
284
+ return;
285
+ }
286
+ const { config, state } = entry;
287
+ const metrics = registry.getRateLimitMetrics(url);
288
+ const introspection = registry.getIntrospection(url);
289
+ console.log(`\nInstance Information: ${url}`);
290
+ console.log(`─`.repeat(60));
291
+ console.log("\nConfiguration:");
292
+ console.log(` URL: ${config.url}`);
293
+ console.log(` Label: ${config.label ?? "(none)"}`);
294
+ console.log(` OAuth: ${config.oauth ? "Enabled (client configured)" : "Disabled"}`);
295
+ console.log(` TLS Verify: ${config.insecureSkipVerify ? "Disabled" : "Enabled"}`);
296
+ if (config.rateLimit) {
297
+ console.log("\nRate Limit Config:");
298
+ console.log(` Max Concurrent: ${config.rateLimit.maxConcurrent}`);
299
+ console.log(` Queue Size: ${config.rateLimit.queueSize}`);
300
+ console.log(` Queue Timeout: ${config.rateLimit.queueTimeout}ms`);
301
+ }
302
+ console.log("\nRuntime State:");
303
+ console.log(` Connection: ${state.connectionStatus}`);
304
+ console.log(` Last Health Check: ${state.lastHealthCheck?.toISOString() ?? "(never)"}`);
305
+ if (metrics) {
306
+ console.log("\nRate Limit Metrics:");
307
+ console.log(` Active Requests: ${metrics.activeRequests}/${metrics.maxConcurrent}`);
308
+ console.log(` Queued: ${metrics.queuedRequests}/${metrics.queueSize}`);
309
+ console.log(` Total Requests: ${metrics.requestsTotal}`);
310
+ console.log(` Rejected: ${metrics.requestsRejected}`);
311
+ console.log(` Avg Queue Wait: ${metrics.avgQueueWaitMs}ms`);
312
+ }
313
+ if (introspection) {
314
+ console.log("\nIntrospection Cache:");
315
+ console.log(` Version: ${introspection.version}`);
316
+ console.log(` Tier: ${introspection.tier}`);
317
+ console.log(` Cached At: ${introspection.cachedAt.toISOString()}`);
318
+ }
319
+ else {
320
+ console.log("\nIntrospection Cache: (not cached)");
321
+ }
322
+ }
323
+ function showSampleConfig(format) {
324
+ const fmt = format ?? "yaml";
325
+ let config = (0, instances_loader_js_1.generateSampleConfig)(fmt);
326
+ if (fmt === "json") {
327
+ try {
328
+ const parsed = JSON.parse(config);
329
+ if (parsed?.instances) {
330
+ for (const instance of parsed.instances) {
331
+ if (instance?.oauth?.clientSecret) {
332
+ instance.oauth.clientSecret = "***masked***";
333
+ }
334
+ }
335
+ }
336
+ if (parsed?.defaults?.oauth?.clientSecret) {
337
+ parsed.defaults.oauth.clientSecret = "***masked***";
338
+ }
339
+ config = JSON.stringify(parsed, null, 2);
340
+ }
341
+ catch {
342
+ }
343
+ }
344
+ else {
345
+ config = config.replace(/clientSecret:\s*["']?[^"'\n]+["']?/g, 'clientSecret: "***masked***"');
346
+ }
347
+ console.log(`\nSample ${fmt.toUpperCase()} Configuration:`);
348
+ console.log(`─`.repeat(60));
349
+ console.log(config);
350
+ }
351
+ //# sourceMappingURL=instances-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instances-command.js","sourceRoot":"","sources":["../../../../src/cli/instances/instances-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { InstanceOAuthConfigSchema, InstanceRateLimitConfigSchema, GitLabInstanceConfigSchema, InstanceDefaultsSchema, InstancesConfigFileSchema, ConnectionStatusSchema, parseInstanceUrlString, validateInstancesConfig, applyInstanceDefaults, } from "./instances-schema.js";
2
+ export type { InstanceOAuthConfig, InstanceRateLimitConfig, GitLabInstanceConfig, InstanceDefaults, InstancesConfigFile, ConnectionStatus, GitLabInstanceState, CachedIntrospection, } from "./instances-schema.js";
3
+ export { loadInstancesConfig, getInstanceByUrl, isKnownInstance, generateSampleConfig, } from "./instances-loader.js";
4
+ export type { LoadedInstancesConfig } from "./instances-loader.js";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSampleConfig = exports.isKnownInstance = exports.getInstanceByUrl = exports.loadInstancesConfig = exports.applyInstanceDefaults = exports.validateInstancesConfig = exports.parseInstanceUrlString = exports.ConnectionStatusSchema = exports.InstancesConfigFileSchema = exports.InstanceDefaultsSchema = exports.GitLabInstanceConfigSchema = exports.InstanceRateLimitConfigSchema = exports.InstanceOAuthConfigSchema = void 0;
4
+ var instances_schema_js_1 = require("./instances-schema.js");
5
+ Object.defineProperty(exports, "InstanceOAuthConfigSchema", { enumerable: true, get: function () { return instances_schema_js_1.InstanceOAuthConfigSchema; } });
6
+ Object.defineProperty(exports, "InstanceRateLimitConfigSchema", { enumerable: true, get: function () { return instances_schema_js_1.InstanceRateLimitConfigSchema; } });
7
+ Object.defineProperty(exports, "GitLabInstanceConfigSchema", { enumerable: true, get: function () { return instances_schema_js_1.GitLabInstanceConfigSchema; } });
8
+ Object.defineProperty(exports, "InstanceDefaultsSchema", { enumerable: true, get: function () { return instances_schema_js_1.InstanceDefaultsSchema; } });
9
+ Object.defineProperty(exports, "InstancesConfigFileSchema", { enumerable: true, get: function () { return instances_schema_js_1.InstancesConfigFileSchema; } });
10
+ Object.defineProperty(exports, "ConnectionStatusSchema", { enumerable: true, get: function () { return instances_schema_js_1.ConnectionStatusSchema; } });
11
+ Object.defineProperty(exports, "parseInstanceUrlString", { enumerable: true, get: function () { return instances_schema_js_1.parseInstanceUrlString; } });
12
+ Object.defineProperty(exports, "validateInstancesConfig", { enumerable: true, get: function () { return instances_schema_js_1.validateInstancesConfig; } });
13
+ Object.defineProperty(exports, "applyInstanceDefaults", { enumerable: true, get: function () { return instances_schema_js_1.applyInstanceDefaults; } });
14
+ var instances_loader_js_1 = require("./instances-loader.js");
15
+ Object.defineProperty(exports, "loadInstancesConfig", { enumerable: true, get: function () { return instances_loader_js_1.loadInstancesConfig; } });
16
+ Object.defineProperty(exports, "getInstanceByUrl", { enumerable: true, get: function () { return instances_loader_js_1.getInstanceByUrl; } });
17
+ Object.defineProperty(exports, "isKnownInstance", { enumerable: true, get: function () { return instances_loader_js_1.isKnownInstance; } });
18
+ Object.defineProperty(exports, "generateSampleConfig", { enumerable: true, get: function () { return instances_loader_js_1.generateSampleConfig; } });
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":";;;AAOA,6DAU+B;AAT7B,gIAAA,yBAAyB,OAAA;AACzB,oIAAA,6BAA6B,OAAA;AAC7B,iIAAA,0BAA0B,OAAA;AAC1B,6HAAA,sBAAsB,OAAA;AACtB,gIAAA,yBAAyB,OAAA;AACzB,6HAAA,sBAAsB,OAAA;AACtB,6HAAA,sBAAsB,OAAA;AACtB,8HAAA,uBAAuB,OAAA;AACvB,4HAAA,qBAAqB,OAAA;AAcvB,6DAK+B;AAJ7B,0HAAA,mBAAmB,OAAA;AACnB,uHAAA,gBAAgB,OAAA;AAChB,sHAAA,eAAe,OAAA;AACf,2HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,10 @@
1
+ import { GitLabInstanceConfig } from "./instances-schema.js";
2
+ export interface LoadedInstancesConfig {
3
+ instances: GitLabInstanceConfig[];
4
+ source: "file" | "env" | "legacy" | "none";
5
+ sourceDetails: string;
6
+ }
7
+ export declare function loadInstancesConfig(): Promise<LoadedInstancesConfig>;
8
+ export declare function getInstanceByUrl(instances: GitLabInstanceConfig[], url: string): GitLabInstanceConfig | undefined;
9
+ export declare function isKnownInstance(instances: GitLabInstanceConfig[], url: string): boolean;
10
+ export declare function generateSampleConfig(format: "yaml" | "json"): string;