Versions in this module Expand all Collapse all v0 v0.14.3 May 2, 2026 Changes in this version + type CascadeBudget struct + CorrelationID string + MaxCostUSD float64 + func NewCascadeBudget(cap float64, correlationID string) *CascadeBudget + func (cb *CascadeBudget) AbortedCount() int + func (cb *CascadeBudget) CanDispatch(estimatedCostUSD float64) (bool, string) + func (cb *CascadeBudget) Charge(costUSD float64) + func (cb *CascadeBudget) Used() float64 type DispatchParams + EffectsWidened bool + FromInterfaceHash string + FromVersion string + RootChangeClass string + RootPackage string + ToInterfaceHash string + ToVersion string type InvokeConfig + TemplateByMessageType map[string]string + func (ic *InvokeConfig) ResolveTemplateForType(workspace, messageType string) (string, error) type Message + EffectsWidened bool + FromContentHash string + FromInterfaceHash string + FromVersion string + NewEffectCeiling []string + PrevEffectCeiling []string + RootChangeClass string + RootPackage string + Source string + ToContentHash string + ToInterfaceHash string + ToVersion string type TaskRecord + EffectsWidened bool + FromContentHash string + FromInterfaceHash string + FromVersion string + NewEffectCeiling []string + PrevEffectCeiling []string + RootChangeClass string + RootPackage string + Source string + ToContentHash string + ToInterfaceHash string + ToVersion string v0.14.2 Apr 26, 2026 Changes in this version type APIKeyCache + func (c *APIKeyCache) Close() type AgentConfig + ExecutorVariant string type DispatchParams + ExecutorVariant string type ExecuteResult + ArtifactGCSPath string v0.14.1 Apr 21, 2026 Changes in this version + const CoordinatorModeCloud + const CoordinatorModeLocal + const LabelInProgress + const LabelNeedsRevision + const MaxAgentIterations + var CommentTemplates = struct{ ... } + var DefaultBotPatterns = []string + var ErrWorktreeLimitReached = errors.New("max worktrees limit reached") + func BuildDirectiveFromConfig(task *TaskRecord, agent *AgentConfig) string + func BuildStageDirective(task *TaskRecord) string + func BuildSystemPrompt(taskType TaskType, agentConfig *AgentConfig) string + func CalculatePriority(analyzed *AnalyzedTask) int + func CanRetrigger(task *TaskRecord, channels ...string) bool + func CollectVersionHistory(ctx context.Context, msgStore messaging.MessageStore, taskStore Store, ...) *pkg.VersionHistory + func CountTurns(events []*TaskEventRecord) int + func DefaultArtifactPatterns(agentID string) []string + func DefaultOutputMarkers(agentID string) []string + func DefaultServerURL() string + func DeriveWorkspaceFromPath(path string) string + func ExtractFeedbackFromComments(comments []IssueComment) string + func FormatEventsAsText(events []*TaskEventRecord, opts *FormatOptions) string + func FormatWebhookSetupCommand(repo, coordinatorURL, secret string) string + func GetCurrentPID() int + func GetDefaultBranch(repoPath string) string + func GetTurnTimestamp(events []*TaskEventRecord, turnNum int) *time.Time + func GetWorktreeDiff(ctx context.Context, worktreePath, baseBranch, baseCommit string) (string, error) + func HasMarkerValue(output, marker, expectedValue string) bool + func IsBotUser(username string, additionalPatterns ...string) bool + func IsCloudMode() bool + func ParseOutputMarkers(output string, markers []string) map[string]string + func ParsePayloadToEnv(payload string) ([]string, error) + func PrepareTaskForRetrigger(task *TaskRecord, feedback string) + func RenderComment(tmpl *template.Template, data *CommentData) (string, error) + func RenderDesignDocComment(data *CommentData) (string, error) + func RenderErrorComment(taskID, stage, errMsg string) (string, error) + func RenderEvaluationComment(data *CommentData) (string, error) + func RenderImplementCompleteComment(data *CommentData) (string, error) + func RenderMergeCompleteComment(data *CommentData) (string, error) + func RenderRevisionComment(taskID, stage string) (string, error) + func RenderSprintPlanComment(data *CommentData) (string, error) + func RenderWorkingComment(taskID, agent, stage string) (string, error) + func SampleAgentConfig() string + func SanitizeLog[S ~string](s S) string + func ScheduleCascadeUpdate(index *pkg.RegistryIndex, triggerPkg string) ([]string, error) + func SplitMarkerValues(value string) []string + func StoreApprovalEvent(ctx context.Context, store Store, taskID string, approvedBy string) error + func StoreFeedbackEvent(ctx context.Context, store Store, feedback *HumanFeedback) error + func StoreIterationStartEvent(ctx context.Context, store Store, taskID string, iteration int) error + func SummarizeEvents(events []*TaskEventRecord) string + type APIKeyCache struct + func NewAPIKeyCache(ttl time.Duration) *APIKeyCache + func (c *APIKeyCache) Retrieve(messageID string) (string, bool) + func (c *APIKeyCache) Store(messageID, apiKey string) + type AgentConfig struct + Approval *ApprovalConfig + ArtifactPatterns []string + AuthMode string + AutoApproveHandoffs bool + AutoMerge bool + Capabilities []string + Effort string + GitMode string + ID string + IdleTimeout string + Inbox string + Invoke *InvokeConfig + Label string + MaxConcurrentTasks int + MergeBranch string + Model string + OutputMarkers []string + PluginDirs []string + Plugins *PluginsConfig + Provider string + SessionContinuity bool + SkipApproval bool + Subdirectory string + SystemPrompt string + Timeout string + TriggerOnComplete []string + Workspace string + func AdjustAutonomyForChangeClass(agent *AgentConfig, msg *messaging.InboxMessage) *AgentConfig + func (a *AgentConfig) GetEffectiveApprovalConfig() *ApprovalConfig + func (a *AgentConfig) GetEffectiveArtifactPatterns() []string + func (a *AgentConfig) GetEffectiveIdleTimeout() time.Duration + func (a *AgentConfig) GetEffectiveInvokeConfig() *InvokeConfig + func (a *AgentConfig) GetEffectiveOutputMarkers() []string + func (a *AgentConfig) GetEffectiveTimeout() time.Duration + type AgentRegistry struct + func LoadAgentRegistry() (*AgentRegistry, error) + func LoadAgentRegistryFrom(configPath string) (*AgentRegistry, error) + func NewAgentRegistry() *AgentRegistry + func (r *AgentRegistry) Clear() + func (r *AgentRegistry) Count() int + func (r *AgentRegistry) GetAgentByID(id string) *AgentConfig + func (r *AgentRegistry) GetAgentForInbox(inbox string) *AgentConfig + func (r *AgentRegistry) HasAgent(id string) bool + func (r *AgentRegistry) HasInbox(inbox string) bool + func (r *AgentRegistry) ListAgents() []*AgentConfig + func (r *AgentRegistry) ListInboxes() []string + func (r *AgentRegistry) Register(agent *AgentConfig) error + func (r *AgentRegistry) Unregister(id string) error + func (r *AgentRegistry) Validate() []string + type AgentResult struct + AllArtifacts []string + ArtifactContent string + ArtifactPath string + BranchName string + Cost float64 + Duration time.Duration + FilesCreated []string + FilesModified []string + InputTokens int + OutputTokens int + TokensUsed int + WorktreePath string + type AnalyzedTask struct + Capabilities []Capability + DuplicateOf string + EstimatedCost float64 + Fingerprint uint64 + ImpactLevel string + Keywords []string + Task *Task + Type TaskType + type ApprovalCallback func(request *ApprovalRequest) + type ApprovalCheckpoint struct + func NewApprovalCheckpoint(defaultTimeout time.Duration) *ApprovalCheckpoint + func (ac *ApprovalCheckpoint) Approve(requestID string, resolvedBy string) error + func (ac *ApprovalCheckpoint) ApproveByTask(taskID string, resolvedBy string) error + func (ac *ApprovalCheckpoint) Clear() + func (ac *ApprovalCheckpoint) Count() int + func (ac *ApprovalCheckpoint) GetPendingRequests() []*ApprovalRequest + func (ac *ApprovalCheckpoint) GetRequest(requestID string) *ApprovalRequest + func (ac *ApprovalCheckpoint) GetRequestByTask(taskID string) *ApprovalRequest + func (ac *ApprovalCheckpoint) HasPendingApproval(taskID string) bool + func (ac *ApprovalCheckpoint) Reject(requestID string, resolvedBy string) error + func (ac *ApprovalCheckpoint) RejectByTask(taskID string, resolvedBy string) error + func (ac *ApprovalCheckpoint) RequestApproval(ctx context.Context, request *ApprovalRequest) (ApprovalStatus, error) + func (ac *ApprovalCheckpoint) SetCallback(callback ApprovalCallback) + type ApprovalConfig struct + ApprovedLabel string + GithubCommentTemplate string + NeedsLabel string + func DefaultApprovalConfig(agentID string) *ApprovalConfig + type ApprovalEvent struct + Channel string + EventType ApprovalEventType + Feedback string + FeedbackAuthor string + IssueNumber int + Label string + TaskID string + type ApprovalEventType string + const ApprovalEventDesign + const ApprovalEventMerge + const ApprovalEventRevision + const ApprovalEventSprint + type ApprovalHandler func(ctx context.Context, event *ApprovalEvent) error + type ApprovalParams struct + Action string + AgentRegistry *AgentRegistry + ApprovedBy string + Channel string + Feedback string + GitHubPoster *GitHubPoster + KeepWorktree bool + MergeBranch string + MsgStore messaging.MessageStore + ObsBackend observatory.Backend + RetriggerOnReject bool + SkipMerge bool + Store Store + TaskID string + type ApprovalRequest struct + AutoReject bool + CreatedAt time.Time + Description string + DiffSummary string + FilesChanged []string + HandoffData string + ID string + ResolvedAt *time.Time + ResolvedBy string + SessionID string + SourceAgentID string + Status ApprovalStatus + TargetAgentID string + TaskID string + ThreadID string + Timeout time.Duration + Title string + Type ApprovalType + type ApprovalRequestRecord struct + AutoReject bool + ContextJSON string + CreatedAt time.Time + Description string + ID string + ResolvedAt *time.Time + ResolvedBy string + Status string + TaskID string + TimeoutAt *time.Time + Type string + type ApprovalResult struct + ConflictFiles []string + Error string + MergeCommit string + MergedFiles []string + Message string + NewTaskID string + Success bool + func ProcessApprovalRequest(ctx context.Context, params *ApprovalParams) (*ApprovalResult, error) + type ApprovalStatus string + const ApprovalStatusApproved + const ApprovalStatusPending + const ApprovalStatusRejected + const ApprovalStatusTimeout + type ApprovalStore interface + CreateApprovalRequest func(ctx context.Context, req *ApprovalRequestRecord) error + GetApprovalRequest func(ctx context.Context, id string) (*ApprovalRequestRecord, error) + GetApprovalRequestByTask func(ctx context.Context, taskID string) (*ApprovalRequestRecord, error) + ListPendingApprovals func(ctx context.Context) ([]*ApprovalRequestRecord, error) + ResolveApprovalRequest func(ctx context.Context, id string, status string, resolvedBy string) error + type ApprovalType string + const ApprovalTypeCost + const ApprovalTypeDestroy + const ApprovalTypeExecute + const ApprovalTypeHandoff + const ApprovalTypeMerge + type ApprovalWatcher struct + func NewApprovalWatcher(poster *GitHubPoster, store Store, pollInterval time.Duration) *ApprovalWatcher + func (w *ApprovalWatcher) GetAgentByLabel(label string) *AgentConfig + func (w *ApprovalWatcher) GetRegisteredLabels() []string + func (w *ApprovalWatcher) GetStatus() WatcherStatus + func (w *ApprovalWatcher) IsRunning() bool + func (w *ApprovalWatcher) LoadWatchedIssuesFromStore(ctx context.Context) error + func (w *ApprovalWatcher) RegisterAgentApproval(agent *AgentConfig, handler ApprovalHandler) error + func (w *ApprovalWatcher) RegisterAgentApprovalHandlers(registry *AgentRegistry, defaultHandler ApprovalHandler) (int, error) + func (w *ApprovalWatcher) RegisterHandler(eventType ApprovalEventType, handler ApprovalHandler) error + func (w *ApprovalWatcher) SetAgentRegistry(registry *AgentRegistry) + func (w *ApprovalWatcher) Start(ctx context.Context) error + func (w *ApprovalWatcher) Stop() + func (w *ApprovalWatcher) UnwatchIssue(issueNumber int) + func (w *ApprovalWatcher) WatchIssue(issueNumber int, taskID string) error + func (w *ApprovalWatcher) WatchedIssueCount() int + type ArtifactDiscovery struct + BaseBranch string + BaseCommit string + Patterns []string + WorktreePath string + func NewArtifactDiscovery(worktreePath string, patterns []string) *ArtifactDiscovery + func (ad *ArtifactDiscovery) DiscoverArtifacts(maxSize int64) (map[string]string, error) + func (ad *ArtifactDiscovery) DiscoverChangedFiles() ([]string, error) + func (ad *ArtifactDiscovery) ReadArtifactContent(relativePath string) (string, error) + func (ad *ArtifactDiscovery) WithBaseBranch(branch string) *ArtifactDiscovery + func (ad *ArtifactDiscovery) WithBaseCommit(commit string) *ArtifactDiscovery + type BudgetsConfig struct + Global *GlobalBudget + Providers map[string]*ProviderLimit + func DefaultBudgetsConfig() *BudgetsConfig + func LoadBudgetsConfig() (*BudgetsConfig, error) + func LoadBudgetsConfigFrom(configPath string) (*BudgetsConfig, error) + type Capability struct + BudgetDelta float64 + Paths []string + Type CapabilityType + type CapabilityDetector struct + func NewCapabilityDetector() *CapabilityDetector + func (cd *CapabilityDetector) ClassifyImpact(caps []Capability) string + func (cd *CapabilityDetector) DetectCapabilities(content string) []Capability + func (cd *CapabilityDetector) EstimateTotalCost(caps []Capability, baseExecutionCost float64) float64 + func (cd *CapabilityDetector) FormatImpact(caps []Capability) string + type CapabilityType string + const CapabilityAI + const CapabilityBudget + const CapabilityClock + const CapabilityDebug + const CapabilityEnv + const CapabilityFS + const CapabilityIO + const CapabilityNet + const CapabilityShell + type CascadeCircuitBreaker struct + CorrelationID string + MaxFailures int + func (cb *CascadeCircuitBreaker) FailureCount() int + func (cb *CascadeCircuitBreaker) IsBroken() bool + func (cb *CascadeCircuitBreaker) RecordFailure() + func (cb *CascadeCircuitBreaker) RecordSuccess() + type ChangeClass int + const ChangeClassA + const ChangeClassB + const ChangeClassC + func ClassifyChange(env *messaging.PackageMessageEnvelope) ChangeClass + type CloudDispatcher interface + Dispatch func(ctx context.Context, params DispatchParams) error + type CommentData struct + Agent string + BranchName string + CompletedAt *time.Time + Cost float64 + DesignDocContent string + DesignDocPath string + Duration time.Duration + Error string + EvaluationReportPath string + EvaluationResult string + EvaluationRound int + EvaluationScore int + Extra map[string]interface{} + FeedbackSummary string + FilesCreated []string + FilesModified []string + InputTokens int + IssueNumber int + Output string + OutputTokens int + Priority int + Repository string + SprintPlanContent string + SprintPlanPath string + Stage string + StartedAt *time.Time + Status string + Success bool + TaskID string + Title string + TokensUsed int + Type string + Workspace string + WorktreePath string + type CompletionHandler struct + func NewCompletionHandler(subscriber *pubsub.Subscriber, taskStore Store, ...) *CompletionHandler + func (h *CompletionHandler) HandleCompletion(data []byte, attrs map[string]string) error + func (h *CompletionHandler) Start(ctx context.Context) + type Config struct + ApprovalPollInterval time.Duration + DevMode bool + LogFile string + MaxWorktrees int + PIDFile string + PollInterval time.Duration + StateDir string + func DefaultConfig() *Config + type ConfigFile struct + Budgets *BudgetsConfig + Coordinator *CoordinatorConfig + Firebase *FirebaseConfig + Workspaces *WorkspacesConfig + type CoordinatorConfig struct + Agents []*AgentConfig + ClaudePath string + DefaultProvider string + DevMode bool + GitHubSync *GitHubSyncConfig + MergeBranch string + PluginRepo string + func DefaultCoordinatorConfig() *CoordinatorConfig + func LoadCoordinatorConfig() (*CoordinatorConfig, error) + func LoadCoordinatorConfigFrom(configPath string) (*CoordinatorConfig, error) + type CoordinatorEventHandler struct + func NewCoordinatorEventHandler(taskID, threadID string, broadcast EventBroadcaster) *CoordinatorEventHandler + func (h *CoordinatorEventHandler) EmitStatus(status string) + func (h *CoordinatorEventHandler) GetEventBuffer() []*websocket.TaskStreamEvent + func (h *CoordinatorEventHandler) IsThrottled() bool + func (h *CoordinatorEventHandler) OnError(err error) + func (h *CoordinatorEventHandler) OnText(text string) + func (h *CoordinatorEventHandler) OnToolResult(toolName string, output string) + func (h *CoordinatorEventHandler) OnToolUse(toolName string, input string) + func (h *CoordinatorEventHandler) OnTurnEnd(turnNum int) + func (h *CoordinatorEventHandler) OnTurnStart(turnNum int) + func (h *CoordinatorEventHandler) SetEventStorer(storer EventStorer) + func (h *CoordinatorEventHandler) SetTaskContext(ctx *TaskEventContext) + func (h *CoordinatorEventHandler) UpdateMetrics(tokensIn, tokensOut int, cost float64) + type Daemon struct + func NewDaemon(config *Config) (*Daemon, error) + func (d *Daemon) Close() error + func (d *Daemon) GetActiveTaskMetrics() []*ResourceMetrics + func (d *Daemon) GetContext() context.Context + func (d *Daemon) GetLogger() *log.Logger + func (d *Daemon) GetResourceRegistry() *ResourceTrackerRegistry + func (d *Daemon) GetWatcherStatus() WatcherStatus + func (d *Daemon) HandleApproval(ctx context.Context, taskID, approvedBy string) error + func (d *Daemon) HandleRejection(ctx context.Context, taskID, rejectedBy, reason string) error + func (d *Daemon) IncrementTasksRun() + func (d *Daemon) ProcessStageCompletion(ctx context.Context, task *TaskRecord, execResult *ExecuteResult) error + func (d *Daemon) Run() error + func (d *Daemon) SetCloudDispatcher(dispatcher CloudDispatcher) + func (d *Daemon) SetEventBroadcaster(broadcaster EventBroadcaster) + func (d *Daemon) SetStores(taskStore Store, msgStore messaging.MessageStore, ...) + func (d *Daemon) Start() error + func (d *Daemon) Status() (*Status, error) + func (d *Daemon) StatusJSON() (string, error) + func (d *Daemon) Stop() error + type DesignDocResult struct + AllArtifacts []string + Cost float64 + Duration time.Duration + InputTokens int + OutputTokens int + Path string + TokensUsed int + type DetailedStats struct + CostUSD float64 + Count int + InputTokens int + OutputTokens int + type DispatchParams struct + APIKey string + AgentID string + AuthMode string + Branch string + BriefID string + Directive string + GitMode string + MaxCostUSD float64 + Model string + PluginRepo string + Provider string + PushBranch string + RepoURL string + SiteSlug string + Subdirectory string + TaskID string + Timeout string + Workspace string + type EventBroadcaster func(*websocket.TaskStreamEvent) + func CreateWebSocketBroadcaster(wsServer interface{ ... }) EventBroadcaster + type EventStorer func(*TaskEventRecord) error + type EventsResponse struct + Events []*TaskEventRecord + Iteration int + TaskID string + TotalEvents int + TotalTurns int + func FormatEventsAsJSON(taskID string, events []*TaskEventRecord, opts *FormatOptions) (*EventsResponse, error) + type ExecuteOptions struct + AgentConfig *AgentConfig + DryRun bool + Effort string + EventHandler executor.EventHandler + IdleTimeout time.Duration + InvokeConfig *InvokeConfig + Model string + ObservatoryContext *ObservatoryContext + PluginDirs []string + Plugins *PluginsConfig + Timeout time.Duration + Workspace string + func DefaultExecuteOptions() *ExecuteOptions + type ExecuteResult struct + Cost float64 + Duration time.Duration + Error string + FilesCreated []string + FilesModified []string + InputTokens int + NumTurns int + Output string + OutputTokens int + Provider string + SessionID string + Success bool + TokensUsed int + ToolCallCount int + type ExecutorProvider struct + func NewExecutorProvider(executorName string) (*ExecutorProvider, error) + func (p *ExecutorProvider) CanHandle(task *AnalyzedTask) bool + func (p *ExecutorProvider) Execute(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions) (*ExecuteResult, error) + func (p *ExecutorProvider) ExecutorName() string + func (p *ExecutorProvider) Name() string + type FirebaseConfig struct + ProjectID string + func LoadFirebaseConfig() *FirebaseConfig + type FormatOptions struct + MaxTextLength int + ShowTimestamps bool + ShowToolInputs bool + TurnFilter int + TypeFilter []string + func DefaultFormatOptions() *FormatOptions + type GeminiAPIProvider struct + func NewGeminiAPIProvider() (*GeminiAPIProvider, error) + func (p *GeminiAPIProvider) CanHandle(task *AnalyzedTask) bool + func (p *GeminiAPIProvider) Execute(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions) (*ExecuteResult, error) + func (p *GeminiAPIProvider) Name() string + type GitHubPoster struct + func NewGitHubPoster() (*GitHubPoster, error) + func (p *GitHubPoster) AddLabel(issueNum int, label string) error + func (p *GitHubPoster) AddLabelInRepo(repo string, issueNum int, label string) error + func (p *GitHubPoster) ClaimIssue(issueNum int) error + func (p *GitHubPoster) ClaimIssueInRepo(repo string, issueNum int) error + func (p *GitHubPoster) Client() *messaging.GitHubClient + func (p *GitHubPoster) CloseIssue(issueNum int, comment string) error + func (p *GitHubPoster) CloseIssueInRepo(repo string, issueNum int, comment string) error + func (p *GitHubPoster) EnsureLabel(label string) error + func (p *GitHubPoster) EnsureLabelInRepo(repo, label string) error + func (p *GitHubPoster) GetLabels(issueNum int) ([]string, error) + func (p *GitHubPoster) GetLabelsInRepo(repo string, issueNum int) ([]string, error) + func (p *GitHubPoster) GetLatestHumanComment(issueNum int, since time.Time) (*IssueComment, error) + func (p *GitHubPoster) GetRecentHumanComments(issueNum int, since time.Time) ([]IssueComment, error) + func (p *GitHubPoster) HasLabel(issueNum int, label string) (bool, error) + func (p *GitHubPoster) HasLabelInRepo(repo string, issueNum int, label string) (bool, error) + func (p *GitHubPoster) IsIssueClaimed(issueNum int) (bool, error) + func (p *GitHubPoster) IsIssueClaimedInRepo(repo string, issueNum int) (bool, error) + func (p *GitHubPoster) PostComment(issueNum int, body string) error + func (p *GitHubPoster) PostCommentInRepo(repo string, issueNum int, body string) error + func (p *GitHubPoster) PostFeedback(issueNum int, feedback string, iteration int, channel string) error + func (p *GitHubPoster) PostFeedbackInRepo(repo string, issueNum int, feedback string, iteration int, channel string) error + func (p *GitHubPoster) PostWorkingStatus(issueNum int, taskID, agent string) error + func (p *GitHubPoster) PostWorkingStatusInRepo(repo string, issueNum int, taskID, agent string) error + func (p *GitHubPoster) ReleaseIssue(issueNum int) error + func (p *GitHubPoster) ReleaseIssueInRepo(repo string, issueNum int) error + func (p *GitHubPoster) RemoveLabel(issueNum int, label string) error + func (p *GitHubPoster) RemoveLabelInRepo(repo string, issueNum int, label string) error + func (p *GitHubPoster) Repo() string + type GitHubSyncConfig struct + Enabled bool + IntervalSecs int + Repos []RepoSyncConfig + ResyncIntervalSec int + ResyncLabels bool + TargetInbox string + WatchLabels []string + func (c *GitHubSyncConfig) GetRepos(defaultRepo string) []RepoSyncConfig + type GlobalBudget struct + DailyBudget float64 + TaskMaxCost float64 + WarningThreshold float64 + WorkspaceBudget float64 + type HTTPBroadcaster struct + func NewHTTPBroadcaster(serverURL string, logger *log.Logger) *HTTPBroadcaster + func (h *HTTPBroadcaster) Broadcast(event *websocket.TaskStreamEvent) + func (h *HTTPBroadcaster) BroadcastFunc() EventBroadcaster + func (h *HTTPBroadcaster) CheckServerAvailable() bool + type HumanFeedback struct + Action string + Feedback string + Iteration int + TaskID string + Timestamp time.Time + UserID string + type ImplementResult struct + BranchName string + Cost float64 + Duration time.Duration + FilesCreated []string + FilesModified []string + InputTokens int + OutputTokens int + TokensUsed int + WorktreePath string + type InboxMessageAdapter struct + func NewInboxMessageAdapter(store messaging.MessageStore, inbox string) *InboxMessageAdapter + func OpenDefaultInboxAdapter(targetInbox string) (*InboxMessageAdapter, messaging.MessageStore, error) + func (a *InboxMessageAdapter) ListUnread() ([]*Message, error) + func (a *InboxMessageAdapter) MarkAsRead(id string) error + type InvokeConfig struct + Command string + EnvFromPayload bool + Name string + Shell string + Template string + TemplateFile string + Timeout string + Type string + WorkingDir string + func DefaultInvokeConfig(agentID string) *InvokeConfig + func (ic *InvokeConfig) ResolveTemplate(workspace string) (string, error) + type IssueComment struct + Author string + Body string + CreatedAt time.Time + ID int64 + IsBot bool + type KMSEncrypter struct + func NewKMSEncrypter() *KMSEncrypter + func (e *KMSEncrypter) Encrypt(ctx context.Context, plaintext string) (string, error) + type LabelRouteConfig struct + LabelPrefix string + Target string + type MergeResult struct + CommitHash string + ConflictFiles []string + Error string + MergedFiles []string + Success bool + func MergeWorktree(ctx context.Context, worktreePath, mainBranch string) (*MergeResult, error) + type Message struct + ChainID string + Content string + CreatedAt time.Time + From string + GithubIssue int + GithubRepo string + ID string + Inbox string + Iteration int + Kind string + ParentTaskID string + Priority string + Title string + Type string + type MessageStore interface + ListUnread func() ([]*Message, error) + MarkAsRead func(id string) error + type MessageWatcher struct + func NewMessageWatcher(store MessageStore, pollInterval time.Duration) *MessageWatcher + func (w *MessageWatcher) ClearSeen() + func (w *MessageWatcher) SeenCount() int + func (w *MessageWatcher) Start(ctx context.Context) error + func (w *MessageWatcher) Tasks() <-chan *Task + type MockMessageStore struct + func NewMockMessageStore() *MockMessageStore + func (m *MockMessageStore) AddMessage(msg *Message) + func (m *MockMessageStore) ListUnread() ([]*Message, error) + func (m *MockMessageStore) MarkAsRead(id string) error + type ObservatoryContext struct + AgentID string + AssignmentID string + ChainID string + MessageID string + StageID string + TaskID string + WorkspaceID string + type ObservatorySync struct + func NewObservatorySync(backend observatory.Backend, logger *log.Logger) *ObservatorySync + func (s *ObservatorySync) CompleteAgentAssignment(ctx context.Context, assignmentID string, success bool) error + func (s *ObservatorySync) GetWorkspaceID(path string) string + func (s *ObservatorySync) SyncAgentAssignment(ctx context.Context, taskID, agentID, provider string) (string, error) + func (s *ObservatorySync) SyncTask(ctx context.Context, task *TaskRecord) error + type PluginsConfig struct + Install []string + Marketplaces []string + type Provider interface + CanHandle func(task *AnalyzedTask) bool + Execute func(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions) (*ExecuteResult, error) + Name func() string + type ProviderLimit struct + DailyBudget float64 + HardLimit bool + TaskMaxCost float64 + WarningThreshold float64 + type PubSubBroadcaster struct + func NewPubSubBroadcaster(publisher *pubsub.Publisher, workspace string, logger *log.Logger) *PubSubBroadcaster + func (b *PubSubBroadcaster) Broadcast(event *websocket.TaskStreamEvent) + func (b *PubSubBroadcaster) BroadcastFunc() EventBroadcaster + type PubSubInboxAdapter struct + func NewPubSubInboxAdapter(subscriber *pubsub.Subscriber, subName, inbox string, ...) *PubSubInboxAdapter + func (a *PubSubInboxAdapter) HandleNotification(data []byte, attrs map[string]string) error + func (a *PubSubInboxAdapter) ListUnread() ([]*Message, error) + func (a *PubSubInboxAdapter) MarkAsRead(_ string) error + func (a *PubSubInboxAdapter) Start(ctx context.Context) + type RepoSyncConfig struct + Enabled bool + IntervalSecs int + LabelRouting []LabelRouteConfig + Repo string + TargetInbox string + WatchLabels []string + type ResourceMetrics struct + CPUPercent float64 + Cost float64 + DurationSec int + MemoryMB float64 + PID int + PeakCPU float64 + PeakMemory float64 + TaskID string + ThreadID string + Timestamp time.Time + TokensIn int + TokensOut int + type ResourceTracker struct + func NewResourceTracker(taskID, threadID string, pid int) *ResourceTracker + func (rt *ResourceTracker) GetMetrics() *ResourceMetrics + func (rt *ResourceTracker) SetCost(cost float64) + func (rt *ResourceTracker) SetPollInterval(interval time.Duration) + func (rt *ResourceTracker) SetUpdateCallback(callback func(*ResourceMetrics)) + func (rt *ResourceTracker) Start(ctx context.Context) + func (rt *ResourceTracker) Stop() + func (rt *ResourceTracker) UpdateCost(cost float64) + func (rt *ResourceTracker) UpdateTokens(inputTokens, outputTokens int) + type ResourceTrackerRegistry struct + func NewResourceTrackerRegistry() *ResourceTrackerRegistry + func (r *ResourceTrackerRegistry) Get(taskID string) *ResourceTracker + func (r *ResourceTrackerRegistry) GetAllMetrics() []*ResourceMetrics + func (r *ResourceTrackerRegistry) Register(taskID string, tracker *ResourceTracker) + func (r *ResourceTrackerRegistry) StopAll() + func (r *ResourceTrackerRegistry) Unregister(taskID string) + type SQLiteStore struct + func NewSQLiteStore(dbPath string) (*SQLiteStore, error) + func (s *SQLiteStore) Close() error + func (s *SQLiteStore) CreateApprovalRequest(ctx context.Context, req *ApprovalRequestRecord) error + func (s *SQLiteStore) CreateTask(ctx context.Context, task *TaskRecord) error + func (s *SQLiteStore) DeleteOldApprovals(ctx context.Context, olderThan time.Duration) (int, error) + func (s *SQLiteStore) DeleteOldTaskEvents(ctx context.Context, olderThan time.Duration) (int, error) + func (s *SQLiteStore) DeleteOldTasks(ctx context.Context, olderThan time.Duration) (int, error) + func (s *SQLiteStore) DeleteTask(ctx context.Context, id string) error + func (s *SQLiteStore) DeleteTaskEvents(ctx context.Context, taskID string) error + func (s *SQLiteStore) FindDuplicateTask(ctx context.Context, fingerprint uint64, threshold float64) (*TaskRecord, error) + func (s *SQLiteStore) GetApprovalRequest(ctx context.Context, id string) (*ApprovalRequestRecord, error) + func (s *SQLiteStore) GetApprovalRequestByTask(ctx context.Context, taskID string) (*ApprovalRequestRecord, error) + func (s *SQLiteStore) GetApprovalRequestByTaskAnyStatus(ctx context.Context, taskID string) (*ApprovalRequestRecord, error) + func (s *SQLiteStore) GetCostByProvider() (map[string]float64, error) + func (s *SQLiteStore) GetTask(ctx context.Context, id string) (*TaskRecord, error) + func (s *SQLiteStore) GetTaskAgentInfo(ctx context.Context, taskID string) (agentID, inbox, title string, err error) + func (s *SQLiteStore) GetTaskEvents(ctx context.Context, taskID string, limit int) ([]*TaskEventRecord, error) + func (s *SQLiteStore) GetTaskStats(ctx context.Context) (*TaskStats, error) + func (s *SQLiteStore) GetTasksByGithubIssue(ctx context.Context, issueNum int) ([]*TaskRecord, error) + func (s *SQLiteStore) GetTasksByStage(ctx context.Context, stage TaskStage) ([]*TaskRecord, error) + func (s *SQLiteStore) ListApprovedMergeHandoffsWithoutTrigger(ctx context.Context) ([]*ApprovalRequestRecord, error) + func (s *SQLiteStore) ListPendingApprovals(ctx context.Context) ([]*ApprovalRequestRecord, error) + func (s *SQLiteStore) ListResolvedApprovals(ctx context.Context, limit int) ([]*ApprovalRequestRecord, error) + func (s *SQLiteStore) ListTasks(ctx context.Context, filter *TaskFilter) ([]*TaskRecord, error) + func (s *SQLiteStore) MarkApprovalHandoffsTriggered(ctx context.Context, taskID string) error + func (s *SQLiteStore) MarkTaskCancelled(ctx context.Context, id string) error + func (s *SQLiteStore) MarkTaskCompleted(ctx context.Context, id string, result *ExecuteResult) error + func (s *SQLiteStore) MarkTaskFailed(ctx context.Context, id string, taskErr error) error + func (s *SQLiteStore) MarkTaskPendingApproval(ctx context.Context, ...) error + func (s *SQLiteStore) MarkTaskQueued(ctx context.Context, id string) error + func (s *SQLiteStore) MarkTaskRejected(ctx context.Context, id string) error + func (s *SQLiteStore) MarkTaskRunning(ctx context.Context, id, provider, worktreeID string) error + func (s *SQLiteStore) RecoverStaleTasks(ctx context.Context, staleThreshold time.Duration) (int, error) + func (s *SQLiteStore) ReopenTask(ctx context.Context, taskID string) error + func (s *SQLiteStore) RequeueTask(ctx context.Context, id string) error + func (s *SQLiteStore) ResetTaskToPending(ctx context.Context, id string) error + func (s *SQLiteStore) ResolveApprovalRequest(ctx context.Context, id string, status string, resolvedBy string) error + func (s *SQLiteStore) ResolveApprovalRequestByTask(ctx context.Context, taskID string, status string, resolvedBy string) error + func (s *SQLiteStore) RetryAllFailedTasks(ctx context.Context) (int, error) + func (s *SQLiteStore) SetTaskDesignDocPath(ctx context.Context, id string, path string) error + func (s *SQLiteStore) SetTaskFingerprint(ctx context.Context, id string, fingerprint uint64) error + func (s *SQLiteStore) SetTaskGithubIssue(ctx context.Context, id string, issueNum int) error + func (s *SQLiteStore) SetTaskSprintPlanPath(ctx context.Context, id string, path string) error + func (s *SQLiteStore) SetTaskStage(ctx context.Context, id string, stage TaskStage) error + func (s *SQLiteStore) SetTaskThreadID(ctx context.Context, id string, threadID string) error + func (s *SQLiteStore) StoreTaskEvent(ctx context.Context, event *TaskEventRecord) error + func (s *SQLiteStore) UpdateTask(ctx context.Context, task *TaskRecord) error + func (s *SQLiteStore) UpdateTaskChainInfo(ctx context.Context, id, chainID, stageID string) error + func (s *SQLiteStore) UpdateTaskMetrics(ctx context.Context, id string, peakCPU, peakMemory float64) error + type ScriptProvider struct + func NewScriptProvider() *ScriptProvider + func (p *ScriptProvider) CanHandle(task *AnalyzedTask) bool + func (p *ScriptProvider) Execute(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions) (*ExecuteResult, error) + func (p *ScriptProvider) Name() string + type SprintPlanResult struct + AllArtifacts []string + Cost float64 + Duration time.Duration + InputTokens int + OutputTokens int + Path string + TokensUsed int + type StageExecutionResult struct + BranchName string + Cost float64 + DesignDocPath string + Duration time.Duration + FilesCreated []string + FilesModified []string + InputTokens int + OutputTokens int + SprintPlanPath string + TokensUsed int + func ParseStageOutput(output string, stage TaskStage) *StageExecutionResult + type StaleTaskDetector struct + func NewStaleTaskDetector(store Store, agentRegistry *AgentRegistry, msgStore messaging.MessageStore, ...) *StaleTaskDetector + func (d *StaleTaskDetector) Run(ctx context.Context) + type Status struct + FailedTasks int + PID int + PendingApprovals int + PendingTasks int + Running bool + RunningTasks int + StartedAt time.Time + TasksRun int + TotalCost float64 + TotalTokens int + Uptime string + type Store interface + Close func() error + CreateApprovalRequest func(ctx context.Context, req *ApprovalRequestRecord) error + CreateTask func(ctx context.Context, task *TaskRecord) error + DeleteOldTasks func(ctx context.Context, olderThan time.Duration) (int, error) + DeleteTask func(ctx context.Context, id string) error + FindDuplicateTask func(ctx context.Context, fingerprint uint64, threshold float64) (*TaskRecord, error) + GetApprovalRequest func(ctx context.Context, id string) (*ApprovalRequestRecord, error) + GetApprovalRequestByTask func(ctx context.Context, taskID string) (*ApprovalRequestRecord, error) + GetApprovalRequestByTaskAnyStatus func(ctx context.Context, taskID string) (*ApprovalRequestRecord, error) + GetCostByProvider func() (map[string]float64, error) + GetTask func(ctx context.Context, id string) (*TaskRecord, error) + GetTaskAgentInfo func(ctx context.Context, taskID string) (agentID, inbox, title string, err error) + GetTaskEvents func(ctx context.Context, taskID string, limit int) ([]*TaskEventRecord, error) + GetTaskStats func(ctx context.Context) (*TaskStats, error) + GetTasksByGithubIssue func(ctx context.Context, issueNum int) ([]*TaskRecord, error) + GetTasksByStage func(ctx context.Context, stage TaskStage) ([]*TaskRecord, error) + ListApprovedMergeHandoffsWithoutTrigger func(ctx context.Context) ([]*ApprovalRequestRecord, error) + ListPendingApprovals func(ctx context.Context) ([]*ApprovalRequestRecord, error) + ListResolvedApprovals func(ctx context.Context, limit int) ([]*ApprovalRequestRecord, error) + ListTasks func(ctx context.Context, filter *TaskFilter) ([]*TaskRecord, error) + MarkApprovalHandoffsTriggered func(ctx context.Context, taskID string) error + MarkTaskCancelled func(ctx context.Context, id string) error + MarkTaskCompleted func(ctx context.Context, id string, result *ExecuteResult) error + MarkTaskFailed func(ctx context.Context, id string, err error) error + MarkTaskPendingApproval func(ctx context.Context, ...) error + MarkTaskQueued func(ctx context.Context, id string) error + MarkTaskRejected func(ctx context.Context, id string) error + MarkTaskRunning func(ctx context.Context, id, provider, worktreeID string) error + RecoverStaleTasks func(ctx context.Context, staleThreshold time.Duration) (int, error) + RequeueTask func(ctx context.Context, id string) error + ResetTaskToPending func(ctx context.Context, id string) error + ResolveApprovalRequest func(ctx context.Context, id, status, resolvedBy string) error + ResolveApprovalRequestByTask func(ctx context.Context, taskID, status, resolvedBy string) error + RetryAllFailedTasks func(ctx context.Context) (int, error) + SetTaskDesignDocPath func(ctx context.Context, id string, path string) error + SetTaskFingerprint func(ctx context.Context, id string, fingerprint uint64) error + SetTaskGithubIssue func(ctx context.Context, id string, issueNum int) error + SetTaskSprintPlanPath func(ctx context.Context, id string, path string) error + SetTaskStage func(ctx context.Context, id string, stage TaskStage) error + SetTaskThreadID func(ctx context.Context, id string, threadID string) error + StoreTaskEvent func(ctx context.Context, event *TaskEventRecord) error + UpdateTask func(ctx context.Context, task *TaskRecord) error + UpdateTaskChainInfo func(ctx context.Context, id, chainID, stageID string) error + UpdateTaskMetrics func(ctx context.Context, id string, peakCPU, peakMemory float64) error + type StoreBackedApprovalCheckpoint struct + func NewStoreBackedApprovalCheckpoint(store ApprovalStore, defaultTimeout time.Duration) *StoreBackedApprovalCheckpoint + func (sac *StoreBackedApprovalCheckpoint) RequestApproval(ctx context.Context, request *ApprovalRequest) (ApprovalStatus, error) + type StoreConfig struct + DBPath string + type Task struct + Content string + CreatedAt time.Time + ID string + Iteration int + Kind string + MessageID string + ParentTaskID string + Priority int + SessionID string + Title string + type TaskAnalyzer struct + func NewTaskAnalyzer(similarityThreshold float64) *TaskAnalyzer + func (a *TaskAnalyzer) Analyze(task *Task) *AnalyzedTask + func (a *TaskAnalyzer) ClearFingerprints() + func (a *TaskAnalyzer) FingerprintCount() int + type TaskChain struct + func NewTaskChain(poster *GitHubPoster, store Store, watcher *ApprovalWatcher) *TaskChain + func (tc *TaskChain) OnAgentApproved(ctx context.Context, event *ApprovalEvent, agentID string) error + func (tc *TaskChain) OnAgentComplete(ctx context.Context, taskID, agentID string, result *AgentResult, ...) error + func (tc *TaskChain) OnDesignApproved(ctx context.Context, event *ApprovalEvent) error + func (tc *TaskChain) OnDesignDocComplete(ctx context.Context, taskID string, result *DesignDocResult) error + func (tc *TaskChain) OnError(ctx context.Context, taskID string, errMsg string) error + func (tc *TaskChain) OnImplementationComplete(ctx context.Context, taskID string, result *ImplementResult) error + func (tc *TaskChain) OnMergeApproved(ctx context.Context, event *ApprovalEvent) error + func (tc *TaskChain) OnNeedsRevision(ctx context.Context, event *ApprovalEvent) error + func (tc *TaskChain) OnSprintApproved(ctx context.Context, event *ApprovalEvent) error + func (tc *TaskChain) OnSprintPlanComplete(ctx context.Context, taskID string, result *SprintPlanResult) error + func (tc *TaskChain) SetAgentRegistry(registry *AgentRegistry) + func (tc *TaskChain) SetMessageStore(msgStore messaging.MessageStore) + func (tc *TaskChain) StartTask(ctx context.Context, taskID string, issueNum int) error + type TaskEventContext struct + AgentID string + Directive string + SourceType string + Workspace string + type TaskEventRecord struct + Cost float64 + CreatedAt time.Time + DurationSec int + ErrorMsg string + ID int64 + Status string + StreamType string + TaskID string + Text string + ThreadID string + TokensIn int + TokensOut int + ToolInput string + ToolName string + ToolOutput string + TurnNum int + type TaskExecutor struct + func DefaultTaskExecutor() (*TaskExecutor, error) + func NewTaskExecutor(providers ...Provider) *TaskExecutor + func (te *TaskExecutor) Execute(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions) (*ExecuteResult, error) + func (te *TaskExecutor) ExecuteWithRetry(ctx context.Context, task *AnalyzedTask, opts *ExecuteOptions, maxRetries int) (*ExecuteResult, error) + func (te *TaskExecutor) ListProviders() []string + type TaskFilter struct + Limit int + Offset int + OrderBy string + OrderDesc bool + Provider string + Since *time.Time + Status []TaskStatus + Type []TaskType + Until *time.Time + Workspace string + type TaskRecord struct + AgentID string + BaseBranch string + BaseCommit string + BriefID string + Capabilities []Capability + ChainID string + CompletedAt *time.Time + Content string + Cost float64 + CreatedAt time.Time + DesignDocPath string + Duration time.Duration + Error string + EstimatedCost float64 + GithubIssue int + GithubRepo string + ID string + ImpactLevel string + InputTokens int + Iteration int + Kind string + MessageID string + Output string + OutputTokens int + ParentTaskID string + PeakCPU float64 + PeakMemory float64 + Priority int + Provider string + SessionID string + SiteSlug string + SprintPlanPath string + Stage TaskStage + StageID string + StartedAt *time.Time + Status TaskStatus + ThreadID string + Title string + TokensUsed int + Type TaskType + Workspace string + WorktreeID string + WorktreePath string + type TaskStage string + const TaskStageDesign + const TaskStageImplementation + const TaskStageMerge + const TaskStageNone + const TaskStageSprint + type TaskStats struct + AvgDuration time.Duration + ByProvider map[string]*DetailedStats + ByType map[string]int + ByWorkspace map[string]*DetailedStats + CompletedTasks int + FailedTasks int + PendingApprovals int + PendingTasks int + RunningTasks int + TotalCost float64 + TotalTasks int + TotalTokens int + type TaskStatus string + const TaskStatusCancelled + const TaskStatusCompleted + const TaskStatusDuplicate + const TaskStatusFailed + const TaskStatusPending + const TaskStatusPendingApproval + const TaskStatusQueued + const TaskStatusRejected + const TaskStatusRunning + type TaskType string + const TaskTypeBugFix + const TaskTypeDocs + const TaskTypeFeature + const TaskTypeRefactor + const TaskTypeResearch + const TaskTypeTest + const TaskTypeUnknown + type WatcherStatus struct + LastPoll time.Time + PollInterval time.Duration + Running bool + WatchedIssues map[int]string + type WorkspaceMapping struct + Pattern string + Workspace string + type WorkspacesConfig struct + DefaultWorkspace string + DeriveFromPath bool + Mappings []WorkspaceMapping + func DefaultWorkspacesConfig() *WorkspacesConfig + func LoadWorkspacesConfig() *WorkspacesConfig + func (c *WorkspacesConfig) BuildWorkspaceMappingSQL(cwdColumn string) string + func (c *WorkspacesConfig) GetPathPatternsForWorkspace(workspaceID string) []string + func (c *WorkspacesConfig) GetWorkspaceLabel(workspaceID string) string + type Worktree struct + BaseBranch string + BaseCommit string + Branch string + CreatedAt time.Time + Path string + TaskID string + type WorktreeChanges struct + Branch string + CommitsAhead string + DiffSummary string + FilesChanged []string + Path string + TaskID string + type WorktreeManager struct + func NewWorktreeManager(repoDir, baseDir string, maxWorktrees int) (*WorktreeManager, error) + func (wm *WorktreeManager) CleanupAll() error + func (wm *WorktreeManager) CleanupOrphaned() (int, error) + func (wm *WorktreeManager) Count() int + func (wm *WorktreeManager) CreateWorktree(taskID, baseBranch string) (*Worktree, error) + func (wm *WorktreeManager) GetChangeSummary(taskID string) (*WorktreeChanges, error) + func (wm *WorktreeManager) GetWorktree(taskID string) (*Worktree, bool) + func (wm *WorktreeManager) HasChanges(taskID string) (bool, error) + func (wm *WorktreeManager) ListWorktrees() []*Worktree + func (wm *WorktreeManager) RemoveWorktree(taskID string) error