yao/sandbox/types.go
Max 0a965c383d Add sandbox ID and VNC URL methods to sandbox executor
- Implement GetSandboxID method to return a mock sandbox ID for testing.
- Add GetVNCUrl method to return an empty string for VNC access in tests.
- Update SandboxExecutor interface to include new methods for sandbox identification and VNC URL retrieval.
- Enhance context creation to set sandbox ID and VNC URL properties in the sandbox instance.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-05 21:46:07 +08:00

75 lines
2.1 KiB
Go

package sandbox
import (
"io"
"os"
"time"
"github.com/yaoapp/yao/sandbox/ipc"
)
// Container represents a sandbox container
type Container struct {
ID string // Docker container ID
Name string // Container name: yao-sandbox-{userID}-{chatID}
UserID string // User identifier
ChatID string // Chat/session identifier
Status string // created, running, stopped
CreatedAt time.Time // Container creation time
LastUsedAt time.Time // Last activity time
IPCSession *ipc.Session // Associated IPC session
}
// ExecOptions configures command execution
type ExecOptions struct {
WorkDir string // Working directory inside container
Env map[string]string // Environment variables
Stdin io.Reader // Standard input
Timeout time.Duration // Execution timeout (0 = no timeout)
}
// ExecResult contains the result of command execution
type ExecResult struct {
ExitCode int // Exit code
Stdout string // Standard output
Stderr string // Standard error
}
// FileInfo represents file metadata
type FileInfo struct {
Name string // File name
Path string // Full path
Size int64 // Size in bytes
Mode os.FileMode // File mode
ModTime time.Time // Modification time
IsDir bool // Is directory
}
// GetName returns the file name (implements context.SandboxFileInfo)
func (f FileInfo) GetName() string {
return f.Name
}
// GetSize returns the file size (implements context.SandboxFileInfo)
func (f FileInfo) GetSize() int64 {
return f.Size
}
// GetIsDir returns whether this is a directory (implements context.SandboxFileInfo)
func (f FileInfo) GetIsDir() bool {
return f.IsDir
}
// ContainerStatus constants
const (
StatusCreated = "created"
StatusRunning = "running"
StatusStopped = "stopped"
)
// CreateOptions contains options for creating a container
type CreateOptions struct {
UserID string // User identifier (required)
ChatID string // Chat/session identifier (required)
Image string // Docker image to use (optional, falls back to config default)
}