File size: 2,541 Bytes
011336e
 
 
 
 
95dd43a
011336e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cd249cc
011336e
 
95dd43a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
011336e
 
 
 
 
 
 
 
95dd43a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
"""Data contracts for the Deployment Readiness Copilot."""

from __future__ import annotations

from dataclasses import dataclass, field
from typing import Any, Dict, List, Literal, Optional

RiskLevel = Literal["low", "medium", "high"]


@dataclass(slots=True)
class ChecklistItem:
    """Single deployment readiness action."""

    title: str
    description: str
    category: str
    owners: List[str] = field(default_factory=list)
    status: Literal["todo", "in_progress", "done"] = "todo"


@dataclass(slots=True)
class ReadinessPlan:
    """Planner output summarizing pre-flight steps."""

    summary: str
    items: List[ChecklistItem]


@dataclass(slots=True)
class EvidencePacket:
    """Artifacts collected by the gatherer agent."""

    findings: List[str]
    gaps: List[str]
    signals: List[str]


@dataclass(slots=True)
class DocumentationBundle:
    """Structured comms generated for docs & announcements."""

    changelog_entry: str
    readme_snippet: str
    announcement_draft: str


@dataclass(slots=True)
class ReviewFinding:
    """Single risk or approval note from the reviewer agent."""

    severity: RiskLevel
    note: str


@dataclass(slots=True)
class ReviewReport:
    """Reviewer conclusion, including confidence."""

    decision: Literal["approve", "block", "needs_info"]
    confidence: float
    findings: List[ReviewFinding]


@dataclass(slots=True)
class ReadinessRequest:
    """Top-level input to the orchestrator."""

    project_name: str
    release_goal: str
    code_summary: str
    infra_notes: Optional[str] = None
    stakeholders: Optional[List[str]] = None
    sponsor_llms: Optional[List[str]] = None


@dataclass(slots=True)
class DocumentationReferences:
    """Context7 documentation lookup results."""

    framework: Optional[str] = None
    platform: Optional[str] = None
    lookups: List[Dict[str, Any]] = field(default_factory=list)


@dataclass(slots=True)
class DeploymentActions:
    """GitHub deployment actions and configuration."""

    repo: Optional[str] = None
    branch: str = "main"
    ready: bool = False
    actions: List[Dict[str, Any]] = field(default_factory=list)
    execution_results: Optional[Dict[str, Any]] = None


@dataclass(slots=True)
class ReadinessResponse:
    """Full multi-agent response returned to the UI."""

    plan: ReadinessPlan
    evidence: EvidencePacket
    documentation: DocumentationBundle
    review: ReviewReport
    docs_references: Optional[DocumentationReferences] = None
    deployment: Optional[DeploymentActions] = None