Lines 2319-2359javascript
2320 const armMeetingMaxTimer = (botId) => {
2321 if (meetingMaxTimer)
2322 clearTimeout(meetingMaxTimer);
2323 console.log(`⏲️ Meeting max-duration backstop armed: ${MEETING_MAX_MS / 60000} min (override OSBORN_MEETING_MAX_MIN)`);
2324 meetingMaxTimer = setTimeout(() => {
2325 meetingMaxTimer = null;
2326 if (activeMeetingBotId === botId) {
2327 console.log('⏲️ Meeting max duration reached — auto-leaving (backstop, not Recall-reported end)');
2328 void endMeeting('max_duration_backstop');
2332 // ── IDE helpers ─────────────────────────────────────────────────────────
2333 // ensureCodeServer() — idempotent: installs code-server if missing.
2334 // Cloudflared is no longer downloaded here (exposure via agent's own HTTP proxy).
2335 // Emits ide_status:'installing' before any long download so the frontend can
2336 // show a spinner. (~36s + ~740MB first run, once per machine lifetime).
2337 const ensureCodeServer = async () => {
2338 // Resolve code-server binary
2339 const which = await new Promise((res) => {
2340 const p = spawn('which', ['code-server']);
2342 p.stdout?.on('data', (d) => { out += d.toString(); });
2343 p.on('close', () => res(out.trim()));
2346 await sendToFrontend({ type: 'ide_status', status: 'installing' });
2347 console.log('⬇️ Installing code-server via official script...');
2348 await new Promise((res, rej) => {
2349 const install = spawn('sh', ['-c', 'curl -fsSL https://code-server.dev/install.sh | sh'], {
2350 env: { ...process.env },
2351 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 · L2339 2353 install.stdout?.on('data', (d) => process.stdout.write(d));
2354 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 · L2339 2355 install.on('close', (code) => code === 0 ? res() : rej(new Error(`code-server install exited ${code}`)));
2359 // Kill code-server, disable proxy, clear interval, reset IDE state.