sessionrun

package
v0.182.6 Latest Latest
Warning

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

Go to latest
Published: Oct 6, 2026 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConfiguredMachine

func ConfiguredMachine() (string, error)

func DefaultScanner

func DefaultScanner() (*secretscan.Scanner, []string, error)

func DirForRead

func DirForRead(projectsRoot string) (string, error)

func DirForWrite

func DirForWrite(projectsRoot string) (string, error)

func MoveStore

func MoveStore(projectsRoot string) (sessionmove.Store, error)

func ParkTargetStore

func ParkTargetStore(projectsRoot string) (sessionpark.TargetStore, error)

func ResolveSource

func ResolveSource(projectsRoot string) (session.Record, bool, error)

func ScanContinuation

func ScanContinuation(load func() (*secretscan.Scanner, []string, error), overrides secretscan.Overrides, segments ...secretscan.Segment) ([]secretscan.Finding, error)

Types

type ListDependencies

type ListDependencies struct {
	Directory func(string) (string, error)
	Records   func(string) ([]session.View, error)
	Worktrees func(context.Context, worktrees.ListOptions) ([]worktrees.ListResult, error)
	Home      func(string) (string, error)
	Waits     func(string, waitregistry.Options) ([]waitregistry.Record, error)
}

func DefaultListDependencies

func DefaultListDependencies() ListDependencies

type ListRequest

type ListRequest struct {
	ProjectsRoot string
	OnlyLive     bool
}

type ListService

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

func NewList

func NewList(deps ListDependencies) *ListService

func (*ListService) List

func (s *ListService) List(_ context.Context, request ListRequest, warn func(string)) ([]Row, error)

List intentionally detaches the attribution scan from caller cancellation, matching the existing observational listing contract.

type MessageDependencies

type MessageDependencies struct {
	ResolveSource func(string) (session.Record, bool, error)
	Store         func(string) (sessionmove.Store, error)
	NewMessageID  func() (string, error)
	Send          func(context.Context, sessionmessenger.Options) (sessionmessenger.Result, error)
	Now           func() time.Time
}

func DefaultMessageDependencies

func DefaultMessageDependencies() MessageDependencies

type MessageRequest

type MessageRequest struct {
	ProjectsRoot, Target, Body, ResumeID, RetryVerb string
	Kind                                            sessionmove.MessageKind
}

type MessageService

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

func NewMessage

func NewMessage(deps MessageDependencies) *MessageService

func (*MessageService) Send

type MoveDependencies

type MoveDependencies struct {
	LoadScanner       func() (*secretscan.Scanner, []string, error)
	DefaultConfigPath func() string
	LoadConfig        func(string) (sessionmove.Config, error)
	LocalMachine      func() (string, error)
	ResolveSource     func(string) (session.Record, bool, error)
	Checkpoint        func(context.Context, worktrees.SessionCheckpointOptions) (worktrees.SessionCheckpointResult, error)
	Store             func(string) (sessionmove.Store, error)
	NewDeliverer      func(sessionmove.TargetConfig, sessionmove.Courier, sessioncourier.SynchestraOptions) (sessioncourier.Deliverer, error)
	LoopbackDeliverer func(sessionmove.Store) sessioncourier.Deliverer
	Acknowledge       func(context.Context, sessioncustody.Options) (sessioncustody.Result, error)
}

func DefaultMoveDependencies

func DefaultMoveDependencies() MoveDependencies

type MoveRequest

type MoveRequest struct {
	ProjectsRoot    string
	Worktree        string
	Target          string
	Via             string
	ConfigPath      string
	Harness         string
	Model           string
	Summary         string
	Validation      string
	Remaining       string
	HandoverFile    string
	Input           io.Reader
	OverrideSecrets []string
	ResumeID        string
}

MoveRequest describes a fresh move or a retry of an immutable handoff. Input is only consumed for HandoverFile "-" at the existing input stage.

type MoveResult

