Versions in this module Expand all Collapse all v0 v0.52.8 Nov 1, 2026 v0.52.7 Oct 28, 2026 v0.52.6 Oct 19, 2026 v0.52.5 Oct 18, 2026 v0.52.4 Oct 18, 2026 v0.52.3 Oct 17, 2026 v0.52.2 Oct 17, 2026 v0.52.1 Oct 17, 2026 v0.52.0 Oct 16, 2026 Changes in this version + const AgentPrefix + const DefaultMaxChildren + const DefaultMaxDepth + const EventAssigned + const EventClaimed + const EventComment + const EventCreated + const EventEdited + const EventReleased + const EventStatus + const EventSubtask + const ExternalPrefix + const Human + const MaxBodyLen + const MaxReasonLen + const MaxTitleLen + const StatusBlocked + const StatusCancelled + const StatusDone + const StatusInProgress + const StatusReview + const StatusTodo + var ErrNotFound = errors.New("task not found") + func AgentID(name string) string + func ExternalID(keyName string) string + func IsClosed(status string) bool + func Key(id int64) string + func MemberName(id string) string + func ValidStatus(s string) bool + type Change struct + Actor string + Kind string + TaskID int64 + type ConflictError struct + Holder string + Message string + TaskID int64 + func (e *ConflictError) Error() string + type CreateInput struct + Actor string + Assignee string + Body string + ParentID *int64 + Reviewer string + Title string + type CreateRequest struct + Assignee string + Body string + NoReview bool + ParentID *int64 + Title string + type Detail struct + Children []Task + Events []Event + Parent *Task + Task Task + type Directory interface + Members func(ctx context.Context) ([]Member, error) + type DirectoryFunc func(ctx context.Context) ([]Member, error) + func (f DirectoryFunc) Members(ctx context.Context) ([]Member, error) + type Event struct + Actor string + At time.Time + Body string + Data string + ID int64 + Kind string + TaskID int64 + type Filter struct + Assignee string + ClosedSince time.Time + Limit int + ParentID *int64 + Statuses []string + TopLevel bool + Unassigned bool + type Member struct + ID string + Kind string + Label string + Name string + type Option func(*Store) + func WithMaxChildren(n int) Option + func WithMaxDepth(n int) Option + type RuleError struct + Message string + func (e *RuleError) Error() string + type Service struct + func NewService(store *Store, dir Directory, auditor audit.Emitter) *Service + func (s *Service) Checkout(ctx context.Context, actor string, id int64) (*Task, error) + func (s *Service) Comment(ctx context.Context, actor string, id int64, body string) (*Event, error) + func (s *Service) Create(ctx context.Context, actor string, req CreateRequest) (*Task, error) + func (s *Service) Detail(ctx context.Context, id int64) (*Detail, error) + func (s *Service) Get(ctx context.Context, id int64) (*Task, error) + func (s *Service) List(ctx context.Context, f Filter) ([]Task, error) + func (s *Service) Members(ctx context.Context) ([]Member, error) + func (s *Service) Release(ctx context.Context, actor string, id int64) (*Task, error) + func (s *Service) Resolve(ctx context.Context, name, actor string) (string, error) + func (s *Service) SetOnChange(fn func(Change)) + func (s *Service) Update(ctx context.Context, actor string, id int64, req UpdateRequest) (*Task, error) + type Store struct + func NewInMemoryStore(opts ...Option) (*Store, error) + func NewSQLiteStore(dbPath string, opts ...Option) (*Store, error) + func (s *Store) Assign(ctx context.Context, actor string, id int64, assignee string) (*Task, error) + func (s *Store) Checkout(ctx context.Context, actor string, id int64) (*Task, error) + func (s *Store) Close() error + func (s *Store) Comment(ctx context.Context, actor string, id int64, body string) (*Event, error) + func (s *Store) Create(ctx context.Context, in CreateInput) (*Task, error) + func (s *Store) Detail(ctx context.Context, id int64) (*Detail, error) + func (s *Store) Edit(ctx context.Context, actor string, id int64, title, body string) (*Task, error) + func (s *Store) Get(ctx context.Context, id int64) (*Task, error) + func (s *Store) List(ctx context.Context, f Filter) ([]Task, error) + func (s *Store) Release(ctx context.Context, actor string, id int64) (*Task, error) + func (s *Store) SetStatus(ctx context.Context, actor string, id int64, status, reason string) (*Task, error) + type Task struct + Assignee string + BlockedReason string + Body string + ChildrenDone int + ChildrenTotal int + ClosedAt *time.Time + CreatedAt time.Time + CreatedBy string + Depth int + HeldAt *time.Time + Holder string + ID int64 + ParentID *int64 + Reviewer string + Status string + Title string + UpdatedAt time.Time + func (t *Task) Closed() bool + func (t *Task) Key() string + type UpdateRequest struct + Assignee *string + Body *string + Reason string + Status *string + Title *string