project

package
v0.19.0 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ActivitySourceSystem = "system"
	ActivitySourcePM     = "pm"
	ActivitySourceAgent  = "agent"
)
View Source
const (
	ActivityKindAssignment       = "assignment"
	ActivityKindAgentReport      = "agent_report"
	ActivityKindBlocker          = "blocker"
	ActivityKindDecision         = "decision"
	ActivityKindReplan           = "replan"
	ActivityKindTaskStatus       = "task_status"
	ActivityKindProjectCreated   = "project_created"
	ActivityKindProjectUpdated   = "project_updated"
	ActivityKindProjectArchived  = "project_archived"
	ActivityKindStateChanged     = "state_changed"
	ActivityKindBoardTaskCreated = "board_task_created"
	ActivityKindBoardTaskUpdated = "board_task_updated"
	ActivityKindBranchStatus     = "branch_status"
	ActivityKindReviewStatus     = "review_status"
	ActivityKindTestStatus       = "test_status"
	ActivityKindBuildStatus      = "build_status"
	ActivityKindIssueStatus      = "issue_status"
	ActivityKindPRStatus         = "pr_status"
)
View Source
const (
	WorkerKindDefault    = "default"
	WorkerKindCodexCLI   = "codex-cli"
	WorkerKindClaudeCode = "claude-code"
)

Variables

This section is empty.

Functions

func ApplyToolConstraints

func ApplyToolConstraints(names []string, policy NormalizedToolPolicy) []string

func ApplyToolPolicy

func ApplyToolPolicy(base []string, policy NormalizedToolPolicy) []string

func BuildTaskPrompt added in v0.3.0

func BuildTaskPrompt(task BoardTask, proj Project, profile WorkerProfile, skills ...SkillContent) string

BuildTaskPrompt assembles the initial instruction for a task worker. Optional skills are appended as a ## Project Skills section.

func BuiltinWorkerProfiles added in v0.3.0

func BuiltinWorkerProfiles() map[string]WorkerProfile

func CronPromptContext

func CronPromptContext(workspaceDir string, item Project) string

func KnownToolGroups

func KnownToolGroups(known map[string]struct{}) map[string][]string

func PhaseAwareProjectPromptContext added in v0.15.1

func PhaseAwareProjectPromptContext(item Project, state *ProjectState) string

PhaseAwareProjectPromptContext renders project context with planning-mode instructions when the project state is in the "planning" phase.

func ProjectPromptContext

func ProjectPromptContext(item Project) string

func RenderPromptContext

func RenderPromptContext(item Project, opts PromptContextOptions) string

Types

type Activity added in v0.3.0

type Activity struct {
	ID        string            `json:"id"`
	ProjectID string            `json:"project_id"`
	TaskID    string            `json:"task_id,omitempty"`
	Source    string            `json:"source"`
	Agent     string            `json:"agent,omitempty"`
	Kind      string            `json:"kind"`
	Status    string            `json:"status,omitempty"`
	Message   string            `json:"message,omitempty"`
	Timestamp string            `json:"timestamp"`
	Meta      map[string]string `json:"meta,omitempty"`
}

type ActivityAppendInput added in v0.3.0

type ActivityAppendInput struct {
	TaskID    string
	Source    string
	Agent     string
	Kind      string
	Status    string
	Message   string
	Timestamp string
	Meta      map[string]string
}

type Board added in v0.3.0

type Board struct {
	ProjectID string      `json:"project_id" yaml:"project_id"`
	UpdatedAt string      `json:"updated_at,omitempty" yaml:"updated_at,omitempty"`
	Columns   []string    `json:"columns" yaml:"columns"`
	Tasks     []BoardTask `json:"tasks,omitempty" yaml:"tasks,omitempty"`
	Path      string      `json:"path,omitempty" yaml:"-"`
}

type BoardTask added in v0.3.0

