application

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2026 License: MIT Imports: 35 Imported by: 0

Documentation

Overview

Package application provides application services.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewProjectCoordinator added in v0.4.0

func NewProjectCoordinator(repo domain.WorkspaceRepository, audit domain.AuditLogger) *project.Coordinator

NewProjectCoordinator creates a Coordinator using the workspace repository.

func ScanCodebaseTree added in v0.6.0

func ScanCodebaseTree(root string, maxLines int) string

ScanCodebaseTree returns a compact directory tree of source files relative to root. It skips hidden dirs, vendor, node_modules, and binary files. Output is truncated to maxLines to fit AI context windows.

Types

type AIPlanningService

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

func NewAIPlanningService

func NewAIPlanningService(repo domain.WorkspaceRepository, provider ai.Provider, audit domain.AuditLogger, planSvc *PlanService) *AIPlanningService

func (*AIPlanningService) DecomposeSpec

func (s *AIPlanningService) DecomposeSpec(ctx context.Context) (*planning.Plan, error)

func (*AIPlanningService) ExplainDrift

func (s *AIPlanningService) ExplainDrift(ctx context.Context, report *drift.Report) (string, error)

func (*AIPlanningService) ExplainSpec

func (s *AIPlanningService) ExplainSpec(ctx context.Context) (string, error)

func (*AIPlanningService) GetAuditLogger added in v0.4.0

func (s *AIPlanningService) GetAuditLogger() domain.AuditLogger

GetAuditLogger returns the audit logger used by this service.

func (*AIPlanningService) QueryProject added in v0.6.0

func (s *AIPlanningService) QueryProject(ctx context.Context, question string) (string, error)

func (*AIPlanningService) ReconcileSpec

func (s *AIPlanningService) ReconcileSpec(ctx context.Context, rawSpec *spec.ProductSpec) (*spec.ProductSpec, error)

func (*AIPlanningService) ReviewSpec added in v0.6.0

func (s *AIPlanningService) ReviewSpec(ctx context.Context) (*spec.SpecReview, error)

func (*AIPlanningService) SmartDecompose added in v0.6.0

func (s *AIPlanningService) SmartDecompose(ctx context.Context, codebaseRoot string) (*planning.SmartPlan, error)

SmartDecompose performs context-aware task decomposition using codebase structure.

func (*AIPlanningService) SuggestPriorities added in v0.6.0

func (s *AIPlanningService) SuggestPriorities(ctx context.Context) (*planning.PrioritySuggestions, error)

type AITelemetrySummary added in v0.4.0

type AITelemetrySummary struct {
	TotalCalls        int            `json:"total_calls"`
	TotalInputTokens  int            `json:"total_input_tokens"`
	TotalOutputTokens int            `json:"total_output_tokens"`
	RetryCount        int            `json:"retry_count"`
	CallsByAction     map[string]int `json:"calls_by_action"`
	TokensByModel     map[string]int `json:"tokens_by_model"`
}

AITelemetrySummary holds aggregated AI usage metrics.

type AuditEventPublisher added in v0.4.0

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

AuditEventPublisher adapts AuditLogger to project.EventPublisher.

func NewAuditEventPublisher added in v0.4.0

func NewAuditEventPublisher(audit domain.AuditLogger) *AuditEventPublisher

NewAuditEventPublisher creates a new adapter.

func (*AuditEventPublisher) PublishPlanApproved added in v0.4.0

func (p *AuditEventPublisher) PublishPlanApproved(ctx context.Context, planID, approver string) error

PublishPlanApproved implements project.EventPublisher.

func (*AuditEventPublisher) PublishTaskBlocked added in v0.4.0

func (p *AuditEventPublisher) PublishTaskBlocked(ctx context.Context, taskID, reason string) error

PublishTaskBlocked implements project.EventPublisher.

func (*AuditEventPublisher) PublishTaskCompleted added in v0.4.0

func (p *AuditEventPublisher) PublishTaskCompleted(ctx context.Context, taskID, evidence string) error

PublishTaskCompleted implements project.EventPublisher.

func (*AuditEventPublisher) PublishTaskStarted added in v0.4.0

func (p *AuditEventPublisher) PublishTaskStarted(ctx context.Context, taskID, owner, rateID string) error

PublishTaskStarted implements project.EventPublisher.

func (*AuditEventPublisher) PublishTaskUnblocked added in v0.4.0

func (p *AuditEventPublisher) PublishTaskUnblocked(ctx context.Context, taskID string) error

PublishTaskUnblocked implements project.EventPublisher.

type AuditService

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

func NewAuditService

func NewAuditService(repo domain.WorkspaceRepository) *AuditService

func (*AuditService) GetAITelemetry added in v0.4.0

func (s *AuditService) GetAITelemetry() (*AITelemetrySummary, error)

