agentsocket

package
v2.35.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2026 License: AGPL-3.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnitManagerNotAvailable    = xerrors.New("unit manager not available")
	ErrAgentAPINotConnected       = xerrors.New("agent not connected to coderd")
	ErrContextManagerNotAvailable = xerrors.New("context manager not available")
	ErrContextSourceNotFound      = xerrors.New("context source not found")
)

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client provides a client for communicating with the workspace agentsocket API.

func NewClient

func NewClient(ctx context.Context, opts ...Option) (*Client, error)

NewClient creates a new socket client and opens a connection to the socket. If path is not provided via WithPath or is empty, it will auto-discover the default socket path.

func (*Client) AddContextSource added in v2.35.0

func (c *Client) AddContextSource(ctx context.Context, path string) (ContextSource, error)

AddContextSource registers a new scan root on the agent.

func (*Client) Close

func (c *Client) Close() error

Close closes the socket connection.

func (*Client) ContextSources added in v2.35.0

func (c *Client) ContextSources(ctx context.Context) ([]ContextSource, error)

ContextSources lists the workspace-context sources registered on the agent.

func (*Client) GetContextSnapshot added in v2.35.0

func (c *Client) GetContextSnapshot(ctx context.Context) (ContextSnapshot, error)

GetContextSnapshot returns the agent's current resolved snapshot without forcing a re-walk.

func (*Client) GetContextSource added in v2.35.0

func (c *Client) GetContextSource(ctx context.Context, path string) (ContextSource, error)

GetContextSource returns a single registered source. The path is canonicalized by the agent before matching.

func (*Client) Ping

func (c *Client) Ping(ctx context.Context) error

Ping sends a ping request to the agent.

func (*Client) RemoveContextSource added in v2.35.0

func (c *Client) RemoveContextSource(ctx context.Context, path string) error

RemoveContextSource removes a previously-registered scan root.

func (*Client) ResyncContext added in v2.35.0

func (c *Client) ResyncContext(ctx context.Context) (ContextSnapshot, error)

ResyncContext forces a re-walk and synchronous push, returning the resulting snapshot. Use it as a barrier before fanning out a refresh.

func (*Client) SyncComplete

func (c *Client) SyncComplete(ctx context.Context, unitName unit.ID) error

SyncComplete marks a unit as complete in the dependency graph.

func (*Client) SyncList added in v2.35.0

func (c *Client) SyncList(ctx context.Context) ([]SyncListItem, error)

SyncList returns all registered units and their current statuses.

func (*Client) SyncReady

func (c *Client) SyncReady(ctx context.Context, unitName unit.ID) (bool, error)

SyncReady requests whether a unit is ready to be started. That is, all dependencies are satisfied.

func (*Client) SyncStart

func (c *Client) SyncStart(ctx context.Context, unitName unit.ID) error

SyncStart starts a unit in the dependency graph.

func (*Client) SyncStatus

func (c *Client) SyncStatus(ctx context.Context, unitName unit.ID) (SyncStatusResponse, error)

SyncStatus gets the status of a unit and its dependencies.

func (*Client) SyncWant

func (c *Client) SyncWant(ctx context.Context, unitName, dependsOn unit.ID) error

SyncWant declares a dependency between units.

func (*Client) UpdateAppStatus added in v2.32.0

UpdateAppStatus forwards an app status update to coderd via the agent.

type ContextManager added in v2.35.0

type ContextManager interface {
	Sources() []agentcontext.Source
	HasSource(path string) (canonical string, ok bool)
	AddSource(s agentcontext.Source) (agentcontext.Source, error)
	RemoveSource(path string) error
	Snapshot() agentcontext.Snapshot
	Resync(ctx context.Context) (agentcontext.Snapshot, error)
}

ContextManager is the subset of *agentcontext.Manager the socket service needs to serve workspace-context source CRUD. It is an interface so tests can supply a fake.

type ContextResource added in v2.35.0

type ContextResource struct {
	Kind        string `table:"kind,default_sort" json:"kind"`
	Name        string `table:"name" json:"name"`
	Source      string `table:"source" json:"source"`
	SourcePath  string `table:"source path" json:"source_path"`
	Status      string `table:"status" json:"status"`
	SizeBytes   uint64 `table:"size bytes" json:"size_bytes"`
	Error       string `table:"error" json:"error"`
	Description string `table:"-" json:"description"`
	ID          string `table:"-" json:"id"`
	ContentHash string `table:"-" json:"content_hash"`
}

ContextResource is a resolved workspace-context resource. Payload bytes are never carried over the socket.

type ContextSnapshot added in v2.35.0

type ContextSnapshot struct {
	Version       uint64            `json:"version"`
	AggregateHash string            `json:"aggregate_hash"`
	Resources     []ContextResource `json:"resources"`
	PayloadBytes  uint64            `json:"payload_bytes"`
	SnapshotError string            `json:"snapshot_error"`
}

ContextSnapshot is the agent's resolved workspace-context state.