type BoardTask struct {
	ID               string `json:"id" yaml:"id"`
	Title            string `json:"title" yaml:"title"`
	Status           string `json:"status" yaml:"status"`
	Assignee         string `json:"assignee,omitempty" yaml:"assignee,omitempty"`
	Role             string `json:"role,omitempty" yaml:"role,omitempty"`
	WorkerKind       string `json:"worker_kind,omitempty" yaml:"worker_kind,omitempty"`
	Issue            string `json:"issue,omitempty" yaml:"issue,omitempty"`
	Branch           string `json:"branch,omitempty" yaml:"branch,omitempty"`
	PR               string `json:"pr,omitempty" yaml:"pr,omitempty"`
	ReviewApprovedBy string `json:"review_approved_by,omitempty" yaml:"review_approved_by,omitempty"`
	ReviewRequired   bool   `json:"review_required,omitempty" yaml:"review_required,omitempty"`
	TestCommand      string `json:"test_command,omitempty" yaml:"test_command,omitempty"`
	BuildCommand     string `json:"build_command,omitempty" yaml:"build_command,omitempty"`
}

type BoardUpdateInput added in v0.3.0

type BoardUpdateInput struct {
	Columns []string
	Tasks   []BoardTask
}

type Brief

type Brief struct {
	ID                 string   `json:"id"`
	Title              string   `json:"title,omitempty"`
	Goal               string   `json:"goal,omitempty"`
	Kind               string   `json:"kind,omitempty"`
	Genre              string   `json:"genre,omitempty"`
	TargetLength       string   `json:"target_length,omitempty"`
	Cadence            string   `json:"cadence,omitempty"`
	TargetInstallments string   `json:"target_installments,omitempty"`
	Premise            string   `json:"premise,omitempty"`
	PlotSeed           string   `json:"plot_seed,omitempty"`
	StylePreferences   string   `json:"style_preferences,omitempty"`
	Constraints        []string `json:"constraints,omitempty"`
	MustHave           []string `json:"must_have,omitempty"`
	MustAvoid          []string `json:"must_avoid,omitempty"`
	OpenQuestions      []string `json:"open_questions,omitempty"`
	Decisions          []string `json:"decisions,omitempty"`
	Status             string   `json:"status,omitempty"`
	Summary            string   `json:"summary,omitempty"`
	Body               string   `json:"body,omitempty"`
	Path               string   `json:"path,omitempty"`
}

type BriefUpdateInput

type BriefUpdateInput struct {
	Title              *string
	Goal               *string
	Kind               *string
	Genre              *string
	TargetLength       *string
	Cadence            *string
	TargetInstallments *string
	Premise            *string
	PlotSeed           *string
	StylePreferences   *string
	Constraints        []string
	MustHave           []string
	MustAvoid          []string
	OpenQuestions      []string
	Decisions          []string
	Status             *string
	Summary            *string
	Body               *string
}

type CreateInput

type CreateInput struct {
	Name            string
	Type            string
	GitRepo         string
	SourcePath      string
	Objective       string
	WorkflowProfile string
	WorkflowRules   []WorkflowRule
	Instructions    string
	CloneRepo       bool
	ExecutionMode   string
	MaxPhases       int
	SubAgents       []SubAgentConfig
	SkillsAllow     []string
}

type DispatchReport added in v0.3.0

type DispatchReport struct {
	ProjectID string
	Runs      []TaskRun
}

type GitHubAuthChecker added in v0.3.0

type GitHubAuthChecker func(context.Context) error

func DefaultGitHubAuthChecker added in v0.4.0

func DefaultGitHubAuthChecker() GitHubAuthChecker

type NormalizedToolPolicy

type NormalizedToolPolicy struct {
	ToolsAllow         []string
	ToolsAllowGroups   []string
	ToolsAllowPatterns []string
	ToolsDeny          []string
	ToolsRiskMax       string
	AllowedTools       []string
	UnknownTools       []string
	UnknownGroups      []string
	InvalidPatterns    []string
	UnknownDeny        []string
	InvalidRiskMax     bool
	HasAllowSource     bool
	HasPolicy          bool
}

func NormalizeToolPolicy

func NormalizeToolPolicy(spec ToolPolicySpec, known map[string]struct{}, opts ToolPolicyOptions) NormalizedToolPolicy

type Orchestrator added in v0.3.0

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

func NewOrchestrator added in v0.3.0

func NewOrchestrator(store *Store, runner TaskRunner) *Orchestrator

