UNPKG

@kya-os/mcp-i

Version:

COMING SOON:Production-ready MCP Identity with automatic registration, key rotation, and optimized performance

53 lines (52 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pollRegistrationStatus = pollRegistrationStatus; exports.isAsyncRegistrationResponse = isAsyncRegistrationResponse; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function pollRegistrationStatus(statusUrl, transport, options = {}) { const { pollInterval = 2000, maxPollingTime = 60000, logger, onProgress } = options; const startTime = Date.now(); let attempts = 0; logger?.debug(`Starting registration polling: ${statusUrl}`); while (Date.now() - startTime < maxPollingTime) { attempts++; try { const response = await transport.get(statusUrl); const status = response.data; logger?.debug(`Poll attempt ${attempts}: ${status.status}`); const elapsed = Math.floor((Date.now() - startTime) / 1000); const progressMessage = `Registration ${status.status}... (${elapsed}s elapsed)`; if (onProgress) { onProgress(progressMessage, status.progress); } if (status.status === 'completed' && status.result) { logger?.info('Registration completed successfully'); return status.result; } if (status.status === 'failed') { const errorMessage = status.error?.message || 'Registration failed'; logger?.error(`Registration failed: ${errorMessage}`); throw new Error(errorMessage); } await sleep(pollInterval); } catch (error) { if (error.message && !error.message.includes('ECONNREFUSED')) { throw error; } logger?.debug(`Network error during polling (attempt ${attempts}): ${error.message}`); await sleep(pollInterval); } } const timeoutMessage = `Registration timeout after ${maxPollingTime / 1000} seconds`; logger?.error(timeoutMessage); throw new Error(timeoutMessage); } function isAsyncRegistrationResponse(response) { return response && typeof response.jobId === 'string' && typeof response.status === 'string' && !response.did; }