Versions in this module Expand all Collapse all v0 v0.1.1 Jul 26, 2026 Changes in this version + const DefaultHeartbeatExtendSeconds + const DefaultHeartbeatInterval + const DefaultSessionTTL + var ErrClosed = errors.New("sandbox: client object is closed") + var ErrNotModified = errors.New("not modified") + var ErrNotOpened = errors.New("sandbox: session not opened; call Open() first") + func IsEndOfStream(err error) bool + func MetadataDelete() *string + func MetadataValue(value string) *string + type APIError struct + Details map[string]any + ErrorCode string + Message string + RequestID string + RetryAfter time.Duration + StatusCode int + func (e *APIError) Error() string + func (e *APIError) Retryable() bool + type Artifact struct + ArtifactID string + CreatedAt time.Time + JobID string + MIME string + Name string + Path string + SHA256 string + Size int64 + TenantID string + WorkspaceID string + type AuditEvent struct + Action string + CreatedAt time.Time + EventID string + KeyID string + Message string + PrincipalID string + ResourceID string + ResourceType string + Status string + TenantID string + TraceID string + UserID string + type AuditEventList struct + Items []AuditEvent + NextOffset int + Total int + type AuditQuery struct + Action string + KeyID string + Limit int + Offset int + PrincipalID string + ResourceID string + ResourceType string + type BatchJob struct + CmdOrCode string + Opts []ExecOption + type BatchResult struct + Err error + Index int + Result *ExecResult + func RunBatch(ctx context.Context, client *Client, jobs []BatchJob, baseOpts ...Option) ([]BatchResult, error) + func RunBatchThrottled(ctx context.Context, client *Client, jobs []BatchJob, maxConcurrent int, ...) ([]BatchResult, error) + func RunSequential(ctx context.Context, sb *Sandbox, jobs []BatchJob) ([]BatchResult, error) + func (r *BatchResult) OK() bool + type BuildDependencyRequest struct + Environment *EnvironmentSelector + Language string + Lockfile string + Manifest string + Packages []string + ResolutionID string + type CatalogCard struct + AvoidWhen []string + Capabilities []string + Description string + DisplayName string + Features *ProfileFeatures + Limits *ProfileLimits + ProfileName string + ProfileRevision string + Tags []string + UseWhen []string + type CatalogQuery struct + Capability string + IfNoneMatch string + Limit int + Offset int + Tag string + type CatalogResponse struct + CapabilityVocabulary []string + DefaultProfile string + Items []CatalogCard + NextOffset int + Revision string + Total int + type Client struct + func NewClient(cfg Config) (*Client, error) + func (c *Client) BuildDependencies(ctx context.Context, req BuildDependencyRequest) (*DependencyBuild, error) + func (c *Client) CancelExec(ctx context.Context, sessionID, execID string) error + func (c *Client) CancelJob(ctx context.Context, jobID string) error + func (c *Client) CreateSession(ctx context.Context, req CreateSessionRequest) (*Session, error) + func (c *Client) CreateWorkspace(ctx context.Context, req CreateWorkspaceRequest) (*Workspace, error) + func (c *Client) DeleteSession(ctx context.Context, sessionID string) error + func (c *Client) DeleteWorkspace(ctx context.Context, workspaceID string) error + func (c *Client) Destroy(ctx context.Context, sandboxID string) error + func (c *Client) DownloadArtifact(ctx context.Context, artifactID string) (io.ReadCloser, error) + func (c *Client) DownloadSessionFile(ctx context.Context, sessionID, workspacePath string) (io.ReadCloser, *WorkspaceFileInfo, error) + func (c *Client) ExecLogEvents(ctx context.Context, sessionID, execID string, cursor int) (*SSEStream, error) + func (c *Client) ExecNamedSession(ctx context.Context, sessionID string, req ExecSessionRequest) (*ExecSessionResult, error) + func (c *Client) ExecSession(ctx context.Context, sandboxID string, req ExecSessionRequest) (*ExecSessionResult, error) + func (c *Client) ExecSessionAsync(ctx context.Context, sessionID string, req ExecSessionRequest) (*ExecRecord, error) + func (c *Client) GetCatalog(ctx context.Context, query CatalogQuery) (*CatalogResponse, error) + func (c *Client) GetDependencyBuild(ctx context.Context, fingerprint string) (*DependencyBuild, error) + func (c *Client) GetExec(ctx context.Context, sessionID, execID string) (*ExecRecord, error) + func (c *Client) GetJob(ctx context.Context, jobID string) (*JobResult, error) + func (c *Client) GetSandbox(ctx context.Context, sandboxID string) (*SandboxLease, error) + func (c *Client) GetSession(ctx context.Context, sessionID string) (*Session, error) + func (c *Client) GetSessionContext(ctx context.Context, sessionID string) (*SessionContext, error) + func (c *Client) GetViewer(ctx context.Context, sandboxID string) (*ViewerDescriptor, error) + func (c *Client) GetWorkspace(ctx context.Context, workspaceID string) (*Workspace, error) + func (c *Client) JobLogEvents(ctx context.Context, jobID string, cursor int) (*SSEStream, error) + func (c *Client) JobLogs(ctx context.Context, jobID string, cursor int) (io.ReadCloser, error) + func (c *Client) Lease(ctx context.Context, req LeaseRequest) (*SandboxLease, error) + func (c *Client) ListAuditEvents(ctx context.Context, query AuditQuery) (*AuditEventList, error) + func (c *Client) ListJobArtifacts(ctx context.Context, jobID string, offset, limit int) ([]Artifact, error) + func (c *Client) ListJobs(ctx context.Context, status string, limit, offset int) (*JobList, error) + func (c *Client) ListSandboxes(ctx context.Context) ([]SandboxLease, error) + func (c *Client) ListSessionExecs(ctx context.Context, sessionID string, query ExecListQuery) (*ExecRecordList, error) + func (c *Client) ListSessionFiles(ctx context.Context, sessionID, workspacePath string, recursive bool, ...) (*WorkspaceListResult, error) + func (c *Client) MkdirSessionDir(ctx context.Context, sessionID, workspacePath string) (*WorkspaceFileInfo, error) + func (c *Client) PatchSandbox(ctx context.Context, sandboxID string, metadata map[string]string, ...) (*SandboxLease, error) + func (c *Client) PatchSandboxMetadata(ctx context.Context, sandboxID string, metadata SandboxMetadataPatch, ...) (*SandboxLease, error) + func (c *Client) PatchSessionContext(ctx context.Context, sessionID string, patch SessionContext) (*SessionContext, error) + func (c *Client) Release(ctx context.Context, sandboxID string) error + func (c *Client) RemoveSessionFile(ctx context.Context, sessionID, workspacePath string, recursive bool) error + func (c *Client) Renew(ctx context.Context, sandboxID string, extendSeconds int) (*SandboxLease, error) + func (c *Client) RenewSession(ctx context.Context, sessionID string, extendSeconds int) (*Session, error) + func (c *Client) ResolveEnvironment(ctx context.Context, req ResolveEnvironmentRequest) (*EnvironmentResolution, error) + func (c *Client) StartGUI(ctx context.Context, sandboxID string, req StartGUIRequest) (*ViewerDescriptor, error) + func (c *Client) StatSessionFile(ctx context.Context, sessionID, workspacePath string) (*WorkspaceFileInfo, error) + func (c *Client) StopGUI(ctx context.Context, sandboxID string) error + func (c *Client) StreamExecLogs(ctx context.Context, sessionID, execID string, cursor int) (io.ReadCloser, error) + func (c *Client) SubmitJob(ctx context.Context, req SubmitJobRequest) (*JobResult, error) + func (c *Client) SubmitJobAndWait(ctx context.Context, req SubmitJobRequest, wait time.Duration) (*JobResult, error) + func (c *Client) SuspendSession(ctx context.Context, sessionID string, opts ...SuspendOption) (*Session, error) + func (c *Client) UploadJobFile(ctx context.Context, jobID string, name string, r io.Reader) (*Artifact, error) + func (c *Client) UploadSessionFile(ctx context.Context, sessionID, workspacePath string, content io.Reader) (*WorkspaceFileInfo, error) + func (c *Client) UploadSessionFileConditional(ctx context.Context, sessionID, workspacePath string, content io.Reader, ...) (*WorkspaceFileInfo, error) + func (c *Client) WaitJob(ctx context.Context, jobID string) (*JobResult, error) + func (c *Client) WaitJobWithOptions(ctx context.Context, jobID string, opts WaitJobOptions) (*JobResult, error) + func (c *Client) WaitViewer(ctx context.Context, sandboxID string, opts WaitViewerOptions) (*ViewerDescriptor, error) + type Config struct + BaseURL string + HTTPClient *http.Client + MaxAttempts int + RetryBaseDelay time.Duration + Timeout time.Duration + Token string + UserAgent string + type CreateSessionRequest struct + Env map[string]string + Environment *EnvironmentSelector + IdempotencyKey string + Metadata map[string]string + ResolutionID string + StatePolicy string + TTLSeconds int + WorkspaceID string + WorkspaceRetention string + WorkspaceTTLSeconds int + type CreateWorkspaceRequest struct + Metadata map[string]string + QuotaMB int + RetentionMode string + TTLSeconds int + WorkspaceID string + type DependencyBuild struct + CachePath string + CreatedAt time.Time + Error string + Fingerprint string + Language string + ProfileName string + ProfileRevision string + ReadOnly bool + Status string + TenantID string + UpdatedAt time.Time + WorkspaceID string + type EffectiveEnvironment struct + Capabilities []string + Degraded bool + ProfileName string + ProfileRevision string + SelectionMode string + SelectionReason []string + type EnvHints struct + Capabilities []string + Description string + Strict bool + type EnvironmentResolution struct + Capabilities []string + ExpiresAt string + ProfileName string + ProfileRevision string + ResolutionID string + SelectionMode string + SelectionReason []string + type EnvironmentSelector struct + Hints *EnvHints + Profile *ProfileRef + type ExecHandle struct + func (h *ExecHandle) Cancel(ctx context.Context) error + func (h *ExecHandle) Events(ctx context.Context, cursor int) (*SSEStream, error) + func (h *ExecHandle) ID() string + func (h *ExecHandle) Logs(ctx context.Context, cursor int) (io.ReadCloser, error) + func (h *ExecHandle) Status(ctx context.Context) (*ExecRecord, error) + func (h *ExecHandle) Wait(ctx context.Context) (*ExecResult, error) + func (h *ExecHandle) WaitWithOptions(ctx context.Context, opts WaitExecOptions) (*ExecResult, error) + type ExecListQuery struct + Cursor string + Limit int + type ExecOption func(*execOptions) + func WithCallback(url string) ExecOption + func WithExecEnv(env map[string]string) ExecOption + func WithLang(lang string) ExecOption + func WithTimeout(d time.Duration) ExecOption + func WithWorkingDir(dir string) ExecOption + type ExecRecord struct + CreatedAt time.Time + DurationMS int64 + EffectiveEnvironment *EffectiveEnvironment + ErrorCode string + ExecID string + ExitCode int + FinishedAt *time.Time + LogsURL string + SessionID string + StartedAt *time.Time + Status string + Stderr string + StderrTruncated bool + Stdout string + StdoutTruncated bool + WorkingDir string + type ExecRecordList struct + Items []ExecRecord + NextCursor string + Total int + type ExecResult struct + EffectiveEnvironment *EffectiveEnvironment + ErrorCode string + ExitCode int + Stderr string + StderrTruncated bool + Stdout string + StdoutTruncated bool + func QuickPython(ctx context.Context, client *Client, code string, opts ...Option) (*ExecResult, error) + func QuickRun(ctx context.Context, client *Client, command string, opts ...Option) (*ExecResult, error) + func (r *ExecResult) OK() bool + type ExecSessionRequest struct + CallbackURL string + Code string + Command []string + Env map[string]string + Language string + TimeoutSeconds int + WorkingDir string + type ExecSessionResult struct + Cwd string + Environment string + ExitCode int + SandboxID string + SessionID string + Stderr string + StderrTruncated bool + Stdout string + StdoutTruncated bool + WorkspaceID string + type FileEntry = WorkspaceFileInfo + type FileOption func(*fileOptions) + func WithFileLimit(n int) FileOption + func WithRecursive() FileOption + type JobList struct + Items []JobResult + NextOffset int + Total int + type JobResult struct + DurationMS int64 + EffectiveEnvironment *EffectiveEnvironment + Error string + ErrorCode string + ErrorMessage string + ExitCode int + FinishedAt *time.Time + JobID string + LogsURL string + Operation string + OutputArtifacts []Artifact + SandboxID string + StartedAt *time.Time + Status string + Stderr string + StderrTruncated bool + Stdout string + StdoutTruncated bool + TaskType string + TenantID string + WorkspaceID string + type LeaseRequest struct + Environment *EnvironmentSelector + Metadata map[string]string + ResolutionID string + WorkspaceID string + type Logger interface + Printf func(format string, v ...any) + type Option func(*sandboxOptions) + func WithEnv(env map[string]string) Option + func WithHeartbeatDisabled() Option + func WithHeartbeatInterval(d time.Duration) Option + func WithHints(capabilities ...string) Option + func WithIdempotencyKey(key string) Option + func WithLogger(logger Logger) Option + func WithMetadata(kv map[string]string) Option + func WithProfile(name string) Option + func WithProfileRevision(name, revision string) Option + func WithResolutionID(id string) Option + func WithSessionTTL(seconds int) Option + func WithStrictHints(capabilities ...string) Option + func WithWorkspaceID(workspaceID string) Option + func WithWorkspaceRetention(mode string, ttlSeconds int) Option + type ProfileFeatures struct + SuspendResume bool + Viewer bool + type ProfileLimits struct + MaxConcurrentExecs int + MaxExecTimeoutSeconds int + MaxLogBytes int64 + MaxSessionTTLSeconds int + WorkspaceQuotaMB int + type ProfileRef struct + Name string + Revision string + type ResolveEnvironmentRequest struct + Environment EnvironmentSelector + TTLSeconds int + type SSEEvent struct + Data []byte + Event string + ID string + func (e SSEEvent) DecodeJSON(target any) error + type SSEStream struct + func (s *SSEStream) Close() error + func (s *SSEStream) Next() (*SSEEvent, error) + type Sandbox struct + func New(client *Client, opts ...Option) (*Sandbox, error) + func (sb *Sandbox) Close() error + func (sb *Sandbox) CloseContext(ctx context.Context) error + func (sb *Sandbox) Download(ctx context.Context, path string) (io.ReadCloser, error) + func (sb *Sandbox) Files(ctx context.Context, path string, opts ...FileOption) ([]FileEntry, error) + func (sb *Sandbox) IsClosed() bool + func (sb *Sandbox) IsOpen() bool + func (sb *Sandbox) Mkdir(ctx context.Context, path string) error + func (sb *Sandbox) Open(ctx context.Context) error + func (sb *Sandbox) Remove(ctx context.Context, path string, recursive bool) error + func (sb *Sandbox) Run(ctx context.Context, cmdOrCode string, opts ...ExecOption) (*ExecResult, error) + func (sb *Sandbox) RunAsync(ctx context.Context, cmdOrCode string, opts ...ExecOption) (*ExecHandle, error) + func (sb *Sandbox) RunNode(ctx context.Context, code string) (*ExecResult, error) + func (sb *Sandbox) RunPython(ctx context.Context, code string) (*ExecResult, error) + func (sb *Sandbox) RunShell(ctx context.Context, script string) (*ExecResult, error) + func (sb *Sandbox) SessionID() string + func (sb *Sandbox) SetCwd(ctx context.Context, cwd string) error + func (sb *Sandbox) SetEnv(ctx context.Context, env map[string]string) error + func (sb *Sandbox) StatFile(ctx context.Context, path string) (*FileEntry, error) + func (sb *Sandbox) Suspend(ctx context.Context) error + func (sb *Sandbox) Upload(ctx context.Context, path string, content io.Reader) error + func (sb *Sandbox) WorkspaceID() string + type SandboxLease struct + CreatedAt time.Time + EffectiveEnvironment *EffectiveEnvironment + EffectivePolicy interface{} + ExpiresAt time.Time + LeaseID string + Metadata map[string]string + ProfileRevision string + ResourceVersion int64 + RuntimeProfile string + SandboxID string + Status string + TenantID string + WorkspaceID string + type SandboxMetadataPatch map[string]*string + type Session struct + ActiveSandboxID string + CreatedAt time.Time + EffectiveEnvironment *EffectiveEnvironment + ExpiresAt time.Time + Metadata map[string]string + ProfileRevision string + ResourceVersion int64 + RuntimeProfile string + SessionID string + StatePolicy string + Status string + TenantID string + UserID string + WorkspaceID string + type SessionContext struct + Cwd string + Env map[string]string + type StartGUIRequest struct + Kind string + Metadata map[string]string + Resolution string + TTLSeconds int + type SubmitJobRequest struct + CallbackURL string + Code string + Command []string + Env map[string]string + Environment *EnvironmentSelector + IdempotencyKey string + InputArtifactIDs []string + Language string + Metadata map[string]string + QueueWaitTimeoutSeconds int + ResolutionID string + SessionID string + TimeoutSeconds int + WorkspaceID string + type SuspendOption func(*suspendConfig) + func WithForce() SuspendOption + type ViewerDescriptor struct + AccessToken string + ExpiresAt time.Time + Kind string + PageURL string + ProxyURL string + Ready bool + RenewOnAccess bool + RuntimeProfile string + SandboxID string + Status string + TokenHeader string + WebSocketURL string + type WaitExecOptions struct + PollInterval time.Duration + type WaitJobOptions struct + PollInterval time.Duration + type WaitViewerOptions struct + Kind string + PollInterval time.Duration + Timeout time.Duration + type Workspace struct + CreatedAt time.Time + ExpiresAt *time.Time + Metadata map[string]string + QuotaMB int + RetentionMode string + TenantID string + UserID string + WorkspaceID string + type WorkspaceFileInfo struct + Environment string + Kind string + MIME string + ModTime time.Time + Name string + Path string + SHA256 string + SandboxPath string + Size int64 + type WorkspaceListResult struct + Entries []WorkspaceFileInfo + Limit int + Path string + Truncated bool