@structured-world/gitlab-mcp 6.25.0 → 6.26.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/dist/src/cli/init/browser.d.ts +7 -0
- package/dist/src/cli/init/browser.js +27 -0
- package/dist/src/cli/init/browser.js.map +1 -0
- package/dist/src/cli/init/config-generator.d.ts +11 -0
- package/dist/src/cli/init/config-generator.js +87 -0
- package/dist/src/cli/init/config-generator.js.map +1 -0
- package/dist/src/cli/init/connection.d.ts +8 -0
- package/dist/src/cli/init/connection.js +118 -0
- package/dist/src/cli/init/connection.js.map +1 -0
- package/dist/src/cli/init/index.d.ts +4 -0
- package/dist/src/cli/init/index.js +32 -0
- package/dist/src/cli/init/index.js.map +1 -0
- package/dist/src/cli/init/types.d.ts +31 -0
- package/dist/src/cli/init/types.js +66 -0
- package/dist/src/cli/init/types.js.map +1 -0
- package/dist/src/cli/init/wizard.d.ts +1 -0
- package/dist/src/cli/init/wizard.js +283 -0
- package/dist/src/cli/init/wizard.js.map +1 -0
- package/dist/src/cli-utils.d.ts +1 -0
- package/dist/src/cli-utils.js +5 -0
- package/dist/src/cli-utils.js.map +1 -1
- package/dist/src/main.js +38 -0
- package/dist/src/main.js.map +1 -1
- package/dist/structured-world-gitlab-mcp-6.26.0.tgz +0 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -1
- package/dist/structured-world-gitlab-mcp-6.25.0.tgz +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type OpenModule = {
|
|
2
|
+
default: (url: string) => Promise<unknown>;
|
|
3
|
+
};
|
|
4
|
+
export declare function _setImportOpen(fn: () => Promise<OpenModule>): void;
|
|
5
|
+
export declare function _resetImportOpen(): void;
|
|
6
|
+
export declare function openUrl(url: string): Promise<boolean>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._setImportOpen = _setImportOpen;
|
|
4
|
+
exports._resetImportOpen = _resetImportOpen;
|
|
5
|
+
exports.openUrl = openUrl;
|
|
6
|
+
async function dynamicImport() {
|
|
7
|
+
const importFn = (0, eval)("m => import(m)");
|
|
8
|
+
return importFn("open");
|
|
9
|
+
}
|
|
10
|
+
let importOpen = dynamicImport;
|
|
11
|
+
function _setImportOpen(fn) {
|
|
12
|
+
importOpen = fn;
|
|
13
|
+
}
|
|
14
|
+
function _resetImportOpen() {
|
|
15
|
+
importOpen = dynamicImport;
|
|
16
|
+
}
|
|
17
|
+
async function openUrl(url) {
|
|
18
|
+
try {
|
|
19
|
+
const openModule = await importOpen();
|
|
20
|
+
await openModule.default(url);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/cli/init/browser.ts"],"names":[],"mappings":";;AAwBA,wCAEC;AAMD,4CAEC;AAMD,0BAQC;AArCD,KAAK,UAAU,aAAa;IAE1B,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,gBAAgB,CAAuC,CAAC;IACnF,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAGD,IAAI,UAAU,GAA8B,aAAa,CAAC;AAM1D,SAAgB,cAAc,CAAC,EAA6B;IAC1D,UAAU,GAAG,EAAE,CAAC;AAClB,CAAC;AAMD,SAAgB,gBAAgB;IAC9B,UAAU,GAAG,aAAa,CAAC;AAC7B,CAAC;AAMM,KAAK,UAAU,OAAO,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAC;QACtC,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { McpServerConfig, WizardConfig } from "./types";
|
|
2
|
+
export declare function generateServerConfig(config: WizardConfig): McpServerConfig;
|
|
3
|
+
export declare function generateMcpServersJson(config: WizardConfig, serverName?: string): string;
|
|
4
|
+
export declare function generateClaudeCodeCommand(config: WizardConfig, serverName?: string): string;
|
|
5
|
+
export declare function generateClientConfig(config: WizardConfig): {
|
|
6
|
+
type: "json" | "cli" | "instructions";
|
|
7
|
+
content: string;
|
|
8
|
+
configPath?: string;
|
|
9
|
+
cliCommand?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function generateClaudeDeepLink(config: WizardConfig, serverName?: string): string;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateServerConfig = generateServerConfig;
|
|
4
|
+
exports.generateMcpServersJson = generateMcpServersJson;
|
|
5
|
+
exports.generateClaudeCodeCommand = generateClaudeCodeCommand;
|
|
6
|
+
exports.generateClientConfig = generateClientConfig;
|
|
7
|
+
exports.generateClaudeDeepLink = generateClaudeDeepLink;
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
function shellEscape(value) {
|
|
10
|
+
return value
|
|
11
|
+
.replace(/\\/g, "\\\\")
|
|
12
|
+
.replace(/"/g, '\\"')
|
|
13
|
+
.replace(/\$/g, "\\$")
|
|
14
|
+
.replace(/`/g, "\\`")
|
|
15
|
+
.replace(/\n/g, "\\n");
|
|
16
|
+
}
|
|
17
|
+
function generateServerConfig(config) {
|
|
18
|
+
const normalizedUrl = config.instanceUrl.replace(/\/+$/, "").replace(/\/api\/v4$/i, "");
|
|
19
|
+
const env = {
|
|
20
|
+
GITLAB_API_URL: normalizedUrl,
|
|
21
|
+
GITLAB_TOKEN: config.token,
|
|
22
|
+
};
|
|
23
|
+
const presetName = types_1.ROLE_PRESETS[config.role];
|
|
24
|
+
if (presetName) {
|
|
25
|
+
env.GITLAB_MCP_PRESET = presetName;
|
|
26
|
+
}
|
|
27
|
+
if (config.readOnly) {
|
|
28
|
+
env.GITLAB_READ_ONLY_MODE = "true";
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
command: "npx",
|
|
32
|
+
args: ["-y", "@structured-world/gitlab-mcp@latest"],
|
|
33
|
+
env,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function generateMcpServersJson(config, serverName = "gitlab") {
|
|
37
|
+
const serverConfig = generateServerConfig(config);
|
|
38
|
+
const mcpServers = {
|
|
39
|
+
mcpServers: {
|
|
40
|
+
[serverName]: serverConfig,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
return JSON.stringify(mcpServers, null, 2);
|
|
44
|
+
}
|
|
45
|
+
function generateClaudeCodeCommand(config, serverName = "gitlab") {
|
|
46
|
+
const serverConfig = generateServerConfig(config);
|
|
47
|
+
const envFlags = Object.entries(serverConfig.env)
|
|
48
|
+
.map(([key, value]) => `--env ${key}="${shellEscape(value)}"`)
|
|
49
|
+
.join(" ");
|
|
50
|
+
return `claude mcp add ${serverName} ${serverConfig.command} ${serverConfig.args.join(" ")} ${envFlags}`;
|
|
51
|
+
}
|
|
52
|
+
function generateClientConfig(config) {
|
|
53
|
+
const clientInfo = types_1.MCP_CLIENT_INFO[config.client];
|
|
54
|
+
if (config.client === "claude-code") {
|
|
55
|
+
return {
|
|
56
|
+
type: "cli",
|
|
57
|
+
content: generateMcpServersJson(config),
|
|
58
|
+
cliCommand: generateClaudeCodeCommand(config),
|
|
59
|
+
configPath: clientInfo.configPath,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (config.client !== "generic") {
|
|
63
|
+
return {
|
|
64
|
+
type: "json",
|
|
65
|
+
content: generateMcpServersJson(config),
|
|
66
|
+
configPath: clientInfo.configPath,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
type: "instructions",
|
|
71
|
+
content: generateMcpServersJson(config),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function generateClaudeDeepLink(config, serverName = "gitlab") {
|
|
75
|
+
const serverConfig = generateServerConfig(config);
|
|
76
|
+
const configObject = {
|
|
77
|
+
name: serverName,
|
|
78
|
+
...serverConfig,
|
|
79
|
+
};
|
|
80
|
+
const base64Config = Buffer.from(JSON.stringify(configObject))
|
|
81
|
+
.toString("base64")
|
|
82
|
+
.replace(/\+/g, "-")
|
|
83
|
+
.replace(/\//g, "_")
|
|
84
|
+
.replace(/=+$/, "");
|
|
85
|
+
return `claude://settings/mcp/add?config=${base64Config}`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=config-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../../../src/cli/init/config-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConnectionTestResult } from "./types";
|
|
2
|
+
export declare function testConnection(instanceUrl: string, token: string): Promise<ConnectionTestResult>;
|
|
3
|
+
export declare function validateGitLabUrl(url: string): {
|
|
4
|
+
valid: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function isGitLabSaas(url: string): boolean;
|
|
8
|
+
export declare function getPatCreationUrl(instanceUrl: string, readOnly?: boolean): string;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testConnection = testConnection;
|
|
4
|
+
exports.validateGitLabUrl = validateGitLabUrl;
|
|
5
|
+
exports.isGitLabSaas = isGitLabSaas;
|
|
6
|
+
exports.getPatCreationUrl = getPatCreationUrl;
|
|
7
|
+
async function testConnection(instanceUrl, token) {
|
|
8
|
+
const baseUrl = instanceUrl.replace(/\/$/, "").replace(/\/api\/v4\/?$/, "");
|
|
9
|
+
const apiUrl = `${baseUrl}/api/v4`;
|
|
10
|
+
const controller = new AbortController();
|
|
11
|
+
const timeoutId = setTimeout(() => controller.abort(), 10000);
|
|
12
|
+
try {
|
|
13
|
+
const userResponse = await fetch(`${apiUrl}/user`, {
|
|
14
|
+
headers: {
|
|
15
|
+
"PRIVATE-TOKEN": token,
|
|
16
|
+
Accept: "application/json",
|
|
17
|
+
},
|
|
18
|
+
signal: controller.signal,
|
|
19
|
+
});
|
|
20
|
+
if (!userResponse.ok) {
|
|
21
|
+
if (userResponse.status === 401) {
|
|
22
|
+
return {
|
|
23
|
+
success: false,
|
|
24
|
+
error: "Invalid token - authentication failed",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (userResponse.status === 403) {
|
|
28
|
+
return {
|
|
29
|
+
success: false,
|
|
30
|
+
error: "Token lacks required permissions",
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
success: false,
|
|
35
|
+
error: `GitLab API error: ${userResponse.status} ${userResponse.statusText}`,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const userData = (await userResponse.json());
|
|
39
|
+
let gitlabVersion;
|
|
40
|
+
try {
|
|
41
|
+
const versionResponse = await fetch(`${apiUrl}/version`, {
|
|
42
|
+
headers: {
|
|
43
|
+
"PRIVATE-TOKEN": token,
|
|
44
|
+
Accept: "application/json",
|
|
45
|
+
},
|
|
46
|
+
signal: controller.signal,
|
|
47
|
+
});
|
|
48
|
+
if (versionResponse.ok) {
|
|
49
|
+
const versionData = (await versionResponse.json());
|
|
50
|
+
gitlabVersion = versionData.version;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
success: true,
|
|
57
|
+
username: userData.username,
|
|
58
|
+
email: userData.email,
|
|
59
|
+
isAdmin: userData.is_admin,
|
|
60
|
+
gitlabVersion,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: `Connection timeout - ${instanceUrl} did not respond within 10 seconds`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (error instanceof TypeError && error.message.includes("fetch")) {
|
|
71
|
+
return {
|
|
72
|
+
success: false,
|
|
73
|
+
error: `Cannot connect to ${instanceUrl} - check URL and network`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
error: error instanceof Error ? error.message : String(error),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
clearTimeout(timeoutId);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function validateGitLabUrl(url) {
|
|
86
|
+
if (!url) {
|
|
87
|
+
return { valid: false, error: "URL is required" };
|
|
88
|
+
}
|
|
89
|
+
if (!url.startsWith("https://") && !url.startsWith("http://")) {
|
|
90
|
+
return { valid: false, error: "URL must start with https:// or http://" };
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const parsed = new URL(url);
|
|
94
|
+
if (!parsed.hostname) {
|
|
95
|
+
return { valid: false, error: "Invalid URL hostname" };
|
|
96
|
+
}
|
|
97
|
+
return { valid: true };
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return { valid: false, error: "Invalid URL format" };
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function isGitLabSaas(url) {
|
|
104
|
+
try {
|
|
105
|
+
const parsed = new URL(url);
|
|
106
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
107
|
+
return hostname === "gitlab.com" || hostname.endsWith(".gitlab.com");
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function getPatCreationUrl(instanceUrl, readOnly = false) {
|
|
114
|
+
const baseUrl = instanceUrl.replace(/\/$/, "");
|
|
115
|
+
const scopes = readOnly ? "read_api,read_user" : "api,read_user";
|
|
116
|
+
return `${baseUrl}/-/user_settings/personal_access_tokens?name=gitlab-mcp&scopes=${scopes}`;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../src/cli/init/connection.ts"],"names":[],"mappings":";;AASA,wCAgGC;AAKD,8CAmBC;AAQD,oCASC;AAMD,8CAKC;AApJM,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,KAAa;IAGb,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC;IAGnC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAE9D,IAAI,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,OAAO,EAAE;YACjD,OAAO,EAAE;gBACP,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE,kBAAkB;aAC3B;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAChC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,uCAAuC;iBAC/C,CAAC;YACJ,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAChC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,kCAAkC;iBAC1C,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE;aAC7E,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAI1C,CAAC;QAGF,IAAI,aAAiC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,UAAU,EAAE;gBACvD,OAAO,EAAE;oBACP,eAAe,EAAE,KAAK;oBACtB,MAAM,EAAE,kBAAkB;iBAC3B;gBACD,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,CAAyB,CAAC;gBAC3E,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,QAAQ;YAC1B,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,wBAAwB,WAAW,oCAAoC;aAC/E,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,qBAAqB,WAAW,0BAA0B;aAClE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAKD,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACpD,CAAC;IAGD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IAC5E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAQD,SAAgB,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE/C,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAMD,SAAgB,iBAAiB,CAAC,WAAmB,EAAE,QAAQ,GAAG,KAAK;IACrE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC;IACjE,OAAO,GAAG,OAAO,kEAAkE,MAAM,EAAE,CAAC;AAC9F,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { runWizard } from "./wizard";
|
|
2
|
+
export { testConnection, validateGitLabUrl, getPatCreationUrl, isGitLabSaas } from "./connection";
|
|
3
|
+
export { generateServerConfig, generateMcpServersJson, generateClaudeCodeCommand, generateClientConfig, generateClaudeDeepLink, } from "./config-generator";
|
|
4
|
+
export * from "./types";
|
|
@@ -0,0 +1,32 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.generateClaudeDeepLink = exports.generateClientConfig = exports.generateClaudeCodeCommand = exports.generateMcpServersJson = exports.generateServerConfig = exports.isGitLabSaas = exports.getPatCreationUrl = exports.validateGitLabUrl = exports.testConnection = exports.runWizard = void 0;
|
|
18
|
+
var wizard_1 = require("./wizard");
|
|
19
|
+
Object.defineProperty(exports, "runWizard", { enumerable: true, get: function () { return wizard_1.runWizard; } });
|
|
20
|
+
var connection_1 = require("./connection");
|
|
21
|
+
Object.defineProperty(exports, "testConnection", { enumerable: true, get: function () { return connection_1.testConnection; } });
|
|
22
|
+
Object.defineProperty(exports, "validateGitLabUrl", { enumerable: true, get: function () { return connection_1.validateGitLabUrl; } });
|
|
23
|
+
Object.defineProperty(exports, "getPatCreationUrl", { enumerable: true, get: function () { return connection_1.getPatCreationUrl; } });
|
|
24
|
+
Object.defineProperty(exports, "isGitLabSaas", { enumerable: true, get: function () { return connection_1.isGitLabSaas; } });
|
|
25
|
+
var config_generator_1 = require("./config-generator");
|
|
26
|
+
Object.defineProperty(exports, "generateServerConfig", { enumerable: true, get: function () { return config_generator_1.generateServerConfig; } });
|
|
27
|
+
Object.defineProperty(exports, "generateMcpServersJson", { enumerable: true, get: function () { return config_generator_1.generateMcpServersJson; } });
|
|
28
|
+
Object.defineProperty(exports, "generateClaudeCodeCommand", { enumerable: true, get: function () { return config_generator_1.generateClaudeCodeCommand; } });
|
|
29
|
+
Object.defineProperty(exports, "generateClientConfig", { enumerable: true, get: function () { return config_generator_1.generateClientConfig; } });
|
|
30
|
+
Object.defineProperty(exports, "generateClaudeDeepLink", { enumerable: true, get: function () { return config_generator_1.generateClaudeDeepLink; } });
|
|
31
|
+
__exportStar(require("./types"), exports);
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/init/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,2CAAkG;AAAzF,4GAAA,cAAc,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,0GAAA,YAAY,OAAA;AAC3E,uDAM4B;AAL1B,wHAAA,oBAAoB,OAAA;AACpB,0HAAA,sBAAsB,OAAA;AACtB,6HAAA,yBAAyB,OAAA;AACzB,wHAAA,oBAAoB,OAAA;AACpB,0HAAA,sBAAsB,OAAA;AAExB,0CAAwB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type UserRole = "developer" | "senior-developer" | "tech-lead" | "devops" | "reviewer" | "readonly";
|
|
2
|
+
export type InstanceType = "saas" | "self-hosted";
|
|
3
|
+
export type McpClient = "claude-desktop" | "claude-code" | "cursor" | "vscode-copilot" | "windsurf" | "cline" | "roo-code" | "generic";
|
|
4
|
+
export interface WizardConfig {
|
|
5
|
+
instanceUrl: string;
|
|
6
|
+
token: string;
|
|
7
|
+
role: UserRole;
|
|
8
|
+
client: McpClient;
|
|
9
|
+
readOnly: boolean;
|
|
10
|
+
presetName?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ConnectionTestResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
username?: string;
|
|
15
|
+
email?: string;
|
|
16
|
+
isAdmin?: boolean;
|
|
17
|
+
gitlabVersion?: string;
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface McpServerConfig {
|
|
21
|
+
command: string;
|
|
22
|
+
args: string[];
|
|
23
|
+
env: Record<string, string>;
|
|
24
|
+
}
|
|
25
|
+
export declare const ROLE_PRESETS: Record<UserRole, string>;
|
|
26
|
+
export declare const ROLE_DESCRIPTIONS: Record<UserRole, string>;
|
|
27
|
+
export declare const MCP_CLIENT_INFO: Record<McpClient, {
|
|
28
|
+
name: string;
|
|
29
|
+
configPath: string;
|
|
30
|
+
supportsCliInstall: boolean;
|
|
31
|
+
}>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MCP_CLIENT_INFO = exports.ROLE_DESCRIPTIONS = exports.ROLE_PRESETS = void 0;
|
|
4
|
+
exports.ROLE_PRESETS = {
|
|
5
|
+
developer: "developer",
|
|
6
|
+
"senior-developer": "senior-dev",
|
|
7
|
+
"tech-lead": "full-access",
|
|
8
|
+
devops: "devops",
|
|
9
|
+
reviewer: "code-reviewer",
|
|
10
|
+
readonly: "readonly",
|
|
11
|
+
};
|
|
12
|
+
exports.ROLE_DESCRIPTIONS = {
|
|
13
|
+
developer: "Standard development workflow (issues, MRs, pipelines)",
|
|
14
|
+
"senior-developer": "Extended access with wiki, snippets, variables",
|
|
15
|
+
"tech-lead": "Full access to all features including admin tools",
|
|
16
|
+
devops: "CI/CD focused (pipelines, variables, deployments)",
|
|
17
|
+
reviewer: "Code review workflow (MRs, discussions, approvals)",
|
|
18
|
+
readonly: "Read-only access for monitoring and viewing",
|
|
19
|
+
};
|
|
20
|
+
exports.MCP_CLIENT_INFO = {
|
|
21
|
+
"claude-desktop": {
|
|
22
|
+
name: "Claude Desktop",
|
|
23
|
+
configPath: process.platform === "darwin"
|
|
24
|
+
? "~/Library/Application Support/Claude/claude_desktop_config.json"
|
|
25
|
+
: process.platform === "win32"
|
|
26
|
+
? "%APPDATA%/Claude/claude_desktop_config.json"
|
|
27
|
+
: "",
|
|
28
|
+
supportsCliInstall: false,
|
|
29
|
+
},
|
|
30
|
+
"claude-code": {
|
|
31
|
+
name: "Claude Code",
|
|
32
|
+
configPath: "~/.claude.json",
|
|
33
|
+
supportsCliInstall: true,
|
|
34
|
+
},
|
|
35
|
+
cursor: {
|
|
36
|
+
name: "Cursor",
|
|
37
|
+
configPath: "~/.cursor/mcp.json",
|
|
38
|
+
supportsCliInstall: false,
|
|
39
|
+
},
|
|
40
|
+
"vscode-copilot": {
|
|
41
|
+
name: "VS Code (GitHub Copilot)",
|
|
42
|
+
configPath: ".vscode/mcp.json",
|
|
43
|
+
supportsCliInstall: false,
|
|
44
|
+
},
|
|
45
|
+
windsurf: {
|
|
46
|
+
name: "Windsurf",
|
|
47
|
+
configPath: "~/.codeium/windsurf/mcp_config.json",
|
|
48
|
+
supportsCliInstall: false,
|
|
49
|
+
},
|
|
50
|
+
cline: {
|
|
51
|
+
name: "Cline",
|
|
52
|
+
configPath: "~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json",
|
|
53
|
+
supportsCliInstall: false,
|
|
54
|
+
},
|
|
55
|
+
"roo-code": {
|
|
56
|
+
name: "Roo Code",
|
|
57
|
+
configPath: "~/.roo/mcp.json",
|
|
58
|
+
supportsCliInstall: false,
|
|
59
|
+
},
|
|
60
|
+
generic: {
|
|
61
|
+
name: "Other / Generic",
|
|
62
|
+
configPath: "",
|
|
63
|
+
supportsCliInstall: false,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/cli/init/types.ts"],"names":[],"mappings":";;;AA2Fa,QAAA,YAAY,GAA6B;IACpD,SAAS,EAAE,WAAW;IACtB,kBAAkB,EAAE,YAAY;IAChC,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAKW,QAAA,iBAAiB,GAA6B;IACzD,SAAS,EAAE,wDAAwD;IACnE,kBAAkB,EAAE,gDAAgD;IACpE,WAAW,EAAE,mDAAmD;IAChE,MAAM,EAAE,mDAAmD;IAC3D,QAAQ,EAAE,oDAAoD;IAC9D,QAAQ,EAAE,6CAA6C;CACxD,CAAC;AAKW,QAAA,eAAe,GAOxB;IACF,gBAAgB,EAAE;QAChB,IAAI,EAAE,gBAAgB;QACtB,UAAU,EACR,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC3B,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC5B,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,EAAE;QACV,kBAAkB,EAAE,KAAK;KAC1B;IACD,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,gBAAgB;QAC5B,kBAAkB,EAAE,IAAI;KACzB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,oBAAoB;QAChC,kBAAkB,EAAE,KAAK;KAC1B;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,0BAA0B;QAChC,UAAU,EAAE,kBAAkB;QAC9B,kBAAkB,EAAE,KAAK;KAC1B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,qCAAqC;QACjD,kBAAkB,EAAE,KAAK;KAC1B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,UAAU,EACR,+GAA+G;QACjH,kBAAkB,EAAE,KAAK;KAC1B;IACD,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,iBAAiB;QAC7B,kBAAkB,EAAE,KAAK;KAC1B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB;QACvB,UAAU,EAAE,EAAE;QACd,kBAAkB,EAAE,KAAK;KAC1B;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runWizard(): Promise<void>;
|