func NewOrchestratorWithGitHubAuthChecker added in v0.3.0

func NewOrchestratorWithGitHubAuthChecker(store *Store, runner TaskRunner, checker GitHubAuthChecker) *Orchestrator

func (*Orchestrator) DispatchReview added in v0.3.0

func (o *Orchestrator) DispatchReview(ctx context.Context, projectID string) (DispatchReport, error)

func (*Orchestrator) DispatchTodo added in v0.3.0

func (o *Orchestrator) DispatchTodo(ctx context.Context, projectID string) (DispatchReport, error)

func (*Orchestrator) PlanTasks added in v0.15.0

func (o *Orchestrator) PlanTasks(ctx context.Context, projectID string) ([]BoardTask, error)

PlanTasks calls the LLM to generate board tasks from the project brief and state. Returns a list of tasks with status="todo" ready for dispatch.

func (*Orchestrator) SetSkillResolver added in v0.15.0

func (o *Orchestrator) SetSkillResolver(r SkillResolver)

SetSkillResolver sets the resolver used to inject project skill content into task prompts. May be nil.

type Project

type Project struct {
	ID                 string           `json:"id" yaml:"id"`
	Name               string           `json:"name" yaml:"name"`
	Type               string           `json:"type" yaml:"type"`
	Status             string           `json:"status" yaml:"status"`
	GitRepo            string           `json:"git_repo,omitempty" yaml:"git_repo,omitempty"`
	SourcePath         string           `json:"source_path,omitempty" yaml:"source_path,omitempty"`
	CreatedAt          string           `json:"created_at" yaml:"created_at"`
	UpdatedAt          string           `json:"updated_at" yaml:"updated_at"`
	Objective          string           `json:"objective,omitempty" yaml:"objective,omitempty"`
	ToolsAllow         []string         `json:"tools_allow,omitempty" yaml:"tools_allow,omitempty"`
	ToolsAllowGroups   []string         `json:"tools_allow_groups,omitempty" yaml:"tools_allow_groups,omitempty"`
	ToolsAllowPatterns []string         `json:"tools_allow_patterns,omitempty" yaml:"tools_allow_patterns,omitempty"`
	ToolsDeny          []string         `json:"tools_deny,omitempty" yaml:"tools_deny,omitempty"`
	ToolsRiskMax       string           `json:"tools_risk_max,omitempty" yaml:"tools_risk_max,omitempty"`
	SkillsAllow        []string         `json:"skills_allow,omitempty" yaml:"skills_allow,omitempty"`
	WorkflowProfile    string           `json:"workflow_profile,omitempty" yaml:"workflow_profile,omitempty"`
	WorkflowRules      []WorkflowRule   `json:"workflow_rules,omitempty" yaml:"workflow_rules,omitempty"`
	MCPServers         []string         `json:"mcp_servers,omitempty" yaml:"mcp_servers,omitempty"`
	SecretsRefs        []string         `json:"secrets_refs,omitempty" yaml:"secrets_refs,omitempty"`
	ExecutionMode      string           `json:"execution_mode,omitempty" yaml:"execution_mode,omitempty"`
	MaxPhases          int              `json:"max_phases,omitempty" yaml:"max_phases,omitempty"`
	SubAgents          []SubAgentConfig `json:"sub_agents,omitempty" yaml:"sub_agents,omitempty"`
	SessionID          string           `json:"session_id,omitempty" yaml:"session_id,omitempty"`
	Body               string           `json:"body,omitempty" yaml:"-"`
	Path               string           `json:"path,omitempty" yaml:"-"`
}

func (Project) WorkingDir added in v0.15.0

func (p Project) WorkingDir() string

WorkingDir returns the project's working directory. If SourcePath is set, returns it; otherwise returns the metadata Path.

type ProjectState

