SDK
Tasks

Tasks

The Tasks API is available under sandbox.tasks. It provides methods for listing, retrieving, and running tasks in your sandbox.

Listing Tasks

You can get all available tasks in your sandbox:

// Get all tasks
const tasks = client.tasks.getAll();
 
for (const task of tasks) {
  console.log(`Task: ${task.name} (${task.command})`);
}

Running Tasks

You can run a task using its ID:

const task = client.tasks.get("dev");
 
// Will restart the task if already running
await task.run()
await task.restart()
await task.stop()
 
 
// You can wait for a port to open on the task
const port = await task.waitForPort()
console.log(`Preview available at: ${port.host}`);

Getting Task Information

You can get information about a specific task:

// Get a specific task
const task = client.tasks.get("build");
 
if (task) {
  console.log(`Task: ${task.name}`);
  console.log(`Command: ${task.command}`);
  // "RUNNING" | "FINISHED" | "ERROR" | "KILLED" | "RESTARTING" | "IDLE
  console.log(`Status: ${task.status}`);
  console.log(`Runs at start: ${task.runAtStart}`);
}

Opening a Shell

Tasks are an abstraction over commands. You can open the underlying shell to see its current output and listen to output updates.

const task = client.tasks.get('dev')
 
// Output will not be emitted until you open the task
task.onOutput((output) => {
  console.log(output)
})
const output = await task.open()

Listen for Port

If your task opens a port, you can listen for it to open:

const port = await task.waitForPort()
console.log(`Preview available at: ${port.host}`);
💡

A task can theoretically open multiple ports, but currently only the first port is exposed.