workspace

package
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Overview

Package workspace manages a bones workspace: the .bones/ directory, its on-disk config, and the associated leaf daemon process. Workspaces created before the rename used .agent-infra/; both Init and Join silently migrate that legacy name to .bones/ on first touch.

Two entry points:

Init creates a fresh workspace and starts a leaf daemon.
Join locates an existing workspace (walking up from cwd) and verifies
its leaf is reachable.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrAlreadyInitialized = errors.New("workspace already initialized")
	ErrNoWorkspace        = errors.New("no bones workspace found")
	ErrLeafUnreachable    = errors.New("leaf daemon not reachable")
	ErrLeafStartTimeout   = errors.New("leaf daemon failed to start within timeout")
)

Functions

func ExitCode

func ExitCode(err error) int

ExitCode maps errors returned by Init and Join to conventional process exit codes: 0 on success, 2-5 for known sentinels, 1 for anything else. Callers that want a different convention can inspect errors directly.

func FindRoot added in v0.4.0

func FindRoot(start string) (string, error)

FindRoot is the unauthenticated workspace lookup: walks up from start until it finds a directory containing the .bones marker dir, returns that directory, or ErrNoWorkspace if the filesystem root is reached.

Unlike Join, FindRoot does not load config.json or contact the leaf daemon — useful for commands that only need the workspace path (e.g. bones apply, which materializes from the hub fossil and never talks to the leaf).

Types

type Info

type Info struct {
	AgentID      string
	NATSURL      string
	LeafHTTPURL  string
	RepoPath     string
	WorkspaceDir string
}

Info describes a live workspace. Returned by both Init and Join.

func Init

func Init(ctx context.Context, cwd string) (Info, error)

Init creates a fresh workspace rooted at cwd, starts a leaf daemon, and returns its connection info. Returns ErrAlreadyInitialized only if a fully-formed workspace (marker dir AND config.json) already exists. An empty or partially-created marker dir is treated as a recoverable state and Init proceeds — this fixes the case where 'bones up' had previously mkdir'd .bones/ without writing config.json. A pre-rename .agent-infra/ marker is silently migrated to .bones/ first.

func Join

func Join(ctx context.Context, cwd string) (Info, error)

Join locates the nearest .bones/ walking up from cwd and verifies the recorded leaf is still reachable. A pre-rename .agent-infra/ marker rooted at cwd is silently migrated to .bones/ before walkUp.

Jump to

Keyboard shortcuts

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