type MoveResult struct {
	Phase        string                        `json:"phase"`
	Courier      sessionmove.Courier           `json:"courier"`
	SourceActive bool                          `json:"source_active"`
	Request      sessionmove.Request           `json:"request"`
	Digest       sessionmove.Digest            `json:"request_digest"`
	Successor    *sessionlaunch.Result         `json:"successor,omitempty"`
	Receipt      *sessionmove.Receipt          `json:"receipt,omitempty"`
	Address      *sessionmove.SuccessorAddress `json:"successor_address,omitempty"`
	Resume       bool                          `json:"-"`
}

MoveResult is the existing public move response. Resume selects the existing completed-handoff text without adding a field to the public JSON response.

type MoveService

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

func NewMove

func NewMove(deps MoveDependencies) *MoveService

func (*MoveService) Move

func (s *MoveService) Move(ctx context.Context, request MoveRequest, warn func([]secretscan.Finding)) (MoveResult, error)

func (*MoveService) Resume

func (s *MoveService) Resume(ctx context.Context, options MoveRequest) (MoveResult, error)

type ParkDependencies

type ParkDependencies struct {
	Directory     func(string) (string, error)
	Home          func(string) (string, error)
	PID           func() int
	ResolveSource func(string, int, session.AutoRegisterHints) (session.Record, bool, error)
	List          func(context.Context, worktrees.ListOptions) ([]worktrees.ListResult, error)
	Store         func(string) sessionpark.Store
	Capture       func(context.Context, string, []worktrees.ListResult, session.Record, func([]sessionpark.Worktree) error) error
	NewID         func() (string, error)
	Now           func() time.Time
	MarkParked    func(string, int, string) (session.Record, error)
	LoadScanner   func() (*secretscan.Scanner, []string, error)
}

func DefaultParkDependencies

func DefaultParkDependencies() ParkDependencies

type ParkOutput

type ParkOutput struct {
	ParkedSessionID string `json:"parked_session_id"`
	Status          string `json:"status"`
	MemberCount     int    `json:"member_count"`
	// WBSessionID names the parked source session, and RegisteredAtPark says
	// whether park had to register it first. A caller that never ran
	// `wb session register` learns its own identity from exactly here.
	WBSessionID      string `json:"wb_session_id"`
	RegisteredAtPark bool   `json:"registered_at_park"`
}

type ParkRegistration

type ParkRegistration struct {
	PID            int
	Runtime, Model string
}

type ParkRequest

type ParkRequest struct {
	ProjectsRoot, Runtime, Model, WBSessionID string
	PID                                       int
	Continuation                              []byte
	OverrideSecrets                           []string
}

type ParkResult

type ParkResult struct {
	Output       ParkOutput
	Warnings     []secretscan.Finding
	Registration ParkRegistration
}

ParkResult keeps post-success presentation facts separate from public JSON.

type ParkService

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

func NewPark

func NewPark(deps ParkDependencies) *ParkService

func (*ParkService) Park

func (s *ParkService) Park(ctx context.Context, request ParkRequest) (ParkResult, error)

type PruneDependencies

type PruneDependencies struct {
	Directory func(string) (string, error)
	Prune     func(string) (int, error)
}

func DefaultPruneDependencies

func DefaultPruneDependencies() PruneDependencies

type PruneService

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

func NewPrune

func NewPrune(deps PruneDependencies) *PruneService

func (*PruneService) Prune

func (s *PruneService) Prune(_ context.Context, projectsRoot string) (int, error)

type ReceiveDependencies

type ReceiveDependencies struct {
	LocalMachine func() (string, error)
	Store        func(string) (sessionmove.Store, error)
	Receive      func(context.Context, sessionreceive.Options) (sessionreceive.Result, error)
}

func DefaultReceiveDependencies

func DefaultReceiveDependencies() ReceiveDependencies

type ReceiveMessageDependencies

type ReceiveMessageDependencies struct {
	LocalMachine func() (string, error)
	Store        func(string) (sessionmove.Store, error)
	Receive      func(context.Context, sessionmessage.Options) (sessionmessage.Result, error)
	Directory    func(string) (string, error)
}

func DefaultReceiveMessageDependencies

func DefaultReceiveMessageDependencies() ReceiveMessageDependencies

type ReceiveMessageService

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

