taskplane 0.3.1 → 0.4.0
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/README.md +14 -5
- package/bin/gitignore-patterns.mjs +78 -0
- package/bin/taskplane.mjs +1353 -32
- package/dashboard/server.cjs +13 -1
- package/extensions/task-runner.ts +81 -46
- package/extensions/taskplane/config-loader.ts +860 -0
- package/extensions/taskplane/config-schema.ts +468 -0
- package/extensions/taskplane/config.ts +37 -93
- package/extensions/taskplane/engine.ts +2 -0
- package/extensions/taskplane/extension.ts +19 -0
- package/extensions/taskplane/merge.ts +12 -4
- package/extensions/taskplane/resume.ts +23 -14
- package/extensions/taskplane/settings-tui.ts +1387 -0
- package/extensions/taskplane/types.ts +81 -1
- package/extensions/taskplane/workspace.ts +204 -10
- package/package.json +1 -1
- package/skills/create-taskplane-task/SKILL.md +7 -5
- package/skills/create-taskplane-task/references/prompt-template.md +4 -3
- package/templates/agents/task-worker.md +45 -31
- package/templates/config/task-orchestrator.yaml +3 -0
package/README.md
CHANGED
|
@@ -6,16 +6,24 @@ Multi-agent AI orchestration for [pi](https://github.com/badlogic/pi-mono) — p
|
|
|
6
6
|
|
|
7
7
|
## What It Does
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### STEP 1: Create the tasks
|
|
10
|
+
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.
|
|
11
|
+
|
|
12
|
+
### STEP 2: Run batches of tasks
|
|
13
|
+
The system works out the dependancy map for the entire batch of tasks then orchestrates them in waves, with appropriate parallelization and serialization.
|
|
14
|
+
|
|
15
|
+
The taskplane dashboard runs on a local port on your system and gives you elegant visibility into everything that's going on (a stark improvement over TUI-based dashboards).
|
|
16
|
+
|
|
17
|
+
<img src="docs/images/orchrun-wave2of4-2lanes-withstatus.png" alt="image of taskplane dashboard" width="50%">
|
|
10
18
|
|
|
11
19
|
### Key Features
|
|
12
20
|
|
|
13
|
-
- **Task
|
|
14
|
-
- **Task
|
|
21
|
+
- **Task Orchestrator** — Parallel multi-task execution using git worktrees for full filesystem isolation. Dependency-aware wave scheduling. Automated merges with conflict resolution.
|
|
22
|
+
- **Task Runner** — What the Orchestrator uses for autonomous single-task execution. Worker agents run in fresh-context loops with STATUS.md as persistent memory. Every checkbox gets a git checkpoint. Cross-model reviewer agents catch what the worker agents missed.
|
|
15
23
|
- **Web Dashboard** — Live browser-based monitoring via `taskplane dashboard`. SSE streaming, lane/task progress, wave visualization, batch history.
|
|
16
24
|
- **Structured Tasks** — PROMPT.md defines the mission, steps, and constraints. STATUS.md tracks progress. Agents follow the plan, not vibes.
|
|
17
25
|
- **Checkpoint Discipline** — Every completed checkbox item triggers a git commit. Work is never lost, even if a worker crashes mid-task.
|
|
18
|
-
- **Cross-Model Review** — Reviewer agent uses a different model than the worker. Independent quality gate before merge.
|
|
26
|
+
- **Cross-Model Review** — Reviewer agent uses a different model than the worker agent (highly recommended, not enforced). Independent quality gate before merge.
|
|
19
27
|
|
|
20
28
|
## Install
|
|
21
29
|
|
|
@@ -72,7 +80,7 @@ cd my-project
|
|
|
72
80
|
taskplane init --preset full
|
|
73
81
|
```
|
|
74
82
|
|
|
75
|
-
This creates config files in `.pi/`, agent prompts,
|
|
83
|
+
This creates config files in `.pi/`, agent prompts, two example tasks, and adds `.gitignore` entries for runtime artifacts. Init auto-detects whether you're in a single repo or a multi-repo workspace. See the [install tutorial](docs/tutorials/install.md) for workspace mode and other scenarios.
|
|
76
84
|
|
|
77
85
|
Already have a task folder (for example `docs/task-management`)? Use:
|
|
78
86
|
|
|
@@ -148,6 +156,7 @@ Orchestrator lanes execute tasks through task-runner under the hood, so `/task`
|
|
|
148
156
|
| `/orch-abort [--hard]` | Abort batch (graceful or immediate) |
|
|
149
157
|
| `/orch-deps <areas\|paths\|all>` | Show dependency graph |
|
|
150
158
|
| `/orch-sessions` | List active worker sessions |
|
|
159
|
+
| `/settings` | View and edit taskplane configuration interactively |
|
|
151
160
|
|
|
152
161
|
### CLI Commands
|
|
153
162
|
|
|
@@ -0,0 +1,78 @@
|
|
|
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
|
+
];
|
|
31
|
+
|
|
32
|
+
export const TASKPLANE_GITIGNORE_NPM_ENTRIES = [
|
|
33
|
+
".pi/npm/",
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* All patterns that should be gitignored, used for tracked-artifact detection.
|
|
38
|
+
*/
|
|
39
|
+
export const ALL_GITIGNORE_PATTERNS = [...TASKPLANE_GITIGNORE_ENTRIES, ...TASKPLANE_GITIGNORE_NPM_ENTRIES];
|
|
40
|
+
|
|
41
|
+
// ─── Pattern Matching ───────────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Convert a gitignore-style pattern to a regex for matching tracked file paths.
|
|
45
|
+
*
|
|
46
|
+
* - Trailing-slash directory patterns (e.g., `.pi/orch-logs/`) are treated as
|
|
47
|
+
* prefix matches so that files underneath are correctly detected.
|
|
48
|
+
* - Wildcard `*` patterns (e.g., `.pi/lane-state-*`) match any characters.
|
|
49
|
+
* - Exact patterns (e.g., `.pi/batch-state.json`) match exactly.
|
|
50
|
+
*
|
|
51
|
+
* @param {string} pattern - Gitignore-style pattern
|
|
52
|
+
* @returns {RegExp} Regex that matches file paths covered by the pattern
|
|
53
|
+
*/
|
|
54
|
+
export function patternToRegex(pattern) {
|
|
55
|
+
// Directory patterns (trailing slash) → prefix match
|
|
56
|
+
if (pattern.endsWith("/")) {
|
|
57
|
+
const dirPath = pattern.slice(0, -1);
|
|
58
|
+
const escaped = dirPath.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
59
|
+
return new RegExp("^" + escaped + "/.*");
|
|
60
|
+
}
|
|
61
|
+
// Escape regex special chars except *
|
|
62
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
63
|
+
// Replace * with .*
|
|
64
|
+
const regexStr = "^" + escaped.replace(/\*/g, ".*") + "$";
|
|
65
|
+
return new RegExp(regexStr);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Check whether a tracked file path matches any of the gitignore patterns.
|
|
70
|
+
*
|
|
71
|
+
* @param {string} filePath - Relative file path from git root
|
|
72
|
+
* @param {string[]} [patterns] - Patterns to match against (defaults to ALL_GITIGNORE_PATTERNS)
|
|
73
|
+
* @returns {boolean} True if the file matches any pattern
|
|
74
|
+
*/
|
|
75
|
+
export function matchesAnyGitignorePattern(filePath, patterns = ALL_GITIGNORE_PATTERNS) {
|
|
76
|
+
const regexes = patterns.map(p => patternToRegex(p));
|
|
77
|
+
return regexes.some(regex => regex.test(filePath));
|
|
78
|
+
}
|