Compare commits

..

No commits in common. "mainline" and "docs/input-channels-385" have entirely different histories.

View file

@ -185,20 +185,10 @@ def list_todo_tasks(vikunja_token: str, project_id: int, todo_id: int) -> list[d
]
def claim_task(
vikunja_token: str,
task_id: int,
in_progress_id: int,
project_id: int,
view_id: int,
) -> bool:
"""Move task from Todo → In Progress via the kanban view endpoint."""
def claim_task(vikunja_token: str, task_id: int, in_progress_id: int) -> bool:
"""Move task from Todo → In Progress."""
try:
vikunja_post(
vikunja_token,
f"projects/{project_id}/views/{view_id}/buckets/{in_progress_id}/tasks",
{"task_id": task_id},
)
vikunja_post(vikunja_token, f"tasks/{task_id}", {"bucket_id": in_progress_id})
log.info("Moved task %d → In Progress (bucket %d)", task_id, in_progress_id)
return True
except Exception as e:
@ -206,20 +196,10 @@ def claim_task(
return False
def unclaim_task(
vikunja_token: str,
task_id: int,
todo_id: int,
project_id: int,
view_id: int,
) -> None:
"""Move task back to Todo on job spawn failure via the kanban view endpoint."""
def unclaim_task(vikunja_token: str, task_id: int, todo_id: int) -> None:
"""Move task back to Todo on job spawn failure."""
try:
vikunja_post(
vikunja_token,
f"projects/{project_id}/views/{view_id}/buckets/{todo_id}/tasks",
{"task_id": task_id},
)
vikunja_post(vikunja_token, f"tasks/{task_id}", {"bucket_id": todo_id})
log.info("Unclaimed task %d → Todo", task_id)
except Exception as e:
log.warning("Failed to unclaim task %d: %s", task_id, e)
@ -493,7 +473,7 @@ def orchestrate_review_tasks(
role = extract_agent_role(task)
if not role or role in REVIEW_SKIP_ROLES:
log.info("Task %d role=%s skipped for review orchestration", task_id, role)
log.debug("Task %d role=%s skipped for review orchestration", task_id, role)
continue
spawn_review_pm_job(
@ -717,7 +697,7 @@ def main() -> None:
continue
log.info("Claiming task %d (%s) for role=%s", task_id, title[:60], role)
if not claim_task(vikunja_token, task_id, in_progress_id, project_id, view_id):
if not claim_task(vikunja_token, task_id, in_progress_id):
continue
try:
@ -727,7 +707,7 @@ def main() -> None:
active_by_role[role] = active_by_role.get(role, 0) + 1
except Exception as e:
log.error("Failed to spawn job for task %d: %s", task_id, e)
unclaim_task(vikunja_token, task_id, todo_id, project_id, view_id)
unclaim_task(vikunja_token, task_id, todo_id)
log.info("Dispatcher done. Claimed %d tasks.", claimed)