UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

113 lines (112 loc) 5.91 kB
import { type SandboxEnvironment, type SandboxSelectorContext } from "#shared/sandbox-environment.js"; import type { SandboxSession } from "#shared/sandbox-session.js"; export interface SandboxDeleteOptions { readonly abortSignal?: AbortSignal; } export interface SandboxProviderResourceFile { readonly content: string | Uint8Array; readonly relativePath: string; } export interface SandboxProviderResourceTree { readonly files: readonly SandboxProviderResourceFile[]; readonly key: string; readonly mountPath: string; readonly targetPath: string; } export type SandboxProviderResourceSource = { readonly kind: "none"; } | { readonly key: string; readonly kind: "inline"; } | { readonly key: string; readonly kind: "materialized"; readonly path: string; }; export interface SandboxProviderResources { readonly skills?: SandboxProviderResourceTree; readonly source: SandboxProviderResourceSource; readonly workspace?: SandboxProviderResourceTree; } export declare function sandboxProviderResourceIdentity(resources: SandboxProviderResources): object; export interface SandboxProviderTargetFile { readonly content: string | Uint8Array; readonly path: string; } export declare function providerResourceTargetFiles(resources: SandboxProviderResources): SandboxProviderTargetFile[]; export type SandboxPreparedArtifact = null | boolean | number | string | readonly SandboxPreparedArtifact[] | { readonly [key: string]: SandboxPreparedArtifact; }; export declare function isSandboxPreparedArtifact(value: unknown): value is SandboxPreparedArtifact; export declare function isSandboxPreparedArtifactRecord(artifact: unknown): artifact is { readonly [key: string]: SandboxPreparedArtifact; }; export interface SandboxProviderFiles { list(): Promise<readonly string[]>; read(path: string): Promise<Uint8Array>; readText(path: string): Promise<string>; } export interface SandboxProviderHost { loadOptionalPackage<T>(input: { readonly autoInstall: boolean; readonly importModule: () => Promise<T>; readonly installPackageName?: string; readonly ignoredOptionalDependencies?: readonly string[]; readonly missingMessage: string; readonly packageName: string; }): Promise<T>; resolveProjectPath(path: string): string; } export interface SandboxProviderPrepareContext { readonly files: SandboxProviderFiles; readonly host: SandboxProviderHost; readonly log?: (message: string) => void; readonly resources: SandboxProviderResources; readonly sourceRevision: string; readonly storagePath: string; } export interface SandboxProviderSessionContext { readonly host: SandboxProviderHost; readonly session: SandboxSelectorContext["session"]; readonly storagePath: string; } export interface SandboxProviderHandle<Session extends SandboxSession = SandboxSession> { readonly sandbox: Session; onRuntimeShutdown(): Promise<void>; onSessionDelete(options?: SandboxDeleteOptions): Promise<void>; onSessionStop(): Promise<void>; } export interface SandboxProviderImplementation<OpenOptions extends object | undefined, PreparedArtifact extends SandboxPreparedArtifact, SessionState, Session extends SandboxSession = SandboxSession> { prepare(context: SandboxProviderPrepareContext): Promise<PreparedArtifact>; resume(context: SandboxProviderSessionContext, artifact: Readonly<PreparedArtifact>, state: Readonly<SessionState>): Promise<SandboxProviderHandle<Session>>; start(context: SandboxProviderSessionContext, options: Readonly<OpenOptions> | undefined, artifact: Readonly<PreparedArtifact>): Promise<{ readonly handle: SandboxProviderHandle<Session>; readonly state: SessionState; }>; } type SandboxOptionArguments<Options extends object | undefined> = Options extends undefined ? [options?: undefined] : Record<never, never> extends Options ? [options?: Readonly<Options>] : [options: Readonly<Options>]; export type SandboxProviderDefinition<EnvironmentOptions extends object | undefined, OpenOptions extends object | undefined, PreparedArtifact extends SandboxPreparedArtifact, SessionState, Session extends SandboxSession> = { readonly name: string; readonly stateProtocolVersion?: number; environment(...args: SandboxOptionArguments<EnvironmentOptions>): SandboxProviderImplementation<OpenOptions, PreparedArtifact, SessionState, Session>; }; export interface SandboxProvider<EnvironmentOptions extends object | undefined, OpenOptions extends object | undefined, Session extends SandboxSession> { readonly name: string; environment(...args: SandboxOptionArguments<EnvironmentOptions>): SandboxEnvironment<OpenOptions, Session>; } type ErasedSandboxProviderImplementation = SandboxProviderImplementation<object | undefined, SandboxPreparedArtifact, SandboxPreparedArtifact, SandboxSession>; export interface SandboxProviderRuntime { readonly implementation: ErasedSandboxProviderImplementation; readonly providerName: string; readonly stateProtocolVersion: number; } export declare function defineSandboxProvider<EnvironmentOptions extends object | undefined = undefined, OpenOptions extends object | undefined = undefined, PreparedArtifact extends SandboxPreparedArtifact = SandboxPreparedArtifact, SessionState = SandboxPreparedArtifact, Session extends SandboxSession = SandboxSession>(definition: SandboxProviderDefinition<EnvironmentOptions, OpenOptions, PreparedArtifact, SessionState, Session>): SandboxProvider<EnvironmentOptions, OpenOptions, Session>; export declare function createSandboxProviderResources(input: { readonly resourcesKey?: string; readonly resourcesPath?: string; readonly seedFiles?: readonly { readonly content: string | Uint8Array; readonly path: string; }[]; }): SandboxProviderResources; export {};