projectworkplan

package
v0.2.4 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WorkPlanStatusPlanned     = "planned"
	WorkPlanStatusActive      = "active"
	WorkPlanStatusBlocked     = "blocked"
	WorkPlanStatusNeedsReview = "needs_review"
	WorkPlanStatusDone        = "done"
	WorkPlanStatusFailed      = "failed"
	WorkPlanStatusCancelled   = "cancelled"
	WorkPlanStatusSuperseded  = "superseded"
)
View Source
const (
	WorkPlanIsolationShared            = "shared"
	WorkPlanIsolationDedicatedWorktree = "dedicated_worktree"
	WorkPlanIsolationUnavailable       = "unavailable"
)
View Source
const (
	WorkTaskStatusPlanned     = "planned"
	WorkTaskStatusReady       = "ready"
	WorkTaskStatusClaimed     = "claimed"
	WorkTaskStatusInProgress  = "in_progress"
	WorkTaskStatusBlocked     = "blocked"
	WorkTaskStatusNeedsReview = "needs_review"
	WorkTaskStatusVerifying   = "verifying"
	WorkTaskStatusDone        = "done"
	WorkTaskStatusFailed      = "failed"
	WorkTaskStatusCancelled   = "cancelled"
	WorkTaskStatusSuperseded  = "superseded"
)
View Source
const (
	DecompositionDraft               = "draft"
	DecompositionReady               = "ready"
	DecompositionTooBroad            = "too_broad"
	DecompositionMissingEvidence     = "missing_evidence"
	DecompositionMissingContext      = "missing_context"
	DecompositionMissingVerification = "missing_verification"
	DecompositionMissingResume       = "missing_resume"
)
View Source
const MaxResumeInstructionsLength = 16 * 1024

MaxResumeInstructionsLength is kept for legacy tests and stored-value compatibility. New resume instruction validation is intentionally uncapped.

Variables

View Source
var ErrInvalidInput = errors.New("invalid input")

Functions

This section is empty.

Types

type AttachInput

type AttachInput struct {
	ProjectID       string `json:"project_id,omitempty"`
	TaskID          string `json:"task_id"`
	Ref             string `json:"ref"`
	AttachedByRunID string `json:"attached_by_run_id,omitempty"`
	TraceID         string `json:"trace_id,omitempty"`
	Note            string `json:"note,omitempty"`
}

type Attachment

type Attachment struct {
	ID              string    `json:"id"`
	ProjectID       string    `json:"project_id"`
	PlanID          string    `json:"plan_id"`
	TaskID          string    `json:"task_id"`
	Kind            string    `json:"kind"`
	Ref             string    `json:"ref"`
	AttachedByRunID string    `json:"attached_by_run_id,omitempty"`
	TraceID         string    `json:"trace_id,omitempty"`
	Note            string    `json:"note,omitempty"`
	CreatedAt       time.Time `json:"created_at"`
}

type CreateWorkPlanInput

type CreateWorkPlanInput struct {
	ProjectID        string `json:"project_id,omitempty"`
	PlanRef          string `json:"plan_ref"`
	UserRequestRef   string `json:"user_request_ref,omitempty"`
	Title            string `json:"title"`
	GoalSummary      string `json:"goal_summary"`
	OwnerAgent       string `json:"owner_agent,omitempty"`
	CreatedByRunID   string `json:"created_by_run_id,omitempty"`
	TraceID          string `json:"trace_id,omitempty"`
	ResumeSummary    string `json:"resume_summary,omitempty"`
	IsolationMode    string `json:"isolation_mode,omitempty"`
	ParallelGroupRef string `json:"parallel_group_ref,omitempty"`
	WorkspaceRef     string `json:"workspace_ref,omitempty"`
	GitBaseRef       string `json:"git_base_ref,omitempty"`
	GitBranchRef     string `json:"git_branch_ref,omitempty"`
	GitWorktreeRef   string `json:"git_worktree_ref,omitempty"`
}

