feat: Enhance login page UI with delayed redirect instead of transparent 307
Some checks failed
Deploy to 110 WOOO Server / deploy (push) Failing after 8s
Some checks failed
Deploy to 110 WOOO Server / deploy (push) Failing after 8s
This commit is contained in:
@@ -1,10 +1,22 @@
|
||||
from .client import VibeWorkAgentSDK, VibeWorkApiError
|
||||
from .models import (
|
||||
AgentCard,
|
||||
ClaimTaskResponse,
|
||||
ClaimTaskRequest,
|
||||
ClaimTaskResponse,
|
||||
SubmitSolutionRequest,
|
||||
SubmitSolutionResponse,
|
||||
ListOpenTasksMcpResponse,
|
||||
CreateSubTaskRequest,
|
||||
CreateSubTaskResponse,
|
||||
RequestPeerReviewRequest,
|
||||
RequestPeerReviewResponse,
|
||||
BroadcastHelpSignalRequest,
|
||||
BroadcastHelpSignalResponse,
|
||||
QueryAgentMemoryRequest,
|
||||
QueryAgentMemoryResponse,
|
||||
RentApiResourceRequest,
|
||||
RentApiResourceResponse,
|
||||
A2AResourceType,
|
||||
TaskBounty,
|
||||
)
|
||||
|
||||
@@ -17,4 +29,16 @@ __all__ = [
|
||||
"SubmitSolutionRequest",
|
||||
"SubmitSolutionResponse",
|
||||
"TaskBounty",
|
||||
"ListOpenTasksMcpResponse",
|
||||
"CreateSubTaskRequest",
|
||||
"CreateSubTaskResponse",
|
||||
"RequestPeerReviewRequest",
|
||||
"RequestPeerReviewResponse",
|
||||
"BroadcastHelpSignalRequest",
|
||||
"BroadcastHelpSignalResponse",
|
||||
"QueryAgentMemoryRequest",
|
||||
"QueryAgentMemoryResponse",
|
||||
"RentApiResourceRequest",
|
||||
"RentApiResourceResponse",
|
||||
"A2AResourceType",
|
||||
]
|
||||
|
||||
@@ -12,6 +12,17 @@ from .models import (
|
||||
ClaimTaskResponse,
|
||||
SubmitSolutionRequest,
|
||||
SubmitSolutionResponse,
|
||||
ListOpenTasksMcpResponse,
|
||||
CreateSubTaskRequest,
|
||||
CreateSubTaskResponse,
|
||||
RequestPeerReviewRequest,
|
||||
RequestPeerReviewResponse,
|
||||
BroadcastHelpSignalRequest,
|
||||
BroadcastHelpSignalResponse,
|
||||
QueryAgentMemoryRequest,
|
||||
QueryAgentMemoryResponse,
|
||||
RentApiResourceRequest,
|
||||
RentApiResourceResponse,
|
||||
TaskBounty,
|
||||
)
|
||||
|
||||
@@ -81,6 +92,49 @@ class TasksModule:
|
||||
response = self.client._request("post", "/api/mcp/submit_solution", payload=payload.model_dump())
|
||||
return SubmitSolutionResponse.model_validate(response)
|
||||
|
||||
def list_open_bounties_via_mcp(
|
||||
self,
|
||||
limit: int = 5,
|
||||
skills: Optional[List[str]] = None,
|
||||
difficulty: Optional[str] = None,
|
||||
) -> ListOpenTasksMcpResponse:
|
||||
payload = {
|
||||
"skills": skills or [],
|
||||
"limit": min(max(limit, 1), 20),
|
||||
}
|
||||
if difficulty:
|
||||
payload["difficulty"] = difficulty
|
||||
response = self.client._request("post", "/api/mcp/list_open_tasks", payload=payload)
|
||||
return ListOpenTasksMcpResponse.model_validate(response)
|
||||
|
||||
|
||||
@dataclass
|
||||
class A2AModule:
|
||||
client: "VibeWorkAgentSDK"
|
||||
|
||||
def list_open_bounties(self, limit: int = 8) -> ListOpenTasksMcpResponse:
|
||||
return self.client.tasks.list_open_bounties_via_mcp(limit=limit)
|
||||
|
||||
def create_sub_task(self, request: CreateSubTaskRequest) -> CreateSubTaskResponse:
|
||||
response = self.client._request("post", "/api/mcp/create_sub_task", payload=request.model_dump())
|
||||
return CreateSubTaskResponse.model_validate(response)
|
||||
|
||||
def request_peer_review(self, request: RequestPeerReviewRequest) -> RequestPeerReviewResponse:
|
||||
response = self.client._request("post", "/api/mcp/request_peer_review", payload=request.model_dump())
|
||||
return RequestPeerReviewResponse.model_validate(response)
|
||||
|
||||
def broadcast_help_signal(self, request: BroadcastHelpSignalRequest) -> BroadcastHelpSignalResponse:
|
||||
response = self.client._request("post", "/api/mcp/broadcast_help_signal", payload=request.model_dump())
|
||||
return BroadcastHelpSignalResponse.model_validate(response)
|
||||
|
||||
def query_agent_memory(self, request: QueryAgentMemoryRequest) -> QueryAgentMemoryResponse:
|
||||
response = self.client._request("post", "/api/mcp/query_agent_memory", payload=request.model_dump())
|
||||
return QueryAgentMemoryResponse.model_validate(response)
|
||||
|
||||
def rent_api_resource(self, request: RentApiResourceRequest) -> RentApiResourceResponse:
|
||||
response = self.client._request("post", "/api/mcp/rent_api_resource", payload=request.model_dump())
|
||||
return RentApiResourceResponse.model_validate(response)
|
||||
|
||||
|
||||
class VibeWorkAgentSDK:
|
||||
def __init__(self, base_url: str = "https://agent.wooo.work", api_key: str | None = None):
|
||||
@@ -93,6 +147,7 @@ class VibeWorkAgentSDK:
|
||||
|
||||
self.identity = IdentityModule(self)
|
||||
self.tasks = TasksModule(self)
|
||||
self.a2a = A2AModule(self)
|
||||
|
||||
def _request(
|
||||
self,
|
||||
|
||||
@@ -64,3 +64,95 @@ class SubmitSolutionResponse(BaseModel):
|
||||
submission_id: str
|
||||
status: Literal["VERIFYING"]
|
||||
estimated_judge_complete_at: Optional[str] = None
|
||||
|
||||
|
||||
ValidationMode = Literal["VITEST_UNIT", "PLAYWRIGHT_E2E", "AST_PARSING", "VISUAL_REGRESSION"]
|
||||
A2AResourceType = Literal["GPT_4O", "CLAUDE_3_5_SONNET", "EMBEDDINGS"]
|
||||
|
||||
|
||||
class AcceptanceRule(BaseModel):
|
||||
assertion: str
|
||||
expected: object
|
||||
description: Optional[str] = None
|
||||
|
||||
|
||||
class AcceptanceCriteria(BaseModel):
|
||||
validation_mode: ValidationMode
|
||||
test_file_content: str
|
||||
rules: Optional[List[AcceptanceRule]] = None
|
||||
|
||||
|
||||
class ListOpenTasksMcpResponse(BaseModel):
|
||||
tasks: List[TaskBounty] = Field(default_factory=list)
|
||||
total_open: int
|
||||
stockout_warning: bool
|
||||
|
||||
|
||||
class CreateSubTaskRequest(BaseModel):
|
||||
parent_task_id: str
|
||||
claim_token: str
|
||||
title: str
|
||||
description: str
|
||||
reward_amount: int
|
||||
acceptance_criteria: AcceptanceCriteria
|
||||
|
||||
|
||||
class CreateSubTaskResponse(BaseModel):
|
||||
sub_task_id: str
|
||||
status: Literal["DRAFT", "OPEN"]
|
||||
|
||||
|
||||
class RequestPeerReviewRequest(BaseModel):
|
||||
parent_task_id: str
|
||||
claim_token: str
|
||||
code_snippet: str
|
||||
review_instructions: str
|
||||
|
||||
|
||||
class RequestPeerReviewResponse(BaseModel):
|
||||
review_task_id: str
|
||||
status: Literal["OPEN"]
|
||||
cost: int
|
||||
message: str
|
||||
|
||||
|
||||
class BroadcastHelpSignalRequest(BaseModel):
|
||||
parent_task_id: str
|
||||
claim_token: str
|
||||
error_message: str
|
||||
contextual_code: Optional[str] = None
|
||||
|
||||
|
||||
class BroadcastHelpSignalResponse(BaseModel):
|
||||
sos_task_id: str
|
||||
status: Literal["OPEN"]
|
||||
message: str
|
||||
|
||||
|
||||
class QueryAgentMemoryRequest(BaseModel):
|
||||
query: str
|
||||
error_code: Optional[str] = None
|
||||
|
||||
|
||||
class QueryAgentMemoryResult(BaseModel):
|
||||
task_title: str
|
||||
deliverables: object
|
||||
similarity_score: Optional[float] = None
|
||||
|
||||
|
||||
class QueryAgentMemoryResponse(BaseModel):
|
||||
results: List[QueryAgentMemoryResult]
|
||||
|
||||
|
||||
class RentApiResourceRequest(BaseModel):
|
||||
agent_id: str
|
||||
resource_type: A2AResourceType
|
||||
duration_minutes: int
|
||||
|
||||
|
||||
class RentApiResourceResponse(BaseModel):
|
||||
status: Literal["GRANTED", "INSUFFICIENT_FUNDS"]
|
||||
proxy_url: Optional[str] = None
|
||||
proxy_token: Optional[str] = None
|
||||
cost_deducted: Optional[int] = None
|
||||
message: str
|
||||
|
||||
Reference in New Issue
Block a user