@structured-world/gitlab-mcp 7.1.0 → 7.2.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/README.md +2 -2
- package/README.md.in +1 -1
- package/dist/src/dashboard/metrics.js +2 -1
- package/dist/src/dashboard/metrics.js.map +1 -1
- package/dist/src/handlers.js +154 -113
- package/dist/src/handlers.js.map +1 -1
- package/dist/src/services/HealthMonitor.js +63 -8
- package/dist/src/services/HealthMonitor.js.map +1 -1
- package/dist/src/session-manager.d.ts +5 -2
- package/dist/src/session-manager.js +40 -3
- package/dist/src/session-manager.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Advanced GitLab MCP server — 44 tools across 18 entity types with CQRS architecture, OAuth 2.1, and multiple transport modes.
|
|
6
6
|
|
|
7
|
-
[](https://gitlab-mcp.sw.foundation/downloads/gitlab-mcp-7.
|
|
7
|
+
[](https://gitlab-mcp.sw.foundation/downloads/gitlab-mcp-7.2.0.mcpb)
|
|
8
8
|
[](vscode:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D)
|
|
9
9
|
[](vscode-insiders:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D)
|
|
10
10
|
|
|
@@ -88,7 +88,7 @@ The server handles GitLab connectivity issues gracefully:
|
|
|
88
88
|
- **Bounded startup** — Server starts within `GITLAB_INIT_TIMEOUT_MS` (default 5s) regardless of GitLab availability
|
|
89
89
|
- **Disconnected mode** — When GitLab is unreachable (`disconnected`/`failed` state), only the `manage_context` tool is exposed, with local actions such as `whoami`, `switch_profile`, and `set_scope` for diagnostics. During active reconnect (`connecting` state), the full tool list remains available so MCP clients don't lose their tool catalog during brief outages. MCP clients are notified of tool availability changes via `tools/list_changed`
|
|
90
90
|
- **Auto-reconnect** — Exponential backoff reconnection (5s → 60s) with ±10% jitter
|
|
91
|
-
- **Error classification** — Transient errors (network, 5xx, timeouts) trigger auto-reconnect. Auth/config errors at startup transition to `failed` state (no auto-reconnect).
|
|
91
|
+
- **Error classification** — Transient errors (network, 5xx, timeouts) trigger auto-reconnect. Auth/config errors at startup transition to `failed` state (no auto-reconnect). Mid-session token revocation is detected via an authenticated `HEAD /api/v4/user` check that runs alongside each periodic health check (static token mode only; skipped in OAuth mode). A 401 or 403 on this check transitions the instance to `failed` state immediately.
|
|
92
92
|
- **Instance health monitor** — Each monitored instance URL has its own XState state machine. Untracked OAuth URLs currently pass through as reachable.
|
|
93
93
|
|
|
94
94
|
| Variable | Default | Description |
|
package/README.md.in
CHANGED
|
@@ -88,7 +88,7 @@ The server handles GitLab connectivity issues gracefully:
|
|
|
88
88
|
- **Bounded startup** — Server starts within `GITLAB_INIT_TIMEOUT_MS` (default 5s) regardless of GitLab availability
|
|
89
89
|
- **Disconnected mode** — When GitLab is unreachable (`disconnected`/`failed` state), only the `manage_context` tool is exposed, with local actions such as `whoami`, `switch_profile`, and `set_scope` for diagnostics. During active reconnect (`connecting` state), the full tool list remains available so MCP clients don't lose their tool catalog during brief outages. MCP clients are notified of tool availability changes via `tools/list_changed`
|
|
90
90
|
- **Auto-reconnect** — Exponential backoff reconnection (5s → 60s) with ±10% jitter
|
|
91
|
-
- **Error classification** — Transient errors (network, 5xx, timeouts) trigger auto-reconnect. Auth/config errors at startup transition to `failed` state (no auto-reconnect).
|
|
91
|
+
- **Error classification** — Transient errors (network, 5xx, timeouts) trigger auto-reconnect. Auth/config errors at startup transition to `failed` state (no auto-reconnect). Mid-session token revocation is detected via an authenticated `HEAD /api/v4/user` check that runs alongside each periodic health check (static token mode only; skipped in OAuth mode). A 401 or 403 on this check transitions the instance to `failed` state immediately.
|
|
92
92
|
- **Instance health monitor** — Each monitored instance URL has its own XState state machine. Untracked OAuth URLs currently pass through as reachable.
|
|
93
93
|
|
|
94
94
|
| Variable | Default | Description |
|
|
@@ -157,7 +157,8 @@ function collectMetrics() {
|
|
|
157
157
|
const configSource = instanceRegistry.getConfigSource();
|
|
158
158
|
const toolCounts = getToolCounts();
|
|
159
159
|
const uptimeSeconds = Math.floor((Date.now() - serverStartTime) / 1000);
|
|
160
|
-
const
|
|
160
|
+
const sessionsByInstanceMap = sessionManager.getSessionsByInstance();
|
|
161
|
+
const sessionsByInstance = Object.fromEntries(sessionsByInstanceMap);
|
|
161
162
|
return {
|
|
162
163
|
server: {
|
|
163
164
|
version: config_js_1.packageVersion,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/dashboard/metrics.ts"],"names":[],"mappings":";;;AA4FA,0DAkCC;AAqED,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/dashboard/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/src/handlers.js
CHANGED
|
@@ -116,6 +116,117 @@ function toStructuredError(error, toolName, toolArgs) {
|
|
|
116
116
|
return null;
|
|
117
117
|
return (0, error_handler_1.handleGitLabError)({ status: parsed.status, message: parsed.message }, toolName, action, toolArgs);
|
|
118
118
|
}
|
|
119
|
+
function checkUnreachableInstance(toolName, toolArguments, effectiveInstanceUrl, healthMonitor) {
|
|
120
|
+
if (healthMonitor.isInstanceReachable(effectiveInstanceUrl) || toolName === 'manage_context') {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const action = toolArguments && typeof toolArguments.action === 'string' ? toolArguments.action : 'unknown';
|
|
124
|
+
const rawState = healthMonitor.getState(effectiveInstanceUrl);
|
|
125
|
+
let connectionState;
|
|
126
|
+
if (rawState === 'failed') {
|
|
127
|
+
connectionState = 'failed';
|
|
128
|
+
}
|
|
129
|
+
else if (rawState === 'connecting') {
|
|
130
|
+
connectionState = 'connecting';
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
connectionState = 'disconnected';
|
|
134
|
+
}
|
|
135
|
+
const connError = (0, error_handler_1.createConnectionFailedError)(toolName, action, effectiveInstanceUrl, connectionState);
|
|
136
|
+
recordEarlyReturnError(toolName, action, connError.message);
|
|
137
|
+
return { content: [{ type: 'text', text: JSON.stringify(connError, null, 2) }], isError: true };
|
|
138
|
+
}
|
|
139
|
+
async function tryManageContextFastPath(toolName, toolArguments, effectiveInstanceUrl, healthMonitor) {
|
|
140
|
+
if (toolName !== 'manage_context' || healthMonitor.isInstanceReachable(effectiveInstanceUrl)) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
if (config_1.LOG_FORMAT === 'condensed') {
|
|
144
|
+
const action = toolArguments && typeof toolArguments.action === 'string' ? toolArguments.action : undefined;
|
|
145
|
+
const requestTracker = (0, index_1.getRequestTracker)();
|
|
146
|
+
requestTracker.setToolForCurrentRequest(toolName, action);
|
|
147
|
+
}
|
|
148
|
+
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
149
|
+
const registryManager = RegistryManager.getInstance();
|
|
150
|
+
if (registryManager.hasToolHandler(toolName, effectiveInstanceUrl)) {
|
|
151
|
+
const result = await registryManager.executeTool(toolName, toolArguments, effectiveInstanceUrl);
|
|
152
|
+
if (result === undefined) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
async function ensureBootstrapped(ctx) {
|
|
160
|
+
const { toolName, toolArguments, effectiveInstanceUrl, oauthMode, connectionManager, healthMonitor, isTimedOut, bootstrapState, } = ctx;
|
|
161
|
+
bootstrapState.started = true;
|
|
162
|
+
try {
|
|
163
|
+
if (!connectionManager.isConnected(effectiveInstanceUrl)) {
|
|
164
|
+
if (config_1.LOG_FORMAT === 'verbose') {
|
|
165
|
+
(0, logger_1.logInfo)('Connection not initialized, attempting to initialize...');
|
|
166
|
+
}
|
|
167
|
+
await connectionManager.initialize(effectiveInstanceUrl);
|
|
168
|
+
}
|
|
169
|
+
connectionManager.getClient(effectiveInstanceUrl);
|
|
170
|
+
if (oauthMode) {
|
|
171
|
+
await connectionManager.ensureIntrospected(effectiveInstanceUrl);
|
|
172
|
+
}
|
|
173
|
+
bootstrapState.complete = true;
|
|
174
|
+
try {
|
|
175
|
+
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
176
|
+
RegistryManager.getInstance().refreshCache(effectiveInstanceUrl);
|
|
177
|
+
}
|
|
178
|
+
catch (cacheError) {
|
|
179
|
+
(0, logger_1.logWarn)('Failed to refresh registry cache after bootstrap', {
|
|
180
|
+
instanceUrl: effectiveInstanceUrl,
|
|
181
|
+
err: cacheError,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
if (config_1.LOG_FORMAT === 'verbose') {
|
|
185
|
+
try {
|
|
186
|
+
const instanceInfo = connectionManager.getInstanceInfo(effectiveInstanceUrl);
|
|
187
|
+
(0, logger_1.logInfo)(`Connection verified: ${instanceInfo.version} ${instanceInfo.tier}`);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
(0, logger_1.logDebug)('Connection verified but instance info not yet available', {
|
|
191
|
+
instanceUrl: effectiveInstanceUrl,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
catch (initError) {
|
|
198
|
+
const errorCategory = initError instanceof Error ? (0, error_handler_1.classifyError)(initError) : 'permanent';
|
|
199
|
+
if (initError instanceof Error) {
|
|
200
|
+
if (!isTimedOut() || errorCategory === 'auth' || errorCategory === 'permanent') {
|
|
201
|
+
healthMonitor.reportError(effectiveInstanceUrl, initError);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
(0, logger_1.logError)(`Connection initialization failed: ${initError instanceof Error ? initError.message : String(initError)}`, {
|
|
205
|
+
instanceUrl: effectiveInstanceUrl,
|
|
206
|
+
err: initError instanceof Error ? initError : new Error(String(initError)),
|
|
207
|
+
});
|
|
208
|
+
const action = toolArguments && typeof toolArguments.action === 'string' ? toolArguments.action : 'unknown';
|
|
209
|
+
const monitorState = healthMonitor.getState(effectiveInstanceUrl);
|
|
210
|
+
let derivedState;
|
|
211
|
+
if (monitorState === 'connecting' || monitorState === 'failed') {
|
|
212
|
+
derivedState = monitorState;
|
|
213
|
+
}
|
|
214
|
+
else if (errorCategory === 'auth' || errorCategory === 'permanent') {
|
|
215
|
+
derivedState = 'failed';
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
derivedState = 'disconnected';
|
|
219
|
+
}
|
|
220
|
+
const connError = (0, error_handler_1.createConnectionFailedError)(toolName, action, effectiveInstanceUrl, derivedState);
|
|
221
|
+
if (!isTimedOut()) {
|
|
222
|
+
recordEarlyReturnError(toolName, action, connError.message);
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
content: [{ type: 'text', text: JSON.stringify(connError, null, 2) }],
|
|
226
|
+
isError: true,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
119
230
|
let healthMonitorStartup = null;
|
|
120
231
|
let stateChangeRegistered = false;
|
|
121
232
|
function resetHandlersState() {
|
|
@@ -134,7 +245,7 @@ async function setupHandlers(server) {
|
|
|
134
245
|
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
135
246
|
RegistryManager.getInstance().refreshCache(instanceUrl);
|
|
136
247
|
const { getSessionManager } = await Promise.resolve().then(() => __importStar(require('./session-manager')));
|
|
137
|
-
await getSessionManager().broadcastToolsListChanged();
|
|
248
|
+
await getSessionManager().broadcastToolsListChanged(instanceUrl);
|
|
138
249
|
(0, logger_1.logInfo)('Tool list updated after connection state change', {
|
|
139
250
|
instanceUrl,
|
|
140
251
|
from,
|
|
@@ -175,11 +286,17 @@ async function setupHandlers(server) {
|
|
|
175
286
|
else {
|
|
176
287
|
(0, logger_1.logInfo)('Skipping connection initialization - no authentication configured');
|
|
177
288
|
}
|
|
178
|
-
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
289
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async (_request, extra) => {
|
|
179
290
|
(0, logger_1.logInfo)('ListToolsRequest received');
|
|
291
|
+
const { getSessionManager: getSessionMgr } = await Promise.resolve().then(() => __importStar(require('./session-manager')));
|
|
292
|
+
const sessionMgr = getSessionMgr();
|
|
293
|
+
const listToolsSessionId = extra?.sessionId;
|
|
294
|
+
const sessionInstanceUrl = listToolsSessionId !== undefined
|
|
295
|
+
? sessionMgr.getSessionInstanceUrl(listToolsSessionId)
|
|
296
|
+
: undefined;
|
|
180
297
|
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
181
298
|
const registryManager = RegistryManager.getInstance();
|
|
182
|
-
const tools = registryManager.getAllToolDefinitions();
|
|
299
|
+
const tools = registryManager.getAllToolDefinitions(sessionInstanceUrl);
|
|
183
300
|
(0, logger_1.logInfo)('Returning tools list', { toolCount: tools.length });
|
|
184
301
|
function resolveRefs(schema, rootSchema) {
|
|
185
302
|
if (!schema || typeof schema !== 'object')
|
|
@@ -241,15 +358,21 @@ async function setupHandlers(server) {
|
|
|
241
358
|
tools: modifiedTools,
|
|
242
359
|
};
|
|
243
360
|
});
|
|
244
|
-
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
361
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
|
|
245
362
|
const { getGitLabApiUrlFromContext: getUrlFromCtx, isOAuthEnabled } = await Promise.resolve().then(() => __importStar(require('./oauth/index')));
|
|
246
|
-
const
|
|
247
|
-
|
|
363
|
+
const oauthEnabled = isOAuthEnabled();
|
|
364
|
+
const oauthContextUrl = oauthEnabled ? getUrlFromCtx() : undefined;
|
|
365
|
+
const rawInstanceUrl = oauthEnabled
|
|
366
|
+
? (oauthContextUrl ?? config_1.GITLAB_BASE_URL)
|
|
248
367
|
: (ConnectionManager_1.ConnectionManager.getInstance().getCurrentInstanceUrl() ?? config_1.GITLAB_BASE_URL);
|
|
249
368
|
const requestInstanceUrl = (0, url_1.normalizeInstanceUrl)(rawInstanceUrl);
|
|
369
|
+
const callSessionId = extra?.sessionId;
|
|
370
|
+
if (callSessionId && (!oauthEnabled || oauthContextUrl !== undefined)) {
|
|
371
|
+
const { getSessionManager: getSessionMgrForCall } = await Promise.resolve().then(() => __importStar(require('./session-manager')));
|
|
372
|
+
getSessionMgrForCall().setSessionInstanceUrl(callSessionId, requestInstanceUrl);
|
|
373
|
+
}
|
|
250
374
|
let timedOut = false;
|
|
251
|
-
|
|
252
|
-
let bootstrapComplete = false;
|
|
375
|
+
const bootstrapState = { started: false, complete: false };
|
|
253
376
|
const HANDLER_TIMEOUT_SYMBOL = Symbol('handler_timeout');
|
|
254
377
|
let handlerTimeoutId;
|
|
255
378
|
const timeoutPromise = new Promise((resolve) => {
|
|
@@ -276,111 +399,26 @@ async function setupHandlers(server) {
|
|
|
276
399
|
const connectionManager = ConnectionManager_1.ConnectionManager.getInstance();
|
|
277
400
|
const healthMonitor = HealthMonitor_1.HealthMonitor.getInstance();
|
|
278
401
|
const toolName = request.params.name;
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
if (rawState === 'failed') {
|
|
287
|
-
connectionState = 'failed';
|
|
288
|
-
}
|
|
289
|
-
else if (rawState === 'connecting') {
|
|
290
|
-
connectionState = 'connecting';
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
connectionState = 'disconnected';
|
|
294
|
-
}
|
|
295
|
-
const connError = (0, error_handler_1.createConnectionFailedError)(toolName, action, effectiveInstanceUrl, connectionState);
|
|
296
|
-
recordEarlyReturnError(toolName, action, connError.message);
|
|
297
|
-
return {
|
|
298
|
-
content: [{ type: 'text', text: JSON.stringify(connError, null, 2) }],
|
|
299
|
-
isError: true,
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
if (toolName === 'manage_context' &&
|
|
303
|
-
!healthMonitor.isInstanceReachable(effectiveInstanceUrl)) {
|
|
304
|
-
if (config_1.LOG_FORMAT === 'condensed') {
|
|
305
|
-
const action = request.params.arguments && typeof request.params.arguments.action === 'string'
|
|
306
|
-
? request.params.arguments.action
|
|
307
|
-
: undefined;
|
|
308
|
-
const requestTracker = (0, index_1.getRequestTracker)();
|
|
309
|
-
requestTracker.setToolForCurrentRequest(toolName, action);
|
|
310
|
-
}
|
|
311
|
-
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
312
|
-
const registryManager = RegistryManager.getInstance();
|
|
313
|
-
if (registryManager.hasToolHandler(toolName, effectiveInstanceUrl)) {
|
|
314
|
-
const result = await registryManager.executeTool(toolName, request.params.arguments, effectiveInstanceUrl);
|
|
315
|
-
return {
|
|
316
|
-
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
317
|
-
};
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
bootstrapStarted = true;
|
|
402
|
+
const toolArguments = request.params.arguments;
|
|
403
|
+
const unreachableResult = checkUnreachableInstance(toolName, toolArguments, effectiveInstanceUrl, healthMonitor);
|
|
404
|
+
if (unreachableResult)
|
|
405
|
+
return unreachableResult;
|
|
406
|
+
const fastPathResult = await tryManageContextFastPath(toolName, toolArguments, effectiveInstanceUrl, healthMonitor);
|
|
407
|
+
if (fastPathResult)
|
|
408
|
+
return fastPathResult;
|
|
321
409
|
const oauthMode = isOAuthEnabled();
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
{
|
|
335
|
-
const { RegistryManager } = await Promise.resolve().then(() => __importStar(require('./registry-manager')));
|
|
336
|
-
RegistryManager.getInstance().refreshCache(effectiveInstanceUrl);
|
|
337
|
-
}
|
|
338
|
-
if (config_1.LOG_FORMAT === 'verbose') {
|
|
339
|
-
try {
|
|
340
|
-
const instanceInfo = connectionManager.getInstanceInfo(effectiveInstanceUrl);
|
|
341
|
-
(0, logger_1.logInfo)(`Connection verified: ${instanceInfo.version} ${instanceInfo.tier}`);
|
|
342
|
-
}
|
|
343
|
-
catch {
|
|
344
|
-
(0, logger_1.logDebug)('Connection verified but instance info not yet available', {
|
|
345
|
-
instanceUrl: effectiveInstanceUrl,
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
catch (initError) {
|
|
351
|
-
if (!bootstrapComplete) {
|
|
352
|
-
const errorCategory = initError instanceof Error ? (0, error_handler_1.classifyError)(initError) : 'permanent';
|
|
353
|
-
if (initError instanceof Error) {
|
|
354
|
-
if (!timedOut || errorCategory === 'auth' || errorCategory === 'permanent') {
|
|
355
|
-
healthMonitor.reportError(effectiveInstanceUrl, initError);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
(0, logger_1.logError)(`Connection initialization failed: ${initError instanceof Error ? initError.message : String(initError)}`, { instanceUrl: effectiveInstanceUrl });
|
|
359
|
-
const action = request.params.arguments && typeof request.params.arguments.action === 'string'
|
|
360
|
-
? request.params.arguments.action
|
|
361
|
-
: 'unknown';
|
|
362
|
-
const monitorState = healthMonitor.getState(effectiveInstanceUrl);
|
|
363
|
-
let derivedState;
|
|
364
|
-
if (monitorState === 'connecting' || monitorState === 'failed') {
|
|
365
|
-
derivedState = monitorState;
|
|
366
|
-
}
|
|
367
|
-
else if (errorCategory === 'auth' || errorCategory === 'permanent') {
|
|
368
|
-
derivedState = 'failed';
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
derivedState = 'disconnected';
|
|
372
|
-
}
|
|
373
|
-
const connError = (0, error_handler_1.createConnectionFailedError)(toolName, action, effectiveInstanceUrl, derivedState);
|
|
374
|
-
if (!timedOut) {
|
|
375
|
-
recordEarlyReturnError(toolName, action, connError.message);
|
|
376
|
-
}
|
|
377
|
-
return {
|
|
378
|
-
content: [{ type: 'text', text: JSON.stringify(connError, null, 2) }],
|
|
379
|
-
isError: true,
|
|
380
|
-
};
|
|
381
|
-
}
|
|
382
|
-
throw initError;
|
|
383
|
-
}
|
|
410
|
+
const bootstrapFailure = await ensureBootstrapped({
|
|
411
|
+
toolName,
|
|
412
|
+
toolArguments,
|
|
413
|
+
effectiveInstanceUrl,
|
|
414
|
+
oauthMode,
|
|
415
|
+
connectionManager,
|
|
416
|
+
healthMonitor,
|
|
417
|
+
isTimedOut: () => timedOut,
|
|
418
|
+
bootstrapState,
|
|
419
|
+
});
|
|
420
|
+
if (bootstrapFailure)
|
|
421
|
+
return bootstrapFailure;
|
|
384
422
|
const toolArgs = request.params.arguments;
|
|
385
423
|
const action = toolArgs && typeof toolArgs.action === 'string' ? toolArgs.action : undefined;
|
|
386
424
|
if (config_1.LOG_FORMAT === 'condensed') {
|
|
@@ -421,6 +459,9 @@ async function setupHandlers(server) {
|
|
|
421
459
|
});
|
|
422
460
|
}
|
|
423
461
|
const result = await registryManager.executeTool(toolName, request.params.arguments, effectiveInstanceUrl);
|
|
462
|
+
if (result === undefined) {
|
|
463
|
+
throw new Error(`Tool '${toolName}' is not available or has been filtered out`);
|
|
464
|
+
}
|
|
424
465
|
if (!timedOut) {
|
|
425
466
|
healthMonitor.reportSuccess(effectiveInstanceUrl);
|
|
426
467
|
}
|
|
@@ -454,7 +495,7 @@ async function setupHandlers(server) {
|
|
|
454
495
|
const retryable = isIdempotentOperation(toolName);
|
|
455
496
|
const timeoutError = (0, error_handler_1.createTimeoutError)(toolName, action, config_1.HANDLER_TIMEOUT_MS, retryable);
|
|
456
497
|
(0, logger_1.logError)(`Handler timeout: tool '${toolName}' timed out after ${config_1.HANDLER_TIMEOUT_MS}ms`);
|
|
457
|
-
if (
|
|
498
|
+
if (bootstrapState.started && !bootstrapState.complete) {
|
|
458
499
|
HealthMonitor_1.HealthMonitor.getInstance().reportError(requestInstanceUrl, new Error(`Handler timed out after ${config_1.HANDLER_TIMEOUT_MS}ms — bootstrap did not complete`));
|
|
459
500
|
ConnectionManager_1.ConnectionManager.getInstance().clearInflight(requestInstanceUrl);
|
|
460
501
|
}
|
package/dist/src/handlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ const error_handler_1 = require("../utils/error-handler");
|
|
|
10
10
|
const fetch_1 = require("../utils/fetch");
|
|
11
11
|
const logger_1 = require("../logger");
|
|
12
12
|
const config_1 = require("../config");
|
|
13
|
+
const index_1 = require("../oauth/index");
|
|
13
14
|
class InitializationTimeoutError extends Error {
|
|
14
15
|
constructor(timeoutMs) {
|
|
15
16
|
super(`Initialization timeout after ${timeoutMs}ms`);
|
|
@@ -47,6 +48,7 @@ const performConnect = (0, xstate_1.fromPromise)(async ({ input }) => {
|
|
|
47
48
|
if (!healthy) {
|
|
48
49
|
throw new Error(`Health check failed for ${input.instanceUrl}`);
|
|
49
50
|
}
|
|
51
|
+
await authenticatedTokenCheck(input.instanceUrl, HEALTH_CHECK_PROBE_MS);
|
|
50
52
|
return { degraded: isDegradedInstance(connectionManager, input.instanceUrl) };
|
|
51
53
|
}
|
|
52
54
|
const deadline = Date.now() + config_1.INIT_TIMEOUT_MS;
|
|
@@ -88,6 +90,7 @@ const performHealthCheck = (0, xstate_1.fromPromise)(async ({ input }) => {
|
|
|
88
90
|
if (!healthy) {
|
|
89
91
|
throw new Error(`Health check failed for ${input.instanceUrl}`);
|
|
90
92
|
}
|
|
93
|
+
await authenticatedTokenCheck(input.instanceUrl, HEALTH_CHECK_PROBE_MS);
|
|
91
94
|
const connectionManager = ConnectionManager_1.ConnectionManager.getInstance();
|
|
92
95
|
return { degraded: isDegradedInstance(connectionManager, input.instanceUrl) };
|
|
93
96
|
});
|
|
@@ -112,6 +115,57 @@ async function quickHealthCheck(instanceUrl, timeoutMs = HEALTH_CHECK_PROBE_MS)
|
|
|
112
115
|
clearTimeout(timeoutId);
|
|
113
116
|
}
|
|
114
117
|
}
|
|
118
|
+
async function authenticatedTokenCheck(instanceUrl, timeoutMs) {
|
|
119
|
+
if ((0, index_1.isOAuthEnabled)())
|
|
120
|
+
return;
|
|
121
|
+
if (!config_1.GITLAB_TOKEN)
|
|
122
|
+
return;
|
|
123
|
+
const controller = new AbortController();
|
|
124
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
125
|
+
try {
|
|
126
|
+
const response = await (0, fetch_1.enhancedFetch)(`${instanceUrl}/api/v4/user`, {
|
|
127
|
+
method: 'HEAD',
|
|
128
|
+
signal: controller.signal,
|
|
129
|
+
retry: false,
|
|
130
|
+
rateLimit: false,
|
|
131
|
+
skipAuth: true,
|
|
132
|
+
headers: { 'PRIVATE-TOKEN': config_1.GITLAB_TOKEN },
|
|
133
|
+
});
|
|
134
|
+
if (response.status === 401 || response.status === 403) {
|
|
135
|
+
throw new Error(`GitLab API error: ${response.status} - token invalid or lacks required scope`);
|
|
136
|
+
}
|
|
137
|
+
if (!response.ok) {
|
|
138
|
+
throw new Error(`GitLab API error: ${response.status} - authenticated health probe failed`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error instanceof Error) {
|
|
143
|
+
const parsed = (0, error_handler_1.parseGitLabApiError)(error.message);
|
|
144
|
+
if (parsed?.status === 401 || parsed?.status === 403)
|
|
145
|
+
throw error;
|
|
146
|
+
if (error.name === 'AbortError' || (0, error_handler_1.classifyError)(error) === 'transient')
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
(0, logger_1.logError)('Unexpected error during authenticated token health check', {
|
|
150
|
+
err: error instanceof Error ? error : new Error(String(error)),
|
|
151
|
+
});
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
finally {
|
|
155
|
+
clearTimeout(timeoutId);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const healthCheckOnError = [
|
|
159
|
+
{
|
|
160
|
+
guard: 'healthCheckErrorIsAuth',
|
|
161
|
+
target: '#connection.failed',
|
|
162
|
+
actions: 'recordFailure',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
target: 'idle',
|
|
166
|
+
actions: 'recordFailure',
|
|
167
|
+
},
|
|
168
|
+
];
|
|
115
169
|
const connectionMachine = (0, xstate_1.setup)({
|
|
116
170
|
types: {
|
|
117
171
|
context: {},
|
|
@@ -134,6 +188,13 @@ const connectionMachine = (0, xstate_1.setup)({
|
|
|
134
188
|
const error = event.error;
|
|
135
189
|
return (0, error_handler_1.classifyError)(error) === 'transient';
|
|
136
190
|
},
|
|
191
|
+
healthCheckErrorIsAuth: ({ event }) => {
|
|
192
|
+
const error = event.error;
|
|
193
|
+
if (!(error instanceof Error))
|
|
194
|
+
return false;
|
|
195
|
+
const parsed = (0, error_handler_1.parseGitLabApiError)(error.message);
|
|
196
|
+
return parsed?.status === 401 || parsed?.status === 403;
|
|
197
|
+
},
|
|
137
198
|
},
|
|
138
199
|
actions: {
|
|
139
200
|
recordSuccess: (0, xstate_1.assign)({
|
|
@@ -240,10 +301,7 @@ const connectionMachine = (0, xstate_1.setup)({
|
|
|
240
301
|
actions: 'recordSuccess',
|
|
241
302
|
},
|
|
242
303
|
],
|
|
243
|
-
onError:
|
|
244
|
-
target: 'idle',
|
|
245
|
-
actions: 'recordFailure',
|
|
246
|
-
},
|
|
304
|
+
onError: healthCheckOnError,
|
|
247
305
|
},
|
|
248
306
|
},
|
|
249
307
|
},
|
|
@@ -291,10 +349,7 @@ const connectionMachine = (0, xstate_1.setup)({
|
|
|
291
349
|
actions: 'recordSuccess',
|
|
292
350
|
},
|
|
293
351
|
],
|
|
294
|
-
onError:
|
|
295
|
-
target: 'idle',
|
|
296
|
-
actions: 'recordFailure',
|
|
297
|
-
},
|
|
352
|
+
onError: healthCheckOnError,
|
|
298
353
|
},
|
|
299
354
|
},
|
|
300
355
|
},
|