Documentation
¶
Index ¶
- Constants
- type ActionEventTaskContext
- type Check
- type CheckpointHint
- type CompiledWorkflow
- type Condition
- type EventStore
- type ExecutionNodeSpec
- type InMemoryEventStore
- func (s *InMemoryEventStore) ActionEventTaskContexts() ([]ActionEventTaskContext, error)
- func (s *InMemoryEventStore) AppendActionEventTaskContext(ctx ActionEventTaskContext) error
- func (s *InMemoryEventStore) AppendTaskEvent(event *TaskEvent) error
- func (s *InMemoryEventStore) TaskEvents() ([]TaskEvent, error)
- type Invariant
- type LifecycleNodeSpec
- type OnboardingArtifact
- type OnboardingArtifactRef
- type OnboardingCommand
- type PlanningArtifact
- type PlanningNodeSpec
- type RunState
- type Service
- func (s *Service) ActionEventTaskContexts() ([]ActionEventTaskContext, error)
- func (s *Service) CompleteOnboarding(run *RunState, artifact *OnboardingArtifact) error
- func (s *Service) CompletePlanning(run *RunState, artifact *PlanningArtifact) error
- func (s *Service) CompleteStep(ctx context.Context, run *RunState, stepNumber int) (*StepResult, error)
- func (s *Service) FailTask(run *RunState, reason string) error
- func (s *Service) ListTemplates() ([]TemplateSummary, error)
- func (s *Service) RecordActionEventTaskContext(run *RunState, requestID string, invocationPhase TaskPhase, ...) error
- func (s *Service) RecordActionEventTaskContextForRunID(runID, requestID string, invocationPhase TaskPhase, ...) error
- func (s *Service) RecordTaskEvent(run *RunState, sessionID, principalID string, sourcePhase TaskPhase, ...) error
- func (s *Service) RegisterTask(templateID string, parameters map[string]string) (*RunState, error)
- func (s *Service) RestartTask(run *RunState) error
- func (s *Service) StartStep(ctx context.Context, run *RunState, stepNumber int) (*StepResult, error)
- func (s *Service) TaskEvents() ([]TaskEvent, error)
- type Step
- type StepFailureKind
- type StepFailurePhase
- type StepResult
- type StepState
- type StepStatus
- type StepSummary
- type Task
- type TaskEvent
- type TaskEventOutcome
- type TaskEventType
- type TaskPhase
- type TaskStatus
- type Template
- func (t *Template) ParameterDefinitions() []TemplateParameter
- func (t *Template) RequiredParameterNames() []string
- func (t *Template) Resolve(parameters map[string]string) (Template, error)
- func (t *Template) StepSummaries() []StepSummary
- func (t *Template) Validate() error
- func (t *Template) WorkflowNode(path TaskPhase) (WorkflowNode, bool)
- type TemplateParameter
- type TemplateSummary
- type Workflow
- type WorkflowNode
- type WorkflowNodeKind
Constants ¶
const DefaultCommandTimeout = 30 * time.Second
DefaultCommandTimeout is the per-command timeout applied to template-defined shell commands.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActionEventTaskContext ¶
type ActionEventTaskContext struct {
RequestID string `json:"requestId"`
TaskRunID string `json:"taskRunId"`
InvocationPhasePath TaskPhase `json:"invocationPhasePath"`
InvocationNodeKind WorkflowNodeKind `json:"invocationNodeKind,omitempty"`
CreatedAtUnixMilli int64 `json:"createdAtUnixMilli"`
}
ActionEventTaskContext associates an action event with the active task snapshot.
type Check ¶
type Check struct {
ID string `yaml:"id" json:"id"`
Command string `yaml:"command" json:"command"`
PreConditions []Condition `yaml:"pre_conditions,omitempty" json:"pre_conditions,omitempty"`
PostConditions []Condition `yaml:"post_conditions,omitempty" json:"post_conditions,omitempty"`
}
Check defines one command plus its pre/post conditions.
type CheckpointHint ¶
type CheckpointHint struct {
Enabled bool `yaml:"enabled,omitempty" json:"enabled,omitempty"`
}
CheckpointHint stores declarative checkpoint metadata for later runtime use.
type CompiledWorkflow ¶
type CompiledWorkflow struct {
Nodes map[TaskPhase]WorkflowNode `json:"-"`
OnboardingPath TaskPhase `json:"-"`
PlanningPath TaskPhase `json:"-"`
FirstExecutablePath TaskPhase `json:"-"`
WorkflowSteps []Step `json:"-"`
}
CompiledWorkflow stores normalized workflow nodes derived from the template schema.
type Condition ¶
type Condition struct {
Type string `yaml:"type" json:"type"`
Value any `yaml:"value,omitempty" json:"value,omitempty"`
Values []any `yaml:"values,omitempty" json:"values,omitempty"`
Path string `yaml:"path,omitempty" json:"path,omitempty"`
}
Condition defines one assertion evaluated against a command result or file.
type EventStore ¶
type EventStore interface {
AppendTaskEvent(*TaskEvent) error
AppendActionEventTaskContext(ActionEventTaskContext) error
TaskEvents() ([]TaskEvent, error)
ActionEventTaskContexts() ([]ActionEventTaskContext, error)
}
EventStore records task lifecycle events and action-to-task links.
type ExecutionNodeSpec ¶
type ExecutionNodeSpec struct {
ID string `yaml:"id" json:"id"`
Kind WorkflowNodeKind `yaml:"kind,omitempty" json:"kind,omitempty"`
Name string `yaml:"name,omitempty" json:"name,omitempty"`
Description string `yaml:"description,omitempty" json:"description,omitempty"`
Instructions string `yaml:"instructions,omitempty" json:"instructions,omitempty"`
AllowedTools []string `yaml:"tools_allowed,omitempty" json:"toolsAllowed,omitempty"`
Checkpoint *CheckpointHint `yaml:"checkpoint,omitempty" json:"checkpoint,omitempty"`
Checks []Check `yaml:"checks,omitempty" json:"checks,omitempty"`
Invariants []Invariant `yaml:"invariants,omitempty" json:"invariants,omitempty"`
Next string `yaml:"next,omitempty" json:"next,omitempty"`
SubSteps []ExecutionNodeSpec `yaml:"sub_steps,omitempty" json:"subSteps,omitempty"`
}
ExecutionNodeSpec describes one author-facing execution or approval node.
type InMemoryEventStore ¶
type InMemoryEventStore struct {
// contains filtered or unexported fields
}
InMemoryEventStore stores task events in memory for the current process.
func NewInMemoryEventStore ¶
func NewInMemoryEventStore() *InMemoryEventStore
NewInMemoryEventStore creates an empty in-memory task event store.
func (*InMemoryEventStore) ActionEventTaskContexts ¶
func (s *InMemoryEventStore) ActionEventTaskContexts() ([]ActionEventTaskContext, error)
ActionEventTaskContexts returns a copy of all stored action-to-task links.
func (*InMemoryEventStore) AppendActionEventTaskContext ¶
func (s *InMemoryEventStore) AppendActionEventTaskContext(ctx ActionEventTaskContext) error
AppendActionEventTaskContext stores one action-to-task link in memory.
func (*InMemoryEventStore) AppendTaskEvent ¶
func (s *InMemoryEventStore) AppendTaskEvent(event *TaskEvent) error
AppendTaskEvent stores one task lifecycle event in memory.
func (*InMemoryEventStore) TaskEvents ¶
func (s *InMemoryEventStore) TaskEvents() ([]TaskEvent, error)
TaskEvents returns a copy of all stored lifecycle events.
type Invariant ¶
type Invariant struct {
ID string `yaml:"id" json:"id"`
Command string `yaml:"command" json:"command"`
}
Invariant defines one command whose stdout must remain stable across a step.
type LifecycleNodeSpec ¶
type LifecycleNodeSpec struct {
Instructions string `yaml:"instructions,omitempty" json:"instructions,omitempty"`
AllowedTools []string `yaml:"tools_allowed,omitempty" json:"toolsAllowed,omitempty"`
Checkpoint *CheckpointHint `yaml:"checkpoint,omitempty" json:"checkpoint,omitempty"`
}
LifecycleNodeSpec describes a non-execution workflow node.
type OnboardingArtifact ¶
type OnboardingArtifact struct {
ProjectSummary string `json:"projectSummary"`
ArtifactMap []OnboardingArtifactRef `json:"artifactMap,omitempty"`
CommonCommands []OnboardingCommand `json:"commonCommands,omitempty"`
Constraints []string `json:"constraints,omitempty"`
OpenQuestions []string `json:"openQuestions,omitempty"`
}
OnboardingArtifact stores reusable project/environment discovery context.
type OnboardingArtifactRef ¶
type OnboardingArtifactRef struct {
Path string `json:"path"`
Kind string `json:"kind"`
Notes string `json:"notes,omitempty"`
}
OnboardingArtifactRef describes a project artifact discovered during onboarding.
type OnboardingCommand ¶
OnboardingCommand describes a useful project command discovered during onboarding.
type PlanningArtifact ¶
type PlanningArtifact struct {
SelectedFiles []string `json:"selectedFiles,omitempty"`
TestTarget string `json:"testTarget,omitempty"`
LintCommand string `json:"lintCommand,omitempty"`
ExpectedFailure string `json:"expectedFailure,omitempty"`
ImplementationTarget string `json:"implementationTarget,omitempty"`
Invariants []string `json:"invariants,omitempty"`
}
PlanningArtifact stores the frozen execution inputs produced during planning.
type PlanningNodeSpec ¶
type PlanningNodeSpec struct {
Instructions string `yaml:"instructions,omitempty" json:"instructions,omitempty"`
AllowedTools []string `yaml:"tools_allowed,omitempty" json:"toolsAllowed,omitempty"`
Checkpoint *CheckpointHint `yaml:"checkpoint,omitempty" json:"checkpoint,omitempty"`
EditableFields []string `yaml:"editable_fields,omitempty" json:"editableFields,omitempty"`
RequiredOutputs []string `yaml:"required_outputs,omitempty" json:"requiredOutputs,omitempty"`
Next string `yaml:"next,omitempty" json:"next,omitempty"`
}
PlanningNodeSpec describes the planning workflow node.
type RunState ¶
type RunState struct {
RunID string `json:"taskRunId"`
TemplateID string `json:"templateId"`
SelectedTemplate Template `json:"-"`
DraftParameters map[string]string `json:"draftParameters"`
Status TaskStatus `json:"status"`
Phase TaskPhase `json:"phase"`
Onboarding *OnboardingArtifact `json:"onboarding,omitempty"`
Planning *PlanningArtifact `json:"planning,omitempty"`
WorkflowReady bool `json:"executionReady"`
RunnableTemplate *Template `json:"-"`
Steps []StepState `json:"steps,omitempty"`
LastFailureMessage string `json:"lastFailureMessage,omitempty"`
ExplicitFailReason string `json:"explicitFailReason,omitempty"`
}
RunState stores the mutable session-scoped state of one registered task.
func (*RunState) CurrentNode ¶
func (r *RunState) CurrentNode() (WorkflowNode, bool)
CurrentNode returns the active compiled workflow node for the run.
func (*RunState) NextNodePath ¶
NextNodePath returns the deterministic next workflow node when known.
type Service ¶
type Service struct {
TemplateDir string
WorkingDir string
EventStore EventStore
CommandTimeout time.Duration
}
Service loads templates and manages the task verification runtime.
func NewService ¶
NewService creates a task verification service rooted at the given directories.
func (*Service) ActionEventTaskContexts ¶
func (s *Service) ActionEventTaskContexts() ([]ActionEventTaskContext, error)
ActionEventTaskContexts returns the currently recorded action-to-task links.
func (*Service) CompleteOnboarding ¶
func (s *Service) CompleteOnboarding(run *RunState, artifact *OnboardingArtifact) error
CompleteOnboarding validates and persists onboarding context, then advances to planning.
func (*Service) CompletePlanning ¶
func (s *Service) CompletePlanning(run *RunState, artifact *PlanningArtifact) error
CompletePlanning validates and freezes planning context, then enters execution.
func (*Service) CompleteStep ¶
func (s *Service) CompleteStep(ctx context.Context, run *RunState, stepNumber int) (*StepResult, error)
CompleteStep runs postconditions and invariant verification for an active step.
func (*Service) ListTemplates ¶
func (s *Service) ListTemplates() ([]TemplateSummary, error)
ListTemplates returns the task templates currently available on disk.
func (*Service) RecordActionEventTaskContext ¶
func (s *Service) RecordActionEventTaskContext(run *RunState, requestID string, invocationPhase TaskPhase, invocationNodeKind WorkflowNodeKind) error
RecordActionEventTaskContext appends one task snapshot for an action event.
func (*Service) RecordActionEventTaskContextForRunID ¶
func (s *Service) RecordActionEventTaskContextForRunID(runID, requestID string, invocationPhase TaskPhase, invocationNodeKind WorkflowNodeKind) error
RecordActionEventTaskContextForRunID appends one task snapshot for an action event using an immutable run identifier.
func (*Service) RecordTaskEvent ¶
func (s *Service) RecordTaskEvent( run *RunState, sessionID, principalID string, sourcePhase TaskPhase, sourceNodeKind WorkflowNodeKind, resultingPhase TaskPhase, resultingNodeKind WorkflowNodeKind, eventType TaskEventType, outcome TaskEventOutcome, relatedActionRequestID string, payload map[string]any, ) error
RecordTaskEvent appends one lifecycle event to the configured store.
func (*Service) RegisterTask ¶
RegisterTask creates a shell task run from the selected template.
func (*Service) RestartTask ¶
RestartTask resets an existing task run back to its onboarding shell state.
func (*Service) StartStep ¶
func (s *Service) StartStep(ctx context.Context, run *RunState, stepNumber int) (*StepResult, error)
StartStep validates the next step, runs its preconditions, and captures invariant baselines.
func (*Service) TaskEvents ¶
TaskEvents returns the currently recorded task lifecycle events.
type Step ¶
type Step struct {
ID string `json:"id"`
Path TaskPhase `json:"path"`
ParentPath TaskPhase `json:"parentPath,omitempty"`
NextPath TaskPhase `json:"nextPath,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Instructions string `json:"instructions,omitempty"`
AllowedTools []string `json:"allowedTools,omitempty"`
Checkpoint *CheckpointHint `json:"checkpoint,omitempty"`
Checks []Check `json:"checks"`
Invariants []Invariant `json:"invariants,omitempty"`
}
Step defines one compiled executable workflow node.
type StepFailureKind ¶
type StepFailureKind string
StepFailureKind classifies the high-level reason a step failed.
const ( // StepFailureKindCheck indicates a failed check or condition. StepFailureKindCheck StepFailureKind = "check" // StepFailureKindInvariant indicates invariant capture or verification failed. StepFailureKindInvariant StepFailureKind = "invariant" // StepFailureKindCommandExecution indicates the command itself failed to execute as expected. StepFailureKindCommandExecution StepFailureKind = "command_execution" )
type StepFailurePhase ¶
type StepFailurePhase string
StepFailurePhase identifies which verification stage produced the failure.
const ( // StepFailurePhasePrecondition marks a precondition failure. StepFailurePhasePrecondition StepFailurePhase = "precondition" // StepFailurePhasePostcondition marks a postcondition failure. StepFailurePhasePostcondition StepFailurePhase = "postcondition" // StepFailurePhaseInvariantCapture marks invariant baseline capture failure. StepFailurePhaseInvariantCapture StepFailurePhase = "invariant_capture" // StepFailurePhaseInvariantVerify marks invariant drift detection failure. StepFailurePhaseInvariantVerify StepFailurePhase = "invariant_verify" // StepFailurePhaseCommandExecution marks an underlying command execution error. StepFailurePhaseCommandExecution StepFailurePhase = "command_execution" )
type StepResult ¶
type StepResult struct {
Passed bool `json:"passed"`
Message string `json:"message"`
Step int `json:"step"`
StepID string `json:"stepId"`
Status TaskStatus `json:"status"`
Phase TaskPhase `json:"phase"`
StepStatus StepStatus `json:"stepStatus"`
FailureKind StepFailureKind `json:"failureKind,omitempty"`
FailurePhase StepFailurePhase `json:"failurePhase,omitempty"`
FailedCheckID string `json:"failedCheckId,omitempty"`
FailedInvariantID string `json:"failedInvariantId,omitempty"`
Summary string `json:"summary,omitempty"`
ExitCode *int `json:"exitCode,omitempty"`
StdoutSnippet string `json:"stdoutSnippet,omitempty"`
StderrSnippet string `json:"stderrSnippet,omitempty"`
}
StepResult is the MCP-facing outcome of starting or completing a step.
type StepState ¶
type StepState struct {
ID string `json:"id"`
Path TaskPhase `json:"path"`
Status StepStatus `json:"status"`
InvariantBaselines map[string]string `json:"-"`
}
StepState stores mutable runtime state for a single step.
type StepStatus ¶
type StepStatus string
StepStatus enumerates the per-step lifecycle states.
const ( // StepStatusPending indicates the step has not started. StepStatusPending StepStatus = "pending" // StepStatusActive indicates the step is currently in progress. StepStatusActive StepStatus = "active" // StepStatusPassed indicates the step completed successfully. StepStatusPassed StepStatus = "passed" // StepStatusFailed indicates the step failed verification. StepStatusFailed StepStatus = "failed" )
type StepSummary ¶
type StepSummary struct {
Step int `json:"step"`
ID string `json:"id"`
Path TaskPhase `json:"path"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Instructions string `json:"instructions,omitempty"`
}
StepSummary is the lightweight view of one compiled execution step returned to MCP clients.
type Task ¶
type Task struct {
ID string `yaml:"id" json:"id"`
Name string `yaml:"name" json:"name"`
Description string `yaml:"description" json:"description"`
Instructions string `yaml:"instructions,omitempty" json:"instructions,omitempty"`
}
Task describes the human-facing identity of a template.
type TaskEvent ¶
type TaskEvent struct {
ID string `json:"id"`
SchemaVersion int `json:"schemaVersion"`
CreatedAtUnixMilli int64 `json:"createdAtUnixMilli"`
TaskRunID string `json:"taskRunId"`
SessionID string `json:"sessionId,omitempty"`
TemplateID string `json:"templateId"`
PrincipalID string `json:"principalId,omitempty"`
PhasePath TaskPhase `json:"phasePath"`
NodeKind WorkflowNodeKind `json:"nodeKind,omitempty"`
ResultingPhasePath TaskPhase `json:"resultingPhasePath"`
ResultingNodeKind WorkflowNodeKind `json:"resultingNodeKind,omitempty"`
EventType TaskEventType `json:"eventType"`
Outcome TaskEventOutcome `json:"outcome"`
RelatedActionRequestID string `json:"relatedActionRequestId,omitempty"`
Payload json.RawMessage `json:"payload,omitempty"`
}
TaskEvent is the append-only lifecycle record for one task run.
type TaskEventOutcome ¶
type TaskEventOutcome string
TaskEventOutcome captures whether a lifecycle operation succeeded.
const ( // TaskEventOutcomeSucceeded indicates the lifecycle event succeeded. TaskEventOutcomeSucceeded TaskEventOutcome = "succeeded" // TaskEventOutcomeFailed indicates the lifecycle event failed. TaskEventOutcomeFailed TaskEventOutcome = "failed" )
type TaskEventType ¶
type TaskEventType string
TaskEventType identifies one task lifecycle event.
const ( // TaskEventTypeRegistered records task registration. TaskEventTypeRegistered TaskEventType = "task_registered" // TaskEventTypeOnboardingCompleted records onboarding completion. TaskEventTypeOnboardingCompleted TaskEventType = "onboarding_completed" // TaskEventTypePlanningCompleted records planning completion. TaskEventTypePlanningCompleted TaskEventType = "planning_completed" // TaskEventTypeStepStarted records step start. TaskEventTypeStepStarted TaskEventType = "step_started" // TaskEventTypeStepCompleted records step completion. TaskEventTypeStepCompleted TaskEventType = "step_completed" // TaskEventTypeRestarted records task restart. TaskEventTypeRestarted TaskEventType = "task_restarted" // TaskEventTypeFailed records explicit task failure. TaskEventTypeFailed TaskEventType = "task_failed" // TaskEventTypeApprovalWaitEntered records entry into an approval wait node. TaskEventTypeApprovalWaitEntered TaskEventType = "approval_wait_entered" )
type TaskPhase ¶
type TaskPhase string
TaskPhase enumerates the workflow position of a task run.
const ( // TaskPhaseOnboarding is the onboarding workflow path. TaskPhaseOnboarding TaskPhase = "onboarding" // TaskPhasePlanning is the planning workflow path. TaskPhasePlanning TaskPhase = "planning" // TaskPhaseScaffolding is the reserved scaffolding root path. TaskPhaseScaffolding TaskPhase = "scaffolding" // TaskPhaseExecution is the reserved execution root path. TaskPhaseExecution TaskPhase = "execution" // TaskPhaseWaitingForApproval is the reserved approval root path. TaskPhaseWaitingForApproval TaskPhase = "waiting_for_approval" )
type TaskStatus ¶
type TaskStatus string
TaskStatus enumerates the overall condition of a task run.
const ( // TaskStatusActive indicates a task run can continue executing. TaskStatusActive TaskStatus = "active" // TaskStatusCompleted indicates a task run finished successfully. TaskStatusCompleted TaskStatus = "completed" // TaskStatusFailed indicates a task run ended in failure. TaskStatusFailed TaskStatus = "failed" )
type Template ¶
type Template struct {
Version string `yaml:"version" json:"version"`
Task Task `yaml:"task" json:"task"`
Parameters []TemplateParameter `yaml:"parameters,omitempty" json:"parameters,omitempty"`
Workflow *Workflow `yaml:"workflow" json:"workflow"`
CompiledWorkflow *CompiledWorkflow `yaml:"-" json:"-"`
}
Template defines one task verification template loaded from YAML.
func (*Template) ParameterDefinitions ¶
func (t *Template) ParameterDefinitions() []TemplateParameter
ParameterDefinitions returns placeholder metadata in stable name order.
func (*Template) RequiredParameterNames ¶
RequiredParameterNames returns the placeholder names referenced by the template.
func (*Template) StepSummaries ¶
func (t *Template) StepSummaries() []StepSummary
StepSummaries returns step metadata in template order.
func (*Template) Validate ¶
Validate checks whether the template is structurally valid before registration.
func (*Template) WorkflowNode ¶
func (t *Template) WorkflowNode(path TaskPhase) (WorkflowNode, bool)
WorkflowNode returns one compiled workflow node by path.
type TemplateParameter ¶
type TemplateParameter struct {
Name string `yaml:"name" json:"name"`
Description string `yaml:"description,omitempty" json:"description,omitempty"`
}
TemplateParameter describes one agent-provided parameter expected by a template.
type TemplateSummary ¶
type TemplateSummary struct {
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Instructions string `json:"instructions,omitempty"`
Parameters []TemplateParameter `json:"parameters"`
StepCount int `json:"stepCount"`
Steps []StepSummary `json:"steps"`
}
TemplateSummary is the lightweight view returned to MCP clients.
type Workflow ¶
type Workflow struct {
Onboarding *LifecycleNodeSpec `yaml:"onboarding" json:"onboarding"`
Planning *PlanningNodeSpec `yaml:"planning" json:"planning"`
Scaffolding []ExecutionNodeSpec `yaml:"scaffolding,omitempty" json:"scaffolding,omitempty"`
Execution []ExecutionNodeSpec `yaml:"execution" json:"execution"`
}
Workflow describes the declarative task lifecycle.
type WorkflowNode ¶
type WorkflowNode struct {
Path TaskPhase `json:"path"`
Kind WorkflowNodeKind `json:"kind"`
ParentPath TaskPhase `json:"parentPath,omitempty"`
NextPath TaskPhase `json:"nextPath,omitempty"`
StepNumber int `json:"stepNumber,omitempty"`
StepID string `json:"stepId,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Instructions string `json:"instructions,omitempty"`
AllowedTools []string `json:"allowedTools,omitempty"`
Checkpoint *CheckpointHint `json:"checkpoint,omitempty"`
EditableFields []string `json:"editableFields,omitempty"`
RequiredPlanningOutputs []string `json:"requiredPlanningOutputs,omitempty"`
}
WorkflowNode is the normalized runtime representation of one workflow node.
type WorkflowNodeKind ¶
type WorkflowNodeKind string
WorkflowNodeKind identifies the semantic meaning of one compiled workflow node.
const ( // WorkflowNodeKindOnboarding marks the onboarding workflow node. WorkflowNodeKindOnboarding WorkflowNodeKind = "onboarding" // WorkflowNodeKindPlanning marks the planning workflow node. WorkflowNodeKindPlanning WorkflowNodeKind = "planning" // WorkflowNodeKindScaffolding marks an additive setup workflow node. WorkflowNodeKindScaffolding WorkflowNodeKind = "scaffolding" // WorkflowNodeKindExecution marks an executable workflow node. WorkflowNodeKindExecution WorkflowNodeKind = "execution" // WorkflowNodeKindWaitingForApproval marks a pause/approval workflow node. WorkflowNodeKindWaitingForApproval WorkflowNodeKind = "waiting_for_approval" )