package dashboard import ( "context" "inbox/internal/domain/humantask" "inbox/internal/domain/lane" "inbox/internal/domain/lanesync" "inbox/internal/domain/message" "inbox/internal/domain/role" "inbox/internal/domain/task" "inbox/internal/domain/taskgraph" "inbox/internal/domain/topic" "inbox/internal/domain/workflow" "inbox/internal/domain/workspace" ) type OverviewRepository interface { GetProject(ctx context.Context, projectID string) (workspace.Project, error) GetTopicBySlugOrTitle(ctx context.Context, workspaceID, value string, spaces ...topic.Space) (topic.Record, error) ListTopics(ctx context.Context, workspaceID string) ([]topic.Record, error) ListTopicsBySpace(ctx context.Context, workspaceID string, space topic.Space) ([]topic.Record, error) ListMessagesByWorkspace(ctx context.Context, workspaceID string) ([]message.Record, error) ListMessagesByTopic(ctx context.Context, topicID string) ([]message.Record, error) ListRoles(ctx context.Context) ([]role.Definition, error) ListLanesByWorkspace(ctx context.Context, workspaceID string) ([]lane.Record, error) ListLanesByTopic(ctx context.Context, topicID string) ([]lane.Record, error) ListLaneSyncsByTopic(ctx context.Context, topicID string) ([]lanesync.Record, error) ListTasksByTopic(ctx context.Context, topicID string) ([]task.Record, error) ListTaskDependencies(ctx context.Context, taskID string) ([]task.Dependency, error) GetLatestTaskGraphVersionByTopic(ctx context.Context, topicID string) (taskgraph.Record, error) ListWorkflowRunsByWorkspace(ctx context.Context, workspaceID string) ([]workflow.Run, error) ListWorkflowRunsByTopic(ctx context.Context, topicID string) ([]workflow.Run, error) ListPendingHumanTasksByWorkspace(ctx context.Context, workspaceID string) ([]humantask.Record, error) ListPendingDeliveriesByWorkspace(ctx context.Context, workspaceID string) ([]message.PendingDelivery, error) ListWorkflowRunLogs(ctx context.Context, runID string, afterSeq int) ([]workflow.RunLog, error) } type Repository interface { OverviewRepository } type Service struct { repo Repository } func NewService(repo Repository) *Service { return &Service{repo: repo} }