Documentation
¶
Overview ¶
Package sandbox provides Docker sandbox lifecycle management including creation, detection, argument building, and environment forwarding.
Index ¶
- func AgentRefFromArgs(args []string) string
- func AppendFlagIfMissing(args []string, flag, value string) []string
- func BuildCagentArgs(argv []string) []string
- func BuildExecCmd(ctx context.Context, name string, cagentArgs, envFlags, envVars []string) *exec.Cmd
- func CheckAvailable(ctx context.Context) error
- func Ensure(ctx context.Context, wd, extra, template, configDir string) (string, error)
- func EnvForAgent(ctx context.Context, agentRef string, env environment.Provider) (flags, envVars []string)
- func ExtraWorkspace(wd, agentRef string) string
- func ResolveAlias(name string) string
- func StartTokenWriterIfNeeded(ctx context.Context, dir, modelsGateway string) func()
- type Existing
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AgentRefFromArgs ¶
AgentRefFromArgs returns the first positional (non-flag) argument from the docker-agent arg list, which is the agent file reference. Returns "" if there are no positional arguments.
func AppendFlagIfMissing ¶
AppendFlagIfMissing appends "--flag value" to args unless args already contain the flag (in either "--flag value" or "--flag=value" form).
func BuildCagentArgs ¶
BuildCagentArgs takes os.Args and returns the arguments to pass after "--" to the sandbox. It strips the binary name, "--sandbox", and the first occurrence of the "run" subcommand. If the agent reference is a user-defined alias, it is resolved to its path so the sandbox (which lacks the host's user config) receives a concrete reference. It also injects --yolo since the sandbox provides isolation. Host-only flags --debug/-d, --log-file, --template, and --models-gateway are stripped because they reference host paths/logging, sandbox creation options, or settings forwarded via env var that don't apply inside the sandbox.
["cagent", "run", "./agent.yaml", "--sandbox", "--debug"] → ["./agent.yaml", "--yolo"] ["cagent", "--debug", "run", "--sandbox", "myalias"] → ["/path/to/agent.yaml", "--yolo"]
func BuildExecCmd ¶
func BuildExecCmd(ctx context.Context, name string, cagentArgs, envFlags, envVars []string) *exec.Cmd
BuildExecCmd assembles the `docker sandbox exec` command.
func CheckAvailable ¶
CheckAvailable returns a user-friendly error when Docker is not installed or the sandbox feature is not supported.
func Ensure ¶
Ensure makes sure a sandbox exists for the given workspace, creating or recreating it as needed. When template is non-empty it is passed to `docker sandbox create -t`. Returns the sandbox name.
func EnvForAgent ¶
func EnvForAgent(ctx context.Context, agentRef string, env environment.Provider) (flags, envVars []string)
EnvForAgent loads the agent config and gathers the environment variables it requires. It returns:
- flags: `-e KEY` args for docker sandbox exec (name only, no value)
- envVars: `KEY=VALUE` entries to set on the exec process environment
Variables that Docker Desktop already proxies are skipped.
func ExtraWorkspace ¶
ExtraWorkspace returns the directory to mount as a read-only extra workspace when the agent file lives outside the main workspace. Returns "" if no extra mount is needed (file is under wd, is not a local path, etc.).
func ResolveAlias ¶
ResolveAlias returns the alias path if name is a user-defined alias, or an empty string otherwise.
func StartTokenWriterIfNeeded ¶
StartTokenWriterIfNeeded starts a background goroutine that refreshes DOCKER_TOKEN into a shared file when a models gateway is configured. Returns a stop function that is safe to call multiple times (and is a no-op when no writer was started).
Types ¶
type Existing ¶
Existing holds the name and workspaces of an existing Docker sandbox.
func ForWorkspace ¶
ForWorkspace returns the existing sandbox whose primary workspace matches wd, or nil if none exists.
func (*Existing) HasWorkspace ¶
HasWorkspace reports whether the sandbox has dir mounted as a workspace.