session

package
v0.1.22 Latest Latest
Warning

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

Go to latest
Published: May 28, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClearUserInputState

func ClearUserInputState(sessionsDir, sessionID string) error

func DetectGitBranch

func DetectGitBranch(cwd string) string

func FindSessionPathByID

func FindSessionPathByID(sessionsDir, sessionID string) string

func FirstVisibleUserMessage added in v0.1.4

func FirstVisibleUserMessage(sessionsDir, sessionID string) (string, error)

func SaveModeState

func SaveModeState(sessionsDir, sessionID string, mode Mode) error

func SaveSessionMeta

func SaveSessionMeta(sessionsDir, sessionID string, st SessionMeta) error

func SaveTodoState

func SaveTodoState(sessionsDir, sessionID string, st TodoState) error

func SaveUserInputState

func SaveUserInputState(sessionsDir, sessionID string, st UserInputState) error

func SessionConversationTitle added in v0.1.4

func SessionConversationTitle(sessionsDir, sessionID string, meta SessionMeta) string

Types

type Mode

type Mode string
const (
	ModeAgent Mode = "agent"
	ModeAsk   Mode = "ask"
	ModePlan  Mode = "plan"
)

func ParseMode

func ParseMode(raw string) (Mode, error)

type ModeState

type ModeState struct {
	Mode      Mode      `json:"mode"`
	UpdatedAt time.Time `json:"updated_at"`
}

func LoadModeState

func LoadModeState(sessionsDir, sessionID string) (ModeState, error)

type SessionMeta

type SessionMeta struct {
	Branch             string    `json:"branch,omitempty"`
	Title              string    `json:"title,omitempty"`
	Summary            string    `json:"summary,omitempty"`
	TotalCostUSD       float64   `json:"total_cost_usd,omitempty"`
	TurnCount          int       `json:"turn_count,omitempty"`
	Workspace          string    `json:"workspace,omitempty"`
	WorktreeName       string    `json:"worktree_name,omitempty"`
	WorktreePath       string    `json:"worktree_path,omitempty"`
	WorktreeBranch     string    `json:"worktree_branch,omitempty"`
	OriginalWorkspace  string    `json:"original_workspace,omitempty"`
	OriginalBranch     string    `json:"original_branch,omitempty"`
	OriginalHeadCommit string    `json:"original_head_commit,omitempty"`
	Kind               string    `json:"kind,omitempty"`
	ParentSessionID    string    `json:"parent_session_id,omitempty"`
	Role               string    `json:"role,omitempty"`
	Model              string    `json:"model,omitempty"`
	Task               string    `json:"task,omitempty"`
	Status             string    `json:"status,omitempty"`
	Error              string    `json:"error,omitempty"`
	StartedAt          time.Time `json:"started_at,omitempty"`
	CompletedAt        time.Time `json:"completed_at,omitempty"`
	UpdatedAt          time.Time `json:"updated_at"`
}

func LoadSessionMeta

func LoadSessionMeta(sessionsDir, sessionID string) (SessionMeta, error)

func PatchSessionMeta

func PatchSessionMeta(sessionsDir, sessionID string, patch SessionMetaPatch) (SessionMeta, error)

func UpdateSessionMeta added in v0.1.17

func UpdateSessionMeta(sessionsDir, sessionID string, mutate func(*SessionMeta)) (SessionMeta, error)

UpdateSessionMeta atomically loads, mutates, and saves session meta under a per-file lock so concurrent writers cannot lose each other's updates.

type SessionMetaPatch added in v0.1.19

type SessionMetaPatch struct {
	Branch             string
	Title              string
	Summary            string
	TotalCostUSD       *float64
	TurnCount          *int
	Workspace          string
	WorktreeName       string
	WorktreePath       string
	WorktreeBranch     string
	OriginalWorkspace  string
	OriginalBranch     string
	OriginalHeadCommit string
	Kind               string
	ParentSessionID    string
	Role               string
	Model              string
	Task               string
	Status             string
	Error              string
	StartedAt          time.Time
	CompletedAt        time.Time
}

func SessionMetaPatchFromMeta added in v0.1.19

func SessionMetaPatchFromMeta(meta SessionMeta) SessionMetaPatch

type SessionSummary

type SessionSummary struct {
	ID           string
	ModTime      time.Time
	Size         int64
	Meta         SessionMeta
	Conversation string
}

func ListSessions

func ListSessions(sessionsDir string, limit int) ([]SessionSummary, error)

type TodoItem

type TodoItem struct {
	ID          string    `json:"id"`
	Text        string    `json:"text"`
	Done        bool      `json:"done"`
	Priority    int       `json:"priority,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
	CompletedAt time.Time `json:"completed_at,omitempty"`
}

type TodoState

type TodoState struct {
	Items []TodoItem `json:"items"`
}

func LoadTodoState

func LoadTodoState(sessionsDir, sessionID string) (TodoState, error)

type UserInputState

type UserInputState struct {
	Pending    bool                     `json:"pending"`
	ToolCallID string                   `json:"tool_call_id,omitempty"`
	Questions  []core.UserInputQuestion `json:"questions,omitempty"`
	CreatedAt  time.Time                `json:"created_at,omitempty"`
	UpdatedAt  time.Time                `json:"updated_at,omitempty"`
}

func LoadUserInputState

func LoadUserInputState(sessionsDir, sessionID string) (UserInputState, error)

Jump to

Keyboard shortcuts

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