Documentation
¶
Index ¶
- Constants
- Variables
- func DetectCodex(binaryPath string) (string, bool)
- func RenderCodexTaskPrompt(input CodexTaskInput) string
- type Automation
- type AutomationAgent
- type AutomationAttempt
- type AutomationFilter
- type AutomationParallelBatch
- type AutomationRun
- type ClaimNextRunInput
- type ClaimedRun
- type CodexCommand
- type CodexCommandInput
- type CodexRunResult
- type CodexTaskInput
- type CommandSpec
- type CompleteAttemptInput
- type ComputeParallelBatchInput
- type ConfidenceGovernance
- type CreateAutomationInput
- type EvidenceGovernance
- type Executor
- type ExecutorOptions
- type GovernanceActionInput
- type GovernanceConfidenceInput
- type GovernanceKnowledgeCandidateInput
- type GovernanceOptions
- type GovernanceOutcomeInput
- type KnowledgeGovernance
- type Options
- type PermissionCheckInput
- type PermissionResolver
- type PermissionSnapshotMetadata
- type RunFilter
- type Service
- func (svc *Service) CallAutomationTool(ctx context.Context, name string, arguments json.RawMessage) (any, error)
- func (svc *Service) ClaimNextRun(ctx context.Context, input ClaimNextRunInput) (ClaimedRun, error)
- func (svc *Service) CompleteAttempt(ctx context.Context, input CompleteAttemptInput) (AutomationRun, error)
- func (svc *Service) ComputeParallelBatch(ctx context.Context, input ComputeParallelBatchInput) (AutomationParallelBatch, error)
- func (svc *Service) CreateAutomation(ctx context.Context, input CreateAutomationInput) (Automation, error)
- func (svc *Service) ExecuteQueuedRun(ctx context.Context, projectID, runID string) (AutomationRun, error)
- func (svc *Service) GetAutomation(ctx context.Context, projectID, automationID string) (Automation, error)
- func (svc *Service) GetRun(ctx context.Context, projectID, runID string) (AutomationRun, error)
- func (svc *Service) HandleWorkPlanStatusChanged(ctx context.Context, event projectworkplan.WorkPlanStatusChange) error
- func (svc *Service) ListAutomations(ctx context.Context, filter AutomationFilter) ([]Automation, error)
- func (svc *Service) ListRuns(ctx context.Context, filter RunFilter) ([]AutomationRun, error)
- func (svc *Service) RunNow(ctx context.Context, input SubmitRunInput) (AutomationRun, error)
- func (svc *Service) SubmitRun(ctx context.Context, input SubmitRunInput) (AutomationRun, error)
- func (svc *Service) UpdateAutomationStatus(ctx context.Context, input UpdateAutomationStatusInput) (Automation, error)
- type Store
- type SubmitRunInput
- type UpdateAutomationStatusInput
- type WorkPlanStatusTriggerOptions
- type WorkTaskAPI
Constants ¶
View Source
const ( GovernanceActionKindAutomationRunStart = "automation_run_start" GovernanceOutcomeKindAutomationAttempt = "automation_attempt" )
View Source
const ( AutomationStatusDraft = "draft" AutomationStatusEnabled = "enabled" AutomationStatusDisabled = "disabled" AutomationStatusRunning = "running" AutomationStatusPaused = "paused" AutomationStatusFailed = "failed" AutomationStatusCancelled = "cancelled" AutomationStatusSuperseded = "superseded" )
View Source
const ( RunStatusQueued = "queued" RunStatusClaiming = "claiming" RunStatusStarting = "starting" RunStatusRunning = "running" RunStatusVerifying = "verifying" RunStatusCompleted = "completed" RunStatusFailed = "failed" RunStatusBlocked = "blocked" RunStatusCancelled = "cancelled" RunStatusPolicyDenied = "policy_denied" RunStatusTimeout = "timeout" )
View Source
const ( BatchStatusPlanned = "planned" BatchStatusRunning = "running" BatchStatusCompleted = "completed" BatchStatusFailed = "failed" BatchStatusBlocked = "blocked" BatchStatusCancelled = "cancelled" )
View Source
const ( RunnerKindCodexCLI = "codex_cli" RunnerKindManual = "manual" )
View Source
const ( RunnerExecutionInProcess = "in_process" RunnerExecutionExternal = "external" RunnerExecutionManaged = "managed" )
View Source
const ( TriggerKindManual = "manual" TriggerKindAutomatic = "automatic" )
View Source
const ( AutomationSourceManual = "manual" AutomationSourceWorkflow = "workflow" )
View Source
const PermissionSnapshotRefPrefix = "permission_snapshot:"
Variables ¶
View Source
var ErrInvalidInput = errors.New("invalid project automation input")
Functions ¶
func DetectCodex ¶
func RenderCodexTaskPrompt ¶ added in v0.2.1
func RenderCodexTaskPrompt(input CodexTaskInput) string
Types ¶
type Automation ¶
type Automation struct {
ID string `json:"id"`
ProjectID string `json:"project_id"`
AutomationRef string `json:"automation_ref"`
Title string `json:"title"`
Purpose string `json:"purpose"`
Status string `json:"status"`
AgentID string `json:"agent_id"`
PlanID string `json:"plan_id,omitempty"`
AllowedTaskRefs []string `json:"allowed_task_refs,omitempty"`
RequiredReviewTaskIDs []string `json:"required_review_task_ids,omitempty"`
TriggerKind string `json:"trigger_kind"`
SourceKind string `json:"source_kind,omitempty"`
SchedulePolicy string `json:"schedule_policy,omitempty"`
PermissionRef string `json:"permission_ref"`
CreatedByRunID string `json:"created_by_run_id,omitempty"`
TraceID string `json:"trace_id,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type AutomationAgent ¶
type AutomationAgent struct {
ID string `json:"id"`
DisplayName string `json:"display_name"`
Purpose string `json:"purpose"`
Enabled bool `json:"enabled"`
AllowedSkills []string `json:"allowed_skills,omitempty"`
AllowedTools []string `json:"allowed_tools,omitempty"`
AllowedCommands []CommandSpec `json:"allowed_commands,omitempty"`
DeniedCommands []string `json:"denied_commands,omitempty"`
WorkspaceMode string `json:"workspace_mode"`
NetworkPolicy string `json:"network_policy"`
SecretPolicy string `json:"secret_policy"`
LogPolicy string `json:"log_policy"`
MaxRuntime time.Duration `json:"max_runtime"`
MaxRetries int `json:"max_retries"`
}
type AutomationAttempt ¶
type AutomationAttempt struct {
ID string `json:"id"`
ProjectID string `json:"project_id"`
AutomationRunID string `json:"automation_run_id"`
AttemptNumber int `json:"attempt_number"`
RunnerKind string `json:"runner_kind"`
CommandRef string `json:"command_ref,omitempty"`
InputSummaryHash string `json:"input_summary_hash,omitempty"`
OutputSummaryHash string `json:"output_summary_hash,omitempty"`
Status string `json:"status"`
FailureCategory string `json:"failure_category,omitempty"`
DurationMS int64 `json:"duration_ms"`
VerifierResultRefs []string `json:"verifier_result_refs,omitempty"`
EvidenceRefs []string `json:"evidence_refs,omitempty"`
ClaimRefs []string `json:"claim_refs,omitempty"`
KnowledgeRefs []string `json:"knowledge_candidate_refs,omitempty"`
CreatedAt time.Time `json:"created_at"`
FinishedAt time.Time `json:"finished_at,omitempty"`
}
type AutomationFilter ¶
type AutomationParallelBatch ¶
type AutomationParallelBatch struct {
ID string `json:"id"`
ProjectID string `json:"project_id"`
AutomationRunID string `json:"automation_run_id"`
OrchestratorRunID string `json:"orchestrator_run_id"`
PlanID string `json:"plan_id"`
TaskIDs []string `json:"task_ids"`
Status string `json:"status"`
SafetyReason string `json:"safety_reason"`
ConflictSummary string `json:"conflict_summary,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type AutomationRun ¶
type AutomationRun struct {
ID string `json:"id"`
ProjectID string `json:"project_id"`
AutomationID string `json:"automation_id"`
AgentID string `json:"agent_id"`
PlanID string `json:"plan_id"`
TaskID string `json:"task_id"`
WorkTaskStatus string `json:"work_task_status"`
Status string `json:"status"`
RunnerKind string `json:"runner_kind"`
AgentRunID string `json:"agent_run_id,omitempty"`
TraceID string `json:"trace_id,omitempty"`
AttemptCount int `json:"attempt_count"`
OrchestratorRunID string `json:"orchestrator_run_id,omitempty"`
ParentRunID string `json:"parent_run_id,omitempty"`
WorkerRunIDs []string `json:"worker_run_ids,omitempty"`
ParallelGroupID string `json:"parallel_group_id,omitempty"`
FailureCategory string `json:"failure_category,omitempty"`
SafeSummary string `json:"safe_summary,omitempty"`
StartedAt time.Time `json:"started_at,omitempty"`
FinishedAt time.Time `json:"finished_at,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type ClaimNextRunInput ¶
type ClaimedRun ¶
type ClaimedRun struct {
Run AutomationRun `json:"run"`
CodexInput CodexTaskInput `json:"codex_input"`
TimeoutMS int64 `json:"timeout_ms"`
}
type CodexCommand ¶
type CodexCommand struct {
Path string
Args []string
Env []string
StdinFile string
Timeout time.Duration
}
func BuildCodexCommand ¶
func BuildCodexCommand(input CodexCommandInput) (CodexCommand, error)
type CodexCommandInput ¶
type CodexRunResult ¶
type CodexRunResult struct {
ExitCode int
Duration time.Duration
TimedOut bool
OutputTruncated bool
}
func RunCodexCommand ¶
func RunCodexCommand(ctx context.Context, command CodexCommand, maxOutputBytes int64) (CodexRunResult, error)
type CodexTaskInput ¶
type CodexTaskInput struct {
SchemaVersion int `json:"schema_version"`
ProjectID string `json:"project_id"`
AutomationRunID string `json:"automation_run_id"`
TraceID string `json:"trace_id,omitempty"`
PlanID string `json:"plan_id"`
TaskID string `json:"task_id"`
TaskRef string `json:"task_ref"`
Title string `json:"title"`
Description string `json:"description,omitempty"`
EvidenceNeeded []string `json:"evidence_needed,omitempty"`
ContextPackRefs []string `json:"context_pack_refs,omitempty"`
LikelyFilesAffected []string `json:"likely_files_affected,omitempty"`
VerificationRequirement string `json:"verification_requirement"`
ExpectedOutput string `json:"expected_output,omitempty"`
FailureCriteria string `json:"failure_criteria,omitempty"`
ResumeInstructions string `json:"resume_instructions,omitempty"`
RunnerInstructions []string `json:"runner_instructions"`
}
type CommandSpec ¶
type CompleteAttemptInput ¶
type CompleteAttemptInput struct {
ProjectID string `json:"project_id,omitempty"`
RunID string `json:"run_id"`
Status string `json:"status"`
FailureCategory string `json:"failure_category,omitempty"`
DurationMS int64 `json:"duration_ms,omitempty"`
VerifierResultRefs []string `json:"verifier_result_refs,omitempty"`
EvidenceRefs []string `json:"evidence_refs,omitempty"`
ClaimRefs []string `json:"claim_refs,omitempty"`
ReviewRefs []string `json:"review_result_refs,omitempty"`
KnowledgeRefs []string `json:"knowledge_candidate_refs,omitempty"`
}
type ComputeParallelBatchInput ¶
type ComputeParallelBatchInput struct {
ProjectID string `json:"project_id,omitempty"`
AutomationRunID string `json:"automation_run_id,omitempty"`
OrchestratorRunID string `json:"orchestrator_run_id,omitempty"`
PlanID string `json:"plan_id,omitempty"`
TaskIDs []string `json:"task_ids,omitempty"`
MaxTasks int `json:"max_tasks,omitempty"`
}
type ConfidenceGovernance ¶ added in v0.2.0
type ConfidenceGovernance interface {
RecordConfidenceRef(context.Context, GovernanceConfidenceInput) (string, error)
}
type CreateAutomationInput ¶
type CreateAutomationInput struct {
ProjectID string `json:"project_id,omitempty"`
AutomationRef string `json:"automation_ref"`
Title string `json:"title"`
Purpose string `json:"purpose"`
Status string `json:"status,omitempty"`
AgentID string `json:"agent_id"`
PlanID string `json:"plan_id,omitempty"`
AllowedTaskRefs []string `json:"allowed_task_refs,omitempty"`
RequiredReviewTaskIDs []string `json:"required_review_task_ids,omitempty"`
TriggerKind string `json:"trigger_kind,omitempty"`
SchedulePolicy string `json:"schedule_policy,omitempty"`
PermissionRef string `json:"permission_ref"`
SourceKind string `json:"source_kind,omitempty"`
CreatedByRunID string `json:"created_by_run_id,omitempty"`
TraceID string `json:"trace_id,omitempty"`
}
type EvidenceGovernance ¶ added in v0.2.0
type EvidenceGovernance interface {
CreateActionRef(context.Context, GovernanceActionInput) (string, error)
CreateOutcomeRef(context.Context, GovernanceOutcomeInput) (string, error)
}
type Executor ¶ added in v0.2.0
type Executor struct {
// contains filtered or unexported fields
}
func NewExecutor ¶ added in v0.2.0
func NewExecutor(service *Service, options ExecutorOptions) *Executor
type ExecutorOptions ¶ added in v0.2.0
type GovernanceActionInput ¶ added in v0.2.0
type GovernanceConfidenceInput ¶ added in v0.2.0
type GovernanceKnowledgeCandidateInput ¶ added in v0.2.0
type GovernanceOptions ¶ added in v0.2.0
type GovernanceOptions struct {
Evidence EvidenceGovernance
Confidence ConfidenceGovernance
Knowledge KnowledgeGovernance
}
type GovernanceOutcomeInput ¶ added in v0.2.0
type KnowledgeGovernance ¶ added in v0.2.0
type KnowledgeGovernance interface {
CreateCandidateRef(context.Context, GovernanceKnowledgeCandidateInput) (string, error)
}
type Options ¶
type Options struct {
Enabled bool
RunnerEnabled bool
RequireCodexWhenAvailable bool
AllowManualRunner bool
RunnerExecution string
MaxParallelTasks int
DefaultMaxRuntime time.Duration
CodexBinaryPath string
Agents []AutomationAgent
PermissionResolver PermissionResolver
Governance GovernanceOptions
WorkPlanStatusTrigger WorkPlanStatusTriggerOptions
}
type PermissionCheckInput ¶ added in v0.2.0
type PermissionResolver ¶ added in v0.2.0
type PermissionResolver interface {
CheckAutomationPermission(context.Context, PermissionCheckInput) (PermissionSnapshotMetadata, error)
}
type PermissionSnapshotMetadata ¶ added in v0.2.0
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func (*Service) CallAutomationTool ¶
func (*Service) ClaimNextRun ¶
func (svc *Service) ClaimNextRun(ctx context.Context, input ClaimNextRunInput) (ClaimedRun, error)
func (*Service) CompleteAttempt ¶
func (svc *Service) CompleteAttempt(ctx context.Context, input CompleteAttemptInput) (AutomationRun, error)
func (*Service) ComputeParallelBatch ¶
func (svc *Service) ComputeParallelBatch(ctx context.Context, input ComputeParallelBatchInput) (AutomationParallelBatch, error)
func (*Service) CreateAutomation ¶
func (svc *Service) CreateAutomation(ctx context.Context, input CreateAutomationInput) (Automation, error)
func (*Service) ExecuteQueuedRun ¶ added in v0.2.0
func (*Service) GetAutomation ¶
func (*Service) HandleWorkPlanStatusChanged ¶ added in v0.2.1
func (svc *Service) HandleWorkPlanStatusChanged(ctx context.Context, event projectworkplan.WorkPlanStatusChange) error
func (*Service) ListAutomations ¶
func (svc *Service) ListAutomations(ctx context.Context, filter AutomationFilter) ([]Automation, error)
func (*Service) RunNow ¶
func (svc *Service) RunNow(ctx context.Context, input SubmitRunInput) (AutomationRun, error)
func (*Service) SubmitRun ¶
func (svc *Service) SubmitRun(ctx context.Context, input SubmitRunInput) (AutomationRun, error)
func (*Service) UpdateAutomationStatus ¶ added in v0.2.2
func (svc *Service) UpdateAutomationStatus(ctx context.Context, input UpdateAutomationStatusInput) (Automation, error)
type Store ¶
type Store interface {
CreateAutomation(context.Context, Automation) (Automation, error)
GetAutomation(context.Context, string, string) (Automation, error)
ListAutomations(context.Context, AutomationFilter) ([]Automation, error)
UpdateAutomation(context.Context, Automation) (Automation, error)
CreateRun(context.Context, AutomationRun) (AutomationRun, error)
GetRun(context.Context, string, string) (AutomationRun, error)
ListRuns(context.Context, RunFilter) ([]AutomationRun, error)
UpdateRun(context.Context, AutomationRun) (AutomationRun, error)
CreateAttempt(context.Context, AutomationAttempt) (AutomationAttempt, error)
CreateParallelBatch(context.Context, AutomationParallelBatch) (AutomationParallelBatch, error)
GetParallelBatch(context.Context, string, string) (AutomationParallelBatch, error)
}
type SubmitRunInput ¶
type SubmitRunInput struct {
ProjectID string `json:"project_id,omitempty"`
AutomationID string `json:"automation_id"`
PlanID string `json:"plan_id,omitempty"`
TaskID string `json:"task_id,omitempty"`
OwnerAgent string `json:"owner_agent,omitempty"`
RunnerKind string `json:"runner_kind,omitempty"`
OrchestratorRunID string `json:"orchestrator_run_id,omitempty"`
ParentRunID string `json:"parent_run_id,omitempty"`
EvidenceRefs []string `json:"evidence_refs,omitempty"`
VerifierRefs []string `json:"verifier_result_refs,omitempty"`
SafeNextAction string `json:"safe_next_action,omitempty"`
}
type UpdateAutomationStatusInput ¶ added in v0.2.2
type WorkPlanStatusTriggerOptions ¶ added in v0.2.1
type WorkTaskAPI ¶
type WorkTaskAPI interface {
GetWorkTask(context.Context, string, string) (projectworkplan.WorkTask, error)
ListOpenWorkTasks(context.Context, projectworkplan.WorkTaskFilter) ([]projectworkplan.WorkTask, error)
ClaimWorkTask(context.Context, projectworkplan.WorkTaskActionInput) (projectworkplan.WorkTask, error)
StartWorkTask(context.Context, projectworkplan.WorkTaskActionInput) (projectworkplan.WorkTask, error)
AttachEvidence(context.Context, projectworkplan.AttachInput) (projectworkplan.Attachment, error)
AttachVerifierResult(context.Context, projectworkplan.AttachInput) (projectworkplan.Attachment, error)
CompleteWorkTask(context.Context, projectworkplan.WorkTaskActionInput) (projectworkplan.WorkTask, error)
FailWorkTask(context.Context, projectworkplan.WorkTaskActionInput) (projectworkplan.WorkTask, error)
BlockWorkTask(context.Context, projectworkplan.WorkTaskActionInput) (projectworkplan.WorkTask, error)
}
Source Files
¶
Click to show internal directories.
Click to hide internal directories.