GetAITelemetry returns aggregated AI usage metrics from events.

func (*AuditService) GetTimeline

func (s *AuditService) GetTimeline() ([]domain.Event, error)

func (*AuditService) GetVelocity

func (s *AuditService) GetVelocity() (float64, error)

GetVelocity returns the average verified tasks per day over the last 7 days.

func (*AuditService) Log

func (s *AuditService) Log(action string, actor string, metadata map[string]interface{}) error

func (*AuditService) VerifyIntegrity

func (s *AuditService) VerifyIntegrity() ([]string, error)

type BillingService added in v0.7.0

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

func NewBillingService added in v0.7.0

func NewBillingService(repo domain.WorkspaceRepository, audit domain.AuditLogger) *BillingService

func (*BillingService) AddRate added in v0.7.0

func (s *BillingService) AddRate(rate billing.Rate) error

func (*BillingService) CompleteTask added in v0.7.0

func (s *BillingService) CompleteTask(taskID string) error

func (*BillingService) GetBudgetStatus added in v0.7.0

func (s *BillingService) GetBudgetStatus() (*billing.BudgetStatus, error)

func (*BillingService) GetCostReport added in v0.7.0

func (s *BillingService) GetCostReport(opts CostReportOpts) (*billing.CostReport, error)

func (*BillingService) GetDefaultRate added in v0.7.0

func (s *BillingService) GetDefaultRate() (*billing.Rate, error)

func (*BillingService) GetRate added in v0.7.0

func (s *BillingService) GetRate(rateID string) (*billing.Rate, error)

func (*BillingService) ListRates added in v0.7.0

func (s *BillingService) ListRates() (*billing.RateConfig, error)

func (*BillingService) LogTime added in v0.7.0

func (s *BillingService) LogTime(taskID string, rateID string, minutes int, description string) error

func (*BillingService) RemoveRate added in v0.7.0

func (s *BillingService) RemoveRate(rateID string) error

func (*BillingService) SetDefaultRate added in v0.7.0

func (s *BillingService) SetDefaultRate(rateID string) error

func (*BillingService) SetTax added in v0.7.0

func (s *BillingService) SetTax(name string, percent float64, included bool) error

func (*BillingService) StartTask added in v0.7.0

func (s *BillingService) StartTask(taskID string, rateID string) error

type CostReportOpts added in v0.7.0

type CostReportOpts struct {
	TaskID string
	Period string
	Format string
}

type DebtService added in v0.4.0

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

DebtService provides debt analysis capabilities.

func NewDebtService added in v0.4.0

func NewDebtService(driftSvc *DriftService, auditSvc domain.AuditLogger) *DebtService

NewDebtService creates a new debt service.

func (*DebtService) GetDebtByCategory added in v0.4.0

func (s *DebtService) GetDebtByCategory() (map[debt.DebtCategory][]*debt.DebtItem, error)

GetDebtByCategory returns debt items grouped by category.

func (*DebtService) GetDebtByComponent added in v0.4.0

func (s *DebtService) GetDebtByComponent() (map[string][]*debt.DebtItem, error)

GetDebtByComponent returns debt items grouped by component.

func (*DebtService) GetDebtReport added in v0.4.0

func (s *DebtService) GetDebtReport(ctx context.Context) (*debt.DebtReport, error)

GetDebtReport generates a comprehensive debt report based on current drift.

func (*DebtService) GetDebtScore added in v0.4.0

func (s *DebtService) GetDebtScore(componentID string) (*debt.DebtScore, error)

GetDebtScore calculates the debt score for a specific component.

func (*DebtService) GetDebtSummary added in v0.4.0

func (s *DebtService) GetDebtSummary(ctx context.Context) (*DebtSummary, error)

GetDebtSummary returns a quick overview of the debt status.

func (*DebtService) GetDriftHistory added in v0.4.0

func (s *DebtService) GetDriftHistory(windowDays int) ([]events.DriftSnapshot, error)

GetDriftHistory returns historical drift snapshots.

func (*DebtService) GetDriftTrend added in v0.4.0

func (s *DebtService) GetDriftTrend(windowDays int) (events.DriftTrend, error)

GetDriftTrend analyzes drift patterns over time.

func (*DebtService) GetHealthLevel added in v0.4.0

func (s *DebtService) GetHealthLevel(ctx context.Context) (string, error)

GetHealthLevel returns an overall health assessment based on debt.

func (*DebtService) GetStickyDrift added in v0.4.0

func (s *DebtService) GetStickyDrift() ([]*debt.DebtItem, error)

GetStickyDrift returns all sticky debt items (unresolved >7 days).

func (*DebtService) GetTopDebtors added in v0.4.0

func (s *DebtService) GetTopDebtors(ctx context.Context, limit int) ([]*debt.DebtScore, error)