type ProjectState struct {
	ProjectID         string   `json:"project_id"`
	Goal              string   `json:"goal,omitempty"`
	Phase             string   `json:"phase,omitempty"`
	Status            string   `json:"status,omitempty"`
	PhaseNumber       int      `json:"phase_number,omitempty"`
	NextAction        string   `json:"next_action,omitempty"`
	RemainingTasks    []string `json:"remaining_tasks,omitempty"`
	CompletionSummary string   `json:"completion_summary,omitempty"`
	LastRunSummary    string   `json:"last_run_summary,omitempty"`
	LastRunAt         string   `json:"last_run_at,omitempty"`
	StopReason        string   `json:"stop_reason,omitempty"`
	Body              string   `json:"body,omitempty"`
	Path              string   `json:"path,omitempty"`
}

type ProjectStateUpdateInput

type ProjectStateUpdateInput struct {
	Goal              *string
	Phase             *string
	Status            *string
	PhaseNumber       *int
	NextAction        *string
	RemainingTasks    []string
	CompletionSummary *string
	LastRunSummary    *string
	LastRunAt         *string
	StopReason        *string
	Body              *string
}

type PromptContextOptions

type PromptContextOptions struct {
	Header            string
	FieldPrefix       string
	ArtifactsDir      string
	IncludeObjective  bool
	IncludeToolsAllow bool
	IncludeBody       bool
	BodyHeader        string
}

type SkillContent added in v0.15.0

type SkillContent struct {
	Name    string
	Content string
}

SkillContent holds the resolved name and body of a single skill.

type SkillResolver added in v0.15.0

type SkillResolver interface {
	ResolveSkills(names []string) []SkillContent
}

SkillResolver resolves skill names into their content for injection into task prompts. Implementations live outside the project package to avoid importing the skill or extensions packages.

type Store

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

func NewStore

func NewStore(workspaceDir string, nowFn func() time.Time) *Store

func (*Store) ActivityPath added in v0.3.0

func (s *Store) ActivityPath(projectID string) string

func (*Store) AppendActivity added in v0.3.0

func (s *Store) AppendActivity(projectID string, input ActivityAppendInput) (Activity, error)

func (*Store) Archive

func (s *Store) Archive(id string) (Project, error)

func (*Store) BoardPath added in v0.3.0

func (s *Store) BoardPath(projectID string) string

func (*Store) BriefPath

func (s *Store) BriefPath(id string) string

func (*Store) Create

func (s *Store) Create(input CreateInput) (Project, error)

func (*Store) Delete added in v0.14.0

func (s *Store) Delete(id string) error

Delete permanently removes a project directory from disk.

func (*Store) DeleteAll added in v0.14.0

func (s *Store) DeleteAll() (int, error)

DeleteAll permanently removes all project directories from disk.

func (*Store) FinalizeBrief

func (s *Store) FinalizeBrief(id string, sessionStore *session.Store) (Project, Brief, error)

func (*Store) Get

func (s *Store) Get(id string) (Project, error)

func (*Store) GetBoard added in v0.3.0

func (s *Store) GetBoard(projectID string) (Board, error)

func (*Store) GetBrief

func (s *Store) GetBrief(id string) (Brief, error)

func (*Store) GetState

func (s *Store) GetState(projectID string) (ProjectState, error)

func (*Store) List

func (s *Store) List() ([]Project, error)

func (*Store) ListActivity added in v0.3.0

func (s *Store) ListActivity(projectID string, limit int) ([]Activity, error)

func (*Store) ListRecentActivity added in v0.3.0

func (s *Store) ListRecentActivity(projectID string) ([]Activity, error)

func (*Store) ProjectDir added in v0.15.0

func (s *Store) ProjectDir(projectID string) string

ProjectDir returns the filesystem path for a project's directory.

func (*Store) ProjectFilePath

func (s *Store) ProjectFilePath(projectID, name string) string

func (*Store) StatePath

func (s *Store) StatePath(projectID string) string

func (*Store) Update

func (s *Store) Update(id string, input UpdateInput) (Project, error)

func (*Store) UpdateBoard added in v0.3.0

func (s *Store) UpdateBoard(projectID string, input BoardUpdateInput) (Board, error)

func (*Store) UpdateBrief

func (s *Store) UpdateBrief(id string, input BriefUpdateInput) (Brief, error)

func (*Store) UpdateState

func (s *Store) UpdateState(projectID string, input ProjectStateUpdateInput) (ProjectState, error)

type SubAgentConfig added in v0.15.0

