Spaces:
Build error
Build error
| import { NextRequest, NextResponse } from 'next/server'; | |
| import { Sandbox } from '@e2b/code-interpreter'; | |
| // Get active sandbox from global state (in production, use a proper state management solution) | |
| declare global { | |
| var activeSandbox: any; | |
| } | |
| export async function POST(request: NextRequest) { | |
| try { | |
| const { command } = await request.json(); | |
| if (!command) { | |
| return NextResponse.json({ | |
| success: false, | |
| error: 'Command is required' | |
| }, { status: 400 }); | |
| } | |
| if (!global.activeSandbox) { | |
| return NextResponse.json({ | |
| success: false, | |
| error: 'No active sandbox' | |
| }, { status: 400 }); | |
| } | |
| console.log(`[run-command] Executing: ${command}`); | |
| const result = await global.activeSandbox.runCode(` | |
| import subprocess | |
| import os | |
| os.chdir('/home/user/app') | |
| result = subprocess.run(${JSON.stringify(command.split(' '))}, | |
| capture_output=True, | |
| text=True, | |
| shell=False) | |
| print("STDOUT:") | |
| print(result.stdout) | |
| if result.stderr: | |
| print("\\nSTDERR:") | |
| print(result.stderr) | |
| print(f"\\nReturn code: {result.returncode}") | |
| `); | |
| const output = result.logs.stdout.join('\n'); | |
| return NextResponse.json({ | |
| success: true, | |
| output, | |
| message: 'Command executed successfully' | |
| }); | |
| } catch (error) { | |
| console.error('[run-command] Error:', error); | |
| return NextResponse.json({ | |
| success: false, | |
| error: (error as Error).message | |
| }, { status: 500 }); | |
| } | |
| } |