Initial commit from agent
This commit is contained in:
56
capabilities/task_manager.py
Normal file
56
capabilities/task_manager.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""
|
||||
Google Tasks API integration.
|
||||
List, create, and complete tasks across all task lists.
|
||||
"""
|
||||
from googleapiclient.discovery import build
|
||||
from core.google_auth import get_credentials
|
||||
|
||||
def _service():
|
||||
return build('tasks', 'v1', credentials=get_credentials())
|
||||
|
||||
def _get_default_list_id() -> str:
|
||||
svc = _service()
|
||||
lists = svc.tasklists().list(maxResults=1).execute()
|
||||
return lists['items'][0]['id']
|
||||
|
||||
def get_pending_tasks() -> list[dict]:
|
||||
"""Return all incomplete tasks across all task lists."""
|
||||
svc = _service()
|
||||
tasklists = svc.tasklists().list(maxResults=10).execute()
|
||||
all_tasks = []
|
||||
for tl in tasklists.get('items', []):
|
||||
tasks = svc.tasks().list(
|
||||
tasklist=tl['id'], showCompleted=False, maxResults=50
|
||||
).execute()
|
||||
for t in tasks.get('items', []):
|
||||
all_tasks.append({
|
||||
'id': t['id'],
|
||||
'tasklist_id': tl['id'],
|
||||
'title': t.get('title', ''),
|
||||
'due': t.get('due', ''),
|
||||
'notes': t.get('notes', ''),
|
||||
'list': tl['title'],
|
||||
})
|
||||
return all_tasks
|
||||
|
||||
def create_task(title: str, notes: str = None, due: str = None) -> dict:
|
||||
"""Create a new task in the default task list."""
|
||||
svc = _service()
|
||||
list_id = _get_default_list_id()
|
||||
body = {'title': title}
|
||||
if notes:
|
||||
body['notes'] = notes
|
||||
if due:
|
||||
body['due'] = due
|
||||
return svc.tasks().insert(tasklist=list_id, body=body).execute()
|
||||
|
||||
def complete_task(tasklist_id: str, task_id: str) -> dict:
|
||||
"""Mark a task as completed."""
|
||||
svc = _service()
|
||||
task = svc.tasks().get(tasklist=tasklist_id, task=task_id).execute()
|
||||
task['status'] = 'completed'
|
||||
return svc.tasks().update(tasklist=tasklist_id, task=task_id, body=task).execute()
|
||||
|
||||
def delete_task(tasklist_id: str, task_id: str):
|
||||
"""Delete a task permanently."""
|
||||
_service().tasks().delete(tasklist=tasklist_id, task=task_id).execute()
|
||||
Reference in New Issue
Block a user