Documentation
¶
Overview ¶
Package standup generates AI-powered daily standup reports for cloop projects. It analyzes recent task activity, current blockers, and upcoming work to produce a concise standup report suitable for sharing with stakeholders or posting to Slack.
Index ¶
- func BuildDigestPrompt(d *Digest) string
- func BuildPrompt(goal string, r *Report, windowHours int) string
- func FormatDigestEmail(d *Digest) string
- func FormatDigestMarkdown(d *Digest) string
- func FormatDigestSlack(d *Digest) string
- func FormatMarkdown(r *Report, goal string, windowHours int) string
- func FormatSlack(r *Report, goal string, windowHours int) string
- func FormatText(r *Report, goal string, windowHours int) string
- func PostDigestToSlack(ctx context.Context, webhookURL string, d *Digest) error
- type Digest
- type DigestCard
- type Report
- type Sections
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildDigestPrompt ¶
BuildDigestPrompt builds the AI prompt for the team digest.
func BuildPrompt ¶
BuildPrompt creates the AI prompt for standup generation.
func FormatDigestEmail ¶
FormatDigestEmail renders the digest as an HTML email body.
func FormatDigestMarkdown ¶
FormatDigestMarkdown renders the digest as GitHub-flavored Markdown.
func FormatDigestSlack ¶
FormatDigestSlack renders the digest as a Slack Block Kit JSON payload.
func FormatMarkdown ¶
FormatMarkdown renders the standup as GitHub-flavored Markdown.
func FormatSlack ¶
FormatSlack renders the standup for Slack (plain text, emoji-friendly).
func FormatText ¶
FormatText renders the standup as plain text.
Types ¶
type Digest ¶
type Digest struct {
GeneratedAt time.Time
WindowHours int
Goal string
Cards []DigestCard
// Tasks active in the window but with no micro-standup (completed/failed)
CompletedTasks []*pm.Task
FailedTasks []*pm.Task
// AI-generated narrative
AIText string
}
Digest is a team-facing roll-up standup for all active tasks in a window.
func CollectDigest ¶
func CollectDigest(ctx context.Context, workDir string, s *state.ProjectState, windowHours int) (*Digest, error)
CollectDigest gathers DigestCards for every task updated in the given window. In-progress tasks get a full micro-standup card; completed/failed tasks in the window are listed without a card (they are included in the narrative prompt).
func GenerateDigest ¶
func GenerateDigest( ctx context.Context, prov provider.Provider, opts provider.Options, workDir string, s *state.ProjectState, windowHours int, ) (*Digest, error)
GenerateDigest collects per-task context, calls the AI once for a roll-up narrative, and returns a populated *Digest.
type DigestCard ¶
type DigestCard struct {
Task *pm.Task
TaskCtx *microstandup.TaskContext // populated during collection; nil on error
Card *microstandup.Card // populated after AI generation; nil on error
}
DigestCard bundles a micro-standup card with the originating task.
type Report ¶
type Report struct {
GeneratedAt time.Time
WindowHours int
// Tasks active in the window
CompletedTasks []*pm.Task
FailedTasks []*pm.Task
StartedTasks []*pm.Task
InProgressTasks []*pm.Task
BlockedTasks []*pm.Task
NextTasks []*pm.Task // top pending, not blocked
// Metrics
Metrics *insights.Metrics
// AI-generated narrative
AIText string
}
Report holds a generated standup.