my prefect server setup prefect-metrics.waow.tech
python orchestration
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

add title + description to briefing, use Field metadata for structured output

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

zzstoatzz 62699b63 41ebf681

+17 -9
+4 -1
flows/curate.py
··· 25 25 "needs review", "going stale", "quick wins", "watching" 26 26 27 27 each item note should be ~10 words of useful context. 28 - the headline should be a single sentence summary. 28 + the title should be 2-3 words that capture the vibe: "monday triage", "quiet week", 29 + "bug cluster", "release crunch". lowercase. 30 + 31 + the headline should be 1-2 sentences about what's going on and what to pay attention to. 29 32 30 33 ## visual styling 31 34
+8 -7
packages/mps/src/mps/briefing.py
··· 1 1 from enum import StrEnum 2 2 3 - from pydantic import BaseModel 3 + from pydantic import BaseModel, Field 4 4 5 5 6 6 class SectionAccent(StrEnum): ··· 29 29 class BriefingItem(BaseModel): 30 30 """A reference to a hub item with agent commentary.""" 31 31 32 - item_id: str # matches Card.id: "github:prefecthq/prefect#1234" 33 - note: str # 1-line context: "stale 2 weeks, might be blocked" 32 + item_id: str = Field(examples=["github:prefecthq/prefect#1234", "tangled:zat#42"]) 33 + note: str = Field(examples=["stale 2 weeks, might be blocked", "ready to merge, just needs a rebase"]) 34 34 highlight: bool = False 35 35 36 36 37 37 class BriefingSection(BaseModel): 38 38 """A themed group of items.""" 39 39 40 - title: str # e.g. "needs review", "quick wins", "going stale" 41 - summary: str # 1-2 sentence section summary 40 + title: str = Field(examples=["needs review", "quick wins", "going stale"]) 41 + summary: str = Field(description="1-2 sentence section summary") 42 42 items: list[BriefingItem] 43 43 accent: SectionAccent = SectionAccent.sky 44 44 icon: SectionIcon = SectionIcon.eye ··· 48 48 class Briefing(BaseModel): 49 49 """The agent's full dashboard briefing.""" 50 50 51 - headline: str # e.g. "3 items need attention today" 51 + title: str = Field(description="2-3 word vibe", examples=["monday triage", "quiet week", "bug cluster"]) 52 + headline: str = Field(description="1-2 sentence summary of what's going on and what to pay attention to", examples=["3 PRs need review and a bug is blocking the release. tangled activity is quiet."]) 52 53 sections: list[BriefingSection] 53 - generated_at: str # ISO 8601 54 + generated_at: str
+4 -1
web/src/lib/components/Briefing.svelte
··· 66 66 67 67 {#if briefing} 68 68 <div class="space-y-4"> 69 - <h2 class="text-xl font-semibold text-gray-100">{briefing.headline}</h2> 69 + {#if briefing.title} 70 + <h2 class="text-xl font-semibold text-gray-100">{briefing.title}</h2> 71 + {/if} 72 + <p class="text-sm text-gray-400">{briefing.headline}</p> 70 73 71 74 <div class="grid gap-4 sm:grid-cols-2"> 72 75 {#each sections as section (section.title)}
+1
web/src/lib/server/briefing.ts
··· 18 18 priority?: SectionPriority; 19 19 } 20 20 export interface Briefing { 21 + title: string; 21 22 headline: string; 22 23 sections: BriefingSection[]; 23 24 generated_at: string;