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
|