summaryrefslogtreecommitdiff
path: root/pi/agent/extensions/taskwarrior-plan-mode
diff options
context:
space:
mode:
Diffstat (limited to 'pi/agent/extensions/taskwarrior-plan-mode')
-rw-r--r--pi/agent/extensions/taskwarrior-plan-mode/README.md10
-rw-r--r--pi/agent/extensions/taskwarrior-plan-mode/index.ts29
2 files changed, 39 insertions, 0 deletions
diff --git a/pi/agent/extensions/taskwarrior-plan-mode/README.md b/pi/agent/extensions/taskwarrior-plan-mode/README.md
index b280bcb..e75c4d5 100644
--- a/pi/agent/extensions/taskwarrior-plan-mode/README.md
+++ b/pi/agent/extensions/taskwarrior-plan-mode/README.md
@@ -31,6 +31,10 @@ todo list.
Show started and `+READY` tasks for the current repo.
- `/task-next [run]`
Focus the started task, or start the next `+READY` task.
+- `/task-exit`
+ Leave Taskwarrior focus mode.
+- `/task-unfocus`
+ Alias for `/task-exit`.
- `/work-on-tasks [strategy] [max]`
Kick off the Taskwarrior execution loop aligned to the
`taskwarrior-task-management` workflow.
@@ -117,6 +121,12 @@ Focus and immediately start execution:
/task-next run
```
+Leave focus mode again:
+
+```text
+/task-exit
+```
+
Run the full repo task loop:
```text
diff --git a/pi/agent/extensions/taskwarrior-plan-mode/index.ts b/pi/agent/extensions/taskwarrior-plan-mode/index.ts
index 59a223e..0f8b12c 100644
--- a/pi/agent/extensions/taskwarrior-plan-mode/index.ts
+++ b/pi/agent/extensions/taskwarrior-plan-mode/index.ts
@@ -398,6 +398,21 @@ export default function taskwarriorPlanModeExtension(pi: ExtensionAPI): void {
await setPlanModeEnabled(false, ctx);
}
+ async function exitExecutionMode(ctx: ExtensionContext): Promise<void> {
+ if (!executionMode) {
+ ctx.ui.notify("Taskwarrior focus mode is not enabled.", "info");
+ return;
+ }
+
+ executionMode = false;
+ executionTaskUuid = undefined;
+ repeatedTaskLookups.clear();
+ pi.setActiveTools(normalTools);
+ persistState();
+ await updateStatus(ctx);
+ ctx.ui.notify("Taskwarrior focus mode disabled.", "info");
+ }
+
async function createTasksFromPlan(
mode: "sequential" | "independent",
ctx: ExtensionContext,
@@ -519,6 +534,20 @@ export default function taskwarriorPlanModeExtension(pi: ExtensionAPI): void {
},
});
+ pi.registerCommand("task-exit", {
+ description: "Leave Taskwarrior focus mode",
+ handler: async (_args, ctx) => {
+ await exitExecutionMode(ctx);
+ },
+ });
+
+ pi.registerCommand("task-unfocus", {
+ description: "Alias for /task-exit",
+ handler: async (_args, ctx) => {
+ await exitExecutionMode(ctx);
+ },
+ });
+
pi.registerCommand("task-update", {
description: "Replace a task description: /task-update <selector> :: <new description>",
handler: async (args, ctx) => {