type SubAgentConfig struct {
	Role        string `json:"role" yaml:"role"`
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
	RunAfter    string `json:"run_after,omitempty" yaml:"run_after,omitempty"`
}

type TaskReport added in v0.3.0

type TaskReport struct {
	Status  string
	Summary string
	Tests   string
	Build   string
	Issue   string
	Branch  string
	PR      string
	Notes   string
}

func ParseTaskReport added in v0.3.0

func ParseTaskReport(raw string) TaskReport

type TaskRun added in v0.3.0

type TaskRun struct {
	ID         string
	TaskID     string
	Agent      string
	WorkerKind string
	Status     TaskRunStatus
	Response   string
	Error      string
}

type TaskRunRequest added in v0.3.0

type TaskRunRequest struct {
	ProjectID  string
	TaskID     string
	Title      string
	Prompt     string
	Agent      string
	Role       string
	WorkerKind string
}

type TaskRunStatus added in v0.3.0

type TaskRunStatus string
const (
	TaskRunStatusAccepted  TaskRunStatus = "accepted"
	TaskRunStatusRunning   TaskRunStatus = "running"
	TaskRunStatusCompleted TaskRunStatus = "completed"
	TaskRunStatusFailed    TaskRunStatus = "failed"
	TaskRunStatusCanceled  TaskRunStatus = "canceled"
)

type TaskRunner added in v0.3.0

type TaskRunner interface {
	Start(ctx context.Context, req TaskRunRequest) (TaskRun, error)
	Wait(ctx context.Context, runID string) (TaskRun, error)
}

type ToolPolicyOptions

type ToolPolicyOptions struct {
	ExpandAllKnownWhenPolicyWithoutAllowSource bool
}

type ToolPolicySpec

type ToolPolicySpec struct {
	ToolsAllow               []string
	ToolsAllowExists         bool
	ToolsAllowGroups         []string
	ToolsAllowGroupsExists   bool
	ToolsAllowPatterns       []string
	ToolsAllowPatternsExists bool
	ToolsDeny                []string
	ToolsDenyExists          bool
	ToolsRiskMax             string
	ToolsRiskMaxExists       bool
}

func (ToolPolicySpec) HasAllowSource

func (s ToolPolicySpec) HasAllowSource() bool

func (ToolPolicySpec) HasPolicy

func (s ToolPolicySpec) HasPolicy() bool

type UpdateInput

type UpdateInput struct {
	Name               *string
	Type               *string
	Status             *string
	GitRepo            *string
	SourcePath         *string
	Objective          *string
	Instructions       *string
	ExecutionMode      *string
	MaxPhases          *int
	SubAgents          []SubAgentConfig
	SessionID          *string
	ToolsAllow         []string
	ToolsAllowGroups   []string
	ToolsAllowPatterns []string
	ToolsDeny          []string
	ToolsRiskMax       *string
	SkillsAllow        []string
	WorkflowProfile    *string
	WorkflowRules      []WorkflowRule
	MCPServers         []string
	SecretsRefs        []string
}

type UpdatePayload

type UpdatePayload struct {
	ProjectID          string           `json:"project_id,omitempty"`
	Name               *string          `json:"name,omitempty"`
	Type               *string          `json:"type,omitempty"`
	Status             *string          `json:"status,omitempty"`
	GitRepo            *string          `json:"git_repo,omitempty"`
	SourcePath         *string          `json:"source_path,omitempty"`
	Objective          *string          `json:"objective,omitempty"`
	Instructions       *string          `json:"instructions,omitempty"`
	ExecutionMode      *string          `json:"execution_mode,omitempty"`
	MaxPhases          *int             `json:"max_phases,omitempty"`
	SubAgents          []SubAgentConfig `json:"sub_agents,omitempty"`
	ToolsAllow         []string         `json:"tools_allow,omitempty"`
	ToolsAllowGroups   []string         `json:"tools_allow_groups,omitempty"`
	ToolsAllowPatterns []string         `json:"tools_allow_patterns,omitempty"`
	ToolsDeny          []string         `json:"tools_deny,omitempty"`
	ToolsRiskMax       *string          `json:"tools_risk_max,omitempty"`
	SkillsAllow        []string         `json:"skills_allow,omitempty"`
	WorkflowProfile    *string          `json:"workflow_profile,omitempty"`
	WorkflowRules      []WorkflowRule   `json:"workflow_rules,omitempty"`
	MCPServers         []string         `json:"mcp_servers,omitempty"`
	SecretsRefs        []string         `json:"secrets_refs,omitempty"`
}

