Передача файлов
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.