GetTopDebtors returns the components with the highest debt scores.

func (*DebtService) RecordDriftAccepted added in v0.4.0

func (s *DebtService) RecordDriftAccepted(componentID string, driftType drift.DriftType) error

RecordDriftAccepted records a drift acceptance event.

func (*DebtService) RecordDriftDetection added in v0.4.0

func (s *DebtService) RecordDriftDetection(ctx context.Context, driftReport *drift.Report) error

RecordDriftDetection records a drift detection event for historical tracking.

func (*DebtService) RecordDriftResolved added in v0.4.0

func (s *DebtService) RecordDriftResolved(componentID string, driftType drift.DriftType) error

RecordDriftResolved records a drift resolution event.

type DebtSummary added in v0.4.0

type DebtSummary struct {
	TotalItems     int     `json:"total_items"`
	StickyItems    int     `json:"sticky_items"`
	AverageScore   float64 `json:"average_score"`
	HealthLevel    string  `json:"health_level"`
	TopDebtor      string  `json:"top_debtor,omitempty"`
	TopDebtorScore float64 `json:"top_debtor_score,omitempty"`
}

DebtSummary provides a quick overview of debt status.

type DependencyRepository added in v0.4.0

type DependencyRepository interface {
	SaveDependencyGraph(graph *dependency.DependencyGraph) error
	LoadDependencyGraph() (*dependency.DependencyGraph, error)
	AddDependency(dep *dependency.RepoDependency) error
	RemoveDependency(depID string) error
	GetDependency(depID string) (*dependency.RepoDependency, error)
	ListDependencies() ([]*dependency.RepoDependency, error)
	UpdateRepoHealth(health *dependency.RepoHealth) error
	GetRepoHealth(repoPath string) (*dependency.RepoHealth, error)
}

DependencyRepository defines the storage interface for dependency data.

type DependencyService added in v0.4.0

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

DependencyService manages cross-repo dependencies.

func NewDependencyService added in v0.4.0

func NewDependencyService(repo DependencyRepository, rootPath string) *DependencyService

NewDependencyService creates a new dependency service.

func (*DependencyService) AddDependency added in v0.4.0

func (s *DependencyService) AddDependency(targetRepo string, depType dependency.DependencyType, description string) (*dependency.RepoDependency, error)

AddDependency adds a new dependency to the graph.

func (*DependencyService) CheckForCycles added in v0.4.0

func (s *DependencyService) CheckForCycles() (bool, error)

CheckForCycles checks if the dependency graph has cycles.

func (*DependencyService) GetDependency added in v0.4.0

func (s *DependencyService) GetDependency(depID string) (*dependency.RepoDependency, error)

GetDependency retrieves a specific dependency.

func (*DependencyService) GetDependencyGraph added in v0.4.0

func (s *DependencyService) GetDependencyGraph() (*dependency.DependencyGraph, error)

GetDependencyGraph returns the current dependency graph.

func (*DependencyService) GetDependencyOrder added in v0.4.0

func (s *DependencyService) GetDependencyOrder() ([]string, error)

GetDependencyOrder returns repos in dependency order (dependencies first).

func (*DependencyService) GetDependencySummary added in v0.4.0

func (s *DependencyService) GetDependencySummary() (*dependency.DependencySummary, error)

GetDependencySummary returns a summary of the dependency graph.

func (*DependencyService) GetUnhealthyDependencies added in v0.4.0

func (s *DependencyService) GetUnhealthyDependencies() ([]*dependency.RepoHealth, error)

GetUnhealthyDependencies returns all unhealthy dependencies.

func (*DependencyService) ImportFromSpec added in v0.4.0

func (s *DependencyService) ImportFromSpec(specDeps []dependency.SpecDependency) (*ImportResult, error)

ImportFromSpec imports dependencies from spec configuration.

func (*DependencyService) ListDependencies added in v0.4.0

func (s *DependencyService) ListDependencies() ([]*dependency.RepoDependency, error)

ListDependencies returns all dependencies.

func (*DependencyService) RemoveDependency added in v0.4.0

func (s *DependencyService) RemoveDependency(depID string) error

RemoveDependency removes a dependency by ID.

func (*DependencyService) ScanDependentRepos added in v0.4.0

func (s *DependencyService) ScanDependentRepos(healthScanner HealthScanner) (*ScanResult, error)

ScanDependentRepos scans health status of all dependent repositories.

type DriftService

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

func NewDriftService

func NewDriftService(repo domain.WorkspaceRepository, audit domain.AuditLogger, inspector drift.CodeInspector, policy *PolicyService) *DriftService

func (*DriftService) AcceptDrift added in v0.4.0

func (s *DriftService) AcceptDrift() error

AcceptDrift locks the current spec snapshot and records the acceptance event.

func (*DriftService) DetectDrift