func (*ReceiveMessageService) ReceiveMessage

func (s *ReceiveMessageService) ReceiveMessage(ctx context.Context, request ReceiveRequest) (sessionmessage.Result, error)

type ReceiveParkDependencies

type ReceiveParkDependencies struct {
	LocalMachine func() (string, error)
	Store        func(string) (sessionpark.TargetStore, error)
	Receive      func(context.Context, sessionparkreceive.Options) (sessionparkreceive.Result, error)
}

func DefaultReceiveParkDependencies

func DefaultReceiveParkDependencies() ReceiveParkDependencies

type ReceiveParkService

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

func (*ReceiveParkService) ReceivePark

type ReceiveRequest

type ReceiveRequest struct {
	ProjectsRoot string
	Raw          []byte
}

type ReceiveService

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

func NewReceive

func NewReceive(deps ReceiveDependencies) *ReceiveService

func (*ReceiveService) Receive

type RegisterDependencies

type RegisterDependencies struct {
	CurrentPID     func() int
	ParentPID      func() int
	RuntimeProcess func(int, string) bool
	Directory      func(string) (string, error)
	Register       func(string, session.Record) (session.Record, error)
}

func DefaultRegisterDependencies

func DefaultRegisterDependencies() RegisterDependencies

type RegisterRequest

type RegisterRequest struct {
	ProjectsRoot string
	Record       session.Record
}

type RegisterService

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

func NewRegister

func NewRegister(deps RegisterDependencies) *RegisterService

func (*RegisterService) Register

func (s *RegisterService) Register(_ context.Context, request RegisterRequest) (session.Record, error)

type ResumeDependencies

type ResumeDependencies struct {
	Home func(string) (string, error)

	Now               func() time.Time
	DeliverSSH        func(context.Context, sessionmove.SSHConfig, []byte, sessionparkcourier.Options) (sessionparkcourier.Result, error)
	WithRemoteCustody func(context.Context, string, sessionpark.Bundle, func() error) error
	WithLocalCustody  func(context.Context, string, sessionpark.Bundle, string, func(*worktrees.ParkedLocalCustody) error) error
	AttachLocal       func(context.Context, *worktrees.ParkedLocalCustody, session.Record, string, uint64) error
	StartLocal        func(context.Context, sessionlaunch.Options) (sessionlaunch.Result, error)
	InspectLocal      func(context.Context, sessionlaunch.Options) (sessionlaunch.Result, error)
	InspectPrepared   func(context.Context, sessionlaunch.Options) (string, error)
	AfterLocalLaunch  func(sessionlaunch.Result) error
	MarkResumed       func(string, int, string, string) (session.Record, error)
	PreflightLocal    func(session.Record) error
}

func DefaultResumeDependencies

func DefaultResumeDependencies() ResumeDependencies

type ResumeRequest

type ResumeRequest struct {
	ProjectsRoot, ParkedSessionID, Target, Via, ConfigPath string
	Stderr                                                 io.Writer
}

type ResumeResult

type ResumeResult struct {
	ParkedSessionID      string             `json:"parked_session_id"`
	Status               string             `json:"status"`
	TargetMachine        string             `json:"target_machine"`
	SuccessorWBSessionID string             `json:"successor_wb_session_id"`
	MemberCount          int                `json:"member_count"`
	ReceiptDigest        sessionmove.Digest `json:"receipt_digest,omitempty"`
	Replay               bool               `json:"replay"`
}

type ResumeService

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

func NewResume

func NewResume(deps ResumeDependencies) *ResumeService

func (*ResumeService) Resume

func (s *ResumeService) Resume(ctx context.Context, request ResumeRequest) (ResumeResult, error)

type Row

type Row struct {
	session.View
	Efforts   []string `json:"efforts"`
	Worktrees []string `json:"worktrees"`
	Branches  []string `json:"branches"`
	// Waiting is what this session has delegated to WB and is still blocked
	// on. Without it a session that correctly delegated its waiting is
	// indistinguishable from one that stopped.
	Waiting []string `json:"waiting,omitempty"`
}

Jump to

Keyboard shortcuts

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