func (UpdatePayload) ToUpdateInput

func (p UpdatePayload) ToUpdateInput() UpdateInput

type WorkerProfile added in v0.3.0

type WorkerProfile struct {
	Kind         string
	ExecutorName string
	Command      string
	Args         []string
	Description  string
}

func ResolveWorkerProfile added in v0.3.0

func ResolveWorkerProfile(task BoardTask) (WorkerProfile, error)

func ResolveWorkerProfileForProject added in v0.12.0

func ResolveWorkerProfileForProject(project Project, task BoardTask) (WorkerProfile, error)

type WorkflowBoardState added in v0.15.0

type WorkflowBoardState struct {
	TaskCount       int
	TodoCount       int
	InProgressCount int
	ReviewCount     int
	DoneCount       int
}

func (WorkflowBoardState) AllDone added in v0.15.0

func (s WorkflowBoardState) AllDone() bool

func (WorkflowBoardState) CountForStatus added in v0.15.0

func (s WorkflowBoardState) CountForStatus(status string) int

func (WorkflowBoardState) HasDispatchableTasks added in v0.15.0

func (s WorkflowBoardState) HasDispatchableTasks() bool

func (WorkflowBoardState) HasInProgressTasks added in v0.15.0

func (s WorkflowBoardState) HasInProgressTasks() bool

func (WorkflowBoardState) IsEmpty added in v0.15.0

func (s WorkflowBoardState) IsEmpty() bool

type WorkflowEvent added in v0.15.0

type WorkflowEvent string
const (
	WorkflowEventKickoffRequested  WorkflowEvent = "kickoff_requested"
	WorkflowEventBriefFinalized    WorkflowEvent = "brief_finalized"
	WorkflowEventPlanningRequested WorkflowEvent = "planning_requested"
)

type WorkflowEventContext added in v0.15.0

type WorkflowEventContext struct {
	UserMessage string
	ProjectID   string
	Project     Project
	State       *ProjectState
	Brief       Brief
}

type WorkflowEventResolution added in v0.15.0

type WorkflowEventResolution struct {
	RuntimeState           WorkflowRuntimeState
	Transition             WorkflowStateTransition
	CreateDedicatedSession bool
	PlanningReady          bool
}

type WorkflowExecutionPolicy added in v0.12.0

type WorkflowExecutionPolicy struct {
	Profile           string
	DefaultWorkerKind string
	ReviewWorkerKind  string
	RequireGitHubAuth bool
	RequireTests      bool
	RequireBuild      bool
	RequireIssue      bool
	RequireBranch     bool
	RequirePR         bool
}

func ResolveWorkflowExecutionPolicy added in v0.12.0

func ResolveWorkflowExecutionPolicy(project Project) WorkflowExecutionPolicy

type WorkflowPolicy added in v0.6.0

type WorkflowPolicy struct{}
var DefaultWorkflowPolicy WorkflowPolicy

func (WorkflowPolicy) AllBoardTasksDone added in v0.6.0

func (p WorkflowPolicy) AllBoardTasksDone(board Board) bool

func (WorkflowPolicy) BoardHasStatus added in v0.6.0

func (p WorkflowPolicy) BoardHasStatus(board Board, status string) bool

func (WorkflowPolicy) DefaultProjectNextAction added in v0.6.0

func (p WorkflowPolicy) DefaultProjectNextAction(brief Brief) string

func (WorkflowPolicy) DefaultProjectState added in v0.6.0

func (p WorkflowPolicy) DefaultProjectState(projectID string) ProjectState

func (WorkflowPolicy) FilterDispatchableTasks added in v0.6.0

func (WorkflowPolicy) FilterDispatchableTasks(status string, tasks []BoardTask) []BoardTask

func (WorkflowPolicy) FirstTaskByStatus added in v0.6.0

