Spaces:
Build error
Build error
| import { NextRequest, NextResponse } from 'next/server'; | |
| // 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}`); | |
| // Parse command and arguments | |
| const commandParts = command.trim().split(/\s+/); | |
| const cmd = commandParts[0]; | |
| const args = commandParts.slice(1); | |
| // Execute command using Vercel Sandbox | |
| const result = await global.activeSandbox.runCommand({ | |
| cmd, | |
| args | |
| }); | |
| // Get output streams | |
| const stdout = await result.stdout(); | |
| const stderr = await result.stderr(); | |
| const output = [ | |
| stdout ? `STDOUT:\n${stdout}` : '', | |
| stderr ? `\nSTDERR:\n${stderr}` : '', | |
| `\nExit code: ${result.exitCode}` | |
| ].filter(Boolean).join(''); | |
| return NextResponse.json({ | |
| success: true, | |
| output, | |
| exitCode: result.exitCode, | |
| message: result.exitCode === 0 ? 'Command executed successfully' : 'Command completed with non-zero exit code' | |
| }); | |
| } catch (error) { | |
| console.error('[run-command] Error:', error); | |
| return NextResponse.json({ | |
| success: false, | |
| error: (error as Error).message | |
| }, { status: 500 }); | |
| } | |
| } |