@structured-world/gitlab-mcp 6.11.0 → 6.13.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 (47) hide show
  1. package/dist/src/cli/list-tools.js +75 -0
  2. package/dist/src/cli/list-tools.js.map +1 -1
  3. package/dist/src/entities/files/registry.js +2 -0
  4. package/dist/src/entities/files/registry.js.map +1 -1
  5. package/dist/src/entities/integrations/registry.js +2 -0
  6. package/dist/src/entities/integrations/registry.js.map +1 -1
  7. package/dist/src/entities/labels/registry.js +2 -0
  8. package/dist/src/entities/labels/registry.js.map +1 -1
  9. package/dist/src/entities/milestones/registry.js +2 -0
  10. package/dist/src/entities/milestones/registry.js.map +1 -1
  11. package/dist/src/entities/mrs/registry.js +5 -0
  12. package/dist/src/entities/mrs/registry.js.map +1 -1
  13. package/dist/src/entities/pipelines/registry.js +3 -0
  14. package/dist/src/entities/pipelines/registry.js.map +1 -1
  15. package/dist/src/entities/snippets/registry.js +2 -0
  16. package/dist/src/entities/snippets/registry.js.map +1 -1
  17. package/dist/src/entities/variables/registry.js +2 -0
  18. package/dist/src/entities/variables/registry.js.map +1 -1
  19. package/dist/src/entities/webhooks/registry.js +2 -0
  20. package/dist/src/entities/webhooks/registry.js.map +1 -1
  21. package/dist/src/entities/wiki/registry.js +2 -0
  22. package/dist/src/entities/wiki/registry.js.map +1 -1
  23. package/dist/src/entities/workitems/registry.js +2 -0
  24. package/dist/src/entities/workitems/registry.js.map +1 -1
  25. package/dist/src/main.js +44 -1
  26. package/dist/src/main.js.map +1 -1
  27. package/dist/src/profiles/applicator.d.ts +19 -0
  28. package/dist/src/profiles/applicator.js +250 -0
  29. package/dist/src/profiles/applicator.js.map +1 -0
  30. package/dist/src/profiles/builtin/admin.yaml +25 -0
  31. package/dist/src/profiles/builtin/developer.yaml +35 -0
  32. package/dist/src/profiles/builtin/readonly.yaml +28 -0
  33. package/dist/src/profiles/index.d.ts +3 -0
  34. package/dist/src/profiles/index.js +18 -0
  35. package/dist/src/profiles/index.js.map +1 -0
  36. package/dist/src/profiles/loader.d.ts +32 -0
  37. package/dist/src/profiles/loader.js +316 -0
  38. package/dist/src/profiles/loader.js.map +1 -0
  39. package/dist/src/profiles/types.d.ts +167 -0
  40. package/dist/src/profiles/types.js +84 -0
  41. package/dist/src/profiles/types.js.map +1 -0
  42. package/dist/src/types.d.ts +5 -0
  43. package/dist/src/utils/fetch.js.map +1 -1
  44. package/dist/structured-world-gitlab-mcp-6.13.0.tgz +0 -0
  45. package/dist/tsconfig.build.tsbuildinfo +1 -1
  46. package/package.json +5 -3
  47. package/dist/structured-world-gitlab-mcp-6.11.0.tgz +0 -0