type CreateWorkTaskInput

type CreateWorkTaskInput struct {
	ProjectID               string   `json:"project_id,omitempty"`
	PlanID                  string   `json:"plan_id"`
	TaskRef                 string   `json:"task_ref"`
	Title                   string   `json:"title"`
	Description             string   `json:"description,omitempty"`
	Status                  string   `json:"status,omitempty"`
	OwnerAgent              string   `json:"owner_agent,omitempty"`
	RunID                   string   `json:"run_id,omitempty"`
	TraceID                 string   `json:"trace_id,omitempty"`
	EvidenceNeeded          []string `json:"evidence_needed,omitempty"`
	ContextPackRefs         []string `json:"context_pack_refs,omitempty"`
	FilesToRead             []string `json:"files_to_read,omitempty"`
	FilesToEdit             []string `json:"files_to_edit,omitempty"`
	LikelyFilesAffected     []string `json:"likely_files_affected,omitempty"`
	DependencyTaskIDs       []string `json:"dependency_task_ids,omitempty"`
	VerificationRequirement string   `json:"verification_requirement"`
	ExpectedOutput          string   `json:"expected_output,omitempty"`
	FailureCriteria         string   `json:"failure_criteria,omitempty"`
	ReviewGate              string   `json:"review_gate,omitempty"`
	ResumeInstructions      string   `json:"resume_instructions,omitempty"`
	KnowledgeCandidateRefs  []string `json:"knowledge_candidate_refs,omitempty"`
	DecompositionQuality    string   `json:"decomposition_quality,omitempty"`
}

type DependencySummary

type DependencySummary struct {
	TaskID string `json:"task_id"`
	Status string `json:"status"`
	Ready  bool   `json:"ready"`
}

type ExpandWorkTaskScopeInput added in v0.2.4

type ExpandWorkTaskScopeInput struct {
	ProjectID          string   `json:"project_id,omitempty"`
	TaskID             string   `json:"task_id"`
	FilesToEdit        []string `json:"files_to_edit,omitempty"`
	ResumeInstructions string   `json:"resume_instructions,omitempty"`
	RunID              string   `json:"run_id,omitempty"`
	TraceID            string   `json:"trace_id,omitempty"`
}

type GetNextWorkTaskInput

type GetNextWorkTaskInput struct {
	ProjectID          string `json:"project_id,omitempty"`
	PlanID             string `json:"plan_id,omitempty"`
	OwnerAgent         string `json:"owner_agent,omitempty"`
	RunID              string `json:"run_id,omitempty"`
	TraceID            string `json:"trace_id,omitempty"`
	IncludeClaimedByMe bool   `json:"include_claimed_by_me,omitempty"`
}

type GetNextWorkTaskResult

type GetNextWorkTaskResult struct {
	Found                bool                `json:"found"`
	Task                 WorkTask            `json:"task,omitempty"`
	Plan                 WorkPlan            `json:"plan,omitempty"`
	DependencySummary    []DependencySummary `json:"dependency_summary,omitempty"`
	EvidenceRefs         []string            `json:"evidence_refs,omitempty"`
	ContextPackRefs      []string            `json:"context_pack_refs,omitempty"`
	ResumeInstructions   string              `json:"resume_instructions,omitempty"`
	RequiredVerification string              `json:"required_verification,omitempty"`
	SafeReason           string              `json:"safe_reason,omitempty"`
	OpenCount            int                 `json:"open_count"`
	BlockedCount         int                 `json:"blocked_count"`
	ClaimedCount         int                 `json:"claimed_count"`
	Reason               string              `json:"reason,omitempty"`
}

type ResumeWorkPlanInput

type ResumeWorkPlanInput struct {
	ProjectID string `json:"project_id,omitempty"`
	PlanID    string `json:"plan_id"`
}

type Service

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

func New

func New(store Store) *Service

func (*Service) AttachClaim

func (svc *Service) AttachClaim(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) AttachContextPack

