Documentation
¶
Overview ¶
Package taskwarrior provides shared helpers for interacting with taskwarrior.
It defines the Task struct with worker UDAs (branch, pr_id, spawner), UUID validation and slug generation for session naming, task export and query helpers, flicknote annotation resolution, and UDA verification. Used by CLI commands, the daemon, and worker hooks throughout both planes.
Plane: shared
Index ¶
- Variables
- func AddTask(description string, modifiers ...string) (string, error)
- func AnnotateTask(uuid, text string) error
- func Command(args ...string) *exec.Cmd
- func CommandContext(ctx context.Context, args ...string) *exec.Cmd
- func CountTasks(filters ...string) (int, error)
- func ExtractSessionID(sessionName string) string
- func GetProjects() ([]string, error)
- func GetTags() ([]string, error)
- func HasAnyLGTMTag(tags []string) bool
- func HasTag(tags []string, tag string) bool
- func IsHexID(s string) bool
- func IsLGTMTag(tag string) bool
- func LoadInlineProjects() []string
- func MarkDeleted(uuid string) error
- func MarkDone(uuid string) error
- func MarkWaiting(uuid string) error
- func ModifyTags(uuid string, tags ...string) error
- func ResolveDataLocation() (string, error)
- func SetPRID(uuid, prID string) error
- func SetSpawner(uuid, spawner string) error
- func ShouldInlineNote(note *FlicknoteNote, inlineProjects []string) bool
- func StartTask(uuid string) error
- func StopTask(uuid string) error
- func ValidateUUID(s string) error
- func VerifyRequiredUDAs() error
- type Annotation
- type FlicknoteNote
- type PRIDInfo
- type Task
- func ExportTask(uuid string) (*Task, error)
- func ExportTaskBySessionID(sessionID, status string) (*Task, error)
- func ExportTasksByFilter(args ...string) ([]Task, error)
- func FindTasks(keywords []string, status string) ([]Task, error)
- func GetActiveWorkerTasks() ([]Task, error)
- func GetDueReminders() ([]Task, error)
- func GetPendingReminders() ([]Task, error)
- func ListTasksWithPR() ([]Task, error)
- type UserError
Constants ¶
This section is empty.
Variables ¶
var HexIDPattern = regexp.MustCompile(`\b([a-f0-9]{8,})\b`)
HexIDPattern finds a flicknote hex ID (8+ lowercase hex chars) anywhere in an annotation. Matches bare IDs ("e8fd0fe0"), prefixed ("Plan: e8fd0fe0"), or multi-word ("Plan: flicknote b7b61e89"). If the ID doesn't exist in flicknote, ReadFlicknoteJSON returns nil and the annotation is suppressed from the prompt.
Functions ¶
func AnnotateTask ¶ added in v1.0.0
func Command ¶
Command builds an exec.Cmd for `task` with the active team's TASKRC prepended as `rc:<path>`. This ensures all task invocations target the correct taskwarrior instance regardless of the calling process's env.
Usage:
cmd := taskwarrior.Command("status:pending", "export")
out, err := cmd.Output()
func CommandContext ¶
CommandContext is like Command but with a context for cancellation/timeout.
func CountTasks ¶ added in v1.7.0
CountTasks returns the count of tasks matching the given filters.
func ExtractSessionID ¶
ExtractSessionID extracts the UUID[:8] from a session name. Handles w-UUID[:8]-slug (worker) and bare UUID[:8].
func GetProjects ¶ added in v1.0.0
func HasAnyLGTMTag ¶ added in v1.8.0
HasAnyLGTMTag returns true if any tag in the slice is a stage lgtm tag.
func IsHexID ¶
IsHexID returns true if s looks like a bare flicknote/UUID hex prefix (8+ hex chars).
func IsLGTMTag ¶ added in v1.8.0
IsLGTMTag reports whether tag is a stage-specific lgtm tag (ends with "_lgtm").
func LoadInlineProjects ¶ added in v1.0.0
func LoadInlineProjects() []string
func MarkDeleted ¶
func MarkWaiting ¶ added in v1.0.0
func ModifyTags ¶ added in v1.7.0
ModifyTags adds or removes tags from a task. Tags should be in "+tagname" or "-tagname" format.
func ResolveDataLocation ¶
ResolveDataLocation asks taskwarrior for the actual data.location value, respecting the active team's taskrc. Returns the resolved absolute path.
func SetSpawner ¶ added in v1.0.0
SetSpawner sets the spawner UDA on a task (format: team:agent).
func ShouldInlineNote ¶
func ShouldInlineNote(note *FlicknoteNote, inlineProjects []string) bool
func ValidateUUID ¶
ValidateUUID checks that s is a valid taskwarrior UUID. Returns a user-friendly error for numeric IDs, # prefixes, or invalid formats.
func VerifyRequiredUDAs ¶
func VerifyRequiredUDAs() error
VerifyRequiredUDAs checks that required UDAs are configured in taskwarrior.
Types ¶
type Annotation ¶
type Annotation struct {
Description string `json:"description"`
Entry string `json:"entry,omitempty"`
}
Annotation represents a taskwarrior annotation.
type FlicknoteNote ¶
type FlicknoteNote struct {
ID string `json:"id"`
Title string `json:"title"`
Project string `json:"project"`
Summary string `json:"summary"`
Content string `json:"content"`
}
func ReadFlicknoteJSON ¶
func ReadFlicknoteJSON(id string) *FlicknoteNote
type PRIDInfo ¶ added in v1.0.0
type PRIDInfo struct {
Index int64
}
PRIDInfo holds parsed pr_id UDA data.
type Task ¶
type Task struct {
ID int `json:"id"`
UUID string `json:"uuid"`
Description string `json:"description"`
Project string `json:"project,omitempty"`
Status string `json:"status"`
Tags []string `json:"tags,omitempty"`
Annotations []Annotation `json:"annotations,omitempty"`
Start string `json:"start,omitempty"`
Modified string `json:"modified,omitempty"`
Scheduled string `json:"scheduled,omitempty"`
PRID string `json:"pr_id,omitempty"`
Spawner string `json:"spawner,omitempty"`
}
Task represents a taskwarrior task with worker UDAs.
func ExportTask ¶
func ExportTaskBySessionID ¶
func ExportTasksByFilter ¶ added in v1.7.0
ExportTasksByFilter runs a task export with the given filter args.
func GetActiveWorkerTasks ¶
func GetDueReminders ¶ added in v1.2.0
GetDueReminders returns pending tasks tagged +reminder with scheduled <= now. Used by the daemon poller to fire notifications.
func GetPendingReminders ¶ added in v1.2.0
GetPendingReminders returns all pending tasks tagged +reminder (for `ttal remind list`).
func ListTasksWithPR ¶
func (*Task) FormatPrompt ¶
func (*Task) SessionID ¶
SessionID returns a deterministic session identifier derived from the task UUID. Uses the first 8 characters of the UUID (4 billion possible values).
func (*Task) SessionName ¶
SessionName returns a human-readable session name: w-{uuid[:8]}-{slug}. Slug is always derived from the task description, which is immutable and stable across the task lifetime. This ensures open/attach commands always find the session regardless of when they run relative to UDA writes.
Worker sessions use this format to be identifiable at a glance:
w-e9d4b7c1-fix-auth w-a3f29bc0-add-doctor
This is distinct from agent sessions which use "ttal-<team>-<agent>".