Lines 2323-2363javascript
2324 const armMeetingMaxTimer = (botId) => {
2325 if (meetingMaxTimer)
2326 clearTimeout(meetingMaxTimer);
2327 console.log(`⏲️ Meeting max-duration backstop armed: ${MEETING_MAX_MS / 60000} min (override OSBORN_MEETING_MAX_MIN)`);
2328 meetingMaxTimer = setTimeout(() => {
2329 meetingMaxTimer = null;
2330 if (activeMeetingBotId === botId) {
2331 console.log('⏲️ Meeting max duration reached — auto-leaving (backstop, not Recall-reported end)');
2332 void endMeeting('max_duration_backstop');
2336 // ── IDE helpers ─────────────────────────────────────────────────────────
2337 // ensureCodeServer() — idempotent: installs code-server if missing.
2338 // Cloudflared is no longer downloaded here (exposure via agent's own HTTP proxy).
2339 // Emits ide_status:'installing' before any long download so the frontend can
2340 // show a spinner. (~36s + ~740MB first run, once per machine lifetime).
2341 const ensureCodeServer = async () => {
2342 // Resolve code-server binary
2343 const which = await new Promise((res) => {
2344 const p = spawn('which', ['code-server']);
2346 p.stdout?.on('data', (d) => { out += d.toString(); });
2347 p.on('close', () => res(out.trim()));
2350 await sendToFrontend({ type: 'ide_status', status: 'installing' });
2351 console.log('⬇️ Installing code-server via official script...');
2352 await new Promise((res, rej) => {
2353 const install = spawn('sh', ['-c', 'curl -fsSL https://code-server.dev/install.sh | sh'], {
2354 env: { ...process.env },
2355 stdio: ['ignore', 'pipe', 'pipe'],
CriticalSame File Env Network Execution
A single source file combines environment access, network access, and code or shell execution with blocking evidence.
dist/index.jsView on unpkg · L2343 2357 install.stdout?.on('data', (d) => process.stdout.write(d));
2358 install.stderr?.on('data', (d) => process.stderr.write(d));
CriticalCommand Output Exfiltration
Source executes local commands and sends command output to an external endpoint.
dist/index.jsView on unpkg · L2343 2359 install.on('close', (code) => code === 0 ? res() : rej(new Error(`code-server install exited ${code}`)));
2363 // Kill code-server, disable proxy, clear interval, reset IDE state.