func (svc *Service) AttachContextPack(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) AttachEvidence

func (svc *Service) AttachEvidence(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) AttachKnowledgeCandidate

func (svc *Service) AttachKnowledgeCandidate(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) AttachReviewResult

func (svc *Service) AttachReviewResult(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) AttachVerifierResult

func (svc *Service) AttachVerifierResult(ctx context.Context, input AttachInput) (Attachment, error)

func (*Service) BlockWorkTask

func (svc *Service) BlockWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) CallWorkPlanTool

func (svc *Service) CallWorkPlanTool(ctx context.Context, name string, arguments json.RawMessage) (any, error)

CallWorkPlanTool adapts MCP tool calls onto the service-owned validation and state machine.

func (*Service) ClaimWorkTask

func (svc *Service) ClaimWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) CompleteWorkTask

func (svc *Service) CompleteWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) CreateWorkPlan

func (svc *Service) CreateWorkPlan(ctx context.Context, input CreateWorkPlanInput) (WorkPlan, error)

func (*Service) CreateWorkTask

func (svc *Service) CreateWorkTask(ctx context.Context, input CreateWorkTaskInput) (WorkTask, error)

func (*Service) ExpandWorkTaskScope added in v0.2.4

func (svc *Service) ExpandWorkTaskScope(ctx context.Context, input ExpandWorkTaskScopeInput) (WorkTask, error)

func (*Service) FailWorkTask

func (svc *Service) FailWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) GetNextWorkTask

func (svc *Service) GetNextWorkTask(ctx context.Context, input GetNextWorkTaskInput) (GetNextWorkTaskResult, error)

func (*Service) GetWorkPlan

func (svc *Service) GetWorkPlan(ctx context.Context, projectID, planID string) (WorkPlan, error)

func (*Service) GetWorkTask

func (svc *Service) GetWorkTask(ctx context.Context, projectID, taskID string) (WorkTask, error)

func (*Service) ListBlockedWorkTasks

func (svc *Service) ListBlockedWorkTasks(ctx context.Context, filter WorkTaskFilter) ([]WorkTask, error)

func (*Service) ListMineWorkTasks

func (svc *Service) ListMineWorkTasks(ctx context.Context, filter WorkTaskFilter) ([]WorkTask, error)

func (*Service) ListOpenWorkTasks

func (svc *Service) ListOpenWorkTasks(ctx context.Context, filter WorkTaskFilter) ([]WorkTask, error)

func (*Service) ListWorkPlans

func (svc *Service) ListWorkPlans(ctx context.Context, filter WorkPlanFilter) ([]WorkPlan, error)

func (*Service) ReleaseWorkTask

func (svc *Service) ReleaseWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) ResumeWorkPlan

func (svc *Service) ResumeWorkPlan(ctx context.Context, input ResumeWorkPlanInput) (WorkPlan, error)

func (*Service) SetStatusChangeHandler added in v0.2.1

func (svc *Service) SetStatusChangeHandler(handler WorkPlanStatusChangeHandler)

func (*Service) StartWorkTask

func (svc *Service) StartWorkTask(ctx context.Context, input WorkTaskActionInput) (WorkTask, error)

func (*Service) UpdateWorkPlanStatus

func (svc *Service) UpdateWorkPlanStatus(ctx context.Context, input UpdateWorkPlanStatusInput) (WorkPlan, error)

func (*Service) UpdateWorkTaskStatus

func (svc *Service) UpdateWorkTaskStatus(ctx context.Context, input UpdateWorkTaskStatusInput) (WorkTask, error)

type Store

type Store interface {
	CreateWorkPlan(context.Context, WorkPlan) (WorkPlan, error)
	GetWorkPlan(context.Context, string, string) (WorkPlan, error)
	ListWorkPlans(context.Context, WorkPlanFilter) ([]WorkPlan, error)
	UpdateWorkPlan(context.Context, WorkPlan) (WorkPlan, error)
	CreateWorkTask(context.Context, WorkTask) (WorkTask, error)
	GetWorkTask(context.Context, string, string) (WorkTask, error)
	ListWorkTasks(context.Context, WorkTaskFilter) ([]WorkTask, error)
	UpdateWorkTask(context.Context, WorkTask) (WorkTask, error)
	CreateAttachment(context.Context, Attachment) (Attachment, error)
	ListAttachments(context.Context, string, string) ([]Attachment, error)
}

type UpdateWorkPlanStatusInput

type UpdateWorkPlanStatusInput struct {
	ProjectID      string `json:"project_id,omitempty"`
	PlanID         string `json:"plan_id"`
	Status         string `json:"status"`
	SafeNextAction string `json:"safe_next_action,omitempty"`
	ResumeSummary  string `json:"resume_summary,omitempty"`
	Outcome        string `json:"outcome,omitempty"`
	CurrentTaskID  string `json:"current_task_id,omitempty"`
	RunID          string `json:"run_id,omitempty"`
	TraceID        string `json:"trace_id,omitempty"`
}

type UpdateWorkTaskStatusInput

type UpdateWorkTaskStatusInput struct {
	WorkTaskActionInput
	Status string `json:"status"`
}

type WorkPlan

type WorkPlan struct {
	ID               string    `json:"id"`
	ProjectID        string    `json:"project_id"`
	PlanRef          string    `json:"plan_ref"`
	UserRequestRef   string    `json:"user_request_ref,omitempty"`
	Title            string    `json:"title"`
	GoalSummary      string    `json:"goal_summary"`
	Status           string    `json:"status"`
	OwnerAgent       string    `json:"owner_agent,omitempty"`
	CreatedByRunID   string    `json:"created_by_run_id,omitempty"`
	TraceID          string    `json:"trace_id,omitempty"`
	CurrentTaskID    string    `json:"current_task_id,omitempty"`
	ResumeSummary    string    `json:"resume_summary,omitempty"`
	Outcome          string    `json:"outcome,omitempty"`
	IsolationMode    string    `json:"isolation_mode,omitempty"`
	ParallelGroupRef string    `json:"parallel_group_ref,omitempty"`
	WorkspaceRef     string    `json:"workspace_ref,omitempty"`
	GitBaseRef       string    `json:"git_base_ref,omitempty"`
	GitBranchRef     string    `json:"git_branch_ref,omitempty"`
	GitWorktreeRef   string    `json:"git_worktree_ref,omitempty"`
	CreatedAt        time.Time `json:"created_at"`
	UpdatedAt        time.Time `json:"updated_at"`
}

type WorkPlanFilter

type WorkPlanFilter struct {
	ProjectID  string `json:"project_id,omitempty"`
	Status     string `json:"status,omitempty"`
	OwnerAgent string `json:"owner_agent,omitempty"`
	PageSize   int    `json:"page_size,omitempty"`
	PageToken  string `json:"page_token,omitempty"`
}

type WorkPlanStatusChange added in v0.2.1

type WorkPlanStatusChange struct {
	ProjectID  string
	PlanID     string
	PlanRef    string
	OldStatus  string
	NewStatus  string
	OwnerAgent string
	ChangedAt  time.Time
}

type WorkPlanStatusChangeHandler added in v0.2.1

type WorkPlanStatusChangeHandler interface {
	HandleWorkPlanStatusChanged(context.Context, WorkPlanStatusChange) error
}

type WorkTask