func (s *DriftService) DetectDrift(ctx context.Context) (*drift.Report, error)

type EventSourcedAuditService added in v0.4.0

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

EventSourcedAuditService implements AuditLogger using the event store. It bridges the existing audit interface with the new event sourcing system.

func NewEventSourcedAuditService added in v0.4.0

func NewEventSourcedAuditService(store events.EventStore, publisher events.EventPublisher) (*EventSourcedAuditService, error)

NewEventSourcedAuditService creates a new event-sourced audit service.

func (*EventSourcedAuditService) GetAITelemetry added in v0.4.0

func (s *EventSourcedAuditService) GetAITelemetry() (*AITelemetrySummary, error)

GetAITelemetry returns aggregated AI usage metrics from events.

func (*EventSourcedAuditService) GetAllTaskStates added in v0.4.0

func (s *EventSourcedAuditService) GetAllTaskStates() map[string]*events.TaskState

GetAllTaskStates returns all task states from the projection.

func (*EventSourcedAuditService) GetCompletionVelocity added in v0.4.0

func (s *EventSourcedAuditService) GetCompletionVelocity() float64

GetCompletionVelocity returns tasks completed per day.

func (*EventSourcedAuditService) GetDispatcher added in v0.4.0

func (s *EventSourcedAuditService) GetDispatcher() *events.EventDispatcher

GetDispatcher returns the event dispatcher.

func (*EventSourcedAuditService) GetRecentTimeline added in v0.4.0

func (s *EventSourcedAuditService) GetRecentTimeline(n int) []events.TimelineEntry

GetRecentTimeline returns the most recent n timeline entries.

func (*EventSourcedAuditService) GetTaskState added in v0.4.0

func (s *EventSourcedAuditService) GetTaskState(taskID string) *events.TaskState

GetTaskState returns the current state of a task from the projection.

func (*EventSourcedAuditService) GetTimeline added in v0.4.0

func (s *EventSourcedAuditService) GetTimeline() []events.TimelineEntry

GetTimeline returns the audit timeline from the projection.

func (*EventSourcedAuditService) GetVerificationVelocity added in v0.4.0

func (s *EventSourcedAuditService) GetVerificationVelocity() float64

GetVerificationVelocity returns tasks verified per day.

func (*EventSourcedAuditService) LoadEvents added in v0.4.0

func (s *EventSourcedAuditService) LoadEvents() ([]*events.BaseEvent, error)

LoadEvents returns all events from the store.

func (*EventSourcedAuditService) LoadEventsSince added in v0.4.0

func (s *EventSourcedAuditService) LoadEventsSince(since time.Time) ([]*events.BaseEvent, error)

LoadEventsSince returns events since the given time.

func (*EventSourcedAuditService) Log added in v0.4.0

func (s *EventSourcedAuditService) Log(action string, actor string, metadata map[string]interface{}) error

Log implements domain.AuditLogger.

func (*EventSourcedAuditService) RegisterHandler added in v0.4.0

func (s *EventSourcedAuditService) RegisterHandler(reg events.HandlerRegistration)

RegisterHandler registers an event handler with the dispatcher. If no dispatcher is set, this creates one.

func (*EventSourcedAuditService) SetDispatcher added in v0.4.0

func (s *EventSourcedAuditService) SetDispatcher(dispatcher *events.EventDispatcher)

SetDispatcher sets the event dispatcher for this service.

func (*EventSourcedAuditService) VerifyIntegrity added in v0.4.0

func (s *EventSourcedAuditService) VerifyIntegrity() ([]string, error)

VerifyIntegrity checks the hash chain for tampering.

type ForecastService added in v0.4.0

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

ForecastService provides enhanced project forecasting with trend analysis.

func NewForecastService added in v0.4.0

func NewForecastService(
	projection *events.ExtendedVelocityProjection,
	repo domain.WorkspaceRepository,
) *ForecastService

NewForecastService creates a new forecast service.

func (*ForecastService) GetBurndown added in v0.4.0

func (s *ForecastService) GetBurndown() ([]analytics.BurndownPoint, error)

GetBurndown returns burndown chart data.

func (*ForecastService) GetForecast added in v0.4.0

func (s *ForecastService) GetForecast() (*analytics.ForecastResult, error)

GetForecast returns a comprehensive forecast for the current project.

func (*ForecastService) GetSimpleForecast added in v0.4.0

func (s *ForecastService) GetSimpleForecast() (*SimpleForecast, error)

GetSimpleForecast returns a simplified forecast result.

func (*ForecastService) GetVelocityStats added in v0.4.0

func (s *ForecastService) GetVelocityStats() analytics.VelocityStats

GetVelocityStats returns statistical summary of velocity.

func (*ForecastService) GetVelocityTrend added in v0.4.0

