tasks
The tasks extension provides a complete task management system with two components:
Task Board Feature
Section titled “Task Board Feature”A full task board built into the TUI. Tasks have three states:
pending, in-progress, and completed, with bidirectional dependency
tracking (blocks/blockedBy). Blocked tasks automatically
become ready when their dependencies complete.
Tasks persist across sessions via the filesystem. Comments provide handoff context between sessions or agents. Team-based sharing lets multiple agents coordinate through a shared task board with file-system watching for real-time updates.
Toggle visibility: ctrl+shift+t
Manual management: /tasks command
manage_tasks Tool
Section titled “manage_tasks Tool”A separate LLM-callable tool that enables the AI to create, update, complete, and organize tasks programmatically. This tool is what allows the assistant to break down complex requests into structured task lists and track progress automatically.
The tool and the UI feature work together — tasks created by
the AI via manage_tasks appear in the task board, and manual
task operations update what the AI can see.
Task listings now show both list index and stable task id
(1. Subject (id:7)) so completion calls can target the right item
after reordering/deletions. Completion handling is also stricter:
invalid indices are reported, blocked tasks are skipped with reasons,
and only explicit completion markers auto-complete tasks.
Responsive layout
Section titled “Responsive layout”The task widget adapts to terminal width:
- Wide terminals (120+ columns), side-by-side layout. Tasks on the left, background activity on the right (background subagents and background tasks), separated by a vertical rule. The right column is bottom-aligned so live background updates stay next to the most recent tasks.
- Narrow terminals (under 120 columns), stacked layout. Tasks first, then background subagents, then background tasks, each separated by a spacer line. All content truncates to fit the available width.
Both layouts cap visible tasks at 10 with a ”… and N more” overflow indicator. Task titles, background subagent previews, and background command strings all truncate independently based on available column width.
Presentation roles
Section titled “Presentation roles”The widget uses shared presentation roles:
- title/action/identity for the primary task and agent context
- meta/hint for tree structure, counters, and helper context
- process_output for low-priority activity chatter
- status colors for pending/in-progress/completed indicators
Relationships with other extensions
Section titled “Relationships with other extensions”The tasks widget is the central dashboard, it doesn’t just show tasks, it unifies the display of several independent features into one responsive view.
Subagent activity is intentionally split by mode.
Foreground subagents are inline-only: their progress and result stay in the main conversation flow while the parent is blocked.
The tasks widget’s subagent lane is background-only. It tracks
non-blocking workers and splits running vs stalled counts (for
example, Background Subagents (non-blocking · 2 running · 1 stalled)).
Running rows use a spinner, while stalled rows are explicitly labeled
stalled with a non-spinner status icon so they are not mistaken
for active progress. Each row still shows a bounded task preview and
live activity text when available. In-progress tasks display
(@agent-name) attribution when a background agent claims ownership.
In the status bar, a separate agent bar appears:
@main @alice @bob · 2 teammates, with each name colored
to match the agent’s identity in the task widget.
Running background bash commands appear in the same widget,
below the background subagent section. When the tasks widget is
visible, it is the canonical background-task surface and
background-task-tool suppresses its separate live tail widget.
Each row shows the truncated command string and elapsed duration.
The widget caps at 5 visible background tasks with an overflow
indicator. Use task_output(...) when you want the full inline
output for a specific task.
The footer’s (sub) indicator shows the active subagent count.
Combined with the agent bar from the tasks extension, you get
two layers of agent visibility: the footer for a glance count,
the widget for full detail.
Combined display
Section titled “Combined display”When all three features are active simultaneously, the task tree is paired with background-only lanes: background subagents and background commands. Foreground subagent progress stays inline in conversation output instead of the bottom widget.
Wide (120+ cols):
Tasks (2/5) │ Background Subagents (non-blocking · 2 running)├─ ◐ Refactoring auth (@bob) │ ├─ ⠋ @bob (Background) · 8s├─ ◐ Run type checks (@carol) │ │ Refactoring auth middleware├─ ☐ Update documentation │ └─ ⠋ @carol (Background) · 3s│ └─ blocked by @bob, @carol │ Running type checker└─ ✓ Explore codebase │ │ Background Tasks (1) │ └─ ● npm run test:watch (45s)Narrow (under 120 cols):
Tasks (2/5)├─ ◐ Refactoring auth (@bob)├─ ◐ Run type checks (@carol)├─ ☐ Update documentation│ └─ blocked by @bob, @carol└─ ✓ Explore codebase
Background Subagents (non-blocking · 2 running)├─ ⠋ @bob (Background) · 8s│ Refactoring auth middleware└─ ⠋ @carol (Background) · 3s Running type checker
Background Tasks (1)└─ ● npm run test:watch (45s)The layout decision is automatic, no configuration needed. Everything adapts to whatever terminal width you have.