Files
Jannik e4b0dffb51
Build and Push Docker Image / build-and-push (push) Canceled after 0s
Auto-Commit: 2026-08-30 00:51:24
2026-08-30 00:51:25 +02:00

69 lines
2.7 KiB
JavaScript

const http = require('http');
const https = require('https');
const { execSync } = require('child_process');
async function listLanguageServerProcesses() {
const command = [
'powershell -NoProfile -Command',
'"Get-CimInstance Win32_Process -Filter \\"name like \'language_server%\'\\"',
'| Select-Object ProcessId,ParentProcessId,CommandLine,ExecutablePath',
'| ConvertTo-Json -Depth 2"'
].join(' ');
const result = execSync(command, { encoding: 'utf8' });
return JSON.parse(result);
}
function extractArgument(commandLine, argumentName) {
const escapedName = argumentName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const pattern = new RegExp(`--${escapedName}(?:=|\\s+)(?:"([^"]*)"|'([^']*)'|([^\\s]+))`, 'i');
const match = commandLine.match(pattern);
return match ? (match[1] ?? match[2] ?? match[3] ?? null) : null;
}
const API_PATH = '/exa.language_server_pb.LanguageServerService/RetrieveUserQuotaSummary';
const requestBody = JSON.stringify({ metadata: { ideName: 'antigravity', extensionName: 'ag-usage', locale: 'en' } });
function tryPort(port, csrfToken, protocol) {
return new Promise(resolve => {
const client = protocol === 'https' ? https : http;
const req = client.request({
hostname: '127.0.0.1', port, path: API_PATH, method: 'POST',
...(protocol === 'https' ? { rejectUnauthorized: false } : {}),
headers: {
'X-Codeium-Csrf-Token': csrfToken,
'Connect-Protocol-Version': '1',
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(requestBody),
},
timeout: 3000,
}, res => {
let body = '';
res.setEncoding('utf8');
res.on('data', chunk => body += chunk);
res.on('end', () => resolve({ port, statusCode: res.statusCode, body }));
});
req.on('error', () => resolve(null));
req.write(requestBody);
req.end();
});
}
(async () => {
const processes = await listLanguageServerProcesses();
let procs = Array.isArray(processes) ? processes : (processes ? [processes] : []);
let port, csrfToken, protocol;
for (const proc of procs) {
if (!proc.CommandLine) continue;
const p = extractArgument(proc.CommandLine, 'api_server_port');
const c = extractArgument(proc.CommandLine, 'csrf_token');
if (p && c) {
port = p; csrfToken = c;
protocol = proc.CommandLine.includes('--api_server_protocol=https') ? 'https' : 'http';
break;
}
}
if (!port) return console.log('not found');
const response = await tryPort(port, csrfToken, protocol);
console.log(response.body);
})();