Add/Update wolf/task.py by Wolf
This commit is contained in:
63
wolf/task.py
Normal file
63
wolf/task.py
Normal file
@@ -0,0 +1,63 @@
|
||||
import logging
|
||||
import json
|
||||
from dataclasses import dataclass, asdict
|
||||
from typing import List, Dict, Any, Optional
|
||||
|
||||
@dataclass
|
||||
class Task:
|
||||
id: str
|
||||
title: str
|
||||
description: str
|
||||
repo_owner: str
|
||||
repo_name: str
|
||||
issue_number: Optional[int] = None
|
||||
assigned_model: Optional[str] = None
|
||||
assigned_provider: Optional[str] = None
|
||||
|
||||
class TaskGenerator:
|
||||
"""
|
||||
Task generator for Wolf.
|
||||
"""
|
||||
def __init__(self, gitea_client):
|
||||
self.gitea = gitea_client
|
||||
|
||||
def from_gitea_issues(self, owner, repo, label="wolf-task"):
|
||||
issues = self.gitea.get_issues(owner, repo)
|
||||
tasks = []
|
||||
for issue in issues:
|
||||
# Check for label if needed
|
||||
labels = [l['name'] for l in issue.get('labels', [])]
|
||||
if label and label not in labels:
|
||||
continue
|
||||
|
||||
task = Task(
|
||||
id=f"gitea-{owner}-{repo}-{issue['number']}",
|
||||
title=issue['title'],
|
||||
description=issue['body'],
|
||||
repo_owner=owner,
|
||||
repo_name=repo,
|
||||
issue_number=issue['number']
|
||||
)
|
||||
tasks.append(task)
|
||||
return tasks
|
||||
|
||||
def from_spec(self, spec_path):
|
||||
with open(spec_path, 'r') as f:
|
||||
data = json.load(f)
|
||||
tasks = []
|
||||
for item in data:
|
||||
task = Task(**item)
|
||||
tasks.append(task)
|
||||
return tasks
|
||||
|
||||
def assign_tasks(self, tasks: List[Task], models: List[Dict[str, str]]):
|
||||
"""
|
||||
Assign tasks to models in a round-robin fashion or similar.
|
||||
"""
|
||||
assigned_tasks = []
|
||||
for i, task in enumerate(tasks):
|
||||
model_info = models[i % len(models)]
|
||||
task.assigned_model = model_info['model']
|
||||
task.assigned_provider = model_info['provider']
|
||||
assigned_tasks.append(task)
|
||||
return assigned_tasks
|
||||
Reference in New Issue
Block a user