Skip to main content

OPFS ֆայլի API

@grant CAT.agent.opfs

OPFS (Origin Private File System) ֆայլի API-ն թույլ է տալիս սկրիպտին կարդալ և գրել ֆայլեր Agent աշխատանքային տարածքում: Բոլոր ուղիները հարաբերական են agents/workspace/ դիրեկտորիային:

write — ֆայլի գրառում

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

Պարամետրեր՝

ՊարամետրՏիպՆկարագրություն
pathstringՖայլի ուղի (պարտադիր); աջակցում է բնադրված դիրեկտորիաներին
contentstring | BlobՖայլի բովանդակություն

Աջակցվող content ձևաչափեր՝

ՁևաչափՆկարագրություն
Սովորական տողՊահվում է որպես UTF-8 տեքստային ֆայլ
Data URL տողԱվտոմատ կերպով վերծանվում և պահվում է որպես երկուական (օր.՝ data:image/png;base64,...)
Blob օբյեկտԵրկուական տվյալներ՝ պահված ուղղակիորեն

Վերադարձնում է WriteResult՝

ԴաշտՏիպՆկարագրություն
pathstringՈւղին, որտեղ պահվել է ֆայլը
sizenumberՖայլի չափը (բայթ)
// Write a text file
await CAT.agent.opfs.write("data/config.json", JSON.stringify({ key: "value" }));

// Write a binary file (data URL)
const canvas = document.createElement("canvas");
const dataUrl = canvas.toDataURL("image/png");
await CAT.agent.opfs.write("images/chart.png", dataUrl);

Ծնող դիրեկտորիաները ստեղծվում են ավտոմատ կերպով, եթե դրանք գոյություն չունեն: Եթե ֆայլն արդեն գոյություն ունի, դրա բովանդակությունը վերագրվում է:

read — ֆայլի ընթերցում

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

Պարամետրեր՝

ՊարամետրՏիպԼռելյայնՆկարագրություն
pathstringՖայլի ուղի (պարտադիր)
format"text" | "blob""text"Ընթերցման ձևաչափ

Վերադարձնում է ReadResult՝

ԴաշտՏիպԵրբ կաՆկարագրություն
pathstringմիշտֆայլի ուղի
sizenumberմիշտՖայլի չափ
contentstringformat="text"Ֆայլի տեքստային բովանդակություն
dataBlobformat="blob"Ֆայլի Blob օբյեկտ (փոխանցված կառուցվածքային կլոնի միջոցով)
mimeTypestringformat="blob"Ավտոմատ հայտնաբերված MIME տիպ

Ընթերցման երկու ռեժիմ՝

// Text mode — suited to JSON and text files
const config = await CAT.agent.opfs.read("data/config.json");
const data = JSON.parse(config.content);

// Blob mode — suited to images and binary files
const image = await CAT.agent.opfs.read("images/chart.png", "blob");
// image.data is a real Blob object (not a scope-restricted blob: URL)
// Create a local URL with URL.createObjectURL(image.data) in whatever
// context needs it, or hand the Blob directly to any API that accepts one

Ավտոմատ MIME տիպի հայտնաբերում՝

ԸնդլայնումMIME տիպ
.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
այլapplication/octet-stream

list — դիրեկտորիայի ցուցակագրում

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

Պարամետրեր՝

ՊարամետրՏիպԼռելյայնՆկարագրություն
pathstring""Դիրեկտորիայի ուղի. դատարկ տողը նշանակում է արմատային դիրեկտորիա

Վերադարձնում է FileEntry[]՝

ԴաշտՏիպՆկարագրություն
namestringՖայլի/դիրեկտորիայի անուն
type"file" | "directory"Տիպ
sizenumberՖայլի չափ (միայն file տիպ)
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 — ֆայլի կամ դիրեկտորիայի ջնջում

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

Աջակցում է դիրեկտորիայի և դրա ներսում ամեն ինչի ռեկուրսիվ ջնջմանը:

Վերադարձնում է՝

{ success: true }

readAttachment — կցորդի ընթերցում

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

Կարդում է կցորդի տվյալները (նկարներ, ֆայլեր և այլն) զրույցից: Կցորդի ID-ն գալիս է հաղորդագրության մեջ ContentBlock.attachmentId-ից:

Պարամետրեր՝

ՊարամետրՏիպՆկարագրություն
attachmentIdstringԿցորդի ID (պարտադիր)

Վերադարձնում է՝

ԴաշտՏիպՆկարագրություն
idstringԿցորդի ID
dataBlobԿցորդի երկուական տվյալներ
sizenumberՖայլի չափ (բայթ)
mimeTypestringMIME տիպ
// Read an image attachment the AI generated in a conversation
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(`Attachment size: ${attachment.size}, type: ${attachment.mimeType}`);
}

Blob տվյալների հետ աշխատանք

  • read(path, "blob")-ը վերադարձնում է իրական Blob օբյեկտ, որը փոխանցվել է կառուցվածքային կլոնի միջոցով — ոչ թե ընդլայնման ծագմանը սահմանափակված blob: URL, ուստի խաչ-կոնտեքստ հասանելիության սահմանափակման մասին անհանգստանալու կարիք չկա
  • Էջում օգտագործելի ժամանակավոր URL ստանալու համար կանչեք URL.createObjectURL(result.data); կանչեք URL.revokeObjectURL(), երբ ավարտեք դրա հետ
  • Կարող եք նաև Blob-ը ուղղակիորեն փոխանցել ցանկացած Web API-ին, որն ընդունում է Blob/File (օր.՝ fetchbody, FormData.append, DataTransfer՝ <input type="file">-ի համար)