v0.1.6
0.1.6
What changed
- Per-task data lives in flat files at the top of
.pi/artifacts/.
No per-task subdirs, no<task-id>paths. - The subagent's session is auto-saved by pi at
~/.pi/agent/sessions/<cwd>/<session-id>.jsonl. pi-task does not
maintain its own session storage. - Task widget rendering is now split into a dedicated module for easier
maintenance. - Foreground and background widgets now use consistent colors for
duration/tool-call stats. - Background completion results now use a padded themed main-pane block
and no longer duplicate completed-widget notifications. - Final foreground tool-call counts now match the live widget count.
Layout
.pi/artifacts/
├── TODO.md pikit canonical (untouched)
├── PLAN.md pikit canonical (untouched)
├── PROGRESS.md pikit canonical (untouched)
├── DECISIONS.md pikit canonical (untouched)
├── TASKS.md pi-task: all task data, ### blocks per task
└── task-sessions.json pi-task: conversation_id → { task_id, session_file }
No .pi/task-runs/. No .pi/artifacts/task-<id>/ subdirs. No
CONTEXT.md (the prompt is in the CLI arg). No SESSION.md. No
RESULT.md (the subagent's final assistant message IS the result;
pi-task reads it from the auto-saved session file).
How it works
- Parent launches
pi --name <task_id> "<prompt>"in a tmux pane
(interactive TUI) — orpi --mode jsonif tmux is unavailable - Subagent works, user watches (in tmux mode)
- Subagent's final assistant message IS the result. The prompt
tells the subagent to end with a clear summary. - Parent reads the last assistant message from the auto-saved
session file (tmux mode) or from the JSON event stream (SDK mode) - Parent embeds the result in
TASKS.mdas a#### Resultblock - Parent updates
task-sessions.jsonwith the session file path - For resume, parent uses
pi --session <session_file>to continue