@bumpyclock/pi-tasque
Pi extension package for Tasque durable tasks plus in-session todos.
Package details
Install @bumpyclock/pi-tasque from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@bumpyclock/pi-tasque- Package
@bumpyclock/pi-tasque- Version
0.2.1- Published
- May 16, 2026
- Downloads
- not available
- Author
- bumpyclock
- License
- MIT
- Types
- extension
- Size
- 222 KB
- Dependencies
- 0 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-tasque
Pi extension for durable project tasks plus in-session todos.
What this package provides
pi-tasque gives agents two task layers:
- Session todos: current-session execution checklist for inspect, edit, verify, and handoff steps.
- Durable tasks: repo-local backlog, specs, dependencies, notes, and ownership.
The bridge between the layers is explicit. pi-tasque can link, promote, or import tasks, but it does not automatically sync lifecycle state between todos and durable tasks.
Install
Install with Pi:
pi install npm:@bumpyclock/pi-tasque
For local development, install the local package path once:
pi install /Users/adityasharma/Projects/pi-tasque
Then use this edit loop:
edit TypeScript files -> /reload -> test behavior
Pi loads the extension entrypoint from the installed package path, so TypeScript source edits do not require reinstalling the local package. Use /reload in the Pi session after changing files under src/.
Agent guidance
Use todo for current-session checklists; use task for durable project work, ownership, notes, specs, dependencies, and explicit todo links.
Lifecycle boundaries
There is no automatic lifecycle sync between session todos and durable tasks:
- Completing a
tododoes not mark a durable task done. - Marking a durable task done does not complete linked todos.
tasklink actions record relationships only.taskpromote/import actions are explicit bridge operations.
Example workflow
Create a session todo:
{
"action": "create",
"subject": "Investigate failing release check",
"owner": "developer"
}
Claim durable work and create one linked todo:
{
"action": "claim",
"task": "task-123",
"for": "developer",
"todo": true
}
List links:
{ "action": "list_links" }
Finish durable work after verification:
{
"action": "finish",
"task": "task-123",
"because": "Docs and package checks passed."
}
Tool and command reference
| Surface | Purpose | Notes |
|---|---|---|
todo |
Manage current-session tactical todos. | Session-local; replayed from successful todo and task results. |
/todos |
Show grouped current-session todos. | Interactive UI only. |
task |
Manage durable project tasks and todo links. | Resolves operations to the current git project root. |
| Todo overlay | Show active session todos above the editor. | Completed todos hide on the next turn. |
| Task status footer | Show cached durable-task status. | Display-only; agents should call task for fresh data. |
todo
Manage current-session todos. Todos are branch-replayed from previous successful todo results in the current session branch.
Actions:
create: add a todo, with optional description, owner, metadata, and blockers.update: change status, text, owner, metadata, or dependencies withblockedBy,addBlockedBy, andremoveBlockedBy.list: list visible todos; deleted tombstones are hidden unlessincludeDeletedis true.get: fetch one todo by id.delete: tombstone one todo.clear: clear current todo state.
Examples:
{
"action": "create",
"subject": "Run README verification",
"owner": "developer"
}
{
"action": "update",
"id": 1,
"status": "in_progress",
"activeForm": "verifying docs"
}
/todos
Show current-session todos grouped by status in interactive Pi UI. It reports pending, in-progress, and completed groups and requires interactive mode.
Example:
/todos
Above-editor todo overlay
Shows active session todos above the editor. The overlay rebuilds on session start, compaction, and tree switches, then updates after successful todo and task executions that affect todo state.
Completed todos remain visible until the next turn, then hide from the overlay.
task
Manage durable project tasks. Most durable task operations run from the current git project root; handoff_check resolves the root only when linked todos exist.
Read actions:
doctor: check task-system health.find: findreadyoropentasks.laneapplies only toready; useview: "tree"for an open-task tree. Withview: "tree",taskfilters the tree to a parent task.show: show one task. Usewith: ["spec"]to include spec content in the display.deps: show dependency tree for one task.notes: show notes for one task.similar: search for similar tasks by text.handoff_check: check whether current-session todos and linked durable tasks are ready for final handoff. Not-ready returnsok: true, ready: false; internal failures returnok: false.spec: operate on the spec attached to a task.modeis required and must beshow,check,set, orupdate.showreturns the attached spec content.checkvalidates the attached spec against the task. Returnsok: truewhen validation passes; returnsok: falsewitherror.code: "spec_check_failed"and diagnostics when validation fails.setattaches a new spec using thetextfield. Overwrites any existing spec.updateupdates the existing spec using thetextfield.textis required forsetandupdate; rejected forshowandcheck.showandcheckare read-only.setandupdateare mutations serialized through the per-project queue.
show with with:["spec"] vs spec action: show with with:["spec"] includes spec content as extra context in the task display — useful for reading the spec alongside other task fields. The spec action with mode:"show" returns spec content alone; spec action with mode:"check" validates the attached spec and reports pass/fail with diagnostics. Use show for display context, spec check for validation.
Failed check semantics: When spec check reports validation failures, the tool result has details.ok: false, error.code: "spec_check_failed", and a details.diagnostics object with the issues. The CLI process exits successfully (no thrown error); the failure is reported in structured details so agents can inspect and react to individual check failures without catching exceptions.
Handoff check semantics: handoff_check is read-only. It checks pending/in-progress/blocked todos plus linked durable task status. closed linked tasks are ready; open, in_progress, blocked, deferred, and unknown statuses block handoff; canceled is a warning. Missing/invalid linked tasks are reported as readErrors with ready:false.
Mutation actions:
create: create a durable task, with optionaldescription,under,planned, orneedsPlan.note: add a note.finish: mark done.reopen: reopen a task.defer: defer a task.start: mark started.claim: assign ownership;startdefaults to true,requireSpecenforces an attached spec, andtodo: truecreates one linked session todo.block/unblock: manage hard blocker edges.order/unorder: manage sequencing edges.
Lifecycle mutation actions:
mark_planned: mark an existing task as planned. Requirestask(non-empty id). Runs through the mutation queue.
Batch actions:
bulk: run multiple lifecycle/note mutations sequentially with fail-fast semantics. Requiresitems— an array of{ action, task, because? }objects. Supported item actions:start,finish,reopen,defer,note,mark_planned.becauseis required fornote, optional forfinish/defer. On first failure, remaining items are skipped. No rollback of completed mutations. Result details containcompleted(task ids), optionalfailed(task + error), andskipped(task ids).create_tree: create a nested tree of durable tasks in one call. Requiresroot— a node object{ title, kind, priority, description?, planned?, needsPlan?, children? }. Children are recursive nodes. Creates parent before children, wiring generated parent ids. On first failure, remaining subtree is skipped — no orphan children are created. No rollback. Result details containcreated(id + title), optionalfailed(title + error), andskipped(titles).
Bridge actions:
link: associate an existing todo with an existing durable task via todo metadata.list_links: inspect current todo ↔ durable task associations.promote: create a durable task from an existing todo, add a promotion note, link metadata, and complete the source todo.import: import a durable task, or an open-tree task plus children when available, into session todos with metadata links.tocurrently accepts only"todo".
Examples:
{ "action": "find", "tasks": "ready", "lane": "coding", "for": "developer" }
{ "action": "find", "view": "tree", "task": "task-parent" }
{ "action": "show", "task": "task-123", "with": ["spec"] }
{ "action": "spec", "task": "task-123", "mode": "show" }
{ "action": "spec", "task": "task-123", "mode": "check" }
{
"action": "spec",
"task": "task-123",
"mode": "set",
"text": "# Spec\n\nAcceptance criteria..."
}
{
"action": "spec",
"task": "task-123",
"mode": "update",
"text": "## Updated section\n\nRevised details..."
}
{ "action": "mark_planned", "task": "task-456" }
{
"action": "bulk",
"items": [
{ "action": "finish", "task": "task-1", "because": "Verified" },
{ "action": "start", "task": "task-2" },
{ "action": "mark_planned", "task": "task-3" }
]
}
{
"action": "create_tree",
"root": {
"title": "Add auth module",
"kind": "task",
"priority": 2,
"planned": true,
"children": [
{
"title": "Design auth API",
"kind": "task",
"priority": 2,
"needsPlan": true
},
{ "title": "Implement token refresh", "kind": "task", "priority": 3 }
]
}
}
{ "action": "handoff_check" }
{
"action": "create",
"task": "Add cwd guard tests",
"kind": "task",
"priority": 2,
"under": "task-parent",
"planned": true
}
{ "action": "block", "task": "task-child", "by": "task-blocker" }
{ "action": "order", "task": "task-later", "after": "task-earlier" }
{ "action": "link", "todo": 3, "task": "task-123" }
{
"action": "promote",
"todo": 4,
"kind": "task",
"priority": 2,
"under": "task-parent",
"for": "developer"
}
{
"action": "import",
"task": "task-123",
"to": "todo",
"for": "developer"
}
Task status footer
The status footer shows cached durable-task status in interactive UI:
- ready coding count
- ready planning count
minecount for in-progress tasks assigned topi- loading, stale, and error states
It refreshes on session start, periodically, and after successful durable mutations from task.
The footer is display-only. Refreshed status is not injected into the model context; agents should use task for fresh durable task data. If agents claim with a non-pi assignee, those tasks may not appear in the footer's mine count.
Verification
Run full local verification before handoff:
npm run typecheck && npm test