type WorkTask struct {
	ID                      string    `json:"id"`
	ProjectID               string    `json:"project_id"`
	PlanID                  string    `json:"plan_id"`
	TaskRef                 string    `json:"task_ref"`
	Title                   string    `json:"title"`
	Description             string    `json:"description,omitempty"`
	Status                  string    `json:"status"`
	OwnerAgent              string    `json:"owner_agent,omitempty"`
	ClaimedByRunID          string    `json:"claimed_by_run_id,omitempty"`
	TraceID                 string    `json:"trace_id,omitempty"`
	EvidenceNeeded          []string  `json:"evidence_needed,omitempty"`
	ContextPackRefs         []string  `json:"context_pack_refs,omitempty"`
	FilesToRead             []string  `json:"files_to_read,omitempty"`
	FilesToEdit             []string  `json:"files_to_edit,omitempty"`
	LikelyFilesAffected     []string  `json:"likely_files_affected,omitempty"`
	DependencyTaskIDs       []string  `json:"dependency_task_ids,omitempty"`
	VerificationRequirement string    `json:"verification_requirement"`
	ExpectedOutput          string    `json:"expected_output,omitempty"`
	FailureCriteria         string    `json:"failure_criteria,omitempty"`
	ReviewGate              string    `json:"review_gate,omitempty"`
	Outcome                 string    `json:"outcome,omitempty"`
	ResumeInstructions      string    `json:"resume_instructions,omitempty"`
	BlockedReason           string    `json:"blocked_reason,omitempty"`
	BlockedByTaskIDs        []string  `json:"blocked_by_task_ids,omitempty"`
	KnowledgeCandidateRefs  []string  `json:"knowledge_candidate_refs,omitempty"`
	EvidenceRefs            []string  `json:"evidence_refs,omitempty"`
	ClaimRefs               []string  `json:"claim_refs,omitempty"`
	VerifierResultRefs      []string  `json:"verifier_result_refs,omitempty"`
	ReviewResultRefs        []string  `json:"review_result_refs,omitempty"`
	ReviewExemptReason      string    `json:"review_exempt_reason,omitempty"`
	ArtifactRefs            []string  `json:"artifact_refs,omitempty"`
	AgentRunIDs             []string  `json:"agent_run_ids,omitempty"`
	DecompositionQuality    string    `json:"decomposition_quality"`
	CreatedAt               time.Time `json:"created_at"`
	UpdatedAt               time.Time `json:"updated_at"`
	ClaimedAt               time.Time `json:"claimed_at,omitempty"`
	StartedAt               time.Time `json:"started_at,omitempty"`
	CompletedAt             time.Time `json:"completed_at,omitempty"`
}

type WorkTaskActionInput

type WorkTaskActionInput struct {
	ProjectID          string   `json:"project_id,omitempty"`
	TaskID             string   `json:"task_id"`
	OwnerAgent         string   `json:"owner_agent,omitempty"`
	RunID              string   `json:"run_id,omitempty"`
	TraceID            string   `json:"trace_id,omitempty"`
	Outcome            string   `json:"outcome,omitempty"`
	SafeNextAction     string   `json:"safe_next_action,omitempty"`
	BlockedReason      string   `json:"blocked_reason,omitempty"`
	BlockedByTaskIDs   []string `json:"blocked_by_task_ids,omitempty"`
	ContextPackRefs    []string `json:"context_pack_refs,omitempty"`
	EvidenceRefs       []string `json:"evidence_refs,omitempty"`
	ClaimRefs          []string `json:"claim_refs,omitempty"`
	KnowledgeRefs      []string `json:"knowledge_candidate_refs,omitempty"`
	ResumeInstructions string   `json:"resume_instructions,omitempty"`
	VerifierResultRefs []string `json:"verifier_result_refs,omitempty"`
	ReviewResultRefs   []string `json:"review_result_refs,omitempty"`
	ReviewExemptReason string   `json:"review_exempt_reason,omitempty"`
}

type WorkTaskFilter

type WorkTaskFilter struct {
	ProjectID      string `json:"project_id,omitempty"`
	PlanID         string `json:"plan_id,omitempty"`
	Status         string `json:"status,omitempty"`
	OwnerAgent     string `json:"owner_agent,omitempty"`
	ClaimedByRunID string `json:"claimed_by_run_id,omitempty"`
	PageSize       int    `json:"page_size,omitempty"`
	PageToken      string `json:"page_token,omitempty"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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