Ga naar hoofdinhoud

OPFS-bestands-API

@grant CAT.agent.opfs

Met de OPFS-bestands-API (Origin Private File System) kan een script bestanden in de Agent-werkruimte lezen en schrijven. Alle paden zijn relatief ten opzichte van de map agents/workspace/.

write — een bestand schrijven

const result = await CAT.agent.opfs.write(path, content);

Parameters:

ParameterTypeBeschrijving
pathstringBestandspad (vereist); ondersteunt geneste mappen
contentstring | BlobBestandsinhoud

Ondersteunde content-indelingen:

IndelingBeschrijving
Gewone stringOpgeslagen als UTF-8-tekstbestand
Data-URL-stringAutomatisch gedecodeerd en opgeslagen als binair (bv. data:image/png;base64,...)
Blob-objectBinaire gegevens direct opgeslagen

Retourneert WriteResult:

VeldTypeBeschrijving
pathstringPad waar het bestand is opgeslagen
sizenumberBestandsgrootte (bytes)
// Schrijf een tekstbestand
await CAT.agent.opfs.write("data/config.json", JSON.stringify({ key: "value" }));

// Schrijf een binair bestand (data-URL)
const canvas = document.createElement("canvas");
const dataUrl = canvas.toDataURL("image/png");
await CAT.agent.opfs.write("images/chart.png", dataUrl);

Bovenliggende mappen worden automatisch aangemaakt als ze niet bestaan. Als het bestand al bestaat, wordt de inhoud ervan overschreven.

read — een bestand lezen

const result = await CAT.agent.opfs.read(path, format?);

Parameters:

ParameterTypeStandaardBeschrijving
pathstringBestandspad (vereist)
format"text" | "blob""text"Leesindeling

Retourneert ReadResult:

VeldTypeWanneer aanwezigBeschrijving
pathstringaltijdbestandspad
sizenumberaltijdBestandsgrootte
contentstringformat="text"Tekstinhoud van het bestand
dataBlobformat="blob"Het Blob-object van het bestand (overgedragen via structured clone)
mimeTypestringformat="blob"Automatisch gedetecteerd MIME-type

Twee leesmodi:

// Tekstmodus — geschikt voor JSON- en tekstbestanden
const config = await CAT.agent.opfs.read("data/config.json");
const data = JSON.parse(config.content);

// Blobmodus — geschikt voor afbeeldingen en binaire bestanden
const image = await CAT.agent.opfs.read("images/chart.png", "blob");
// image.data is een echt Blob-object (geen scope-beperkte blob:-URL)
// Maak een lokale URL met URL.createObjectURL(image.data) in welke
// context die het nodig heeft, of geef het Blob rechtstreeks door aan elke API die er een accepteert

Automatische MIME-typedetectie:

ExtensieMIME-type
.jpg / .jpegimage/jpeg
.pngimage/png
.gifimage/gif
.webpimage/webp
.svgimage/svg+xml
.mp3audio/mpeg
.wavaudio/wav
.mp4video/mp4
.pdfapplication/pdf
.jsonapplication/json
.txttext/plain
.htmltext/html
.csstext/css
.jsapplication/javascript
overigapplication/octet-stream

list — een map weergeven

const entries = await CAT.agent.opfs.list(path?);

Parameters:

ParameterTypeStandaardBeschrijving
pathstring""Mappad; een lege string betekent de hoofdmap

Retourneert FileEntry[]:

VeldTypeBeschrijving
namestringBestands-/mapnaam
type"file" | "directory"Type
sizenumberBestandsgrootte (alleen file-type)
const entries = await CAT.agent.opfs.list("data/");
for (const entry of entries) {
if (entry.type === "file") {
console.log(`${entry.name} (${entry.size} bytes)`);
} else {
console.log(`${entry.name}/`);
}
}

delete — een bestand of map verwijderen

const result = await CAT.agent.opfs.delete(path);

Ondersteunt het recursief verwijderen van een map en alles erin.

Retourneert:

{ success: true }

readAttachment — een bijlage lezen

const result = await CAT.agent.opfs.readAttachment(attachmentId);

Leest bijlagegegevens (afbeeldingen, bestanden, enz.) uit een gesprek. De bijlage-ID komt van ContentBlock.attachmentId in een bericht.

Parameters:

ParameterTypeBeschrijving
attachmentIdstringBijlage-ID (vereist)

Retourneert:

VeldTypeBeschrijving
idstringBijlage-ID
dataBlobBinaire bijlagegegevens
sizenumberBestandsgrootte (bytes)
mimeTypestringMIME-type
// Lees een afbeeldingsbijlage die de AI in een gesprek heeft gegenereerd
const messages = await conv.getMessages();
const lastMsg = messages[messages.length - 1];
const imageBlock = lastMsg.content.find(b => b.type === "image");
if (imageBlock) {
const attachment = await CAT.agent.opfs.readAttachment(imageBlock.attachmentId);
console.log(`Bijlagegrootte: ${attachment.size}, type: ${attachment.mimeType}`);
}

Werken met Blob-gegevens

  • read(path, "blob") retourneert een echt Blob-object dat is overgedragen via structured clone — geen blob:-URL die is gebonden aan de oorsprong van de extensie, dus er is geen cross-context-toegangsbeperking om u zorgen over te maken
  • Om een tijdelijke URL te krijgen die in een pagina kan worden gebruikt, roept u URL.createObjectURL(result.data) aan; roep URL.revokeObjectURL() aan als u klaar bent
  • U kunt de Blob ook rechtstreeks doorgeven aan elke Web-API die een Blob/File accepteert (bv. de body van fetch, FormData.append, een DataTransfer voor <input type="file">)