type ContextSource added in v2.35.0

type ContextSource struct {
	Path string `table:"path,default_sort" json:"path"`
}

ContextSource is a registered workspace-context scan root.

type DRPCAgentSocketService

type DRPCAgentSocketService struct {
	// contains filtered or unexported fields
}

DRPCAgentSocketService implements the DRPC agent socket service.

func (*DRPCAgentSocketService) AddContextSource added in v2.35.0

AddContextSource registers a new scan root and triggers a re-resolve.

func (*DRPCAgentSocketService) ClearAgentAPI added in v2.32.0

func (s *DRPCAgentSocketService) ClearAgentAPI()

ClearAgentAPI clears the agent API client. This is called when the agent disconnects from coderd.

func (*DRPCAgentSocketService) ContextSources added in v2.35.0

ContextSources lists the workspace-context sources registered on the agent.

func (*DRPCAgentSocketService) GetContextSnapshot added in v2.35.0

GetContextSnapshot returns the agent's current resolved snapshot without forcing a re-walk.

func (*DRPCAgentSocketService) GetContextSource added in v2.35.0

GetContextSource returns a single registered source, canonicalizing the requested path before matching.

func (*DRPCAgentSocketService) Ping

Ping responds to a ping request to check if the service is alive.

func (*DRPCAgentSocketService) RemoveContextSource added in v2.35.0

RemoveContextSource removes a previously-registered scan root.

func (*DRPCAgentSocketService) ResyncContext added in v2.35.0

ResyncContext forces a re-walk and synchronous push, returning the resulting snapshot. Callers use it as a barrier before fanning out a refresh.

func (*DRPCAgentSocketService) SetAgentAPI added in v2.32.0

SetAgentAPI sets the agent API client used to forward requests to coderd. This is called when the agent connects to coderd.

func (*DRPCAgentSocketService) SyncComplete

SyncComplete marks a unit as complete in the dependency graph.

func (*DRPCAgentSocketService) SyncList added in v2.35.0

SyncList returns all registered units and their current statuses.

func (*DRPCAgentSocketService) SyncReady

SyncReady checks whether a unit is ready to be started. That is, all dependencies are satisfied.

func (*DRPCAgentSocketService) SyncStart

SyncStart starts a unit in the dependency graph.

func (*DRPCAgentSocketService) SyncStatus

SyncStatus gets the status of a unit and lists its dependencies.

func (*DRPCAgentSocketService) SyncWant

SyncWant declares a dependency between units.

func (*DRPCAgentSocketService) UpdateAppStatus added in v2.32.0

UpdateAppStatus forwards an app status update to coderd via the agent API. Returns an error if the agent is not connected.

type DependencyInfo

type DependencyInfo struct {
	DependsOn      unit.ID     `table:"depends on,default_sort" json:"depends_on"`
	RequiredStatus unit.Status `table:"required status" json:"required_status"`
	CurrentStatus  unit.Status `table:"current status" json:"current_status"`
	IsSatisfied    bool        `table:"satisfied" json:"is_satisfied"`
}

DependencyInfo contains information about a unit dependency.

type Option

type Option func(*options)

Option represents a configuration option for NewClient.

func WithContextManager added in v2.35.0

func WithContextManager(cm ContextManager) Option

WithContextManager supplies the workspace-context Manager the server uses to serve context source CRUD. Server-only; ignored by the client.

func WithPath

func WithPath(path string) Option

WithPath sets the socket path. If not provided or empty, the client will auto-discover the default socket path.

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server provides access to the DRPCAgentSocketService via a Unix domain socket. Do not invoke Server{} directly. Use NewServer() instead.

func NewServer

func NewServer(logger slog.Logger, opts ...Option) (*Server, error)

NewServer creates a new agent socket server.

func (*Server) ClearAgentAPI added in v2.32.0

func (s *Server) ClearAgentAPI()

ClearAgentAPI clears the agent API client.

func (*Server) Close

func (s *Server) Close() error

Close stops the server and cleans up resources.

func (*Server) SetAgentAPI added in v2.32.0

func (s *Server) SetAgentAPI(api agentproto.DRPCAgentClient28)

SetAgentAPI sets the agent API client used to forward requests to coderd.

type SyncListItem added in v2.35.0

type SyncListItem struct {
	UnitName unit.ID     `table:"unit,default_sort" json:"unit_name"`
	Status   unit.Status `table:"status" json:"status"`
	IsReady  bool        `table:"ready" json:"is_ready"`
}

SyncListItem contains summary information for a single unit.

type SyncStatusResponse

type SyncStatusResponse struct {
	UnitName     unit.ID          `table:"unit,default_sort" json:"unit_name"`
	Status       unit.Status      `table:"status" json:"status"`
	IsReady      bool             `table:"ready" json:"is_ready"`
	Dependencies []DependencyInfo `table:"dependencies" json:"dependencies"`
}

SyncStatusResponse contains the status information for a unit.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL