Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Version = "dev"
Version is set at build time via -ldflags.
Functions ¶
func DefaultRegistryDir ¶ added in v0.20.0
func DefaultRegistryDir() string
DefaultRegistryDir returns the default directory for agentserver config.
func DefaultRegistryPath ¶ added in v0.20.0
func DefaultRegistryPath() string
DefaultRegistryPath returns the default path for the registry file.
func RunConnect ¶ added in v0.6.1
func RunConnect(opts ConnectOptions)
RunConnect executes the agent connect workflow.
func SaveRegistry ¶ added in v0.20.0
SaveRegistry writes the registry to disk.
Types ¶
type AgentInfoData ¶ added in v0.16.0
type AgentInfoData struct {
Hostname string `json:"hostname"`
OS string `json:"os"`
Platform string `json:"platform"`
PlatformVersion string `json:"platform_version"`
KernelArch string `json:"kernel_arch"`
CPUModelName string `json:"cpu_model_name"`
CPUCountLogical int `json:"cpu_count_logical"`
MemoryTotal uint64 `json:"memory_total"`
DiskTotal uint64 `json:"disk_total"`
DiskFree uint64 `json:"disk_free"`
AgentVersion string `json:"agent_version"`
OpencodeVersion string `json:"opencode_version"`
Workdir string `json:"workdir"`
HostInfo *host.InfoStat `json:"host_info,omitempty"`
CPUInfo *cpuInfoDetail `json:"cpu_info,omitempty"`
MemoryInfo *mem.VirtualMemoryStat `json:"memory_info,omitempty"`
DiskInfo *disk.UsageStat `json:"disk_info,omitempty"`
}
AgentInfoData is the system info payload sent from agent to server.
type Client ¶
type Client struct {
ServerURL string
SandboxID string
TunnelToken string
OpencodeURL string
OpencodeToken string
Workdir string
// contains filtered or unexported fields
}
Client is the cli-agent tunnel client that connects to the server and forwards HTTP requests to a local opencode instance.
type ConnectOptions ¶ added in v0.6.1
type ConnectOptions struct {
Server string
Code string
Name string
WorkspaceID string // optional: disambiguate when dir has multiple workspaces
OpencodeURL string
OpencodeURLSet bool // true if --opencode-url was explicitly provided
OpencodeToken string
AutoStart bool
OpencodeBin string
OpencodePort int // 0 = auto-assign from registry
OpencodePortSet bool // true if --opencode-port was explicitly provided
}
ConnectOptions holds all flags for the connect command.
type LockedRegistryFile ¶ added in v0.20.0
type LockedRegistryFile struct {
Path string
Reg *Registry
// contains filtered or unexported fields
}
LockedRegistryFile holds an exclusive lock on the registry for safe read-modify-write operations. Call Close() when done.
func LockRegistry ¶ added in v0.20.0
func LockRegistry(path string) (*LockedRegistryFile, error)
LockRegistry acquires an exclusive file lock and loads the registry. The caller must call Close() when done to release the lock and optionally save changes via Save() before Close().
func (*LockedRegistryFile) Close ¶ added in v0.20.0
func (l *LockedRegistryFile) Close()
Close releases the file lock.
func (*LockedRegistryFile) Save ¶ added in v0.20.0
func (l *LockedRegistryFile) Save() error
Save writes the registry to disk while the lock is held.
type OpencodeProcess ¶
type OpencodeProcess struct {
Port int
// contains filtered or unexported fields
}
OpencodeProcess manages a local opencode serve subprocess.
func StartOpencode ¶
func StartOpencode(bin string, port int, password string) (*OpencodeProcess, error)
StartOpencode starts "opencode serve --hostname 127.0.0.1 --port {port}" as a child process. It returns immediately after starting the process.
func (*OpencodeProcess) Stop ¶
func (p *OpencodeProcess) Stop()
Stop sends SIGTERM to the child process, waits briefly, then sends SIGKILL if needed.
func (*OpencodeProcess) WaitReady ¶
WaitReady polls http://localhost:{port}/ every 500ms until a response is received or the timeout expires.
type Registry ¶ added in v0.20.0
type Registry struct {
Entries []*RegistryEntry `json:"entries"`
}
Registry holds all agent registrations on this machine.
func LoadRegistry ¶ added in v0.20.0
LoadRegistry reads the registry from disk. Returns an empty registry if the file does not exist.
func (*Registry) Find ¶ added in v0.20.0
func (r *Registry) Find(dir, workspaceID string) *RegistryEntry
Find returns the entry matching (dir, workspaceID), or nil if not found.
func (*Registry) FindByDir ¶ added in v0.20.0
func (r *Registry) FindByDir(dir string) []*RegistryEntry
FindByDir returns all entries for the given directory.
func (*Registry) NextPort ¶ added in v0.20.0
NextPort returns the lowest available port starting from basePort. It finds the first gap in the used port range to reuse freed ports.
func (*Registry) Put ¶ added in v0.20.0
func (r *Registry) Put(entry *RegistryEntry)
Put adds or replaces an entry keyed by (Dir, WorkspaceID).
type RegistryEntry ¶ added in v0.20.0
type RegistryEntry struct {
Dir string `json:"dir"`
Server string `json:"server"`
SandboxID string `json:"sandbox_id"`
TunnelToken string `json:"tunnel_token"`
WorkspaceID string `json:"workspace_id"`
Name string `json:"name"`
OpencodePort int `json:"opencode_port"`
}
RegistryEntry represents a single agent registration keyed by (Dir, WorkspaceID).
func Register ¶
func Register(serverURL, code, name string) (*RegistryEntry, error)
Register registers a new local agent with the server using a one-time code.