Public declaration syntax from forge-py/src/forge/collab/roles.py Original source SHA-256: 8e1b99b76cd16b2768a5db2ba1a611a8fea8ec10003caee5453af3e16f42426b Function bodies and constant values are omitted. This is not the complete implementation. Source line 24 class CoordinatorContract(Protocol) Source line 36 async def decompose_task(self, task: DelegatedTask) -> list[DelegatedTask] Source line 54 async def assign_task(self, task: DelegatedTask, worker_did: str) -> TaskAcknowledgment Source line 75 async def aggregate_results(self, results: list[TaskResult]) -> TaskResult Source line 93 async def handle_worker_failure(self, task_id: str, worker_did: str, error: str) -> None Source line 112 class WorkerContract(Protocol) Source line 123 async def on_task_delegated(self, task: DelegatedTask) -> TaskAcknowledgment Source line 141 async def report_progress(self, progress: TaskProgress) -> None Source line 156 async def submit_result(self, result: TaskResult) -> None Source line 171 async def on_task_cancelled(self, task_id: str, reason: str) -> None Source line 188 class PeerContract(Protocol) Source line 198 async def propose(self, proposal: Any) -> str Source line 216 async def vote(self, proposal_id: str, approve: bool) -> None Source line 233 async def on_consensus(self, proposal_id: str, result: Any) -> None