taskplane 0.28.3 → 0.28.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +215 -215
- package/bin/gitignore-patterns.mjs +79 -79
- package/bin/rpc-wrapper.mjs +1086 -1086
- package/bin/taskplane.mjs +3254 -3254
- package/dashboard/public/app.js +2573 -2573
- package/dashboard/public/index.html +139 -139
- package/dashboard/public/style.css +1882 -1882
- package/dashboard/public/taskplane-word-color.svg +18 -18
- package/dashboard/public/taskplane-word-white.svg +18 -18
- package/dashboard/server.cjs +1666 -1666
- package/extensions/reviewer-extension.ts +119 -119
- package/extensions/task-orchestrator.ts +28 -28
- package/extensions/taskplane/abort.ts +502 -502
- package/extensions/taskplane/agent-bridge-extension.ts +765 -765
- package/extensions/taskplane/agent-host.ts +833 -745
- package/extensions/taskplane/cleanup.ts +747 -747
- package/extensions/taskplane/config-loader.ts +1328 -1322
- package/extensions/taskplane/config-schema.ts +692 -682
- package/extensions/taskplane/config.ts +73 -73
- package/extensions/taskplane/context-window.ts +66 -66
- package/extensions/taskplane/diagnostic-reports.ts +463 -463
- package/extensions/taskplane/diagnostics.ts +385 -385
- package/extensions/taskplane/engine-worker-entry.mjs +34 -34
- package/extensions/taskplane/engine-worker.ts +381 -381
- package/extensions/taskplane/engine.ts +4539 -4527
- package/extensions/taskplane/execution.ts +2733 -2708
- package/extensions/taskplane/extension.ts +30 -9
- package/extensions/taskplane/formatting.ts +773 -773
- package/extensions/taskplane/git.ts +90 -90
- package/extensions/taskplane/index.ts +28 -28
- package/extensions/taskplane/lane-runner.ts +1383 -1360
- package/extensions/taskplane/mailbox.ts +689 -689
- package/extensions/taskplane/merge.ts +3135 -3135
- package/extensions/taskplane/messages.ts +985 -985
- package/extensions/taskplane/migrations.ts +278 -278
- package/extensions/taskplane/naming.ts +117 -117
- package/extensions/taskplane/path-resolver.ts +237 -237
- package/extensions/taskplane/persistence.ts +2087 -2087
- package/extensions/taskplane/process-registry.ts +416 -416
- package/extensions/taskplane/quality-gate.ts +1033 -1033
- package/extensions/taskplane/resume.ts +2879 -2878
- package/extensions/taskplane/sessions.ts +57 -57
- package/extensions/taskplane/settings-loader.ts +136 -136
- package/extensions/taskplane/settings-tui.ts +1867 -1865
- package/extensions/taskplane/sidecar-telemetry.ts +252 -252
- package/extensions/taskplane/supervisor-primer.md +1694 -1694
- package/extensions/taskplane/supervisor.ts +4341 -4341
- package/extensions/taskplane/task-executor-core.ts +550 -550
- package/extensions/taskplane/tmux-compat.ts +37 -37
- package/extensions/taskplane/types.ts +4297 -4278
- package/extensions/taskplane/verification.ts +542 -542
- package/extensions/taskplane/waves.ts +1548 -1548
- package/extensions/taskplane/workspace.ts +705 -705
- package/extensions/taskplane/worktree.ts +2604 -2505
- package/package.json +57 -57
- package/skills/create-taskplane-task/SKILL.md +465 -465
- package/skills/create-taskplane-task/references/prompt-template.md +285 -285
- package/templates/agents/local/supervisor.md +33 -33
- package/templates/agents/local/task-merger.md +27 -27
- package/templates/agents/local/task-reviewer.md +30 -30
- package/templates/agents/local/task-worker.md +34 -34
- package/templates/agents/supervisor-routing.md +92 -92
- package/templates/agents/supervisor.md +168 -168
- package/templates/agents/task-merger.md +214 -214
- package/templates/agents/task-reviewer.md +192 -192
- package/templates/agents/task-worker.md +429 -429
- package/templates/tasks/EXAMPLE-001-hello-world/PROMPT.md +98 -98
- package/templates/tasks/EXAMPLE-001-hello-world/STATUS.md +73 -73
- package/templates/tasks/EXAMPLE-002-parallel-smoke/PROMPT.md +97 -97
- package/templates/tasks/EXAMPLE-002-parallel-smoke/STATUS.md +73 -73
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Henry Lach
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Henry Lach
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
# Taskplane
|
|
2
|
-
|
|
3
|
-
Multi-agent AI orchestration for coding with [pi](https://github.com/badlogic/pi-mono) — parallel task execution, mono- and poly-repo support, fresh-context worker loops, cross-model reviews, automated merges and a killer dashboard!
|
|
4
|
-
|
|
5
|
-
> **Status:** Initial release.
|
|
6
|
-
|
|
7
|
-
## What It Does
|
|
8
|
-
|
|
9
|
-
Taskplane orchesrates batches of task to help you turn ideas into high-quality code using a proven process of:
|
|
10
|
-
|
|
11
|
-
have an idea >> create a spec >> create tasks >> orchestrate tasks >> evaluate the outcome
|
|
12
|
-
|
|
13
|
-
For background on Taskplane's creation see [Author's Note on Medium](https://medium.com/@henry_49934/welcome-to-taskplane-authors-note-ad3a0278fdd3).
|
|
14
|
-
|
|
15
|
-
### Taskplane has:
|
|
16
|
-
- A skill for creating tasks that the Taskplane orchestrator can run
|
|
17
|
-
- prompt.md/status.md task definitions for persistent memory store
|
|
18
|
-
- Support for both monorepo and polyrepo projects
|
|
19
|
-
- Complete parallelized worktree isolation with dependency graphing and segment-level repo isolation
|
|
20
|
-
- 4 agent types: supervisor, worker, reviewer, and merger
|
|
21
|
-
- A deterministic orchestration engine to drive repeatable positive agent outcomes at scale
|
|
22
|
-
- A simple file-based mail system so agents can communicate with each other
|
|
23
|
-
- A killer locally-run web-based dashboard so you can see everything that's going on
|
|
24
|
-
|
|
25
|
-
<img src="docs/images/orchrun-wave2of4-2lanes-withstatus.png" alt="image of taskplane dashboard" width="50%">
|
|
26
|
-
|
|
27
|
-
### STEP 1: Create the tasks
|
|
28
|
-
Taskplane turns your coding project into an AI-managed task orchestration system. You simply ask your agent to create tasks using the built-in "create-taskplane-tasks" skill. This skill provides an opinionated task definition template designed to drive successful coding outcomes. Tasks define both the prompt.md and the status.md files that together act as the persistent memory store that allows AI coding agents to survive context resets and succeed with very long running tasks that would typically exhaust an agent's context window.
|
|
29
|
-
|
|
30
|
-
### STEP 2: Run batches of tasks
|
|
31
|
-
Taskplane works out the dependency map for an entire batch of tasks then orchestrates them in waves, lanes, and tasks with appropriate parallelization and serialization. Taskplane can do this for both monorepo and polyrepo projects. For polyrepo projects, Taskplane additionally subdivides tasks into repo-aligned segments and uses a segmentation dependency map (DAG) to manage proper repo/worktree isolation and allow for dynamic segment expansion so worker agents can ask the supervisor agent to add additional segments to the dependency map in real time if required.
|
|
32
|
-
|
|
33
|
-
### Key Features
|
|
34
|
-
|
|
35
|
-
- **Task Orchestrator** — Parallel multi-task execution using git worktrees for full filesystem isolation. Dependency-aware wave scheduling. Automated merges into a dedicated orch branch — your working branch stays stable until you choose to integrate.
|
|
36
|
-
- **Persistent Worker Context** — Workers handle all steps in a single context, auto-detecting the model's context window. Only iterates on context overflow. Dramatic reduction in spawn count and token cost.
|
|
37
|
-
- **Worker-Driven Inline Reviews** — Workers invoke a `review_step` tool at step boundaries. Reviewer agents spawn with full telemetry. REVISE feedback is addressed inline without losing context.
|
|
38
|
-
- **Supervisor Agent** — Conversational supervisor monitors batch progress, handles failures, and can invoke orchestrator commands autonomously (resume, integrate, pause, abort).
|
|
39
|
-
- **Web Dashboard** — Live browser-based monitoring via `taskplane dashboard`. SSE streaming, lane/task progress, reviewer activity, merge telemetry, batch history.
|
|
40
|
-
- **Structured Tasks** — PROMPT.md defines the mission, steps, and constraints. STATUS.md tracks progress. Agents follow the plan, not vibes.
|
|
41
|
-
- **Checkpoint Discipline** — Step boundary commits ensure work is never lost, even if a worker crashes mid-task.
|
|
42
|
-
- **Cross-Model Review** — Reviewer agent uses a different model than the worker agent (highly recommended, not enforced). Independent quality gate before merge.
|
|
43
|
-
|
|
44
|
-
## Installation
|
|
45
|
-
|
|
46
|
-
Taskplane is a pi package. You need Node.js 22+, pi and Git installed first.
|
|
47
|
-
|
|
48
|
-
### Prerequisites
|
|
49
|
-
|
|
50
|
-
| Dependency | Required | Notes |
|
|
51
|
-
|-----------|----------|-------|
|
|
52
|
-
| [Node.js](https://nodejs.org/) ≥ 22 | Yes | Runtime |
|
|
53
|
-
| [pi](https://github.com/badlogic/pi-mono) | Yes | Agent framework |
|
|
54
|
-
| [Git](https://git-scm.com/) | Yes | Version control, worktrees |
|
|
55
|
-
|
|
56
|
-
IMPORTANT: If you just installed pi, make sure you've configured at least one model provider and tested before installing Taskplane.
|
|
57
|
-
|
|
58
|
-
### Option A: Global Install (all projects - recommended)
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
pi install npm:taskplane
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Option B: Single Project-Local Install
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
cd my-project
|
|
68
|
-
pi install -l npm:taskplane
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Quickstart
|
|
72
|
-
|
|
73
|
-
### 1. Initialize a project (to scaffold settings)
|
|
74
|
-
This step assumes you have installed Taskplane using one of the above options.
|
|
75
|
-
|
|
76
|
-
(NOTE: if 'my-project' is a monorepo, be sure to run git init first. Taskplane uses git worktrees to isolate agent coding until you're ready to merge back to your default branch.)
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
cd my-project
|
|
80
|
-
taskplane init
|
|
81
|
-
```
|
|
82
|
-
You'll answer a few questions. You can usually just accept the defaults.
|
|
83
|
-
|
|
84
|
-
This creates: config files in `.pi/`, agent prompts, two example tasks, and adds `.gitignore` entries for runtime artifacts. On first install, init bootstraps global preferences at `~/.pi/agent/taskplane/preferences.json` with thinking defaults set to `high` for worker & reviewer, and off for merger. Init auto-detects whether you're in a monorepo or a polyrepo workspace. See the [install tutorial](docs/tutorials/install.md) for workspace mode and other scenarios.
|
|
85
|
-
|
|
86
|
-
Already have a task folder (for example `docs/task-management`)? Use:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
taskplane init --preset full --tasks-root docs/task-management
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
When `--tasks-root` is provided, example task packets are skipped by default. Add `--include-examples` if you explicitly want examples in that folder.
|
|
93
|
-
|
|
94
|
-
### 2. Check your install with taskplane doctor
|
|
95
|
-
|
|
96
|
-
Verify the installation and scaffolding. You should have all green checkboxes if everything was successful:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
taskplane doctor
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### 3. Launch the dashboard (recommended)
|
|
103
|
-
|
|
104
|
-
In a separate terminal:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
taskplane dashboard
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Opens a live web dashboard at `http://localhost:8099` with real-time batch monitoring.
|
|
111
|
-
|
|
112
|
-
### 4. Run your first orchestration
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
pi
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Inside the pi session:
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
/orch # Detect project state — guides onboarding or offers to start a batch
|
|
122
|
-
/orch-plan all # Preview waves, lanes, and dependencies
|
|
123
|
-
/orch all # Execute all pending tasks in parallel
|
|
124
|
-
/orch-status # Monitor batch progress
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`/orch` with no arguments is the universal entry point — it detects your project state and activates the supervisor for guided interaction (onboarding, batch planning, health checks, or retrospective). The default scaffold includes two independent example tasks, so `/orch all` gives you an immediate orchestrator + dashboard experience.
|
|
128
|
-
|
|
129
|
-
### 5. Run a single task with isolation
|
|
130
|
-
|
|
131
|
-
For a single task with full worktree isolation, dashboard, and reviews:
|
|
132
|
-
|
|
133
|
-
```text
|
|
134
|
-
/orch taskplane-tasks/EXAMPLE-001-hello-world/PROMPT.md
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
This uses the same orchestrator infrastructure as a full batch — isolated worktree, orch branch, supervisor, dashboard, inline reviews — but for just one task.
|
|
138
|
-
|
|
139
|
-
## What to do next
|
|
140
|
-
|
|
141
|
-
When you're in pi, type /taskplane-settings. Near the top you'll see the 4 agents. By default, Taskplane installs with the agent models set to inherit whatever model your pi session is currently using. The best thing you can do is configure the reviewer agent to use a different model provider. If you're using Claude for coding, then consider using OpenAI for the reviews.
|
|
142
|
-
|
|
143
|
-
## Commands
|
|
144
|
-
|
|
145
|
-
### Pi Session Commands
|
|
146
|
-
|
|
147
|
-
| Command | Description |
|
|
148
|
-
|---------|-------------|
|
|
149
|
-
| `/orch [<areas\|paths\|all>]` | No args: detect state & guide (onboarding, batch planning, etc.); with args: execute tasks via isolated worktrees |
|
|
150
|
-
| `/orch-plan <areas\|paths\|all>` | Preview execution plan without running |
|
|
151
|
-
| `/orch-status` | Show batch progress |
|
|
152
|
-
| `/orch-pause` | Pause batch after current tasks finish |
|
|
153
|
-
| `/orch-resume [--force]` | Resume a paused batch (or force-resume from stopped/failed) |
|
|
154
|
-
| `/orch-abort [--hard]` | Abort batch (graceful or immediate) |
|
|
155
|
-
| `/orch-deps <areas\|paths\|all>` | Show dependency graph |
|
|
156
|
-
| `/orch-sessions` | List active worker sessions |
|
|
157
|
-
| `/orch-integrate` | Integrate completed orch batch into your working branch |
|
|
158
|
-
| `/taskplane-settings` | View and edit taskplane configuration interactively |
|
|
159
|
-
|
|
160
|
-
### CLI Commands
|
|
161
|
-
|
|
162
|
-
| Command | Description |
|
|
163
|
-
|---------|-------------|
|
|
164
|
-
| `taskplane init` | Scaffold project config (interactive or `--preset`) |
|
|
165
|
-
| `taskplane doctor` | Validate installation and config |
|
|
166
|
-
| `taskplane config --save-as-defaults` | Save current worker/reviewer/merger model + thinking settings as defaults for future `taskplane init` runs |
|
|
167
|
-
| `taskplane version` | Show version info |
|
|
168
|
-
| `taskplane dashboard` | Launch the web dashboard |
|
|
169
|
-
| `taskplane uninstall` | Remove Taskplane project files and optionally uninstall package (`--package`) |
|
|
170
|
-
|
|
171
|
-
## How It Works
|
|
172
|
-
|
|
173
|
-
```
|
|
174
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
175
|
-
│ ORCHESTRATOR (/orch) │
|
|
176
|
-
│ Parse tasks → Build dependency DAG → Compute waves │
|
|
177
|
-
│ Assign lanes → Spawn workers → Monitor → Merge │
|
|
178
|
-
└──────┬──────────┬──────────┬────────────────────────────────┘
|
|
179
|
-
│ │ │
|
|
180
|
-
┌────▼────┐ ┌──▼─────┐ ┌──▼─────┐
|
|
181
|
-
│ Lane 1 │ │ Lane 2 │ │ Lane 3 │ ← Git worktrees
|
|
182
|
-
│ Worker │ │ Worker │ │ Worker │ (isolated)
|
|
183
|
-
│ Review │ │ Review │ │ Review │
|
|
184
|
-
└────┬────┘ └──┬─────┘ └──┬─────┘
|
|
185
|
-
│ │ │
|
|
186
|
-
└─────────┼──────────┘
|
|
187
|
-
│
|
|
188
|
-
┌──────▼──────┐
|
|
189
|
-
│ Merge Agent │ ← Conflict resolution
|
|
190
|
-
│ Orch Branch │ & verification
|
|
191
|
-
└──────┬──────┘
|
|
192
|
-
│
|
|
193
|
-
┌──────▼──────┐
|
|
194
|
-
│ /orch- │ ← User integrates into
|
|
195
|
-
│ integrate │ working branch
|
|
196
|
-
└─────────────┘
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
**How it works:** Tasks are sorted into dependency waves. Each wave runs in parallel across lanes (git worktrees). Workers handle all steps in a single context, calling `review_step` at step boundaries for inline reviews. Completed lanes merge into a dedicated orch branch. A supervisor agent monitors progress and can autonomously resume, integrate, or abort. When the batch completes, use `/orch-integrate` to bring the results into your working branch (or configure auto-integration).
|
|
200
|
-
|
|
201
|
-
## Documentation
|
|
202
|
-
|
|
203
|
-
📖 **[Full Documentation](docs/README.md)**
|
|
204
|
-
|
|
205
|
-
Start at the docs index for tutorials, how-to guides, reference docs, and architecture explanations.
|
|
206
|
-
|
|
207
|
-
## Contributing
|
|
208
|
-
|
|
209
|
-
See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, testing, and contribution guidelines.
|
|
210
|
-
|
|
211
|
-
Maintainers: GitHub governance and branch protection guidance is in [docs/maintainers/repository-governance.md](docs/maintainers/repository-governance.md).
|
|
212
|
-
|
|
213
|
-
## License
|
|
214
|
-
|
|
215
|
-
[MIT](LICENSE) © Henry Lach
|
|
1
|
+
# Taskplane
|
|
2
|
+
|
|
3
|
+
Multi-agent AI orchestration for coding with [pi](https://github.com/badlogic/pi-mono) — parallel task execution, mono- and poly-repo support, fresh-context worker loops, cross-model reviews, automated merges and a killer dashboard!
|
|
4
|
+
|
|
5
|
+
> **Status:** Initial release.
|
|
6
|
+
|
|
7
|
+
## What It Does
|
|
8
|
+
|
|
9
|
+
Taskplane orchesrates batches of task to help you turn ideas into high-quality code using a proven process of:
|
|
10
|
+
|
|
11
|
+
have an idea >> create a spec >> create tasks >> orchestrate tasks >> evaluate the outcome
|
|
12
|
+
|
|
13
|
+
For background on Taskplane's creation see [Author's Note on Medium](https://medium.com/@henry_49934/welcome-to-taskplane-authors-note-ad3a0278fdd3).
|
|
14
|
+
|
|
15
|
+
### Taskplane has:
|
|
16
|
+
- A skill for creating tasks that the Taskplane orchestrator can run
|
|
17
|
+
- prompt.md/status.md task definitions for persistent memory store
|
|
18
|
+
- Support for both monorepo and polyrepo projects
|
|
19
|
+
- Complete parallelized worktree isolation with dependency graphing and segment-level repo isolation
|
|
20
|
+
- 4 agent types: supervisor, worker, reviewer, and merger
|
|
21
|
+
- A deterministic orchestration engine to drive repeatable positive agent outcomes at scale
|
|
22
|
+
- A simple file-based mail system so agents can communicate with each other
|
|
23
|
+
- A killer locally-run web-based dashboard so you can see everything that's going on
|
|
24
|
+
|
|
25
|
+
<img src="docs/images/orchrun-wave2of4-2lanes-withstatus.png" alt="image of taskplane dashboard" width="50%">
|
|
26
|
+
|
|
27
|
+
### STEP 1: Create the tasks
|
|
28
|
+
Taskplane turns your coding project into an AI-managed task orchestration system. You simply ask your agent to create tasks using the built-in "create-taskplane-tasks" skill. This skill provides an opinionated task definition template designed to drive successful coding outcomes. Tasks define both the prompt.md and the status.md files that together act as the persistent memory store that allows AI coding agents to survive context resets and succeed with very long running tasks that would typically exhaust an agent's context window.
|
|
29
|
+
|
|
30
|
+
### STEP 2: Run batches of tasks
|
|
31
|
+
Taskplane works out the dependency map for an entire batch of tasks then orchestrates them in waves, lanes, and tasks with appropriate parallelization and serialization. Taskplane can do this for both monorepo and polyrepo projects. For polyrepo projects, Taskplane additionally subdivides tasks into repo-aligned segments and uses a segmentation dependency map (DAG) to manage proper repo/worktree isolation and allow for dynamic segment expansion so worker agents can ask the supervisor agent to add additional segments to the dependency map in real time if required.
|
|
32
|
+
|
|
33
|
+
### Key Features
|
|
34
|
+
|
|
35
|
+
- **Task Orchestrator** — Parallel multi-task execution using git worktrees for full filesystem isolation. Dependency-aware wave scheduling. Automated merges into a dedicated orch branch — your working branch stays stable until you choose to integrate.
|
|
36
|
+
- **Persistent Worker Context** — Workers handle all steps in a single context, auto-detecting the model's context window. Only iterates on context overflow. Dramatic reduction in spawn count and token cost.
|
|
37
|
+
- **Worker-Driven Inline Reviews** — Workers invoke a `review_step` tool at step boundaries. Reviewer agents spawn with full telemetry. REVISE feedback is addressed inline without losing context.
|
|
38
|
+
- **Supervisor Agent** — Conversational supervisor monitors batch progress, handles failures, and can invoke orchestrator commands autonomously (resume, integrate, pause, abort).
|
|
39
|
+
- **Web Dashboard** — Live browser-based monitoring via `taskplane dashboard`. SSE streaming, lane/task progress, reviewer activity, merge telemetry, batch history.
|
|
40
|
+
- **Structured Tasks** — PROMPT.md defines the mission, steps, and constraints. STATUS.md tracks progress. Agents follow the plan, not vibes.
|
|
41
|
+
- **Checkpoint Discipline** — Step boundary commits ensure work is never lost, even if a worker crashes mid-task.
|
|
42
|
+
- **Cross-Model Review** — Reviewer agent uses a different model than the worker agent (highly recommended, not enforced). Independent quality gate before merge.
|
|
43
|
+
|
|
44
|
+
## Installation
|
|
45
|
+
|
|
46
|
+
Taskplane is a pi package. You need Node.js 22+, pi and Git installed first.
|
|
47
|
+
|
|
48
|
+
### Prerequisites
|
|
49
|
+
|
|
50
|
+
| Dependency | Required | Notes |
|
|
51
|
+
|-----------|----------|-------|
|
|
52
|
+
| [Node.js](https://nodejs.org/) ≥ 22 | Yes | Runtime |
|
|
53
|
+
| [pi](https://github.com/badlogic/pi-mono) | Yes | Agent framework |
|
|
54
|
+
| [Git](https://git-scm.com/) | Yes | Version control, worktrees |
|
|
55
|
+
|
|
56
|
+
IMPORTANT: If you just installed pi, make sure you've configured at least one model provider and tested before installing Taskplane.
|
|
57
|
+
|
|
58
|
+
### Option A: Global Install (all projects - recommended)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pi install npm:taskplane
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Option B: Single Project-Local Install
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
cd my-project
|
|
68
|
+
pi install -l npm:taskplane
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Quickstart
|
|
72
|
+
|
|
73
|
+
### 1. Initialize a project (to scaffold settings)
|
|
74
|
+
This step assumes you have installed Taskplane using one of the above options.
|
|
75
|
+
|
|
76
|
+
(NOTE: if 'my-project' is a monorepo, be sure to run git init first. Taskplane uses git worktrees to isolate agent coding until you're ready to merge back to your default branch.)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
cd my-project
|
|
80
|
+
taskplane init
|
|
81
|
+
```
|
|
82
|
+
You'll answer a few questions. You can usually just accept the defaults.
|
|
83
|
+
|
|
84
|
+
This creates: config files in `.pi/`, agent prompts, two example tasks, and adds `.gitignore` entries for runtime artifacts. On first install, init bootstraps global preferences at `~/.pi/agent/taskplane/preferences.json` with thinking defaults set to `high` for worker & reviewer, and off for merger. Init auto-detects whether you're in a monorepo or a polyrepo workspace. See the [install tutorial](docs/tutorials/install.md) for workspace mode and other scenarios.
|
|
85
|
+
|
|
86
|
+
Already have a task folder (for example `docs/task-management`)? Use:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
taskplane init --preset full --tasks-root docs/task-management
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
When `--tasks-root` is provided, example task packets are skipped by default. Add `--include-examples` if you explicitly want examples in that folder.
|
|
93
|
+
|
|
94
|
+
### 2. Check your install with taskplane doctor
|
|
95
|
+
|
|
96
|
+
Verify the installation and scaffolding. You should have all green checkboxes if everything was successful:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
taskplane doctor
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 3. Launch the dashboard (recommended)
|
|
103
|
+
|
|
104
|
+
In a separate terminal:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
taskplane dashboard
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Opens a live web dashboard at `http://localhost:8099` with real-time batch monitoring.
|
|
111
|
+
|
|
112
|
+
### 4. Run your first orchestration
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
pi
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Inside the pi session:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
/orch # Detect project state — guides onboarding or offers to start a batch
|
|
122
|
+
/orch-plan all # Preview waves, lanes, and dependencies
|
|
123
|
+
/orch all # Execute all pending tasks in parallel
|
|
124
|
+
/orch-status # Monitor batch progress
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`/orch` with no arguments is the universal entry point — it detects your project state and activates the supervisor for guided interaction (onboarding, batch planning, health checks, or retrospective). The default scaffold includes two independent example tasks, so `/orch all` gives you an immediate orchestrator + dashboard experience.
|
|
128
|
+
|
|
129
|
+
### 5. Run a single task with isolation
|
|
130
|
+
|
|
131
|
+
For a single task with full worktree isolation, dashboard, and reviews:
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
/orch taskplane-tasks/EXAMPLE-001-hello-world/PROMPT.md
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
This uses the same orchestrator infrastructure as a full batch — isolated worktree, orch branch, supervisor, dashboard, inline reviews — but for just one task.
|
|
138
|
+
|
|
139
|
+
## What to do next
|
|
140
|
+
|
|
141
|
+
When you're in pi, type /taskplane-settings. Near the top you'll see the 4 agents. By default, Taskplane installs with the agent models set to inherit whatever model your pi session is currently using. The best thing you can do is configure the reviewer agent to use a different model provider. If you're using Claude for coding, then consider using OpenAI for the reviews.
|
|
142
|
+
|
|
143
|
+
## Commands
|
|
144
|
+
|
|
145
|
+
### Pi Session Commands
|
|
146
|
+
|
|
147
|
+
| Command | Description |
|
|
148
|
+
|---------|-------------|
|
|
149
|
+
| `/orch [<areas\|paths\|all>]` | No args: detect state & guide (onboarding, batch planning, etc.); with args: execute tasks via isolated worktrees |
|
|
150
|
+
| `/orch-plan <areas\|paths\|all>` | Preview execution plan without running |
|
|
151
|
+
| `/orch-status` | Show batch progress |
|
|
152
|
+
| `/orch-pause` | Pause batch after current tasks finish |
|
|
153
|
+
| `/orch-resume [--force]` | Resume a paused batch (or force-resume from stopped/failed) |
|
|
154
|
+
| `/orch-abort [--hard]` | Abort batch (graceful or immediate) |
|
|
155
|
+
| `/orch-deps <areas\|paths\|all>` | Show dependency graph |
|
|
156
|
+
| `/orch-sessions` | List active worker sessions |
|
|
157
|
+
| `/orch-integrate` | Integrate completed orch batch into your working branch |
|
|
158
|
+
| `/taskplane-settings` | View and edit taskplane configuration interactively |
|
|
159
|
+
|
|
160
|
+
### CLI Commands
|
|
161
|
+
|
|
162
|
+
| Command | Description |
|
|
163
|
+
|---------|-------------|
|
|
164
|
+
| `taskplane init` | Scaffold project config (interactive or `--preset`) |
|
|
165
|
+
| `taskplane doctor` | Validate installation and config |
|
|
166
|
+
| `taskplane config --save-as-defaults` | Save current worker/reviewer/merger model + thinking settings as defaults for future `taskplane init` runs |
|
|
167
|
+
| `taskplane version` | Show version info |
|
|
168
|
+
| `taskplane dashboard` | Launch the web dashboard |
|
|
169
|
+
| `taskplane uninstall` | Remove Taskplane project files and optionally uninstall package (`--package`) |
|
|
170
|
+
|
|
171
|
+
## How It Works
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
175
|
+
│ ORCHESTRATOR (/orch) │
|
|
176
|
+
│ Parse tasks → Build dependency DAG → Compute waves │
|
|
177
|
+
│ Assign lanes → Spawn workers → Monitor → Merge │
|
|
178
|
+
└──────┬──────────┬──────────┬────────────────────────────────┘
|
|
179
|
+
│ │ │
|
|
180
|
+
┌────▼────┐ ┌──▼─────┐ ┌──▼─────┐
|
|
181
|
+
│ Lane 1 │ │ Lane 2 │ │ Lane 3 │ ← Git worktrees
|
|
182
|
+
│ Worker │ │ Worker │ │ Worker │ (isolated)
|
|
183
|
+
│ Review │ │ Review │ │ Review │
|
|
184
|
+
└────┬────┘ └──┬─────┘ └──┬─────┘
|
|
185
|
+
│ │ │
|
|
186
|
+
└─────────┼──────────┘
|
|
187
|
+
│
|
|
188
|
+
┌──────▼──────┐
|
|
189
|
+
│ Merge Agent │ ← Conflict resolution
|
|
190
|
+
│ Orch Branch │ & verification
|
|
191
|
+
└──────┬──────┘
|
|
192
|
+
│
|
|
193
|
+
┌──────▼──────┐
|
|
194
|
+
│ /orch- │ ← User integrates into
|
|
195
|
+
│ integrate │ working branch
|
|
196
|
+
└─────────────┘
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**How it works:** Tasks are sorted into dependency waves. Each wave runs in parallel across lanes (git worktrees). Workers handle all steps in a single context, calling `review_step` at step boundaries for inline reviews. Completed lanes merge into a dedicated orch branch. A supervisor agent monitors progress and can autonomously resume, integrate, or abort. When the batch completes, use `/orch-integrate` to bring the results into your working branch (or configure auto-integration).
|
|
200
|
+
|
|
201
|
+
## Documentation
|
|
202
|
+
|
|
203
|
+
📖 **[Full Documentation](docs/README.md)**
|
|
204
|
+
|
|
205
|
+
Start at the docs index for tutorials, how-to guides, reference docs, and architecture explanations.
|
|
206
|
+
|
|
207
|
+
## Contributing
|
|
208
|
+
|
|
209
|
+
See **[CONTRIBUTING.md](CONTRIBUTING.md)** for development setup, testing, and contribution guidelines.
|
|
210
|
+
|
|
211
|
+
Maintainers: GitHub governance and branch protection guidance is in [docs/maintainers/repository-governance.md](docs/maintainers/repository-governance.md).
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
[MIT](LICENSE) © Henry Lach
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Taskplane gitignore patterns and matching utilities.
|
|
3
|
-
*
|
|
4
|
-
* Extracted as a separate module so that pattern-matching logic can be
|
|
5
|
-
* tested independently from the CLI entrypoint.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
9
|
-
|
|
10
|
-
export const TASKPLANE_GITIGNORE_HEADER = "# Taskplane runtime artifacts (machine-specific, do not commit)";
|
|
11
|
-
export const TASKPLANE_GITIGNORE_NPM_HEADER = "# Pi project-local packages (if using pi install -l)";
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Required gitignore entries for Taskplane projects.
|
|
15
|
-
* These patterns cover runtime artifacts that are machine-specific and must
|
|
16
|
-
* not be committed to git. Reused by both repo mode (Step 2) and workspace
|
|
17
|
-
* mode (Step 4) init flows.
|
|
18
|
-
*/
|
|
19
|
-
export const TASKPLANE_GITIGNORE_ENTRIES = [
|
|
20
|
-
".pi/batch-state.json",
|
|
21
|
-
".pi/batch-history.json",
|
|
22
|
-
".pi/lane-state-*",
|
|
23
|
-
".pi/merge-result-*",
|
|
24
|
-
".pi/merge-request-*",
|
|
25
|
-
".pi/worker-conversation-*",
|
|
26
|
-
".pi/orch-logs/",
|
|
27
|
-
".pi/orch-abort-signal",
|
|
28
|
-
".pi/settings.json",
|
|
29
|
-
".worktrees/",
|
|
30
|
-
".taskplane-tasks/",
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
export const TASKPLANE_GITIGNORE_NPM_ENTRIES = [
|
|
34
|
-
".pi/npm/",
|
|
35
|
-
];
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* All patterns that should be gitignored, used for tracked-artifact detection.
|
|
39
|
-
*/
|
|
40
|
-
export const ALL_GITIGNORE_PATTERNS = [...TASKPLANE_GITIGNORE_ENTRIES, ...TASKPLANE_GITIGNORE_NPM_ENTRIES];
|
|
41
|
-
|
|
42
|
-
// ─── Pattern Matching ───────────────────────────────────────────────────────
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Convert a gitignore-style pattern to a regex for matching tracked file paths.
|
|
46
|
-
*
|
|
47
|
-
* - Trailing-slash directory patterns (e.g., `.pi/orch-logs/`) are treated as
|
|
48
|
-
* prefix matches so that files underneath are correctly detected.
|
|
49
|
-
* - Wildcard `*` patterns (e.g., `.pi/lane-state-*`) match any characters.
|
|
50
|
-
* - Exact patterns (e.g., `.pi/batch-state.json`) match exactly.
|
|
51
|
-
*
|
|
52
|
-
* @param {string} pattern - Gitignore-style pattern
|
|
53
|
-
* @returns {RegExp} Regex that matches file paths covered by the pattern
|
|
54
|
-
*/
|
|
55
|
-
export function patternToRegex(pattern) {
|
|
56
|
-
// Directory patterns (trailing slash) → prefix match
|
|
57
|
-
if (pattern.endsWith("/")) {
|
|
58
|
-
const dirPath = pattern.slice(0, -1);
|
|
59
|
-
const escaped = dirPath.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
60
|
-
return new RegExp("^" + escaped + "/.*");
|
|
61
|
-
}
|
|
62
|
-
// Escape regex special chars except *
|
|
63
|
-
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
64
|
-
// Replace * with .*
|
|
65
|
-
const regexStr = "^" + escaped.replace(/\*/g, ".*") + "$";
|
|
66
|
-
return new RegExp(regexStr);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Check whether a tracked file path matches any of the gitignore patterns.
|
|
71
|
-
*
|
|
72
|
-
* @param {string} filePath - Relative file path from git root
|
|
73
|
-
* @param {string[]} [patterns] - Patterns to match against (defaults to ALL_GITIGNORE_PATTERNS)
|
|
74
|
-
* @returns {boolean} True if the file matches any pattern
|
|
75
|
-
*/
|
|
76
|
-
export function matchesAnyGitignorePattern(filePath, patterns = ALL_GITIGNORE_PATTERNS) {
|
|
77
|
-
const regexes = patterns.map(p => patternToRegex(p));
|
|
78
|
-
return regexes.some(regex => regex.test(filePath));
|
|
79
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Taskplane gitignore patterns and matching utilities.
|
|
3
|
+
*
|
|
4
|
+
* Extracted as a separate module so that pattern-matching logic can be
|
|
5
|
+
* tested independently from the CLI entrypoint.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
export const TASKPLANE_GITIGNORE_HEADER = "# Taskplane runtime artifacts (machine-specific, do not commit)";
|
|
11
|
+
export const TASKPLANE_GITIGNORE_NPM_HEADER = "# Pi project-local packages (if using pi install -l)";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Required gitignore entries for Taskplane projects.
|
|
15
|
+
* These patterns cover runtime artifacts that are machine-specific and must
|
|
16
|
+
* not be committed to git. Reused by both repo mode (Step 2) and workspace
|
|
17
|
+
* mode (Step 4) init flows.
|
|
18
|
+
*/
|
|
19
|
+
export const TASKPLANE_GITIGNORE_ENTRIES = [
|
|
20
|
+
".pi/batch-state.json",
|
|
21
|
+
".pi/batch-history.json",
|
|
22
|
+
".pi/lane-state-*",
|
|
23
|
+
".pi/merge-result-*",
|
|
24
|
+
".pi/merge-request-*",
|
|
25
|
+
".pi/worker-conversation-*",
|
|
26
|
+
".pi/orch-logs/",
|
|
27
|
+
".pi/orch-abort-signal",
|
|
28
|
+
".pi/settings.json",
|
|
29
|
+
".worktrees/",
|
|
30
|
+
".taskplane-tasks/",
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
export const TASKPLANE_GITIGNORE_NPM_ENTRIES = [
|
|
34
|
+
".pi/npm/",
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* All patterns that should be gitignored, used for tracked-artifact detection.
|
|
39
|
+
*/
|
|
40
|
+
export const ALL_GITIGNORE_PATTERNS = [...TASKPLANE_GITIGNORE_ENTRIES, ...TASKPLANE_GITIGNORE_NPM_ENTRIES];
|
|
41
|
+
|
|
42
|
+
// ─── Pattern Matching ───────────────────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Convert a gitignore-style pattern to a regex for matching tracked file paths.
|
|
46
|
+
*
|
|
47
|
+
* - Trailing-slash directory patterns (e.g., `.pi/orch-logs/`) are treated as
|
|
48
|
+
* prefix matches so that files underneath are correctly detected.
|
|
49
|
+
* - Wildcard `*` patterns (e.g., `.pi/lane-state-*`) match any characters.
|
|
50
|
+
* - Exact patterns (e.g., `.pi/batch-state.json`) match exactly.
|
|
51
|
+
*
|
|
52
|
+
* @param {string} pattern - Gitignore-style pattern
|
|
53
|
+
* @returns {RegExp} Regex that matches file paths covered by the pattern
|
|
54
|
+
*/
|
|
55
|
+
export function patternToRegex(pattern) {
|
|
56
|
+
// Directory patterns (trailing slash) → prefix match
|
|
57
|
+
if (pattern.endsWith("/")) {
|
|
58
|
+
const dirPath = pattern.slice(0, -1);
|
|
59
|
+
const escaped = dirPath.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
60
|
+
return new RegExp("^" + escaped + "/.*");
|
|
61
|
+
}
|
|
62
|
+
// Escape regex special chars except *
|
|
63
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
64
|
+
// Replace * with .*
|
|
65
|
+
const regexStr = "^" + escaped.replace(/\*/g, ".*") + "$";
|
|
66
|
+
return new RegExp(regexStr);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Check whether a tracked file path matches any of the gitignore patterns.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} filePath - Relative file path from git root
|
|
73
|
+
* @param {string[]} [patterns] - Patterns to match against (defaults to ALL_GITIGNORE_PATTERNS)
|
|
74
|
+
* @returns {boolean} True if the file matches any pattern
|
|
75
|
+
*/
|
|
76
|
+
export function matchesAnyGitignorePattern(filePath, patterns = ALL_GITIGNORE_PATTERNS) {
|
|
77
|
+
const regexes = patterns.map(p => patternToRegex(p));
|
|
78
|
+
return regexes.some(regex => regex.test(filePath));
|
|
79
|
+
}
|