feat(cloud): surface cancellation over the internal Host<->Cloud protocol

- LeaseRenewalResponse gains cancel_requested (populated from the
  repository's renew_lease result)
- TerminalResultRequest.status widened to accept "cancelled"
- Add internal API tests for a renewal surfacing cancel_requested=True
  and a cancelled terminal report being accepted/idempotent
This commit is contained in:
2026-07-15 18:13:43 +08:00
parent 19c6669800
commit 8a0d48eada
4 changed files with 64 additions and 9 deletions
@@ -95,6 +95,7 @@ class LeaseRenewalRequest(BaseModel):
class LeaseRenewalResponse(BaseModel):
status: Literal["renewed"]
lease_expires_at: datetime
cancel_requested: bool = False
class TerminalResultRequest(BaseModel):
@@ -102,7 +103,7 @@ class TerminalResultRequest(BaseModel):
task_id: str = Field(min_length=1)
attempt: int = Field(ge=1)
lease_id: str = Field(min_length=1)
status: Literal["done", "failed"]
status: Literal["done", "failed", "cancelled"]
failure_reason: str | None = None
result: dict[str, Any] | None = None