@structured-world/gitlab-mcp 4.4.0 → 5.1.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 (141) hide show
  1. package/README.md +1 -0
  2. package/dist/config.js +23 -23
  3. package/dist/config.js.map +1 -1
  4. package/dist/entities/core/index.d.ts +5 -5
  5. package/dist/entities/core/index.js +1 -1
  6. package/dist/entities/core/registry.d.ts +1 -1
  7. package/dist/entities/core/registry.js +149 -149
  8. package/dist/entities/core/registry.js.map +1 -1
  9. package/dist/entities/core/schema-readonly.d.ts +1 -1
  10. package/dist/entities/core/schema-readonly.js +132 -132
  11. package/dist/entities/core/schema-readonly.js.map +1 -1
  12. package/dist/entities/core/schema.d.ts +1 -1
  13. package/dist/entities/core/schema.js +59 -59
  14. package/dist/entities/files/index.d.ts +5 -5
  15. package/dist/entities/files/index.js +1 -1
  16. package/dist/entities/files/registry.d.ts +1 -1
  17. package/dist/entities/files/registry.js +32 -32
  18. package/dist/entities/files/registry.js.map +1 -1
  19. package/dist/entities/files/schema-readonly.d.ts +1 -1
  20. package/dist/entities/files/schema-readonly.js +10 -10
  21. package/dist/entities/files/schema.d.ts +1 -1
  22. package/dist/entities/files/schema.js +19 -19
  23. package/dist/entities/index.d.ts +10 -10
  24. package/dist/entities/labels/index.d.ts +5 -5
  25. package/dist/entities/labels/index.js +1 -1
  26. package/dist/entities/labels/registry.d.ts +1 -1
  27. package/dist/entities/labels/registry.js +31 -31
  28. package/dist/entities/labels/registry.js.map +1 -1
  29. package/dist/entities/labels/schema-readonly.d.ts +1 -1
  30. package/dist/entities/labels/schema-readonly.js +7 -7
  31. package/dist/entities/labels/schema.d.ts +1 -1
  32. package/dist/entities/labels/schema.js +11 -11
  33. package/dist/entities/milestones/index.d.ts +5 -5
  34. package/dist/entities/milestones/index.js +1 -1
  35. package/dist/entities/milestones/registry.d.ts +1 -1
  36. package/dist/entities/milestones/registry.js +49 -49
  37. package/dist/entities/milestones/registry.js.map +1 -1
  38. package/dist/entities/milestones/schema-readonly.d.ts +2 -2
  39. package/dist/entities/milestones/schema-readonly.js +11 -11
  40. package/dist/entities/milestones/schema.d.ts +3 -3
  41. package/dist/entities/milestones/schema.js +19 -17
  42. package/dist/entities/milestones/schema.js.map +1 -1
  43. package/dist/entities/mrs/index.d.ts +5 -5
  44. package/dist/entities/mrs/index.js +1 -1
  45. package/dist/entities/mrs/registry.d.ts +1 -1
  46. package/dist/entities/mrs/registry.js +118 -118
  47. package/dist/entities/mrs/registry.js.map +1 -1
  48. package/dist/entities/mrs/schema-readonly.d.ts +1 -1
  49. package/dist/entities/mrs/schema-readonly.js +47 -47
  50. package/dist/entities/mrs/schema-readonly.js.map +1 -1
  51. package/dist/entities/mrs/schema.d.ts +5 -5
  52. package/dist/entities/mrs/schema.js +91 -82
  53. package/dist/entities/mrs/schema.js.map +1 -1
  54. package/dist/entities/pipelines/index.d.ts +5 -5
  55. package/dist/entities/pipelines/index.js +1 -1
  56. package/dist/entities/pipelines/registry.d.ts +1 -1
  57. package/dist/entities/pipelines/registry.js +58 -58
  58. package/dist/entities/pipelines/registry.js.map +1 -1
  59. package/dist/entities/pipelines/schema-readonly.d.ts +1 -1
  60. package/dist/entities/pipelines/schema-readonly.js +65 -65
  61. package/dist/entities/pipelines/schema.d.ts +1 -1
  62. package/dist/entities/pipelines/schema.js +15 -15
  63. package/dist/entities/shared.d.ts +1 -1
  64. package/dist/entities/shared.js +7 -7
  65. package/dist/entities/utils.d.ts +1 -1
  66. package/dist/entities/utils.js +5 -5
  67. package/dist/entities/utils.js.map +1 -1
  68. package/dist/entities/variables/index.d.ts +5 -5
  69. package/dist/entities/variables/index.js +1 -1
  70. package/dist/entities/variables/registry.d.ts +1 -1
  71. package/dist/entities/variables/registry.js +29 -29
  72. package/dist/entities/variables/registry.js.map +1 -1
  73. package/dist/entities/variables/schema-readonly.d.ts +1 -1
  74. package/dist/entities/variables/schema-readonly.js +4 -4
  75. package/dist/entities/variables/schema.d.ts +1 -1
  76. package/dist/entities/variables/schema.js +32 -32
  77. package/dist/entities/variables/schema.js.map +1 -1
  78. package/dist/entities/wiki/index.d.ts +5 -5
  79. package/dist/entities/wiki/index.js +1 -1
  80. package/dist/entities/wiki/registry.d.ts +1 -1
  81. package/dist/entities/wiki/registry.js +26 -26
  82. package/dist/entities/wiki/registry.js.map +1 -1
  83. package/dist/entities/wiki/schema-readonly.d.ts +1 -1
  84. package/dist/entities/wiki/schema-readonly.js +4 -4
  85. package/dist/entities/wiki/schema.d.ts +1 -1
  86. package/dist/entities/wiki/schema.js +11 -11
  87. package/dist/entities/workitems/index.d.ts +5 -5
  88. package/dist/entities/workitems/index.js +1 -1
  89. package/dist/entities/workitems/registry.d.ts +1 -1
  90. package/dist/entities/workitems/registry.js +55 -55
  91. package/dist/entities/workitems/registry.js.map +1 -1
  92. package/dist/entities/workitems/schema-readonly.d.ts +1 -1
  93. package/dist/entities/workitems/schema-readonly.js +25 -25
  94. package/dist/entities/workitems/schema-readonly.js.map +1 -1
  95. package/dist/entities/workitems/schema.d.ts +1 -1
  96. package/dist/entities/workitems/schema.js +11 -11
  97. package/dist/graphql/DynamicWorkItemsQuery.d.ts +2 -2
  98. package/dist/graphql/DynamicWorkItemsQuery.js +47 -47
  99. package/dist/graphql/DynamicWorkItemsQuery.js.map +1 -1
  100. package/dist/graphql/client.d.ts +1 -1
  101. package/dist/graphql/client.js +4 -4
  102. package/dist/graphql/client.js.map +1 -1
  103. package/dist/graphql/index.d.ts +2 -2
  104. package/dist/graphql/workItems.d.ts +33 -33
  105. package/dist/graphql/workItems.js +29 -29
  106. package/dist/handlers.d.ts +1 -1
  107. package/dist/handlers.js +20 -20
  108. package/dist/handlers.js.map +1 -1
  109. package/dist/http-client.js +3 -3
  110. package/dist/logger.js +4 -4
  111. package/dist/registry-manager.d.ts +1 -1
  112. package/dist/registry-manager.js +27 -27
  113. package/dist/server.d.ts +1 -1
  114. package/dist/server.js +46 -46
  115. package/dist/services/ConnectionManager.d.ts +4 -4
  116. package/dist/services/ConnectionManager.js +13 -13
  117. package/dist/services/GitLabVersionDetector.d.ts +2 -2
  118. package/dist/services/GitLabVersionDetector.js +41 -41
  119. package/dist/services/GitLabVersionDetector.js.map +1 -1
  120. package/dist/services/SchemaIntrospector.d.ts +1 -1
  121. package/dist/services/SchemaIntrospector.js +42 -42
  122. package/dist/services/SchemaIntrospector.js.map +1 -1
  123. package/dist/services/ToolAvailability.d.ts +2 -2
  124. package/dist/services/ToolAvailability.js +279 -279
  125. package/dist/services/ToolAvailability.js.map +1 -1
  126. package/dist/services/WidgetAvailability.d.ts +3 -3
  127. package/dist/services/WidgetAvailability.js +32 -32
  128. package/dist/structured-world-gitlab-mcp-5.1.0.tgz +0 -0
  129. package/dist/tsconfig.build.tsbuildinfo +1 -1
  130. package/dist/types.js +4 -4
  131. package/dist/utils/fetch.d.ts +4 -4
  132. package/dist/utils/fetch.js +15 -15
  133. package/dist/utils/fetch.js.map +1 -1
  134. package/dist/utils/idConversion.js +33 -33
  135. package/dist/utils/idConversion.js.map +1 -1
  136. package/dist/utils/namespace.d.ts +2 -2
  137. package/dist/utils/namespace.js +13 -13
  138. package/dist/utils/smart-user-search.d.ts +1 -1
  139. package/dist/utils/smart-user-search.js +10 -10
  140. package/package.json +1 -1
  141. package/dist/structured-world-gitlab-mcp-4.4.0.tgz +0 -0