func (s *ForecastService) GetVelocityTrend() analytics.VelocityTrend

GetVelocityTrend returns the current velocity trend analysis.

func (*ForecastService) GetVelocityWindows added in v0.4.0

func (s *ForecastService) GetVelocityWindows() []analytics.VelocityWindow

GetVelocityWindows returns velocity for each configured time window.

type GitService added in v0.4.0

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

func NewGitService added in v0.4.0

func NewGitService(repo domain.WorkspaceRepository, taskSvc *TaskService) *GitService

func (*GitService) SyncMarkers added in v0.4.0

func (s *GitService) SyncMarkers(n int) ([]string, error)

SyncMarkers scans the last n commits for [roady:task-id] markers and completes tasks.

type HealthResult added in v0.6.0

type HealthResult struct {
	Name      string       `json:"name"`
	Status    HealthStatus `json:"status"`
	Latency   string       `json:"latency,omitempty"`
	Error     string       `json:"error,omitempty"`
	CheckedAt time.Time    `json:"checked_at"`
}

HealthResult holds health check results for a plugin.

type HealthScanner added in v0.4.0

type HealthScanner interface {
	ScanRepoHealth(repoPath string) (*dependency.RepoHealth, error)
}

HealthScanner defines an interface for scanning repo health.

type HealthStatus added in v0.6.0

type HealthStatus string

HealthStatus represents plugin health state.

const (
	HealthStatusHealthy   HealthStatus = "healthy"
	HealthStatusDegraded  HealthStatus = "degraded"
	HealthStatusUnhealthy HealthStatus = "unhealthy"
	HealthStatusUnknown   HealthStatus = "unknown"
)

type ImportResult added in v0.4.0

type ImportResult struct {
	Imported int               `json:"imported"`
	Skipped  int               `json:"skipped"`
	Errors   map[string]string `json:"errors,omitempty"`
}

ImportResult contains the results of importing dependencies from spec.

type InitService

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

func NewInitService

func NewInitService(repo domain.WorkspaceRepository, audit domain.AuditLogger) *InitService

func (*InitService) InitializeProject

func (s *InitService) InitializeProject(name string) error

func (*InitService) SetTemplate added in v0.6.0

func (s *InitService) SetTemplate(name string)

SetTemplate sets the template to use for project initialization.

type OrgService added in v0.6.0

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

OrgService provides organizational multi-project operations.

func NewOrgService added in v0.6.0

func NewOrgService(root string) *OrgService

NewOrgService creates a new OrgService rooted at the given directory.

func (*OrgService) AggregateMetrics added in v0.6.0

func (s *OrgService) AggregateMetrics() (*org.OrgMetrics, error)

AggregateMetrics collects metrics from all discovered projects.

func (*OrgService) DetectCrossDrift added in v0.6.0

func (s *OrgService) DetectCrossDrift() (*org.CrossDriftReport, error)

DetectCrossDrift discovers projects and aggregates drift reports.

func (*OrgService) DiscoverProjects added in v0.6.0

func (s *OrgService) DiscoverProjects() ([]string, error)

DiscoverProjects walks the root directory tree and returns paths containing .roady directories.

func (*OrgService) LoadMergedPolicy added in v0.6.0

func (s *OrgService) LoadMergedPolicy(projectPath string) (*policy.PolicyConfig, error)

LoadMergedPolicy loads org-level SharedPolicy and overlays project-level policy.yaml values.

func (*OrgService) LoadOrgConfig added in v0.6.0

func (s *OrgService) LoadOrgConfig() (*org.OrgConfig, error)

LoadOrgConfig loads the org config from .roady/org.yaml in the root directory.

func (*OrgService) SaveOrgConfig added in v0.6.0

func (s *OrgService) SaveOrgConfig(config *org.OrgConfig) error

SaveOrgConfig saves the org config to .roady/org.yaml in the root directory.

type PlanRepositoryAdapter added in v0.4.0

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

PlanRepositoryAdapter adapts WorkspaceRepository to project.PlanRepository.

func NewPlanRepositoryAdapter added in v0.4.0

func NewPlanRepositoryAdapter(repo domain.WorkspaceRepository) *PlanRepositoryAdapter

NewPlanRepositoryAdapter creates a new adapter.

func (*PlanRepositoryAdapter) Load added in v0.4.0

Load implements project.PlanRepository.

func (*PlanRepositoryAdapter) Save added in v0.4.0

Save implements project.PlanRepository.

type PlanService

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

func NewPlanService

func NewPlanService(repo domain.WorkspaceRepository, audit domain.AuditLogger) *PlanService

func (*PlanService) ApprovePlan

func (s *PlanService) ApprovePlan() error

func (*PlanService) ApprovePlanWithActor added in v0.4.0

func (s *PlanService) ApprovePlanWithActor(actor string) error

