taskplane 0.24.19 → 0.24.21
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 +4 -2
- package/bin/taskplane.mjs +581 -36
- package/extensions/task-runner.ts +18 -18
- package/extensions/taskplane/config-loader.ts +1221 -1161
- package/extensions/taskplane/config-schema.ts +20 -2
- package/extensions/taskplane/merge.ts +12 -1
- package/extensions/taskplane/settings-tui.ts +167 -16
- package/package.json +1 -1
- package/templates/config/task-runner.yaml +1 -1
|
@@ -210,7 +210,7 @@ const DEFAULT_CONFIG: TaskConfig = {
|
|
|
210
210
|
standards: { docs: [], rules: [] },
|
|
211
211
|
standards_overrides: {},
|
|
212
212
|
task_areas: {},
|
|
213
|
-
worker: { model: "", tools: "read,write,edit,bash,grep,find,ls", thinking: "
|
|
213
|
+
worker: { model: "", tools: "read,write,edit,bash,grep,find,ls", thinking: "" },
|
|
214
214
|
reviewer: { model: "", tools: "read,bash,grep,find,ls", thinking: "on" },
|
|
215
215
|
context: {
|
|
216
216
|
worker_context_window: 0, warn_percent: 85, kill_percent: 95,
|
|
@@ -967,7 +967,7 @@ function processReviewVerdict(
|
|
|
967
967
|
// ── Subagent Spawner ─────────────────────────────────────────────────
|
|
968
968
|
|
|
969
969
|
function spawnAgent(opts: {
|
|
970
|
-
model
|
|
970
|
+
model?: string; tools: string; thinking?: string;
|
|
971
971
|
systemPrompt: string; prompt: string;
|
|
972
972
|
contextWindow?: number; warnPct?: number; killPct?: number;
|
|
973
973
|
wrapUpFile?: string;
|
|
@@ -990,12 +990,14 @@ function spawnAgent(opts: {
|
|
|
990
990
|
const args = [
|
|
991
991
|
"-p", "--mode", "json",
|
|
992
992
|
"--no-session", "--no-extensions", "--no-skills",
|
|
993
|
-
"--model", opts.model,
|
|
994
993
|
"--tools", opts.tools,
|
|
995
|
-
|
|
994
|
+
];
|
|
995
|
+
if (opts.model) args.push("--model", opts.model);
|
|
996
|
+
if (opts.thinking) args.push("--thinking", opts.thinking);
|
|
997
|
+
args.push(
|
|
996
998
|
"--append-system-prompt", sysTmpFile,
|
|
997
999
|
`@${promptTmpFile}`,
|
|
998
|
-
|
|
1000
|
+
);
|
|
999
1001
|
|
|
1000
1002
|
const proc = spawn("pi", args, {
|
|
1001
1003
|
stdio: ["ignore", "pipe", "pipe"],
|
|
@@ -1625,7 +1627,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
1625
1627
|
const reviewerModelFallback = process.env.TASKPLANE_MODEL_FALLBACK === "1";
|
|
1626
1628
|
const reviewerModel = reviewerModelFallback
|
|
1627
1629
|
? (ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "anthropic/claude-sonnet-4-20250514")
|
|
1628
|
-
: (config.reviewer.model || reviewerDef?.model ||
|
|
1630
|
+
: (config.reviewer.model || reviewerDef?.model || "");
|
|
1629
1631
|
const reviewerPrompt = reviewerDef?.systemPrompt || "You are a code reviewer. Read the request and write your review to the specified output file.";
|
|
1630
1632
|
const systemPrompt = reviewerPrompt + "\n\n" + buildProjectContext(config, task.taskFolder);
|
|
1631
1633
|
const promptContent = readFileSync(requestPath, "utf-8");
|
|
@@ -1648,7 +1650,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
1648
1650
|
const spawned = spawnAgent({
|
|
1649
1651
|
model: reviewerModel,
|
|
1650
1652
|
tools: config.reviewer.tools || reviewerDef?.tools || "read,write,bash,grep,find,ls",
|
|
1651
|
-
thinking: config.reviewer.thinking ||
|
|
1653
|
+
thinking: config.reviewer.thinking || undefined,
|
|
1652
1654
|
systemPrompt,
|
|
1653
1655
|
prompt: promptContent,
|
|
1654
1656
|
onToolCall: (toolName, args) => {
|
|
@@ -2174,9 +2176,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2174
2176
|
const modelFallbackActive = process.env.TASKPLANE_MODEL_FALLBACK === "1";
|
|
2175
2177
|
const model = modelFallbackActive
|
|
2176
2178
|
? (ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "anthropic/claude-sonnet-4-20250514")
|
|
2177
|
-
: (config.worker.model
|
|
2178
|
-
|| workerDef?.model
|
|
2179
|
-
|| (ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "anthropic/claude-sonnet-4-20250514"));
|
|
2179
|
+
: (config.worker.model || workerDef?.model || "");
|
|
2180
2180
|
|
|
2181
2181
|
const promptLines = [
|
|
2182
2182
|
`Read your task instructions at: ${task.promptPath}`,
|
|
@@ -2235,7 +2235,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2235
2235
|
const spawned = spawnAgent({
|
|
2236
2236
|
model,
|
|
2237
2237
|
tools: config.worker.tools || workerDef?.tools || "read,write,edit,bash,grep,find,ls",
|
|
2238
|
-
thinking: config.worker.thinking ||
|
|
2238
|
+
thinking: config.worker.thinking || undefined,
|
|
2239
2239
|
systemPrompt,
|
|
2240
2240
|
prompt,
|
|
2241
2241
|
contextWindow,
|
|
@@ -2316,7 +2316,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2316
2316
|
const reviewerModelFallback2 = process.env.TASKPLANE_MODEL_FALLBACK === "1";
|
|
2317
2317
|
const reviewerModel = reviewerModelFallback2
|
|
2318
2318
|
? (ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "anthropic/claude-sonnet-4-20250514")
|
|
2319
|
-
: (config.reviewer.model || reviewerDef?.model ||
|
|
2319
|
+
: (config.reviewer.model || reviewerDef?.model || "");
|
|
2320
2320
|
const reviewerPrompt = reviewerDef?.systemPrompt || "You are a code reviewer. Read the request and write your review to the specified output file.";
|
|
2321
2321
|
const systemPrompt = reviewerPrompt + "\n\n" + buildProjectContext(config, task.taskFolder);
|
|
2322
2322
|
|
|
@@ -2336,7 +2336,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2336
2336
|
const spawned = spawnAgent({
|
|
2337
2337
|
model: reviewerModel,
|
|
2338
2338
|
tools: config.reviewer.tools || reviewerDef?.tools || "read,write,bash,grep,find,ls",
|
|
2339
|
-
thinking: config.reviewer.thinking ||
|
|
2339
|
+
thinking: config.reviewer.thinking || undefined,
|
|
2340
2340
|
systemPrompt,
|
|
2341
2341
|
prompt: promptContent,
|
|
2342
2342
|
onToolCall: (toolName, args) => {
|
|
@@ -2425,7 +2425,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2425
2425
|
: (config.quality_gate.review_model
|
|
2426
2426
|
|| config.reviewer.model
|
|
2427
2427
|
|| reviewerDef?.model
|
|
2428
|
-
||
|
|
2428
|
+
|| "");
|
|
2429
2429
|
|
|
2430
2430
|
const reviewerPrompt = reviewerDef?.systemPrompt
|
|
2431
2431
|
|| "You are a quality gate reviewer. Read the review request and write your JSON verdict to the specified file.";
|
|
@@ -2449,7 +2449,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2449
2449
|
const spawned = spawnAgent({
|
|
2450
2450
|
model: reviewModel,
|
|
2451
2451
|
tools: config.reviewer.tools || reviewerDef?.tools || "read,write,bash,grep,find,ls",
|
|
2452
|
-
thinking: config.reviewer.thinking ||
|
|
2452
|
+
thinking: config.reviewer.thinking || undefined,
|
|
2453
2453
|
systemPrompt,
|
|
2454
2454
|
prompt,
|
|
2455
2455
|
onToolCall: (toolName, args) => {
|
|
@@ -2568,7 +2568,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2568
2568
|
const fixModelFallback = process.env.TASKPLANE_MODEL_FALLBACK === "1";
|
|
2569
2569
|
const fixModel = fixModelFallback
|
|
2570
2570
|
? (ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "anthropic/claude-sonnet-4-20250514")
|
|
2571
|
-
: (config.worker.model || workerDef?.model || "
|
|
2571
|
+
: (config.worker.model || workerDef?.model || "");
|
|
2572
2572
|
|
|
2573
2573
|
const basePrompt = workerDef?.systemPrompt
|
|
2574
2574
|
|| "You are a fix agent addressing quality gate findings. Read the feedback and make targeted code fixes.";
|
|
@@ -2601,7 +2601,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2601
2601
|
const spawned = spawnAgent({
|
|
2602
2602
|
model: fixModel,
|
|
2603
2603
|
tools: config.worker.tools || workerDef?.tools || "read,write,edit,bash,grep,find,ls",
|
|
2604
|
-
thinking: config.worker.thinking ||
|
|
2604
|
+
thinking: config.worker.thinking || undefined,
|
|
2605
2605
|
systemPrompt,
|
|
2606
2606
|
prompt: fixPrompt,
|
|
2607
2607
|
onToolCall: (toolName, args) => {
|
|
@@ -2699,7 +2699,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2699
2699
|
ctx.ui.notify(
|
|
2700
2700
|
`Starting: ${state.task.taskId} — ${state.task.taskName}\n` +
|
|
2701
2701
|
`Review Level: ${state.task.reviewLevel} · Size: ${state.task.size} · Steps: ${state.task.steps.length}\n` +
|
|
2702
|
-
`Worker model: ${state.config.worker.model || "inherit"} · Reviewer: ${state.config.reviewer.model}`,
|
|
2702
|
+
`Worker model: ${state.config.worker.model || "inherit"} · Reviewer: ${state.config.reviewer.model || "inherit"}`,
|
|
2703
2703
|
"info",
|
|
2704
2704
|
);
|
|
2705
2705
|
|