@@ -0,0 +1,28 @@
1
+ # Read-only preset - safe browsing without write access
2
+ #
3
+ # Use this preset when you need to explore a GitLab instance
4
+ # without any risk of modifying data.
5
+ #
6
+ # All write operations (create, update, delete) are blocked.
7
+ #
8
+ # NOTE: This is a PRESET, not a full profile.
9
+ # It does NOT contain host or auth - those come from your
10
+ # environment variables (GITLAB_API_URL, GITLAB_TOKEN).
11
+
12
+ description: "Read-only access - blocks all write operations"
13
+
14
+ read_only: true
15
+ denied_tools_regex: "^manage_|^create_"
16
+
17
+ features:
18
+ wiki: true
19
+ milestones: true
20
+ pipelines: true
21
+ labels: true
22
+ mrs: true
23
+ files: true
24
+ variables: false # Variables often contain secrets
25
+ workitems: true
26
+ webhooks: false # Webhooks are admin-level
27
+ snippets: true
28
+ integrations: false # Integrations are admin-level
@@ -0,0 +1,3 @@
1
+ export { Profile, Preset, ProfilesConfig, ProfileInfo, ProfileValidationResult, AuthConfig, PatAuth, OAuthAuth, CookieAuth, FeatureFlags, ProfileSchema, PresetSchema, ProfilesConfigSchema, } from "./types";
2
+ export { ProfileLoader, loadProfile, getProfileNameFromEnv } from "./loader";
3
+ export { applyProfile, applyPreset, loadAndApplyProfile, loadAndApplyPreset, tryApplyProfileFromEnv, ApplyProfileResult, ApplyPresetResult, } from "./applicator";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryApplyProfileFromEnv = exports.loadAndApplyPreset = exports.loadAndApplyProfile = exports.applyPreset = exports.applyProfile = exports.getProfileNameFromEnv = exports.loadProfile = exports.ProfileLoader = exports.ProfilesConfigSchema = exports.PresetSchema = exports.ProfileSchema = void 0;
4
+ var types_1 = require("./types");
5
+ Object.defineProperty(exports, "ProfileSchema", { enumerable: true, get: function () { return types_1.ProfileSchema; } });
6
+ Object.defineProperty(exports, "PresetSchema", { enumerable: true, get: function () { return types_1.PresetSchema; } });
7
+ Object.defineProperty(exports, "ProfilesConfigSchema", { enumerable: true, get: function () { return types_1.ProfilesConfigSchema; } });
8
+ var loader_1 = require("./loader");
9
+ Object.defineProperty(exports, "ProfileLoader", { enumerable: true, get: function () { return loader_1.ProfileLoader; } });
10
+ Object.defineProperty(exports, "loadProfile", { enumerable: true, get: function () { return loader_1.loadProfile; } });
11
+ Object.defineProperty(exports, "getProfileNameFromEnv", { enumerable: true, get: function () { return loader_1.getProfileNameFromEnv; } });
12
+ var applicator_1 = require("./applicator");
13
+ Object.defineProperty(exports, "applyProfile", { enumerable: true, get: function () { return applicator_1.applyProfile; } });
14
+ Object.defineProperty(exports, "applyPreset", { enumerable: true, get: function () { return applicator_1.applyPreset; } });
15
+ Object.defineProperty(exports, "loadAndApplyProfile", { enumerable: true, get: function () { return applicator_1.loadAndApplyProfile; } });
16
+ Object.defineProperty(exports, "loadAndApplyPreset", { enumerable: true, get: function () { return applicator_1.loadAndApplyPreset; } });
17
+ Object.defineProperty(exports, "tryApplyProfileFromEnv", { enumerable: true, get: function () { return applicator_1.tryApplyProfileFromEnv; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiles/index.ts"],"names":[],"mappings":";;;AAiBA,iCAciB;AAHf,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,6GAAA,oBAAoB,OAAA;AAItB,mCAA6E;AAApE,uGAAA,aAAa,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAG1D,2CAQsB;AAPpB,0GAAA,YAAY,OAAA;AACZ,yGAAA,WAAW,OAAA;AACX,iHAAA,mBAAmB,OAAA;AACnB,gHAAA,kBAAkB,OAAA;AAClB,oHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,32 @@
1
+ import { Profile, Preset, ProfileInfo, ProfileValidationResult } from "./types";
2
+ export declare class ProfileLoader {
3
+ private userConfigPath;
4
+ private builtinDir;
5
+ private profileCache;
6
+ private presetCache;
7
+ private configCache;
8
+ constructor(userConfigPath?: string, builtinDir?: string);
9
+ loadProfile(name: string): Promise<Profile>;
10
+ loadPreset(name: string): Promise<Preset>;
11
+ loadAny(name: string): Promise<{
12
+ type: "profile";
13
+ data: Profile;
14
+ } | {
15
+ type: "preset";
16
+ data: Preset;
17
+ }>;
18
+ getDefaultProfileName(): Promise<string | undefined>;
19
+ private loadUserConfig;
20
+ private loadUserProfile;
21
+ private loadBuiltinPreset;
22
+ listProfiles(): Promise<ProfileInfo[]>;
23
+ private validateDeniedActions;
24
+ validateProfile(profile: Profile): Promise<ProfileValidationResult>;
25
+ validatePreset(preset: Preset): Promise<ProfileValidationResult>;
26
+ static ensureConfigDir(): void;
27
+ static getUserConfigPath(): string;
28
+ clearCache(): void;
29
+ }
30
+ export declare function loadProfile(name: string): Promise<Profile>;
31
+ export declare function loadPreset(name: string): Promise<Preset>;
32
+ export declare function getProfileNameFromEnv(): string | undefined;
@@ -0,0 +1,316 @@
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.ProfileLoader = void 0;
37
+ exports.loadProfile = loadProfile;
38
+ exports.loadPreset = loadPreset;
39
+ exports.getProfileNameFromEnv = getProfileNameFromEnv;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const yaml = __importStar(require("yaml"));
44
+ const types_1 = require("./types");
45
+ const logger_1 = require("../logger");
46
+ const USER_CONFIG_DIR = path.join(os.homedir(), ".config", "gitlab-mcp");
47
+ const USER_PROFILES_PATH = path.join(USER_CONFIG_DIR, "profiles.yaml");
48
+ function getBuiltinDir() {
49
+ const candidates = [
50
+ path.join(__dirname, "builtin"),
51
+ path.join(process.cwd(), "dist", "src", "profiles", "builtin"),
52
+ path.join(process.cwd(), "src", "profiles", "builtin"),
53
+ ];
54
+ for (const dir of candidates) {
55
+ if (fs.existsSync(dir)) {
56
+ return dir;
57
+ }
58
+ }
59
+ return candidates[0];
60
+ }
61
+ class ProfileLoader {
62
+ userConfigPath;
63
+ builtinDir;
64
+ profileCache = new Map();
65
+ presetCache = new Map();
66
+ configCache = null;
67
+ constructor(userConfigPath = USER_PROFILES_PATH, builtinDir) {
68
+ this.userConfigPath = userConfigPath;
69
+ this.builtinDir = builtinDir ?? getBuiltinDir();
70
+ }
71
+ async loadProfile(name) {
72
+ const cached = this.profileCache.get(name);
73
+ if (cached) {
74
+ return cached;
75
+ }
76
+ const userProfile = await this.loadUserProfile(name);
77
+ if (userProfile) {
78
+ this.profileCache.set(name, userProfile);
79
+ return userProfile;
80
+ }
81
+ throw new Error(`Profile '${name}' not found. Full profiles must be defined in user config. ` +
82
+ `For built-in presets (settings only), use loadPreset('${name}').`);
83
+ }
84
+ async loadPreset(name) {
85
+ const cached = this.presetCache.get(name);
86
+ if (cached) {
87
+ return cached;
88
+ }
89
+ const preset = await this.loadBuiltinPreset(name);
90
+ if (preset) {
91
+ this.presetCache.set(name, preset);
92
+ return preset;
93
+ }
94
+ throw new Error(`Preset '${name}' not found in built-in presets`);
95
+ }
96
+ async loadAny(name) {
97
+ try {
98
+ const profile = await this.loadProfile(name);
99
+ return { type: "profile", data: profile };
100
+ }
101
+ catch {
102
+ }
103
+ const preset = await this.loadBuiltinPreset(name);
104
+ if (preset) {
105
+ return { type: "preset", data: preset };
106
+ }
107
+ throw new Error(`'${name}' not found as user profile or built-in preset. ` +
108
+ `Use 'yarn list-tools --profiles' to see available options.`);
109
+ }
110
+ async getDefaultProfileName() {
111
+ const config = await this.loadUserConfig();
112
+ return config?.default_profile;
113
+ }
114
+ async loadUserConfig() {
115
+ if (this.configCache !== null) {
116
+ return this.configCache;
117
+ }
118
+ if (!fs.existsSync(this.userConfigPath)) {
119
+ logger_1.logger.debug({ path: this.userConfigPath }, "User profiles config not found");
120
+ return null;
121
+ }
122
+ try {
123
+ const content = fs.readFileSync(this.userConfigPath, "utf8");
124
+ const parsed = yaml.parse(content);
125
+ const validated = types_1.ProfilesConfigSchema.parse(parsed);
126
+ this.configCache = validated;
127
+ logger_1.logger.debug({ path: this.userConfigPath, profiles: Object.keys(validated.profiles) }, "Loaded user profiles config");
128
+ return validated;
129
+ }
130
+ catch (error) {
131
+ const message = error instanceof Error ? error.message : String(error);
132
+ logger_1.logger.error({ error: message, path: this.userConfigPath }, "Failed to parse user profiles");
133
+ throw new Error(`Invalid profiles config: ${message}`);
134
+ }
135
+ }
136
+ async loadUserProfile(name) {
137
+ const config = await this.loadUserConfig();
138
+ return config?.profiles[name] ?? null;
139
+ }
140
+ async loadBuiltinPreset(name) {
141
+ const presetPath = path.join(this.builtinDir, `${name}.yaml`);
142
+ if (!fs.existsSync(presetPath)) {
143
+ logger_1.logger.debug({ name, path: presetPath }, "Built-in preset not found");
144
+ return null;
145
+ }
146
+ try {
147
+ const content = fs.readFileSync(presetPath, "utf8");
148
+ const parsed = yaml.parse(content);
149
+ const validated = types_1.PresetSchema.parse(parsed);
150
+ logger_1.logger.debug({ name }, "Loaded built-in preset");
151
+ return validated;
152
+ }
153
+ catch (error) {
154
+ const message = error instanceof Error ? error.message : String(error);
155
+ logger_1.logger.error({ error: message, name }, "Failed to parse built-in preset");
156
+ throw new Error(`Invalid built-in preset '${name}': ${message}`);
157
+ }
158
+ }
159
+ async listProfiles() {
160
+ const profiles = [];
161
+ const userConfig = await this.loadUserConfig();
162
+ if (userConfig) {
163
+ for (const [name, profile] of Object.entries(userConfig.profiles)) {
164
+ profiles.push({
165
+ name,
166
+ host: profile.host,
167
+ authType: profile.auth.type,
168
+ readOnly: profile.read_only ?? false,
169
+ isBuiltIn: false,
170
+ isPreset: false,
171
+ });
172
+ }
173
+ }
174
+ if (fs.existsSync(this.builtinDir)) {
175
+ const files = fs.readdirSync(this.builtinDir).filter(f => f.endsWith(".yaml"));
176
+ for (const file of files) {
177
+ const name = path.basename(file, ".yaml");
178
+ try {
179
+ const preset = await this.loadBuiltinPreset(name);
180
+ if (preset) {
181
+ profiles.push({
182
+ name,
183
+ readOnly: preset.read_only ?? false,
184
+ isBuiltIn: true,
185
+ isPreset: true,
186
+ description: preset.description,
187
+ });
188
+ }
189
+ }
190
+ catch {
191
+ logger_1.logger.warn({ name }, "Skipping invalid built-in preset");
192
+ }
193
+ }
194
+ }
195
+ return profiles.sort((a, b) => {
196
+ if (a.isPreset !== b.isPreset) {
197
+ return a.isPreset ? 1 : -1;
198
+ }
199
+ return a.name.localeCompare(b.name);
200
+ });
201
+ }
202
+ validateDeniedActions(deniedActions, errors, warnings) {
203
+ if (!deniedActions)
204
+ return;
205
+ for (const action of deniedActions) {
206
+ const colonIndex = action.indexOf(":");
207
+ if (colonIndex === -1) {
208
+ errors.push(`Invalid denied_action format '${action}', expected 'tool:action'`);
209
+ }
210
+ else {
211
+ const tool = action.slice(0, colonIndex).trim();
212
+ const act = action.slice(colonIndex + 1).trim();
213
+ if (!tool || !act) {
214
+ errors.push(`Invalid denied_action format '${action}', expected 'tool:action'`);
215
+ }
216
+ else if (action !== `${tool}:${act}`) {
217
+ warnings.push(`denied_action '${action}' has extra whitespace, normalized to '${tool}:${act}'`);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ async validateProfile(profile) {
223
+ const errors = [];
224
+ const warnings = [];
225
+ if (profile.auth.type === "pat" && profile.auth.token_env) {
226
+ if (!process.env[profile.auth.token_env]) {
227
+ warnings.push(`Environment variable '${profile.auth.token_env}' is not set`);
228
+ }
229
+ }
230
+ if (profile.auth.type === "oauth" && profile.auth.client_id_env) {
231
+ if (!process.env[profile.auth.client_id_env]) {
232
+ warnings.push(`Environment variable '${profile.auth.client_id_env}' is not set`);
233
+ }
234
+ }
235
+ if (profile.auth.type === "oauth" && profile.auth.client_secret_env) {
236
+ if (!process.env[profile.auth.client_secret_env]) {
237
+ warnings.push(`Environment variable '${profile.auth.client_secret_env}' is not set`);
238
+ }
239
+ }
240
+ if (profile.auth.type === "cookie" &&
241
+ "cookie_path" in profile.auth &&
242
+ profile.auth.cookie_path) {
243
+ if (!fs.existsSync(profile.auth.cookie_path)) {
244
+ errors.push(`Cookie file not found: ${profile.auth.cookie_path}`);
245
+ }
246
+ }
247
+ if (profile.ssl_cert_path && !fs.existsSync(profile.ssl_cert_path)) {
248
+ errors.push(`SSL certificate not found: ${profile.ssl_cert_path}`);
249
+ }
250
+ if (profile.ssl_key_path && !fs.existsSync(profile.ssl_key_path)) {
251
+ errors.push(`SSL key not found: ${profile.ssl_key_path}`);
252
+ }
253
+ if (profile.ca_cert_path && !fs.existsSync(profile.ca_cert_path)) {
254
+ errors.push(`CA certificate not found: ${profile.ca_cert_path}`);
255
+ }
256
+ if (profile.denied_tools_regex) {
257
+ try {
258
+ new RegExp(profile.denied_tools_regex);
259
+ }
260
+ catch {
261
+ errors.push(`Invalid regex in denied_tools_regex: ${profile.denied_tools_regex}`);
262
+ }
263
+ }
264
+ this.validateDeniedActions(profile.denied_actions, errors, warnings);
265
+ return {
266
+ valid: errors.length === 0,
267
+ errors,
268
+ warnings,
269
+ };
270
+ }
271
+ async validatePreset(preset) {
272
+ const errors = [];
273
+ const warnings = [];
274
+ if (preset.denied_tools_regex) {
275
+ try {
276
+ new RegExp(preset.denied_tools_regex);
277
+ }
278
+ catch {
279
+ errors.push(`Invalid regex in denied_tools_regex: ${preset.denied_tools_regex}`);
280
+ }
281
+ }
282
+ this.validateDeniedActions(preset.denied_actions, errors, warnings);
283
+ return {
284
+ valid: errors.length === 0,
285
+ errors,
286
+ warnings,
287
+ };
288
+ }
289
+ static ensureConfigDir() {
290
+ if (!fs.existsSync(USER_CONFIG_DIR)) {
291
+ fs.mkdirSync(USER_CONFIG_DIR, { recursive: true });
292
+ logger_1.logger.info({ path: USER_CONFIG_DIR }, "Created config directory");
293
+ }
294
+ }
295
+ static getUserConfigPath() {
296
+ return USER_PROFILES_PATH;
297
+ }
298
+ clearCache() {
299
+ this.profileCache.clear();
300
+ this.presetCache.clear();
301
+ this.configCache = null;
302
+ }
303
+ }
304
+ exports.ProfileLoader = ProfileLoader;
305
+ async function loadProfile(name) {
306
+ const loader = new ProfileLoader();
307
+ return loader.loadProfile(name);
308
+ }
309
+ async function loadPreset(name) {
310
+ const loader = new ProfileLoader();
311
+ return loader.loadPreset(name);
312
+ }
313
+ function getProfileNameFromEnv() {
314
+ return process.env.GITLAB_PROFILE;
315
+ }
316
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/profiles/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import { z } from "zod";
2
+ declare const PatAuthSchema: z.ZodObject<{
3
+ type: z.ZodLiteral<"pat">;
4
+ token_env: z.ZodString;
5
+ }, z.core.$strip>;
6
+ declare const OAuthAuthSchema: z.ZodObject<{
7
+ type: z.ZodLiteral<"oauth">;
8
+ client_id_env: z.ZodString;
9
+ client_secret_env: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ declare const CookieAuthSchema: z.ZodObject<{
12
+ type: z.ZodLiteral<"cookie">;
13
+ cookie_path: z.ZodString;
14
+ }, z.core.$strip>;
15
+ declare const AuthConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ type: z.ZodLiteral<"pat">;
17
+ token_env: z.ZodString;
18
+ }, z.core.$strip>, z.ZodObject<{
19
+ type: z.ZodLiteral<"oauth">;
20
+ client_id_env: z.ZodString;
21
+ client_secret_env: z.ZodOptional<z.ZodString>;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ type: z.ZodLiteral<"cookie">;
24
+ cookie_path: z.ZodString;
25
+ }, z.core.$strip>], "type">;
26
+ declare const FeatureFlagsSchema: z.ZodOptional<z.ZodObject<{
27
+ wiki: z.ZodOptional<z.ZodBoolean>;
28
+ milestones: z.ZodOptional<z.ZodBoolean>;
29
+ pipelines: z.ZodOptional<z.ZodBoolean>;
30
+ labels: z.ZodOptional<z.ZodBoolean>;
31
+ mrs: z.ZodOptional<z.ZodBoolean>;
32
+ files: z.ZodOptional<z.ZodBoolean>;
33
+ variables: z.ZodOptional<z.ZodBoolean>;
34
+ workitems: z.ZodOptional<z.ZodBoolean>;
35
+ webhooks: z.ZodOptional<z.ZodBoolean>;
36
+ snippets: z.ZodOptional<z.ZodBoolean>;
37
+ integrations: z.ZodOptional<z.ZodBoolean>;
38
+ }, z.core.$strip>>;
39
+ export declare const ProfileSchema: z.ZodObject<{
40
+ host: z.ZodString;
41
+ api_url: z.ZodOptional<z.ZodString>;
42
+ auth: z.ZodDiscriminatedUnion<[z.ZodObject<{
43
+ type: z.ZodLiteral<"pat">;
44
+ token_env: z.ZodString;
45
+ }, z.core.$strip>, z.ZodObject<{
46
+ type: z.ZodLiteral<"oauth">;
47
+ client_id_env: z.ZodString;
48
+ client_secret_env: z.ZodOptional<z.ZodString>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ type: z.ZodLiteral<"cookie">;
51
+ cookie_path: z.ZodString;
52
+ }, z.core.$strip>], "type">;
53
+ read_only: z.ZodOptional<z.ZodBoolean>;
54
+ allowed_projects: z.ZodOptional<z.ZodArray<z.ZodString>>;
55
+ allowed_groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
56
+ denied_tools_regex: z.ZodOptional<z.ZodString>;
57
+ allowed_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
58
+ denied_actions: z.ZodOptional<z.ZodArray<z.ZodString>>;
59
+ features: z.ZodOptional<z.ZodObject<{
60
+ wiki: z.ZodOptional<z.ZodBoolean>;
61
+ milestones: z.ZodOptional<z.ZodBoolean>;
62
+ pipelines: z.ZodOptional<z.ZodBoolean>;
63
+ labels: z.ZodOptional<z.ZodBoolean>;
64
+ mrs: z.ZodOptional<z.ZodBoolean>;
65
+ files: z.ZodOptional<z.ZodBoolean>;
66
+ variables: z.ZodOptional<z.ZodBoolean>;
67
+ workitems: z.ZodOptional<z.ZodBoolean>;
68
+ webhooks: z.ZodOptional<z.ZodBoolean>;
69
+ snippets: z.ZodOptional<z.ZodBoolean>;
70
+ integrations: z.ZodOptional<z.ZodBoolean>;
71
+ }, z.core.$strip>>;
72
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
73
+ default_project: z.ZodOptional<z.ZodString>;
74
+ default_namespace: z.ZodOptional<z.ZodString>;
75
+ skip_tls_verify: z.ZodOptional<z.ZodBoolean>;
76
+ ssl_cert_path: z.ZodOptional<z.ZodString>;
77
+ ssl_key_path: z.ZodOptional<z.ZodString>;
78
+ ca_cert_path: z.ZodOptional<z.ZodString>;
79
+ }, z.core.$strip>;
80
+ export declare const PresetSchema: z.ZodObject<{
81
+ description: z.ZodOptional<z.ZodString>;
82
+ read_only: z.ZodOptional<z.ZodBoolean>;
83
+ denied_tools_regex: z.ZodOptional<z.ZodString>;
84
+ allowed_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
85
+ denied_actions: z.ZodOptional<z.ZodArray<z.ZodString>>;
86
+ features: z.ZodOptional<z.ZodObject<{
87
+ wiki: z.ZodOptional<z.ZodBoolean>;
88
+ milestones: z.ZodOptional<z.ZodBoolean>;
89
+ pipelines: z.ZodOptional<z.ZodBoolean>;
90
+ labels: z.ZodOptional<z.ZodBoolean>;
91
+ mrs: z.ZodOptional<z.ZodBoolean>;
92
+ files: z.ZodOptional<z.ZodBoolean>;
93
+ variables: z.ZodOptional<z.ZodBoolean>;
94
+ workitems: z.ZodOptional<z.ZodBoolean>;
95
+ webhooks: z.ZodOptional<z.ZodBoolean>;
96
+ snippets: z.ZodOptional<z.ZodBoolean>;
97
+ integrations: z.ZodOptional<z.ZodBoolean>;
98
+ }, z.core.$strip>>;
99
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
100
+ }, z.core.$strict>;
101
+ export declare const ProfilesConfigSchema: z.ZodObject<{
102
+ profiles: z.ZodRecord<z.ZodString, z.ZodObject<{
103
+ host: z.ZodString;
104
+ api_url: z.ZodOptional<z.ZodString>;
105
+ auth: z.ZodDiscriminatedUnion<[z.ZodObject<{
106
+ type: z.ZodLiteral<"pat">;
107
+ token_env: z.ZodString;
108
+ }, z.core.$strip>, z.ZodObject<{
109
+ type: z.ZodLiteral<"oauth">;
110
+ client_id_env: z.ZodString;
111
+ client_secret_env: z.ZodOptional<z.ZodString>;
112
+ }, z.core.$strip>, z.ZodObject<{
113
+ type: z.ZodLiteral<"cookie">;
114
+ cookie_path: z.ZodString;
115
+ }, z.core.$strip>], "type">;
116
+ read_only: z.ZodOptional<z.ZodBoolean>;
117
+ allowed_projects: z.ZodOptional<z.ZodArray<z.ZodString>>;
118
+ allowed_groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
+ denied_tools_regex: z.ZodOptional<z.ZodString>;
120
+ allowed_tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
121
+ denied_actions: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
+ features: z.ZodOptional<z.ZodObject<{
123
+ wiki: z.ZodOptional<z.ZodBoolean>;
124
+ milestones: z.ZodOptional<z.ZodBoolean>;
125
+ pipelines: z.ZodOptional<z.ZodBoolean>;
126
+ labels: z.ZodOptional<z.ZodBoolean>;
127
+ mrs: z.ZodOptional<z.ZodBoolean>;
128
+ files: z.ZodOptional<z.ZodBoolean>;
129
+ variables: z.ZodOptional<z.ZodBoolean>;
130
+ workitems: z.ZodOptional<z.ZodBoolean>;
131
+ webhooks: z.ZodOptional<z.ZodBoolean>;
132
+ snippets: z.ZodOptional<z.ZodBoolean>;
133
+ integrations: z.ZodOptional<z.ZodBoolean>;
134
+ }, z.core.$strip>>;
135
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
136
+ default_project: z.ZodOptional<z.ZodString>;
137
+ default_namespace: z.ZodOptional<z.ZodString>;
138
+ skip_tls_verify: z.ZodOptional<z.ZodBoolean>;
139
+ ssl_cert_path: z.ZodOptional<z.ZodString>;
140
+ ssl_key_path: z.ZodOptional<z.ZodString>;
141
+ ca_cert_path: z.ZodOptional<z.ZodString>;
142
+ }, z.core.$strip>>;
143
+ default_profile: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>;
145
+ export type PatAuth = z.infer<typeof PatAuthSchema>;
146
+ export type OAuthAuth = z.infer<typeof OAuthAuthSchema>;
147
+ export type CookieAuth = z.infer<typeof CookieAuthSchema>;
148
+ export type AuthConfig = z.infer<typeof AuthConfigSchema>;
149
+ export type FeatureFlags = z.infer<typeof FeatureFlagsSchema>;
150
+ export type Profile = z.infer<typeof ProfileSchema>;
151
+ export type Preset = z.infer<typeof PresetSchema>;
152
+ export type ProfilesConfig = z.infer<typeof ProfilesConfigSchema>;
153
+ export interface ProfileInfo {
154
+ name: string;
155
+ host?: string;
156
+ authType?: "pat" | "oauth" | "cookie";
157
+ readOnly: boolean;
158
+ isBuiltIn: boolean;
159
+ isPreset: boolean;
160
+ description?: string;
161
+ }
162
+ export interface ProfileValidationResult {
163
+ valid: boolean;
164
+ errors: string[];
165
+ warnings: string[];
166
+ }
167
+ export {};