ApprovePlanWithActor atomically approves the plan and initializes task states.

func (*PlanService) GeneratePlan

func (s *PlanService) GeneratePlan(ctx context.Context) (*planning.Plan, error)

GeneratePlan updates the Plan based on the current Spec using a default heuristic.

func (*PlanService) GetBlockedTasks added in v0.4.0

func (s *PlanService) GetBlockedTasks(ctx context.Context) ([]project.TaskSummary, error)

GetBlockedTasks returns tasks that are currently blocked.

func (*PlanService) GetCoordinator added in v0.4.0

func (s *PlanService) GetCoordinator() *project.Coordinator

GetCoordinator returns the underlying project coordinator for advanced operations.

func (*PlanService) GetInProgressTasks added in v0.4.0

func (s *PlanService) GetInProgressTasks(ctx context.Context) ([]project.TaskSummary, error)

GetInProgressTasks returns tasks that are currently in progress.

func (*PlanService) GetPlan

func (s *PlanService) GetPlan() (*planning.Plan, error)

func (*PlanService) GetProjectSnapshot added in v0.4.0

func (s *PlanService) GetProjectSnapshot(ctx context.Context) (*project.ProjectSnapshot, error)

GetProjectSnapshot returns a consistent view of plan and execution state.

func (*PlanService) GetReadyTasks added in v0.4.0

func (s *PlanService) GetReadyTasks(ctx context.Context) ([]project.TaskSummary, error)

GetReadyTasks returns tasks that are ready to be started (unlocked and pending).

func (*PlanService) GetState

func (s *PlanService) GetState() (*planning.ExecutionState, error)

func (*PlanService) GetTaskSummaries added in v0.4.0

func (s *PlanService) GetTaskSummaries(ctx context.Context) ([]project.TaskSummary, error)

GetTaskSummaries returns summaries of all tasks with their current status.

func (*PlanService) GetUsage

func (s *PlanService) GetUsage() (*domain.UsageStats, error)

func (*PlanService) PrunePlan

func (s *PlanService) PrunePlan() error

func (*PlanService) ReconcilePlan

func (s *PlanService) ReconcilePlan(proposedTasks []planning.Task) (*planning.Plan, error)

ReconcilePlan merges new tasks with the existing plan state.

func (*PlanService) RejectPlan

func (s *PlanService) RejectPlan() error

func (*PlanService) UpdatePlan

func (s *PlanService) UpdatePlan(tasks []planning.Task) (*planning.Plan, error)

UpdatePlan allows external agents (AI) to provide a specific list of tasks.

type PluginConfigRepository added in v0.4.0

type PluginConfigRepository interface {
	LoadPluginConfigs() (*domainPlugin.PluginConfigs, error)
	GetPluginConfig(name string) (*domainPlugin.PluginConfig, error)
	SetPluginConfig(name string, cfg domainPlugin.PluginConfig) error
}

PluginConfigRepository provides access to plugin configurations

type PluginInfo added in v0.6.0

type PluginInfo struct {
	Name        string `json:"name"`
	Binary      string `json:"binary"`
	Version     string `json:"version,omitempty"`
	Description string `json:"description,omitempty"`
	Status      string `json:"status"` // "available", "missing", "unknown"
}

PluginInfo represents enriched plugin information.

type PluginService added in v0.6.0

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

PluginService manages plugin registration, validation, and health.

func NewPluginService added in v0.6.0

func NewPluginService(repo *storage.FilesystemRepository) *PluginService

NewPluginService creates a new PluginService.

func (*PluginService) CheckAllHealth added in v0.6.0

func (s *PluginService) CheckAllHealth() (map[string]*HealthResult, error)

CheckAllHealth checks health of all registered plugins.

func (*PluginService) CheckHealth added in v0.6.0

func (s *PluginService) CheckHealth(name string) (*HealthResult, error)

CheckHealth checks the health of a single plugin.

func (*PluginService) ListPlugins added in v0.6.0

func (s *PluginService) ListPlugins() ([]PluginInfo, error)

ListPlugins returns all registered plugins with status information.

func (*PluginService) RegisterPlugin added in v0.6.0

func (s *PluginService) RegisterPlugin(name, binaryPath string) error

RegisterPlugin registers a plugin by name and binary path.

func (*PluginService) UnregisterPlugin added in v0.6.0

func (s *PluginService) UnregisterPlugin(name string) error

UnregisterPlugin removes a plugin by name.

func (*PluginService) ValidatePlugin added in v0.6.0

func (s *PluginService) ValidatePlugin(name string) (*ValidationResult, error)

ValidatePlugin loads a plugin and calls Init() to verify it works.

type PolicyService

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

func NewPolicyService

func NewPolicyService(repo domain.WorkspaceRepository) *PolicyService

func (*PolicyService) CheckCompliance

