Documentation
¶
Index ¶
- func DataDir(hash, projectID string) string
- func DeleteMetadata(sessionsDir, sessionID string) error
- func GenerateSessionID(prefix string, num int) string
- func GenerateSessionPrefix(projectID string) string
- func GenerateTmuxName(hash, prefix string, num int) string
- func GetNextSessionNumber(existing []string, prefix string) int
- func ListSessions(sessionsDir string) ([]string, error)
- func ParseKeyValue(content string) map[string]string
- func ReadMetadata(sessionsDir, sessionID string) (map[string]string, error)
- func ReserveSessionID(sessionsDir, sessionID string) error
- func SerializeKeyValue(data map[string]string) string
- func SessionsDir(hash, projectID string) string
- func UpdateMetadata(sessionsDir, sessionID string, updates map[string]string) error
- func ValidateSessionID(id string) error
- func WorktreesDir(hash, projectID string) string
- func WriteMetadata(sessionsDir, sessionID string, data map[string]string) error
- type Session
- type SessionStatus
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeleteMetadata ¶
DeleteMetadata removes the metadata file for a session.
func GenerateSessionID ¶
GenerateSessionID creates a session ID: {prefix}-{num}
func GenerateSessionPrefix ¶
GenerateSessionPrefix generates a short prefix from a project ID. Rules: <=4 chars -> as-is, kebab/snake -> initials, CamelCase -> uppercase letters, else first 3.
func GenerateTmuxName ¶
GenerateTmuxName creates a globally unique tmux session name: {hash}-{prefix}-{num}
func GetNextSessionNumber ¶
GetNextSessionNumber finds the next available session number for the given prefix.
func ListSessions ¶
ListSessions returns all session IDs in the sessions directory.
func ParseKeyValue ¶
ParseKeyValue parses key=value lines into a map.
func ReadMetadata ¶
ReadMetadata reads the key=value metadata file for a session. Returns nil, nil if the file does not exist.
func ReserveSessionID ¶
ReserveSessionID atomically creates an empty metadata file, failing if it already exists.
func SerializeKeyValue ¶
SerializeKeyValue serializes a map to key=value lines, sorted by key.
func SessionsDir ¶
SessionsDir returns the sessions directory for a project.
func UpdateMetadata ¶
UpdateMetadata merges updates into existing metadata. Empty string values delete keys.
func ValidateSessionID ¶
ValidateSessionID checks that a session ID is safe for filesystem use.
func WorktreesDir ¶
WorktreesDir returns the worktrees directory for a project.
Types ¶
type Session ¶
type Session struct {
ID string
ProjectID string
Status SessionStatus
Branch string
IssueID string
IssueTitle string
PRURL string
PRNumber int
WorkspacePath string
TmuxName string
Agent string
CreatedAt time.Time
Metadata map[string]string
}
Session represents a running or completed agent session.
type SessionStatus ¶
type SessionStatus string
SessionStatus represents the current state of a session.
const ( StatusSpawning SessionStatus = "spawning" StatusWorking SessionStatus = "working" StatusWaitingInput SessionStatus = "waiting_input" StatusPROpen SessionStatus = "pr_open" StatusCIFailed SessionStatus = "ci_failed" StatusChangesRequested SessionStatus = "changes_requested" StatusReviewPending SessionStatus = "review_pending" StatusMerged SessionStatus = "merged" StatusCleanup SessionStatus = "cleanup" StatusDone SessionStatus = "done" StatusErrored SessionStatus = "errored" StatusStuck SessionStatus = "stuck" )
func (SessionStatus) IsTerminal ¶
func (s SessionStatus) IsTerminal() bool
IsTerminal returns true if the status is a final state.