feat(cloud): add targeted task governance foundation
Tests / Test passed: 659

This commit is contained in:
2026-07-13 22:21:12 +08:00
parent a3ba94be04
commit 2cd314b183
41 changed files with 2099 additions and 15 deletions
@@ -38,12 +38,22 @@ class HeartbeatRequest(BaseModel):
host_id: str = Field(min_length=1)
address: str | None = None
devices: list[DeviceSnapshotModel] = Field(default_factory=list)
policy_revision: int = Field(default=0, ge=0)
class HostGovernancePolicyModel(BaseModel):
revision: int = Field(ge=1)
self_submission_enabled: bool
max_active_tasks: int | None = None
daily_token_budget: int | None = None
class HeartbeatResponse(BaseModel):
host_id: str
accepted_devices: int
received_at: datetime
policy_revision: int = Field(default=0, ge=0)
policy: HostGovernancePolicyModel | None = None
class ClaimRequest(BaseModel):
@@ -93,6 +103,16 @@ class TerminalResultResponse(BaseModel):
status: Literal["recorded", "already_recorded"]
class HostTaskSubmissionRequest(BaseModel):
host_id: str = Field(min_length=1)
goal: str = Field(min_length=1)
device_id: str | None = Field(default=None, min_length=1)
class HostTaskSubmissionResponse(BaseModel):
task_id: str
class StaleLeaseConflict(BaseModel):
code: Literal["stale_lease"] = "stale_lease"
detail: str
@@ -116,6 +136,9 @@ class PlannerDecisionRequest(BaseModel):
class PlannerDecisionResponse(BaseModel):
tool_name: str
arguments: dict[str, Any] = Field(default_factory=dict)
input_tokens: int | None = Field(default=None, ge=0)
output_tokens: int | None = Field(default=None, ge=0)
total_tokens: int | None = Field(default=None, ge=0)
class PlannerDecisionError(BaseModel):