func (s *PolicyService) CheckCompliance() ([]policy.Violation, error)

CheckCompliance validates the current plan against active policies.

func (*PolicyService) ValidateTransition

func (s *PolicyService) ValidateTransition(taskID string, event string) error

type ScanResult added in v0.4.0

type ScanResult struct {
	ScannedAt      time.Time                         `json:"scanned_at"`
	TotalRepos     int                               `json:"total_repos"`
	HealthyRepos   int                               `json:"healthy_repos"`
	UnhealthyRepos int                               `json:"unhealthy_repos"`
	Unreachable    int                               `json:"unreachable"`
	Details        map[string]*dependency.RepoHealth `json:"details"`
}

ScanResult contains the results of a dependency scan.

func (*ScanResult) AllHealthy added in v0.4.0

func (r *ScanResult) AllHealthy() bool

AllHealthy returns true if all repos are healthy.

type SimpleForecast added in v0.4.0

type SimpleForecast struct {
	Velocity       float64
	RemainingTasks int
	TotalTasks     int
	EstimatedDays  float64
	Trend          analytics.TrendDirection
	TrendSlope     float64
}

SimpleForecast provides basic forecasting without the full service infrastructure. Useful for CLI commands that don't need all the complexity.

type SpecService

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

func NewSpecService

func NewSpecService(repo domain.WorkspaceRepository) *SpecService

func (*SpecService) AddFeature

func (s *SpecService) AddFeature(title, description string) (*spec.ProductSpec, error)

func (*SpecService) AnalyzeDirectory

func (s *SpecService) AnalyzeDirectory(root string) (*spec.ProductSpec, error)

AnalyzeDirectory crawls a directory for markdown files and merges them into a single Spec.

func (*SpecService) GetSpec

func (s *SpecService) GetSpec() (*spec.ProductSpec, error)

func (*SpecService) ImportFromMarkdown

func (s *SpecService) ImportFromMarkdown(path string) (*spec.ProductSpec, error)

ImportFromMarkdown reads a markdown file and converts it into a ProductSpec.

type StateRepositoryAdapter added in v0.4.0

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

StateRepositoryAdapter adapts WorkspaceRepository to project.StateRepository.

func NewStateRepositoryAdapter added in v0.4.0

func NewStateRepositoryAdapter(repo domain.WorkspaceRepository) *StateRepositoryAdapter

NewStateRepositoryAdapter creates a new adapter.

func (*StateRepositoryAdapter) Load added in v0.4.0

Load implements project.StateRepository.

func (*StateRepositoryAdapter) Save added in v0.4.0

Save implements project.StateRepository.

type SyncResult added in v0.6.0

type SyncResult struct {
	Action   string   `json:"action"`
	Files    []string `json:"files,omitempty"`
	Conflict bool     `json:"conflict"`
	Message  string   `json:"message"`
}

SyncResult holds the outcome of a push or pull operation.

type SyncService added in v0.4.0

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

func NewSyncService added in v0.4.0

func NewSyncService(repo domain.WorkspaceRepository, taskSvc *TaskService) *SyncService

func NewSyncServiceWithPlugins added in v0.4.0

func NewSyncServiceWithPlugins(repo domain.WorkspaceRepository, pluginRepo PluginConfigRepository, taskSvc *TaskService) *SyncService

NewSyncServiceWithPlugins creates a SyncService with plugin config support

func (*SyncService) GetPluginConfig added in v0.4.0

func (s *SyncService) GetPluginConfig(name string) (*domainPlugin.PluginConfig, error)

GetPluginConfig returns the configuration for a named plugin

func (*SyncService) ListPluginConfigs added in v0.4.0

func (s *SyncService) ListPluginConfigs() ([]string, error)

ListPluginConfigs returns all configured plugin names

func (*SyncService) SetPluginConfig added in v0.4.0

func (s *SyncService) SetPluginConfig(name string, cfg domainPlugin.PluginConfig) error

SetPluginConfig saves a plugin configuration

func (*SyncService) SyncWithNamedPlugin added in v0.4.0

func (s *SyncService) SyncWithNamedPlugin(name string) ([]string, error)

SyncWithNamedPlugin syncs using a named plugin configuration from plugins.yaml

func (*SyncService) SyncWithPlugin added in v0.4.0

func (s *SyncService) SyncWithPlugin(pluginPath string) ([]string, error)

SyncWithPlugin syncs using a plugin binary path (uses empty config, relies on env vars)

func (*SyncService) SyncWithPluginConfig added in v0.4.0

func (s *SyncService) SyncWithPluginConfig(pluginPath string, config map[string]string) ([]string, error)

SyncWithPluginConfig syncs using a plugin binary path with explicit configuration

type TaskService

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

func NewTaskService

func NewTaskService(repo domain.WorkspaceRepository, audit domain.AuditLogger, policy *PolicyService) *TaskService