func (WorkflowPolicy) FirstTaskByStatus(board Board, status string) (BoardTask, bool)

func (WorkflowPolicy) HasActiveBriefStatus added in v0.6.0

func (p WorkflowPolicy) HasActiveBriefStatus(status string) bool

func (WorkflowPolicy) InitialProjectState added in v0.6.0

func (p WorkflowPolicy) InitialProjectState(brief Brief) workflowStateUpdate

func (WorkflowPolicy) IsKickoffMessage added in v0.6.0

func (WorkflowPolicy) IsKickoffMessage(message string) bool

func (WorkflowPolicy) NormalizeBriefStatus added in v0.6.0

func (WorkflowPolicy) NormalizeBriefStatus(raw string) string

func (WorkflowPolicy) NormalizeDispatchStage added in v0.6.0

func (WorkflowPolicy) NormalizeDispatchStage(raw string) (string, bool)

func (WorkflowPolicy) NormalizeProjectStatePhase added in v0.6.0

func (WorkflowPolicy) NormalizeProjectStatePhase(raw string) string

func (WorkflowPolicy) NormalizeProjectStateStatus added in v0.6.0

func (WorkflowPolicy) NormalizeProjectStateStatus(raw string) string

func (WorkflowPolicy) ProjectStateSummary added in v0.6.0

func (p WorkflowPolicy) ProjectStateSummary(item Project, state *ProjectState) (status, phase, nextAction string)

func (WorkflowPolicy) RecoverStalledTasks added in v0.6.0

func (WorkflowPolicy) RecoverStalledTasks(tasks []BoardTask) ([]BoardTask, []string, bool)

func (WorkflowPolicy) ResolveBoardState added in v0.15.0

func (WorkflowPolicy) ResolveBoardState(board Board) WorkflowBoardState

func (WorkflowPolicy) ResolveEvent added in v0.15.0

func (WorkflowPolicy) ResolveRuntimeState added in v0.15.0

func (p WorkflowPolicy) ResolveRuntimeState(item Project, state *ProjectState) WorkflowRuntimeState

func (WorkflowPolicy) StateInputForProjectStatus added in v0.15.0

func (p WorkflowPolicy) StateInputForProjectStatus(status string) (ProjectStateUpdateInput, bool)

func (WorkflowPolicy) StateUpdateForProjectStatus added in v0.15.0

func (p WorkflowPolicy) StateUpdateForProjectStatus(status string) (workflowStateUpdate, bool)

func (WorkflowPolicy) TasksForDispatchStage added in v0.15.0

func (p WorkflowPolicy) TasksForDispatchStage(board Board, status string) []BoardTask

type WorkflowRule added in v0.12.0

type WorkflowRule struct {
	Name   string            `json:"name" yaml:"name"`
	Params map[string]string `json:"params,omitempty" yaml:"params,omitempty"`
}

type WorkflowRuntimePolicy added in v0.13.0

type WorkflowRuntimePolicy struct {
	PlanningBlockTimeout time.Duration
	RunRetention         time.Duration
}

func ResolveWorkflowRuntimePolicy added in v0.13.0

func ResolveWorkflowRuntimePolicy(project Project) WorkflowRuntimePolicy

type WorkflowRuntimeState added in v0.15.0

type WorkflowRuntimeState struct {
	ProjectStatus string
	Status        string
	Phase         string
	NextAction    string
	PhaseNumber   int
}

func (WorkflowRuntimeState) IsProjectArchived added in v0.15.0

func (s WorkflowRuntimeState) IsProjectArchived() bool

func (WorkflowRuntimeState) PhaseLimitReached added in v0.15.0

func (s WorkflowRuntimeState) PhaseLimitReached(maxPhases int) bool

func (WorkflowRuntimeState) PlanningReady added in v0.15.0

func (s WorkflowRuntimeState) PlanningReady() bool

type WorkflowStateTransition added in v0.15.0

type WorkflowStateTransition struct {
	Update         workflowStateUpdate
	Goal           string
	RemainingTasks []string
}

func (WorkflowStateTransition) StateInput added in v0.15.0

Jump to

Keyboard shortcuts

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