Aller au contenu principal

SandboxProvider

SandboxProvider est l'interface qu'un package implémente pour enregistrer un Sandbox auprès de MastraEditor. Lors de l'hydratation du Workspace, l'éditeur appelle createSandbox(config) en utilisant comme clé de recherche l'ID provider de la configuration du Sandbox stockée dans StorageWorkspaceRef.

Le fournisseur de Sandbox local intégré est enregistré automatiquement. Les fournisseurs externes, comme E2B, sont transmis via MastraEditorConfig.sandboxes.

Exemple d'utilisation
Lien direct vers Exemple d'utilisation

src/mastra/index.ts
import { MastraEditor } from '@mastra/editor'
import { e2bSandboxProvider } from '@mastra/e2b'

new MastraEditor({
sandboxes: {
[e2bSandboxProvider.id]: e2bSandboxProvider,
},
})

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

id:

string
Identifiant unique du fournisseur (par exemple, "local" ou "e2b"). Doit correspondre à StorageSandboxConfig.provider pour chaque Workspace stocké qui utilise ce fournisseur.

name:

string
Nom lisible affiché dans l'interface utilisateur.

description?:

string
Courte description affichée dans le sélecteur de Sandbox du Workspace.

configSchema?:

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

createSandbox:

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

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

src/providers/my-sandbox.ts
import type { SandboxProvider, WorkspaceSandbox } from '@mastra/core/editor'

export const mySandboxProvider: SandboxProvider<{ apiKey: string }> = {
id: 'my-sandbox',
name: 'My Sandbox',
description: 'Cloud sandbox for command execution.',
configSchema: {
type: 'object',
required: ['apiKey'],
properties: {
apiKey: { type: 'string' },
},
},
async createSandbox(config): Promise<WorkspaceSandbox> {
return createMySandbox({ apiKey: config.apiKey })
},
}

Une fois le fournisseur enregistré, les administrateurs peuvent le référencer depuis une configuration de Workspace en ligne ou depuis un StorageWorkspaceRef stocké.