func (*TaskService) AssignTask added in v0.6.0

func (s *TaskService) AssignTask(ctx context.Context, taskID, assignee string) error

AssignTask sets the owner on a task without requiring a status transition.

func (*TaskService) BlockTask added in v0.4.0

func (s *TaskService) BlockTask(ctx context.Context, taskID, reason string) error

BlockTask blocks a task with a reason.

func (*TaskService) CompleteTask added in v0.4.0

func (s *TaskService) CompleteTask(ctx context.Context, taskID, evidence string) ([]string, error)

CompleteTask completes a task and returns newly unlocked task IDs.

func (*TaskService) GetCoordinator added in v0.4.0

func (s *TaskService) GetCoordinator() *project.Coordinator

GetCoordinator returns the underlying project coordinator for advanced operations.

func (*TaskService) LinkTask

func (s *TaskService) LinkTask(taskID string, provider string, ref planning.ExternalRef) error

func (*TaskService) StartTask added in v0.4.0

func (s *TaskService) StartTask(ctx context.Context, taskID, owner, rateID string) error

StartTask starts a task using the coordinator with proper dependency validation.

func (*TaskService) TransitionTask

func (s *TaskService) TransitionTask(taskID string, event string, actor string, evidence string) error

func (*TaskService) UnblockTask added in v0.4.0

func (s *TaskService) UnblockTask(ctx context.Context, taskID string) error

UnblockTask unblocks a previously blocked task.

func (*TaskService) VerifyTask added in v0.4.0

func (s *TaskService) VerifyTask(ctx context.Context, taskID, verifier string) error

VerifyTask marks a completed task as verified.

type TeamService added in v0.6.0

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

TeamService manages team membership and role-based access.

func NewTeamService added in v0.6.0

func NewTeamService(repo *storage.FilesystemRepository, audit domain.AuditLogger) *TeamService

func (*TeamService) AddMember added in v0.6.0

func (s *TeamService) AddMember(name string, role team.Role) error

AddMember adds or updates a team member.

func (*TeamService) GetMemberRole added in v0.6.0

func (s *TeamService) GetMemberRole(name string) (team.Role, error)

GetMemberRole returns the role for a given member name, or empty if not found.

func (*TeamService) ListMembers added in v0.6.0

func (s *TeamService) ListMembers() (*team.TeamConfig, error)

ListMembers returns the current team configuration.

func (*TeamService) RemoveMember added in v0.6.0

func (s *TeamService) RemoveMember(name string) error

RemoveMember removes a team member.

type Template added in v0.6.0

type Template struct {
	Name        string
	Description string
	Spec        func(projectName string) *spec.ProductSpec
}

Template represents a starter project template.

func BuiltinTemplates added in v0.6.0

func BuiltinTemplates() []Template

BuiltinTemplates returns the available starter templates.

func FindTemplate added in v0.6.0

func FindTemplate(name string) *Template

FindTemplate returns the template with the given name, or nil.

type UsageService added in v0.4.0

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

UsageService tracks command and AI token usage separately from audit logging.

func NewUsageService added in v0.4.0

func NewUsageService(repo domain.WorkspaceRepository) *UsageService

func (*UsageService) GetTotalTokens added in v0.4.0

func (s *UsageService) GetTotalTokens() (int, error)

GetTotalTokens returns the total token count across all providers.

func (*UsageService) GetUsage added in v0.4.0

func (s *UsageService) GetUsage() (*domain.UsageStats, error)

GetUsage returns the current usage statistics.

func (*UsageService) IncrementCommand added in v0.4.0

func (s *UsageService) IncrementCommand() error

IncrementCommand records that a command was executed.

func (*UsageService) RecordTokenUsage added in v0.4.0

func (s *UsageService) RecordTokenUsage(model string, inputTokens, outputTokens int) error

RecordTokenUsage records AI token usage for a specific model.

type ValidationResult added in v0.6.0

type ValidationResult struct {
	Name    string `json:"name"`
	Valid   bool   `json:"valid"`
	Error   string `json:"error,omitempty"`
	Latency string `json:"latency,omitempty"`
}

ValidationResult holds the result of plugin validation.

type WorkspaceSyncService added in v0.6.0

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

WorkspaceSyncService handles git-based synchronization of the .roady/ directory.

func NewWorkspaceSyncService added in v0.6.0

func NewWorkspaceSyncService(root string, audit domain.AuditLogger) *WorkspaceSyncService

func (*WorkspaceSyncService) Pull added in v0.6.0

Pull fetches remote changes and merges .roady/ files. Returns conflict info if merge fails.

func (*WorkspaceSyncService) Push added in v0.6.0

Push stages and commits .roady/ changes, then pushes to the remote.

Jump to

Keyboard shortcuts

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