Перейти к содержимому

Передача файлов

sandbox.files загружает и читает файлы через API песочницы. Указывайте абсолютные пути внутри песочницы, чтобы результат не зависел от рабочей директории команды.

Загрузить локальный файл

Прочитайте файл на своей машине и передайте его содержимое в files.write:

mjs
import { readFile } from "node:fs/promises";
import { URL } from "node:url";
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  const data = await readFile(new URL("./fixture.txt", import.meta.url));
  await sandbox.files.write("/tmp/fixture.txt", data);
  console.log("Uploaded fixture.txt");
} finally {
  await sandbox.kill();
}

Прочитать файл

По умолчанию files.read возвращает текст:

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write("/tmp/message.txt", "hello from AgentBox");
  const message = await sandbox.files.read("/tmp/message.txt");
  console.log(message);
} finally {
  await sandbox.kill();
}

Скачать файл

Для бинарного файла запросите байты и сохраните их локально:

mjs
import { writeFile } from "node:fs/promises";
import { URL } from "node:url";
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();

try {
  await sandbox.files.write("/tmp/report.txt", "Report is ready");
  const report = await sandbox.files.read("/tmp/report.txt", {
    format: "bytes",
  });
  await writeFile(new URL("./report.txt", import.meta.url), report);
  console.log("Downloaded report.txt");
} finally {
  await sandbox.kill();
}

Для нескольких файлов используйте writeFiles в JavaScript или write_files в Python. Большое дерево каталогов удобнее упаковать в архив или добавить в шаблон, чем отправлять множеством мелких запросов.

Метаданные, листинг и watch-операции описаны в справочнике Filesystem.