Aller au contenu principal

FilesystemProvider

FilesystemProvider est l’interface qu’un package implémente pour enregistrer un système de fichiers auprès de MastraEditor. L’Editor appelle createFilesystem(config) lors de l’hydratation du Workspace et utilise comme clé de recherche l’ID provider de la configuration du système de fichiers enregistrée dans StorageWorkspaceRef.

Le fournisseur de système de fichiers local intégré est enregistré automatiquement. Les fournisseurs externes, tels que S3 ou GCS, sont transmis au moyen de MastraEditorConfig.filesystems.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

src/mastra/index.ts
import { MastraEditor } from '@mastra/editor'
import { s3FilesystemProvider } from '@mastra/s3'

new MastraEditor({
filesystems: {
[s3FilesystemProvider.id]: s3FilesystemProvider,
},
})

Propriétés
Lien direct vers Propriétés

id:

string
Identifiant unique du fournisseur (par exemple, "local" ou "s3"). Il doit correspondre à StorageFilesystemConfig.provider dans chaque Workspace enregistré qui utilise ce fournisseur.

name:

string
Nom lisible affiché dans l’interface utilisateur.

description?:

string
Courte description affichée dans le sélecteur de système de fichiers du Workspace.

configSchema?:

Record<string, unknown>
JSON Schema décrivant la configuration propre au fournisseur. Utilisé par l’interface utilisateur pour afficher les formulaires de configuration.

createFilesystem:

(config: TConfig) => WorkspaceFilesystem | Promise<WorkspaceFilesystem>
Crée une instance WorkspaceFilesystem à l’exécution à partir de la configuration enregistrée. Appelé lors de l’hydratation du Workspace.

Implémenter un fournisseur
Lien direct vers Implémenter un fournisseur

src/providers/my-filesystem.ts
import type { FilesystemProvider, WorkspaceFilesystem } from '@mastra/core/editor'

export const myFilesystemProvider: FilesystemProvider<{ bucket: string; region: string }> = {
id: 'my-fs',
name: 'My Filesystem',
description: 'Object-store-backed filesystem.',
configSchema: {
type: 'object',
required: ['bucket', 'region'],
properties: {
bucket: { type: 'string' },
region: { type: 'string' },
},
},
async createFilesystem(config): Promise<WorkspaceFilesystem> {
return createMyFilesystem({ bucket: config.bucket, region: config.region })
},
}

Une fois le fournisseur enregistré, les administrateurs peuvent le référencer depuis une configuration de Workspace intégrée ou un objet StorageWorkspaceRef enregistré.