feat(agent99): add durable completion callback

This commit is contained in:
ogt
2026-07-11 20:45:52 +08:00
parent df26f43b77
commit e8b0244ee7
15 changed files with 965 additions and 41 deletions

View File

@@ -0,0 +1,73 @@
"""Bounded Agent99 completion callback contracts."""
from __future__ import annotations
from datetime import datetime
from typing import Literal
from pydantic import BaseModel, ConfigDict, Field
class Agent99TelegramReceipt(BaseModel):
model_config = ConfigDict(extra="forbid", str_strip_whitespace=True)
sent: bool = False
suppressed: bool = False
reason: str | None = Field(default=None, max_length=80)
message_format: str | None = Field(default=None, max_length=80)
visual_sent: bool = False
visual_file: str | None = Field(
default=None,
max_length=180,
pattern=r"^[^/\\]+$",
)
class Agent99ProblemReceipt(BaseModel):
model_config = ConfigDict(extra="forbid")
key: str | None = Field(default=None, max_length=240)
occurrences: int = Field(default=0, ge=0)
verified_resolved: int = Field(default=0, ge=0)
failed: int = Field(default=0, ge=0)
degraded: int = Field(default=0, ge=0)
blocked: int = Field(default=0, ge=0)
verifying: int = Field(default=0, ge=0)
candidate_ready: int = Field(default=0, ge=0)
class Agent99CompletionCallbackRequest(BaseModel):
model_config = ConfigDict(extra="forbid", str_strip_whitespace=True)
schema_version: Literal["agent99_completion_callback_v1"]
callback_id: str = Field(min_length=3, max_length=180, pattern=r"^[A-Za-z0-9_.:-]+$")
project_id: str = Field(default="awoooi", min_length=1, max_length=64)
run_id: str = Field(min_length=3, max_length=180)
trace_id: str = Field(min_length=3, max_length=180)
work_item_id: str = Field(min_length=3, max_length=180)
alert_id: str | None = Field(default=None, max_length=180)
correlation_key: str | None = Field(default=None, max_length=240)
source: str = Field(default="agent99", max_length=120)
mode: str = Field(min_length=2, max_length=80)
outcome_state: Literal[
"resolved",
"candidate_ready",
"verifying",
"degraded",
"blocked",
"failed",
]
controlled_apply: bool = False
transport_ok: bool
verifier_name: str = Field(min_length=2, max_length=160)
verifier_passed: bool
source_event_resolved: bool
source_event_resolution_policy: str = Field(max_length=120)
duration_seconds: float = Field(ge=0, le=3600)
evidence_ref: str = Field(min_length=1, max_length=180, pattern=r"^[^/\\]+$")
alert_kind: str | None = Field(default=None, max_length=120)
alert_service: str | None = Field(default=None, max_length=160)
alert_host: str | None = Field(default=None, max_length=160)
telegram: Agent99TelegramReceipt = Field(default_factory=Agent99TelegramReceipt)
problem: Agent99ProblemReceipt = Field(default_factory=Agent99ProblemReceipt)
occurred_at: datetime