package/dist/server.js CHANGED
@@ -25,68 +25,68 @@ exports.server = new index_js_1.Server({
25
25
  function determineTransportMode() {
26
26
  const args = process.argv.slice(2);
27
27
  logger_1.logger.info(`Transport mode detection: args=${JSON.stringify(args)}, PORT=${config_1.PORT}`);
28
- if (args.includes('stdio')) {
29
- logger_1.logger.info('Selected stdio mode (explicit argument)');
30
- return 'stdio';
28
+ if (args.includes("stdio")) {
29
+ logger_1.logger.info("Selected stdio mode (explicit argument)");
30
+ return "stdio";
31
31
  }
32
32
  if (process.env.PORT) {
33
- logger_1.logger.info('Selected dual transport mode (SSE + StreamableHTTP) - PORT environment variable detected');
34
- return 'dual';
33
+ logger_1.logger.info("Selected dual transport mode (SSE + StreamableHTTP) - PORT environment variable detected");
34
+ return "dual";
35
35
  }
36
- logger_1.logger.info('Selected stdio mode (no PORT environment variable)');
37
- return 'stdio';
36
+ logger_1.logger.info("Selected stdio mode (no PORT environment variable)");
37
+ return "stdio";
38
38
  }
39
39
  async function startServer() {
40
40
  await (0, handlers_1.setupHandlers)(exports.server);
41
41
  const transportMode = determineTransportMode();
42
42
  switch (transportMode) {
43
- case 'stdio': {
43
+ case "stdio": {
44
44
  const transport = new stdio_js_1.StdioServerTransport();
45
45
  await exports.server.connect(transport);
46
- logger_1.logger.info('GitLab MCP Server running on stdio');
46
+ logger_1.logger.info("GitLab MCP Server running on stdio");
47
47
  break;
48
48
  }
49
- case 'sse': {
50
- logger_1.logger.info('Setting up SSE mode with MCP SDK...');
49
+ case "sse": {
50
+ logger_1.logger.info("Setting up SSE mode with MCP SDK...");
51
51
  const app = (0, express_1.default)();
52
52
  app.use(express_1.default.json());
53
53
  const sseTransports = {};
54
- app.get('/sse', async (req, res) => {
55
- logger_1.logger.debug('SSE endpoint hit!');
56
- const transport = new sse_js_1.SSEServerTransport('/messages', res);
54
+ app.get("/sse", async (req, res) => {
55
+ logger_1.logger.debug("SSE endpoint hit!");
56
+ const transport = new sse_js_1.SSEServerTransport("/messages", res);
57
57
  await exports.server.connect(transport);
58
58
  const sessionId = transport.sessionId;
59
59
  sseTransports[sessionId] = transport;
60
60
  logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
61
61
  });
62
- app.post('/messages', async (req, res) => {
63
- logger_1.logger.debug('Messages endpoint hit!');
62
+ app.post("/messages", async (req, res) => {
63
+ logger_1.logger.debug("Messages endpoint hit!");
64
64
  const sessionId = req.query.sessionId;
65
65
  if (!sessionId || !sseTransports[sessionId]) {
66
- return res.status(404).json({ error: 'Session not found' });
66
+ return res.status(404).json({ error: "Session not found" });
67
67
  }
68
68
  try {
69
69
  const transport = sseTransports[sessionId];
70
70
  await transport.handlePostMessage(req, res, req.body);
71
71
  }
72
72
  catch (error) {
73
- logger_1.logger.error({ err: error }, 'Error handling SSE message');
74
- res.status(500).json({ error: 'Internal server error' });
73
+ logger_1.logger.error({ err: error }, "Error handling SSE message");
74
+ res.status(500).json({ error: "Internal server error" });
75
75
  }
76
76
  });
77
77
  app.listen(Number(config_1.PORT), config_1.HOST, () => {
78
78
  const url = `http://${config_1.HOST}:${config_1.PORT}`;
79
79
  logger_1.logger.info(`GitLab MCP Server SSE running on ${url}`);
80
- logger_1.logger.info('SSE server started successfully');
80
+ logger_1.logger.info("SSE server started successfully");
81
81
  });
82
82
  break;
83
83
  }
84
- case 'streamable-http': {
84
+ case "streamable-http": {
85
85
  const app = (0, express_1.default)();
86
86
  app.use(express_1.default.json());
87
87
  const streamableTransports = {};
88
- app.all('/mcp', async (req, res) => {
89
- const sessionId = req.headers['mcp-session-id'];
88
+ app.all("/mcp", async (req, res) => {
89
+ const sessionId = req.headers["mcp-session-id"];
90
90
  try {
91
91
  let transport;
92
92
  if (sessionId && sessionId in streamableTransports) {
@@ -110,48 +110,48 @@ async function startServer() {
110
110
  }
111
111
  }
112
112
  catch (error) {
113
- logger_1.logger.error({ err: error }, 'Error in StreamableHTTP transport');
114
- res.status(500).json({ error: 'Internal server error' });
113
+ logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
114
+ res.status(500).json({ error: "Internal server error" });
115
115
  }
116
116
  });
117
117
  app.listen(Number(config_1.PORT), config_1.HOST, () => {
118
118
  const url = `http://${config_1.HOST}:${config_1.PORT}`;
119
119
  logger_1.logger.info(`GitLab MCP Server running on ${url}/mcp`);
120
- logger_1.logger.info('Supports both SSE (GET) and JSON-RPC (POST) on same endpoint');
120
+ logger_1.logger.info("Supports both SSE (GET) and JSON-RPC (POST) on same endpoint");
121
121
  });
122
122
  break;
123
123
  }
124
- case 'dual': {
125
- logger_1.logger.info('Setting up dual transport mode (SSE + StreamableHTTP)...');
124
+ case "dual": {
125
+ logger_1.logger.info("Setting up dual transport mode (SSE + StreamableHTTP)...");
126
126
  const app = (0, express_1.default)();
127
127
  app.use(express_1.default.json());
128
128
  const sseTransports = {};
129
129
  const streamableTransports = {};
130
- app.get('/sse', async (req, res) => {
131
- logger_1.logger.debug('SSE endpoint hit!');
132
- const transport = new sse_js_1.SSEServerTransport('/messages', res);
130
+ app.get("/sse", async (req, res) => {
131
+ logger_1.logger.debug("SSE endpoint hit!");
132
+ const transport = new sse_js_1.SSEServerTransport("/messages", res);
133
133
  await exports.server.connect(transport);
134
134
  const sessionId = transport.sessionId;
135
135
  sseTransports[sessionId] = transport;
136
136
  logger_1.logger.debug(`SSE transport created with session: ${sessionId}`);
137
137
  });
138
- app.post('/messages', async (req, res) => {
139
- logger_1.logger.debug('SSE messages endpoint hit!');
138
+ app.post("/messages", async (req, res) => {
139
+ logger_1.logger.debug("SSE messages endpoint hit!");
140
140
  const sessionId = req.query.sessionId;
141
141
  if (!sessionId || !sseTransports[sessionId]) {
142
- return res.status(404).json({ error: 'Session not found' });
142
+ return res.status(404).json({ error: "Session not found" });
143
143
  }
144
144
  try {
145
145
  const transport = sseTransports[sessionId];
146
146
  await transport.handlePostMessage(req, res, req.body);
147
147
  }
148
148
  catch (error) {
149
- logger_1.logger.error({ err: error }, 'Error handling SSE message');
150
- res.status(500).json({ error: 'Internal server error' });
149
+ logger_1.logger.error({ err: error }, "Error handling SSE message");
150
+ res.status(500).json({ error: "Internal server error" });
151
151
  }
152
152
  });
153
- app.all('/mcp', async (req, res) => {
154
- const sessionId = req.headers['mcp-session-id'];
153
+ app.all("/mcp", async (req, res) => {
154
+ const sessionId = req.headers["mcp-session-id"];
155
155
  try {
156
156
  let transport;
157
157
  if (sessionId && sessionId in streamableTransports) {
@@ -175,28 +175,28 @@ async function startServer() {
175
175
  }
176
176
  }
177
177
  catch (error) {
178
- logger_1.logger.error({ err: error }, 'Error in StreamableHTTP transport');
179
- res.status(500).json({ error: 'Internal server error' });
178
+ logger_1.logger.error({ err: error }, "Error in StreamableHTTP transport");
179
+ res.status(500).json({ error: "Internal server error" });
180
180
  }
181
181
  });
182
182
  app.listen(Number(config_1.PORT), config_1.HOST, () => {
183
183
  const url = `http://${config_1.HOST}:${config_1.PORT}`;
184
184
  logger_1.logger.info(`GitLab MCP Server running on ${url}`);
185
- logger_1.logger.info('🔄 Dual Transport Mode Active:');
185
+ logger_1.logger.info("🔄 Dual Transport Mode Active:");
186
186
  logger_1.logger.info(` 📡 SSE endpoint: ${url}/sse (backwards compatibility)`);
187
187
  logger_1.logger.info(` 🚀 StreamableHTTP endpoint: ${url}/mcp (modern, supports SSE + JSON-RPC)`);
188
- logger_1.logger.info('Clients can use either transport as needed');
188
+ logger_1.logger.info("Clients can use either transport as needed");
189
189
  });
190
190
  break;
191
191
  }
192
192
  }
193
193
  }
194
- process.on('SIGINT', () => {
195
- logger_1.logger.info('Shutting down GitLab MCP Server...');
194
+ process.on("SIGINT", () => {
195
+ logger_1.logger.info("Shutting down GitLab MCP Server...");
196
196
  process.exit(0);
197
197
  });
198
- process.on('SIGTERM', () => {
199
- logger_1.logger.info('Shutting down GitLab MCP Server...');
198
+ process.on("SIGTERM", () => {
199
+ logger_1.logger.info("Shutting down GitLab MCP Server...");
200
200
  process.exit(0);
201
201
  });
202
202
  //# sourceMappingURL=server.js.map
@@ -1,6 +1,6 @@
1
- import { GraphQLClient } from '../graphql/client';
2
- import { GitLabVersionDetector, GitLabInstanceInfo } from './GitLabVersionDetector';
3
- import { SchemaIntrospector, SchemaInfo } from './SchemaIntrospector';
1
+ import { GraphQLClient } from "../graphql/client";
2
+ import { GitLabVersionDetector, GitLabInstanceInfo } from "./GitLabVersionDetector";
3
+ import { SchemaIntrospector, SchemaInfo } from "./SchemaIntrospector";
4
4
  export declare class ConnectionManager {
5
5
  private static instance;
6
6
  private client;
@@ -19,7 +19,7 @@ export declare class ConnectionManager {
19
19
  getSchemaIntrospector(): SchemaIntrospector;
20
20
  getInstanceInfo(): GitLabInstanceInfo;
21
21
  getSchemaInfo(): SchemaInfo;
22
- isFeatureAvailable(feature: keyof GitLabInstanceInfo['features']): boolean;
22
+ isFeatureAvailable(feature: keyof GitLabInstanceInfo["features"]): boolean;
23
23
  getTier(): string;
24
24
  getVersion(): string;
25
25
  isWidgetAvailable(widgetType: string): boolean;
@@ -27,7 +27,7 @@ class ConnectionManager {
27
27
  }
28
28
  try {
29
29
  if (!config_1.GITLAB_BASE_URL || !config_1.GITLAB_TOKEN) {
30
- throw new Error('GitLab base URL and token are required');
30
+ throw new Error("GitLab base URL and token are required");
31
31
  }
32
32
  const endpoint = `${config_1.GITLAB_BASE_URL}/api/graphql`;
33
33
  this.client = new client_1.GraphQLClient(endpoint, {
@@ -40,12 +40,12 @@ class ConnectionManager {
40
40
  const cached = ConnectionManager.introspectionCache.get(endpoint);
41
41
  const now = Date.now();
42
42
  if (cached && now - cached.timestamp < ConnectionManager.CACHE_TTL) {
43
- logger_1.logger.info('Using cached GraphQL introspection data');
43
+ logger_1.logger.info("Using cached GraphQL introspection data");
44
44
  this.instanceInfo = cached.instanceInfo;
45
45
  this.schemaInfo = cached.schemaInfo;
46
46
  }
47
47
  else {
48
- logger_1.logger.debug('Introspecting GitLab GraphQL schema...');
48
+ logger_1.logger.debug("Introspecting GitLab GraphQL schema...");
49
49
  const [instanceInfo, schemaInfo] = await Promise.all([
50
50
  this.versionDetector.detectInstance(),
51
51
  this.schemaIntrospector.introspectSchema(),
@@ -57,7 +57,7 @@ class ConnectionManager {
57
57
  schemaInfo,
58
58
  timestamp: now,
59
59
  });
60
- logger_1.logger.info('GraphQL schema introspection completed');
60
+ logger_1.logger.info("GraphQL schema introspection completed");
61
61
  }
62
62
  this.isInitialized = true;
63
63
  logger_1.logger.info({
@@ -70,40 +70,40 @@ class ConnectionManager {
70
70
  : [],
71
71
  widgetTypes: this.schemaInfo?.workItemWidgetTypes.length || 0,
72
72
  schemaTypes: this.schemaInfo?.typeDefinitions.size || 0,
73
- }, 'GitLab instance and schema detected');
73
+ }, "GitLab instance and schema detected");
74
74
  }
75
75
  catch (error) {
76
- logger_1.logger.error({ err: error }, 'Failed to initialize connection');
76
+ logger_1.logger.error({ err: error }, "Failed to initialize connection");
77
77
  throw error;
78
78
  }
79
79
  }
80
80
  getClient() {
81
81
  if (!this.client) {
82
- throw new Error('Connection not initialized. Call initialize() first.');
82
+ throw new Error("Connection not initialized. Call initialize() first.");
83
83
  }
84
84
  return this.client;
85
85
  }
86
86
  getVersionDetector() {
87
87
  if (!this.versionDetector) {
88
- throw new Error('Connection not initialized. Call initialize() first.');
88
+ throw new Error("Connection not initialized. Call initialize() first.");
89
89
  }
90
90
  return this.versionDetector;
91
91
  }
92
92
  getSchemaIntrospector() {
93
93
  if (!this.schemaIntrospector) {
94
- throw new Error('Connection not initialized. Call initialize() first.');
94
+ throw new Error("Connection not initialized. Call initialize() first.");
95
95
  }
96
96
  return this.schemaIntrospector;
97
97
  }
98
98
  getInstanceInfo() {
99
99
  if (!this.instanceInfo) {
100
- throw new Error('Connection not initialized. Call initialize() first.');
100
+ throw new Error("Connection not initialized. Call initialize() first.");
101
101
  }
102
102
  return this.instanceInfo;
103
103
  }
104
104
  getSchemaInfo() {
105
105
  if (!this.schemaInfo) {
106
- throw new Error('Connection not initialized. Call initialize() first.');
106
+ throw new Error("Connection not initialized. Call initialize() first.");
107
107
  }
108
108
  return this.schemaInfo;
109
109
  }
@@ -115,13 +115,13 @@ class ConnectionManager {
115
115
  }
116
116
  getTier() {
117
117
  if (!this.instanceInfo) {
118
- return 'unknown';
118
+ return "unknown";
119
119
  }
120
120
  return this.instanceInfo.tier;
121
121
  }
122
122
  getVersion() {
123
123
  if (!this.instanceInfo) {
124
- return 'unknown';
124
+ return "unknown";
125
125
  }
126
126
  return this.instanceInfo.version;
127
127
  }
@@ -1,5 +1,5 @@
1
- import { GraphQLClient } from '../graphql/client';
2
- export type GitLabTier = 'free' | 'premium' | 'ultimate';
1
+ import { GraphQLClient } from "../graphql/client";
2
+ export type GitLabTier = "free" | "premium" | "ultimate";
3
3
  export interface GitLabFeatures {
4
4
  workItems: boolean;
5
5
  epics: boolean;
@@ -59,7 +59,7 @@ const FEATURE_DETECTION_QUERY = (0, graphql_tag_1.gql) `
59
59
  class GitLabVersionDetector {
60
60
  client;
61
61
  cachedInfo = null;
62
- testGroupPath = 'test';
62
+ testGroupPath = "test";
63
63
  constructor(client) {
64
64
  this.client = client;
65
65
  }
@@ -93,7 +93,7 @@ class GitLabVersionDetector {
93
93
  }
94
94
  async detectVersionFallback() {
95
95
  try {
96
- const baseUrl = this.client.endpoint.replace('/api/graphql', '');
96
+ const baseUrl = this.client.endpoint.replace("/api/graphql", "");
97
97
  const response = await (0, fetch_1.enhancedFetch)(`${baseUrl}/api/v4/version`);
98
98
  if (response.ok) {
99
99
  const data = (await response.json());
@@ -103,18 +103,18 @@ class GitLabVersionDetector {
103
103
  catch (error) {
104
104
  logger_1.logger.warn(`Failed to detect version via REST API: ${error instanceof Error ? error.message : String(error)}`);
105
105
  }
106
- return 'unknown';
106
+ return "unknown";
107
107
  }
108
108
  async detectTier() {
109
109
  try {
110
110
  const response = await this.client.request(LICENSE_QUERY);
111
111
  if (response.currentLicense) {
112
- const plan = response.currentLicense.plan?.toLowerCase() ?? '';
113
- if (plan.includes('ultimate') || plan.includes('gold')) {
114
- return 'ultimate';
112
+ const plan = response.currentLicense.plan?.toLowerCase() ?? "";
113
+ if (plan.includes("ultimate") || plan.includes("gold")) {
114
+ return "ultimate";
115
115
  }
116
- else if (plan.includes('premium') || plan.includes('silver')) {
117
- return 'premium';
116
+ else if (plan.includes("premium") || plan.includes("silver")) {
117
+ return "premium";
118
118
  }
119
119
  }
120
120
  }
@@ -131,56 +131,56 @@ class GitLabVersionDetector {
131
131
  const group = response.group;
132
132
  if (group?.epicsEnabled) {
133
133
  const hasIterations = (group.iterationsEnabled?.nodes?.length ?? 0) > 0;
134
- const hasAdvancedWorkItems = group.workItemTypesEnabled?.nodes?.some((type) => ['OBJECTIVE', 'KEY_RESULT', 'REQUIREMENT'].includes(type.name)) ?? false;
134
+ const hasAdvancedWorkItems = group.workItemTypesEnabled?.nodes?.some(type => ["OBJECTIVE", "KEY_RESULT", "REQUIREMENT"].includes(type.name)) ?? false;
135
135
  if (hasAdvancedWorkItems) {
136
- return 'ultimate';
136
+ return "ultimate";
137
137
  }
138
138
  else if (hasIterations) {
139
- return 'premium';
139
+ return "premium";
140
140
  }
141
141
  else {
142
- return 'premium';
142
+ return "premium";
143
143
  }
144
144
  }
145
145
  }
146
146
  catch (error) {
147
147
  logger_1.logger.debug(`Feature detection failed, assuming free tier: ${error instanceof Error ? error.message : String(error)}`);
148
148
  }
149
- return 'free';
149
+ return "free";
150
150
  }
151
151
  determineFeatures(version, tier) {
152
152
  const versionNumber = this.parseVersion(version);
153
153
  const features = {
154
154
  workItems: versionNumber >= 15.0,
155
- epics: tier !== 'free' && versionNumber >= 10.2,
156
- iterations: tier !== 'free' && versionNumber >= 13.1,
157
- roadmaps: tier !== 'free' && versionNumber >= 10.8,
158
- portfolioManagement: tier === 'ultimate' && versionNumber >= 12.0,
159
- advancedSearch: tier !== 'free' && versionNumber >= 11.0,
160
- codeReview: tier !== 'free' && versionNumber >= 11.0,
161
- securityDashboard: tier === 'ultimate' && versionNumber >= 11.1,
162
- complianceFramework: tier === 'ultimate' && versionNumber >= 13.0,
163
- valueStreamAnalytics: tier !== 'free' && versionNumber >= 12.3,
164
- customFields: tier === 'ultimate' && versionNumber >= 17.0,
165
- okrs: tier === 'ultimate' && versionNumber >= 15.7,
166
- healthStatus: tier === 'ultimate' && versionNumber >= 13.1,
167
- weight: tier !== 'free' && versionNumber >= 12.0,
168
- multiLevelEpics: tier === 'ultimate' && versionNumber >= 11.7,
169
- serviceDesk: tier !== 'free' && versionNumber >= 9.1,
170
- requirements: tier === 'ultimate' && versionNumber >= 13.1,
171
- qualityManagement: tier === 'ultimate' && versionNumber >= 13.0,
172
- timeTracking: tier !== 'free' && versionNumber >= 8.14,
173
- crmContacts: tier === 'ultimate' && versionNumber >= 14.0,
174
- vulnerabilities: tier === 'ultimate' && versionNumber >= 12.5,
175
- errorTracking: tier === 'ultimate' && versionNumber >= 12.7,
176
- designManagement: tier !== 'free' && versionNumber >= 12.2,
177
- linkedResources: tier !== 'free' && versionNumber >= 16.5,
178
- emailParticipants: tier !== 'free' && versionNumber >= 16.0,
155
+ epics: tier !== "free" && versionNumber >= 10.2,
156
+ iterations: tier !== "free" && versionNumber >= 13.1,
157
+ roadmaps: tier !== "free" && versionNumber >= 10.8,
158
+ portfolioManagement: tier === "ultimate" && versionNumber >= 12.0,
159
+ advancedSearch: tier !== "free" && versionNumber >= 11.0,
160
+ codeReview: tier !== "free" && versionNumber >= 11.0,
161
+ securityDashboard: tier === "ultimate" && versionNumber >= 11.1,
162
+ complianceFramework: tier === "ultimate" && versionNumber >= 13.0,
163
+ valueStreamAnalytics: tier !== "free" && versionNumber >= 12.3,
164
+ customFields: tier === "ultimate" && versionNumber >= 17.0,
165
+ okrs: tier === "ultimate" && versionNumber >= 15.7,
166
+ healthStatus: tier === "ultimate" && versionNumber >= 13.1,
167
+ weight: tier !== "free" && versionNumber >= 12.0,
168
+ multiLevelEpics: tier === "ultimate" && versionNumber >= 11.7,
169
+ serviceDesk: tier !== "free" && versionNumber >= 9.1,
170
+ requirements: tier === "ultimate" && versionNumber >= 13.1,
171
+ qualityManagement: tier === "ultimate" && versionNumber >= 13.0,
172
+ timeTracking: tier !== "free" && versionNumber >= 8.14,
173
+ crmContacts: tier === "ultimate" && versionNumber >= 14.0,
174
+ vulnerabilities: tier === "ultimate" && versionNumber >= 12.5,
175
+ errorTracking: tier === "ultimate" && versionNumber >= 12.7,
176
+ designManagement: tier !== "free" && versionNumber >= 12.2,
177
+ linkedResources: tier !== "free" && versionNumber >= 16.5,
178
+ emailParticipants: tier !== "free" && versionNumber >= 16.0,
179
179
  };
180
180
  return features;
181
181
  }
182
182
  parseVersion(version) {
183
- if (!version || version === 'unknown')
183
+ if (!version || version === "unknown")
184
184
  return 0;
185
185
  const match = version.match(/^(\d+)\.(\d+)/);
186
186
  if (!match)
@@ -195,19 +195,19 @@ class GitLabVersionDetector {
195
195
  }
196
196
  isFeatureAvailable(feature) {
197
197
  if (!this.cachedInfo) {
198
- throw new Error('Instance info not detected yet. Call detectInstance() first.');
198
+ throw new Error("Instance info not detected yet. Call detectInstance() first.");
199
199
  }
200
200
  return this.cachedInfo.features[feature];
201
201
  }
202
202
  getTier() {
203
203
  if (!this.cachedInfo) {
204
- throw new Error('Instance info not detected yet. Call detectInstance() first.');
204
+ throw new Error("Instance info not detected yet. Call detectInstance() first.");
205
205
  }
206
206
  return this.cachedInfo.tier;
207
207
  }
208
208
  getVersion() {
209
209
  if (!this.cachedInfo) {
210
- throw new Error('Instance info not detected yet. Call detectInstance() first.');
210
+ throw new Error("Instance info not detected yet. Call detectInstance() first.");
211
211
  }
212
212
  return this.cachedInfo.version;
213
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GitLabVersionDetector.js","sourceRoot":"","sources":["../../src/services/GitLabVersionDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitLabVersionDetector.js","sourceRoot":"","sources":["../../src/services/GitLabVersionDetector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GraphQLClient } from '../graphql/client';
1
+ import { GraphQLClient } from "../graphql/client";
2
2
  export interface FieldInfo {
3
3
  name: string;
4
4
  type: {