UNPKG

agentlang

Version:

The easiest way to build the most reliable AI agents - enterprise-grade teams of AI agents that collaborate with each other and humans

115 lines (106 loc) 3.65 kB
import { evaluate } from '../interpreter.js'; import { makeCoreModuleName } from '../util.js'; import { makeInstance, objectAsInstanceAttributes } from '../module.js'; import crypto from 'crypto'; export const CoreFilesModuleName = makeCoreModuleName('files'); export default `module ${CoreFilesModuleName} entity File { id String @id, filename String @unique @indexed, originalName String @optional, mimetype String @default("application/octet-stream"), size Int @optional, uploadedBy String @optional, uploadedAt DateTime @default(now()), path String @optional, @rbac [(allow: [create, read, update, delete], where: auth.user = this.uploadedBy)] } @public workflow CreateFile { {File {id CreateFile.id, filename CreateFile.filename, originalName CreateFile.originalName, mimetype CreateFile.mimetype, size CreateFile.size, uploadedBy CreateFile.uploadedBy, uploadedAt CreateFile.uploadedAt, path CreateFile.path}, @upsert} } @public workflow FindFile { {File {id? FindFile.id}} @as [file]; file } @public workflow FindFileByFilename { {File {filename? FindFileByFilename.filename}} @as [file]; file } @public workflow ListFiles { {File? {}} } @public workflow ListUserFiles { {File {uploadedBy? ListUserFiles.userId}} } @public workflow DeleteFile { delete {File {id? DeleteFile.id}} } @public workflow DeleteFileByFilename { delete {File {filename? DeleteFileByFilename.filename}} } @public workflow UpdateFile { {File {id? UpdateFile.id, originalName UpdateFile.originalName, mimetype UpdateFile.mimetype, size UpdateFile.size}} } `; export async function createFileRecord(fileInfo, sessionInfo, callback, env) { let inst = makeInstance(CoreFilesModuleName, 'CreateFile', objectAsInstanceAttributes({ id: crypto.randomUUID(), filename: fileInfo.filename, originalName: fileInfo.originalName, mimetype: fileInfo.mimetype, size: fileInfo.size, path: fileInfo.path, uploadedBy: fileInfo.uploadedBy || '', uploadedAt: new Date().toISOString(), })); if (sessionInfo) { inst = inst.setAuthContext(sessionInfo); } return await evaluate(inst, callback, env); } export async function findFileByFilename(filename, sessionInfo, callback, env) { let inst = makeInstance(CoreFilesModuleName, 'FindFileByFilename', objectAsInstanceAttributes({ filename: filename, })); if (sessionInfo) { inst = inst.setAuthContext(sessionInfo); } return await evaluate(inst, callback, env); } export async function deleteFileRecord(filename, sessionInfo, callback, env) { let inst = makeInstance(CoreFilesModuleName, 'DeleteFileByFilename', objectAsInstanceAttributes({ filename: filename, })); if (sessionInfo) { inst = inst.setAuthContext(sessionInfo); } return await evaluate(inst, callback, env); } export async function listAllFiles(sessionInfo, callback, env) { let inst = makeInstance(CoreFilesModuleName, 'ListFiles', objectAsInstanceAttributes({})); if (sessionInfo) { inst = inst.setAuthContext(sessionInfo); } return await evaluate(inst, callback, env); } export async function listUserFiles(userId, sessionInfo, callback, env) { let inst = makeInstance(CoreFilesModuleName, 'ListUserFiles', objectAsInstanceAttributes({ userId: userId, })); if (sessionInfo) { inst = inst.setAuthContext(sessionInfo); } return await evaluate(inst, callback, env); } //# sourceMappingURL=files.js.map