domain

package
v0.243.0 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const ChannelFollowTimeout = 10 * time.Minute

ChannelFollowTimeout is how long a channel chat keeps following its thread after its last frame before it detaches, so a reply minutes later still lands on a warm worker.

View Source
const IdleTimeout = 30 * time.Second

IdleTimeout is how long a thread nobody follows may sit on the user's turn, with no run, no reply pending and no background job, before the registry stops its worker. Long enough to absorb a quick switch back, short enough that a left chat does not keep its worker around.

Variables

This section is empty.

Functions

This section is empty.

Types

type BrowserRelay

type BrowserRelay func(ctx context.Context, frame []byte) []byte

BrowserRelay forwards one browser_command frame from a session worker to the connected browser extension and always answers with the browser_result carrying the frame's id, a failure included. The host wires the relay, which serializes commands for the one browser.

type Client

type Client interface {
	Deliver(frame []byte)
}

Client is one connected client of a thread, such as a WebSocket connection. Deliver hands it one frame.

type LaunchWorker

type LaunchWorker func(key ThreadKey, opts ThreadOptions) (Worker, error)

LaunchWorker starts the worker for a thread.

type Subagent added in v0.236.2

type Subagent struct {
	Parent string   `json:"parent"`
	Depth  int      `json:"depth"`
	Tools  []string `json:"tools,omitempty"`
}

Subagent is what a spawned thread knows about its spawn: the parent it reports to, its depth under the top-level session for the depth guard, and the tool allowlist a Markdown agent preset gave it (nil inherits the project's tools).

type ThreadKey

type ThreadKey struct {
	ProjectDir     string
	ConversationID string
}

ThreadKey identifies a thread: the project dir its worker runs in and the conversation the worker carries.

type ThreadOptions

type ThreadOptions struct {
	Model              string   `json:"model,omitempty"`
	Mode               string   `json:"mode,omitempty"`
	SystemPrompt       string   `json:"system_prompt,omitempty"`
	CustomInstructions string   `json:"custom_instructions,omitempty"`
	SandboxDirectories []string `json:"sandbox_directories,omitempty"`
	MaxTurns           int      `json:"max_turns,omitempty"`
	// Subagent marks a thread another thread's Agent tool spawned.
	Subagent *Subagent `json:"subagent,omitempty"`
	// Workspace and WorkspaceDir place a thread no lease places: the
	// workspace that holds its conversation and the source code there, as
	// when a client opens a session it listed on a remote workspace.
	Workspace    string `json:"workspace,omitempty"`
	WorkspaceDir string `json:"workspace_dir,omitempty"`
	// Env is extra environment the worker starts with, such as credentials a
	// teleport handed over. It never travels on the wire.
	Env []string `json:"-"`
}

ThreadOptions override the project's config for one thread's worker. They apply when the worker launches, and zero values keep the project's config.

type ThreadRouter

type ThreadRouter interface {
	// Handle routes one client frame to its thread's worker.
	Handle(c Client, frame []byte)
	// Detach drops a client that stopped following its thread.
	Detach(c Client)
}

ThreadRouter is the surface a driving adapter calls per client frame and on disconnect. The daemon's thread registry implements it.

type Worker

type Worker interface {
	Send(frame []byte) error
	Lines() <-chan []byte
	Stop()
}

Worker is one running session worker. Send writes one frame line to its stdin, and Lines yields its stdout lines until the worker exits.

Jump to

Keyboard shortcuts

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