MCPcopy Create free account
hub / github.com/Ishabdullah/Codey-v2 / TaskQueue

Class TaskQueue

core/taskqueue.py:28–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26 error: str = ''
27
28class TaskQueue:
29 def __init__(self, name='', project_dir=None):
30 self.name = name
31 self.project_dir = project_dir or os.getcwd()
32 self.tasks = []
33 self.created_at = datetime.now().isoformat()
34 self.original_request = ''
35 self._path = None
36
37 def add(self, description):
38 t = Task(id=len(self.tasks)+1, description=description)
39 self.tasks.append(t)
40 return t
41
42 def current(self):
43 """Return first pending or running task."""
44 for t in self.tasks:
45 if t.status in (STATUS_PENDING, STATUS_RUNNING):
46 return t
47 return None
48
49 def mark_running(self, task_id):
50 for t in self.tasks:
51 if t.id == task_id:
52 t.status = STATUS_RUNNING
53 break
54 self.save()
55
56 def mark_done(self, task_id, result=''):
57 for t in self.tasks:
58 if t.id == task_id:
59 t.status = STATUS_DONE
60 t.result = result[:300]
61 break
62 self.save()
63
64 def mark_failed(self, task_id, error=''):
65 for t in self.tasks:
66 if t.id == task_id:
67 t.status = STATUS_FAILED
68 t.error = error[:300]
69 break
70 self.save()
71
72 def is_complete(self):
73 return all(t.status in (STATUS_DONE, STATUS_SKIPPED) for t in self.tasks)
74
75 def pending_count(self):
76 return sum(1 for t in self.tasks if t.status == STATUS_PENDING)
77
78 def done_count(self):
79 return sum(1 for t in self.tasks if t.status == STATUS_DONE)
80
81 def _queue_path(self):
82 if self._path:
83 return self._path
84 SESSIONS_DIR.mkdir(exist_ok=True)
85 key = hashlib.md5(self.project_dir.encode()).hexdigest()[:8]

Callers 1

plan_tasksFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected