···2525"needs review", "going stale", "quick wins", "watching"
26262727each item note should be ~10 words of useful context.
2828-the headline should be a single sentence summary.
2828+the title should be 2-3 words that capture the vibe: "monday triage", "quiet week",
2929+"bug cluster", "release crunch". lowercase.
3030+3131+the headline should be 1-2 sentences about what's going on and what to pay attention to.
29323033## visual styling
3134
+8-7
packages/mps/src/mps/briefing.py
···11from enum import StrEnum
2233-from pydantic import BaseModel
33+from pydantic import BaseModel, Field
445566class SectionAccent(StrEnum):
···2929class BriefingItem(BaseModel):
3030 """A reference to a hub item with agent commentary."""
31313232- item_id: str # matches Card.id: "github:prefecthq/prefect#1234"
3333- note: str # 1-line context: "stale 2 weeks, might be blocked"
3232+ item_id: str = Field(examples=["github:prefecthq/prefect#1234", "tangled:zat#42"])
3333+ note: str = Field(examples=["stale 2 weeks, might be blocked", "ready to merge, just needs a rebase"])
3434 highlight: bool = False
353536363737class BriefingSection(BaseModel):
3838 """A themed group of items."""
39394040- title: str # e.g. "needs review", "quick wins", "going stale"
4141- summary: str # 1-2 sentence section summary
4040+ title: str = Field(examples=["needs review", "quick wins", "going stale"])
4141+ summary: str = Field(description="1-2 sentence section summary")
4242 items: list[BriefingItem]
4343 accent: SectionAccent = SectionAccent.sky
4444 icon: SectionIcon = SectionIcon.eye
···4848class Briefing(BaseModel):
4949 """The agent's full dashboard briefing."""
50505151- headline: str # e.g. "3 items need attention today"
5151+ title: str = Field(description="2-3 word vibe", examples=["monday triage", "quiet week", "bug cluster"])
5252+ 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."])
5253 sections: list[BriefingSection]
5353- generated_at: str # ISO 8601
5454+ generated_at: str