Skip to main content

Overview

The Task System gives the agent accountability. Tasks flow through a lifecycle (pending -> in_progress -> completed/failed/blocked), the agent manages them via tools, and the dashboard shows real-time progress. Projects group related tasks under a parent. The agent decomposes work into projects when it detects multi-step intent.

Architecture

Data Layer

Tasks live in ~/.argentos/data/dashboard.db (SQLite), shared by the agent runtime and dashboard API.
tasks table
  id (UUID)
  title, description
  status: pending | in_progress | blocked | completed | failed | cancelled
  priority: urgent | high | normal | low | background
  source: user | agent | heartbeat | schedule
  parent_task_id -> tasks(id)   # FK for project children
  metadata (JSON)               # { type: "project" } for project parents
  tags (JSON array)
  due_at, started_at, completed_at
  agent_id, session_id, channel_id
A project is a task with metadata.type = "project". Child tasks reference it via parent_task_id. No schema migration needed.

Agent Tool

The tasks tool exposes these actions:
ActionDescription
addCreate a task (optionally under a project via parentTaskId)
listList tasks with optional status/priority filters
startMove task to in_progress
completeMark task as completed
blockMark task as blocked with reason
failMark task as failed with reason
deleteRemove a task
searchFull-text search across tasks
project_createCreate a project with child tasks
project_listList all projects with progress
project_detailGet project with all child tasks

Dashboard

  • Tasks tab — Active tasks, pending tasks, recently completed
  • Projects tab — Project cards with progress bars, click to expand child tasks
  • Schedule tab — Cron jobs and scheduled tasks

Markers

The agent emits markers in its response stream for instant UI updates:
  • [TASK_DONE:title] — Dashboard immediately marks matching task as done
  • [TTS:text] — Dashboard speaks the text via ElevenLabs
These provide instant feedback before the next 5-second poll cycle.

Task Lifecycle

Project Flow

1

User describes multi-step work

2

Agent creates project via tasks tool with action: project_create

3

Dashboard shows project card with 0/N progress

4

Agent works through child tasks, calling start and complete

5

Dashboard updates progress bar in real-time

6

When all children complete, project shows as done

Example

User: “Set up monitoring for the production servers” Agent creates:
Project: Production Server Monitoring
  Install Prometheus and Grafana
  Configure alert rules
  Set up dashboards
  Test alert pipeline
  Document runbook

API Routes

MethodPathDescription
GET/api/tasksList all tasks
POST/api/tasksCreate a task
PATCH/api/tasks/:idUpdate a task
DELETE/api/tasks/:idDelete a task
POST/api/tasks/:id/startStart a task
POST/api/tasks/:id/completeComplete a task
GET/api/projectsList projects with counts
GET/api/projects/:idProject detail with children
POST/api/projectsCreate a project

Key Files

FilePurpose
src/data/tasks.tsCore TasksModule — CRUD, projects, search
src/data/types.tsTask, Project, Filter type definitions
src/data/connection.tsSQLite connection manager
src/data/index.tsDataAPI facade
src/agents/tools/tasks-tools.tsAgent tool definition
dashboard/src/db/tasksDb.cjsDashboard-side DB access
dashboard/api-server.cjsREST API routes
dashboard/src/hooks/useTasks.tsReact hook for task/project state
dashboard/src/components/TaskList.tsxTask & project UI components