in src/index.ts [91:130]
async function findWorkingIDEEndpoint(): Promise<string> {
log("Attempting to find a working IDE endpoint...");
// 1. If user specified a port, just use that
if (process.env.IDE_PORT) {
log(`IDE_PORT is set to ${process.env.IDE_PORT}. Testing this port.`);
const testEndpoint = `http://${HOST}:${process.env.IDE_PORT}/api`;
if (await testListTools(testEndpoint)) {
log(`IDE_PORT ${process.env.IDE_PORT} is working.`);
return testEndpoint;
} else {
log(`Specified IDE_PORT=${process.env.IDE_PORT} but it is not responding correctly.`);
throw new Error(`Specified IDE_PORT=${process.env.IDE_PORT} but it is not responding correctly.`);
}
}
// 2. Reuse existing endpoint if it's still working
if (cachedEndpoint != null && await testListTools(cachedEndpoint)) {
log('Using cached endpoint, it\'s still working')
return cachedEndpoint
}
// 3. Otherwise, scan a range of ports
for (let port = 63342; port <= 63352; port++) {
const candidateEndpoint = `http://${HOST}:${port}/api`;
log(`Testing port ${port}...`);
const isWorking = await testListTools(candidateEndpoint);
if (isWorking) {
log(`Found working IDE endpoint at ${candidateEndpoint}`);
return candidateEndpoint;
} else {
log(`Port ${port} is not responding correctly.`);
}
}
// If we reach here, no port was found
previousResponse = "";
log("No working IDE endpoint found in range 63342-63352");
throw new Error("No working IDE endpoint found in range 63342-63352");
}