33 lines
1.8 KiB
Markdown
33 lines
1.8 KiB
Markdown
# pi-task
|
|
|
|
A small, session-scoped task list for Pi. It adds one agent tool, `task`, a
|
|
compact widget above the editor, and a progress indicator in the footer.
|
|
|
|
The tool accepts the complete ordered task list, like Claude's todo tool or
|
|
Codex's plan tool. The agent adds, updates, removes, or reorders tasks by
|
|
submitting a new list. Omitting the list reads the current state; submitting an
|
|
empty list clears it.
|
|
|
|
Statuses are `pending`, `in_progress`, and `completed`. At most one task can be
|
|
in progress at a time.
|
|
|
|
State is stored in Pi tool-result details. It survives reloads and compaction,
|
|
follows session branches correctly, and does not create project files. A new Pi
|
|
session starts with an empty list. Calls are serialized, and failed or cancelled
|
|
calls do not replace the saved list. Invalid saved snapshots are ignored.
|
|
|
|
While work is active, the widget uses themed symbols and colors to distinguish
|
|
the current task (`●`) from pending tasks (`○`). The footer shows compact
|
|
overall progress. When every task is complete, Pi displays a success
|
|
notification and removes both the widget and footer indicator to reclaim space.
|
|
The completed list remains available in session history.
|
|
|
|
The agent must call `task` to update statuses; finishing code does not update
|
|
items automatically. After compaction or two turns without a task call, Pi gives
|
|
the agent a short, temporary reminder of open items. If a run ends with open
|
|
items, Pi shows a warning. Neither reminder nor warning marks work complete.
|
|
|
|
Run `/tasks` to refresh the task UI manually. Run the state regression tests
|
|
with `node --experimental-strip-types --test pi/extensions/pi-task/state.test.ts`. Pi
|
|
loads the deployed extension from Home Manager, so apply the configuration and
|
|
reload Pi to use repository changes in normal sessions.
|